summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2009-06-05 18:50:47 +0000
committerTom Lane2009-06-05 18:50:47 +0000
commit0e21a7d74ba4f519fe27842ad14c002580faa0d9 (patch)
tree71bcabe3ab3a4eebf5a13cd8cd53b63b7d024244
parent1735676910cdfda9078676426f937949c010f432 (diff)
GIN's ItemPointerIsMin, ItemPointerIsMax, and ItemPointerIsLossyPage macros
should use GinItemPointerGetBlockNumber/GinItemPointerGetOffsetNumber, not ItemPointerGetBlockNumber/ItemPointerGetOffsetNumber, because the latter will Assert() on ip_posid == 0, ie a "Min" pointer. (Thus, ItemPointerIsMin has never worked at all, but it seems unused at present.) I'm not certain that the case can occur in normal functioning, but it's blowing up on me while investigating Tatsuo-san's data corruption problem. In any case it seems like a problem waiting to bite someone. Back-patch just in case this really is a problem for somebody in the field.
-rw-r--r--src/include/access/gin.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/include/access/gin.h b/src/include/access/gin.h
index 95cef21b46..44510a36a5 100644
--- a/src/include/access/gin.h
+++ b/src/include/access/gin.h
@@ -124,18 +124,18 @@ typedef struct GinMetaPageData
#define ItemPointerSetMin(p) \
ItemPointerSet((p), (BlockNumber)0, (OffsetNumber)0)
#define ItemPointerIsMin(p) \
- (ItemPointerGetOffsetNumber(p) == (OffsetNumber)0 && \
- ItemPointerGetBlockNumber(p) == (BlockNumber)0)
+ (GinItemPointerGetOffsetNumber(p) == (OffsetNumber)0 && \
+ GinItemPointerGetBlockNumber(p) == (BlockNumber)0)
#define ItemPointerSetMax(p) \
ItemPointerSet((p), InvalidBlockNumber, (OffsetNumber)0xffff)
#define ItemPointerIsMax(p) \
- (ItemPointerGetOffsetNumber(p) == (OffsetNumber)0xffff && \
- ItemPointerGetBlockNumber(p) == InvalidBlockNumber)
+ (GinItemPointerGetOffsetNumber(p) == (OffsetNumber)0xffff && \
+ GinItemPointerGetBlockNumber(p) == InvalidBlockNumber)
#define ItemPointerSetLossyPage(p, b) \
ItemPointerSet((p), (b), (OffsetNumber)0xffff)
#define ItemPointerIsLossyPage(p) \
- (ItemPointerGetOffsetNumber(p) == (OffsetNumber)0xffff && \
- ItemPointerGetBlockNumber(p) != InvalidBlockNumber)
+ (GinItemPointerGetOffsetNumber(p) == (OffsetNumber)0xffff && \
+ GinItemPointerGetBlockNumber(p) != InvalidBlockNumber)
typedef struct
{