1/*
2 * brin_revmap.h
3 * Prototypes for BRIN reverse range maps
4 *
5 * Portions Copyright (c) 1996-2019, 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 */
24typedef struct BrinRevmap BrinRevmap;
25
26extern BrinRevmap *brinRevmapInitialize(Relation idxrel,
27 BlockNumber *pagesPerRange, Snapshot snapshot);
28extern void brinRevmapTerminate(BrinRevmap *revmap);
29
30extern void brinRevmapExtend(BrinRevmap *revmap,
31 BlockNumber heapBlk);
32extern Buffer brinLockRevmapPageForUpdate(BrinRevmap *revmap,
33 BlockNumber heapBlk);
34extern void brinSetHeapBlockItemptr(Buffer rmbuf, BlockNumber pagesPerRange,
35 BlockNumber heapBlk, ItemPointerData tid);
36extern BrinTuple *brinGetTupleForHeapBlock(BrinRevmap *revmap,
37 BlockNumber heapBlk, Buffer *buf, OffsetNumber *off,
38 Size *size, int mode, Snapshot snapshot);
39extern bool brinRevmapDesummarizeRange(Relation idxrel, BlockNumber heapBlk);
40
41#endif /* BRIN_REVMAP_H */
42