diff options
author | Tom Lane | 2008-10-17 23:50:57 +0000 |
---|---|---|
committer | Tom Lane | 2008-10-17 23:50:57 +0000 |
commit | 7d7b713656beb42d67d1d600aeb55dbce7c325fc (patch) | |
tree | af0635be2bc5d309c3a1ab92c6607b4776c8852e | |
parent | 019f35888425f2d2a4382c7dfd56a563022b08c2 (diff) |
Remove useless mark/restore support in hash index AM, per discussion.
(I'm leaving GiST/GIN cleanup to Teodor.)
-rw-r--r-- | src/backend/access/hash/hash.c | 58 | ||||
-rw-r--r-- | src/include/access/hash.h | 8 |
2 files changed, 10 insertions, 56 deletions
diff --git a/src/backend/access/hash/hash.c b/src/backend/access/hash/hash.c index 67d0691a00..84e6617aab 100644 --- a/src/backend/access/hash/hash.c +++ b/src/backend/access/hash/hash.c @@ -345,10 +345,9 @@ hashbeginscan(PG_FUNCTION_ARGS) so = (HashScanOpaque) palloc(sizeof(HashScanOpaqueData)); so->hashso_bucket_valid = false; so->hashso_bucket_blkno = 0; - so->hashso_curbuf = so->hashso_mrkbuf = InvalidBuffer; - /* set positions invalid (this will cause _hash_first call) */ + so->hashso_curbuf = InvalidBuffer; + /* set position invalid (this will cause _hash_first call) */ ItemPointerSetInvalid(&(so->hashso_curpos)); - ItemPointerSetInvalid(&(so->hashso_mrkpos)); scan->opaque = so; @@ -372,23 +371,18 @@ hashrescan(PG_FUNCTION_ARGS) /* if we are called from beginscan, so is still NULL */ if (so) { - /* release any pins we still hold */ + /* release any pin we still hold */ if (BufferIsValid(so->hashso_curbuf)) _hash_dropbuf(rel, so->hashso_curbuf); so->hashso_curbuf = InvalidBuffer; - if (BufferIsValid(so->hashso_mrkbuf)) - _hash_dropbuf(rel, so->hashso_mrkbuf); - so->hashso_mrkbuf = InvalidBuffer; - /* release lock on bucket, too */ if (so->hashso_bucket_blkno) _hash_droplock(rel, so->hashso_bucket_blkno, HASH_SHARE); so->hashso_bucket_blkno = 0; - /* set positions invalid (this will cause _hash_first call) */ + /* set position invalid (this will cause _hash_first call) */ ItemPointerSetInvalid(&(so->hashso_curpos)); - ItemPointerSetInvalid(&(so->hashso_mrkpos)); } /* Update scan key, if a new one is given */ @@ -417,15 +411,11 @@ hashendscan(PG_FUNCTION_ARGS) /* don't need scan registered anymore */ _hash_dropscan(scan); - /* release any pins we still hold */ + /* release any pin we still hold */ if (BufferIsValid(so->hashso_curbuf)) _hash_dropbuf(rel, so->hashso_curbuf); so->hashso_curbuf = InvalidBuffer; - if (BufferIsValid(so->hashso_mrkbuf)) - _hash_dropbuf(rel, so->hashso_mrkbuf); - so->hashso_mrkbuf = InvalidBuffer; - /* release lock on bucket, too */ if (so->hashso_bucket_blkno) _hash_droplock(rel, so->hashso_bucket_blkno, HASH_SHARE); @@ -443,24 +433,7 @@ hashendscan(PG_FUNCTION_ARGS) Datum hashmarkpos(PG_FUNCTION_ARGS) { - IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); - HashScanOpaque so = (HashScanOpaque) scan->opaque; - Relation rel = scan->indexRelation; - - /* release pin on old marked data, if any */ - if (BufferIsValid(so->hashso_mrkbuf)) - _hash_dropbuf(rel, so->hashso_mrkbuf); - so->hashso_mrkbuf = InvalidBuffer; - ItemPointerSetInvalid(&(so->hashso_mrkpos)); - - /* bump pin count on current buffer and copy to marked buffer */ - if (ItemPointerIsValid(&(so->hashso_curpos))) - { - IncrBufferRefCount(so->hashso_curbuf); - so->hashso_mrkbuf = so->hashso_curbuf; - so->hashso_mrkpos = so->hashso_curpos; - } - + elog(ERROR, "hash does not support mark/restore"); PG_RETURN_VOID(); } @@ -470,24 +443,7 @@ hashmarkpos(PG_FUNCTION_ARGS) Datum hashrestrpos(PG_FUNCTION_ARGS) { - IndexScanDesc scan = (IndexScanDesc) PG_GETARG_POINTER(0); - HashScanOpaque so = (HashScanOpaque) scan->opaque; - Relation rel = scan->indexRelation; - - /* release pin on current data, if any */ - if (BufferIsValid(so->hashso_curbuf)) - _hash_dropbuf(rel, so->hashso_curbuf); - so->hashso_curbuf = InvalidBuffer; - ItemPointerSetInvalid(&(so->hashso_curpos)); - - /* bump pin count on marked buffer and copy to current buffer */ - if (ItemPointerIsValid(&(so->hashso_mrkpos))) - { - IncrBufferRefCount(so->hashso_mrkbuf); - so->hashso_curbuf = so->hashso_mrkbuf; - so->hashso_curpos = so->hashso_mrkpos; - } - + elog(ERROR, "hash does not support mark/restore"); PG_RETURN_VOID(); } diff --git a/src/include/access/hash.h b/src/include/access/hash.h index bd4ec10db8..f561597eee 100644 --- a/src/include/access/hash.h +++ b/src/include/access/hash.h @@ -92,17 +92,15 @@ typedef struct HashScanOpaqueData BlockNumber hashso_bucket_blkno; /* - * We also want to remember which buffers we're currently examining in the - * scan. We keep these buffers pinned (but not locked) across hashgettuple + * We also want to remember which buffer we're currently examining in the + * scan. We keep the buffer pinned (but not locked) across hashgettuple * calls, in order to avoid doing a ReadBuffer() for every tuple in the * index. */ Buffer hashso_curbuf; - Buffer hashso_mrkbuf; - /* Current and marked position of the scan */ + /* Current position of the scan */ ItemPointerData hashso_curpos; - ItemPointerData hashso_mrkpos; } HashScanOpaqueData; typedef HashScanOpaqueData *HashScanOpaque; |