1/*
2 * AM-callable functions for BRIN indexes
3 *
4 * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
5 * Portions Copyright (c) 1994, Regents of the University of California
6 *
7 * IDENTIFICATION
8 * src/include/access/brin.h
9 */
10#ifndef BRIN_H
11#define BRIN_H
12
13#include "fmgr.h"
14#include "nodes/execnodes.h"
15#include "utils/relcache.h"
16
17
18/*
19 * Storage type for BRIN's reloptions
20 */
21typedef struct BrinOptions
22{
23 int32 vl_len_; /* varlena header (do not touch directly!) */
24 BlockNumber pagesPerRange;
25 bool autosummarize;
26} BrinOptions;
27
28
29/*
30 * BrinStatsData represents stats data for planner use
31 */
32typedef struct BrinStatsData
33{
34 BlockNumber pagesPerRange;
35 BlockNumber revmapNumPages;
36} BrinStatsData;
37
38
39#define BRIN_DEFAULT_PAGES_PER_RANGE 128
40#define BrinGetPagesPerRange(relation) \
41 ((relation)->rd_options ? \
42 ((BrinOptions *) (relation)->rd_options)->pagesPerRange : \
43 BRIN_DEFAULT_PAGES_PER_RANGE)
44#define BrinGetAutoSummarize(relation) \
45 ((relation)->rd_options ? \
46 ((BrinOptions *) (relation)->rd_options)->autosummarize : \
47 false)
48
49
50extern void brinGetStats(Relation index, BrinStatsData *stats);
51
52#endif /* BRIN_H */
53