1 /*
2  * brin_revmap.h
3  *		Prototypes for BRIN reverse range maps
4  *
5  * Portions Copyright (c) 1996-2017, 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