1 /* 2 * brin_revmap.h 3 * Prototypes for BRIN reverse range maps 4 * 5 * Portions Copyright (c) 1996-2018, PostgreSQL Global Development Group 6 * Portions Copyright (c) 1994, Regents of the University of California 7 * 8 * IDENTIFICATION 9 * src/include/access/brin_revmap.h 10 */ 11 12 #ifndef BRIN_REVMAP_H 13 #define BRIN_REVMAP_H 14 15 #include "access/brin_tuple.h" 16 #include "storage/block.h" 17 #include "storage/buf.h" 18 #include "storage/itemptr.h" 19 #include "storage/off.h" 20 #include "utils/relcache.h" 21 #include "utils/snapshot.h" 22 23 /* struct definition lives in brin_revmap.c */ 24 typedef struct BrinRevmap BrinRevmap; 25 26 extern BrinRevmap *brinRevmapInitialize(Relation idxrel, 27 BlockNumber *pagesPerRange, Snapshot snapshot); 28 extern void brinRevmapTerminate(BrinRevmap *revmap); 29 30 extern void brinRevmapExtend(BrinRevmap *revmap, 31 BlockNumber heapBlk); 32 extern Buffer brinLockRevmapPageForUpdate(BrinRevmap *revmap, 33 BlockNumber heapBlk); 34 extern void brinSetHeapBlockItemptr(Buffer rmbuf, BlockNumber pagesPerRange, 35 BlockNumber heapBlk, ItemPointerData tid); 36 extern BrinTuple *brinGetTupleForHeapBlock(BrinRevmap *revmap, 37 BlockNumber heapBlk, Buffer *buf, OffsetNumber *off, 38 Size *size, int mode, Snapshot snapshot); 39 extern bool brinRevmapDesummarizeRange(Relation idxrel, BlockNumber heapBlk); 40 41 #endif /* BRIN_REVMAP_H */ 42