28 #define GIST_CONSISTENT_PROC 1
29 #define GIST_UNION_PROC 2
30 #define GIST_COMPRESS_PROC 3
31 #define GIST_DECOMPRESS_PROC 4
32 #define GIST_PENALTY_PROC 5
33 #define GIST_PICKSPLIT_PROC 6
34 #define GIST_EQUAL_PROC 7
35 #define GIST_DISTANCE_PROC 8
36 #define GIST_FETCH_PROC 9
42 #define F_LEAF (1 << 0)
43 #define F_DELETED (1 << 1)
44 #define F_TUPLES_DELETED (1 << 2)
46 #define F_FOLLOW_RIGHT (1 << 3)
47 #define F_HAS_GARBAGE (1 << 4)
74 #define GIST_PAGE_ID 0xFF81
130 #define GistPageGetOpaque(page) ( (GISTPageOpaque) PageGetSpecialPointer(page) )
132 #define GistPageIsLeaf(page) ( GistPageGetOpaque(page)->flags & F_LEAF)
133 #define GIST_LEAF(entry) (GistPageIsLeaf((entry)->page))
135 #define GistPageIsDeleted(page) ( GistPageGetOpaque(page)->flags & F_DELETED)
136 #define GistPageSetDeleted(page) ( GistPageGetOpaque(page)->flags |= F_DELETED)
137 #define GistPageSetNonDeleted(page) ( GistPageGetOpaque(page)->flags &= ~F_DELETED)
139 #define GistTuplesDeleted(page) ( GistPageGetOpaque(page)->flags & F_TUPLES_DELETED)
140 #define GistMarkTuplesDeleted(page) ( GistPageGetOpaque(page)->flags |= F_TUPLES_DELETED)
141 #define GistClearTuplesDeleted(page) ( GistPageGetOpaque(page)->flags &= ~F_TUPLES_DELETED)
143 #define GistPageHasGarbage(page) ( GistPageGetOpaque(page)->flags & F_HAS_GARBAGE)
144 #define GistMarkPageHasGarbage(page) ( GistPageGetOpaque(page)->flags |= F_HAS_GARBAGE)
145 #define GistClearPageHasGarbage(page) ( GistPageGetOpaque(page)->flags &= ~F_HAS_GARBAGE)
147 #define GistFollowRight(page) ( GistPageGetOpaque(page)->flags & F_FOLLOW_RIGHT)
148 #define GistMarkFollowRight(page) ( GistPageGetOpaque(page)->flags |= F_FOLLOW_RIGHT)
149 #define GistClearFollowRight(page) ( GistPageGetOpaque(page)->flags &= ~F_FOLLOW_RIGHT)
151 #define GistPageGetNSN(page) ( PageXLogRecPtrGet(GistPageGetOpaque(page)->nsn))
152 #define GistPageSetNSN(page, val) ( PageXLogRecPtrSet(GistPageGetOpaque(page)->nsn, val))
164 #define GEVHDRSZ (offsetof(GistEntryVector, vector))
169 #define gistentryinit(e, k, r, pg, o, l) \
170 do { (e).key = (k); (e).rel = (r); (e).page = (pg); \
171 (e).offset = (o); (e).leafkey = (l); } while (0)
struct GIST_SPLITVEC GIST_SPLITVEC
PageXLogRecPtr PageGistNSN
struct GISTENTRY GISTENTRY
struct GISTPageOpaqueData GISTPageOpaqueData
GISTPageOpaqueData * GISTPageOpaque