| 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 |  */ | 
| 21 | typedef 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 |  */ | 
| 32 | typedef 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 |  | 
| 50 | extern void brinGetStats(Relation index, BrinStatsData *stats); | 
| 51 |  | 
| 52 | #endif							/* BRIN_H */ | 
| 53 |  |