/* * AM-callable functions for BRIN indexes * * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION * src/include/access/brin.h */ #ifndef BRIN_H #define BRIN_H #include "nodes/execnodes.h" #include "utils/relcache.h" /* * Storage type for BRIN's reloptions */ typedef struct BrinOptions { int32 vl_len_; /* varlena header (do not touch directly!) */ BlockNumber pagesPerRange; bool autosummarize; } BrinOptions; /* * BrinStatsData represents stats data for planner use */ typedef struct BrinStatsData { BlockNumber pagesPerRange; BlockNumber revmapNumPages; } BrinStatsData; #define BRIN_DEFAULT_PAGES_PER_RANGE 128 #define BrinGetPagesPerRange(relation) \ (AssertMacro(relation->rd_rel->relkind == RELKIND_INDEX && \ relation->rd_rel->relam == BRIN_AM_OID), \ (relation)->rd_options ? \ ((BrinOptions *) (relation)->rd_options)->pagesPerRange : \ BRIN_DEFAULT_PAGES_PER_RANGE) #define BrinGetAutoSummarize(relation) \ (AssertMacro(relation->rd_rel->relkind == RELKIND_INDEX && \ relation->rd_rel->relam == BRIN_AM_OID), \ (relation)->rd_options ? \ ((BrinOptions *) (relation)->rd_options)->autosummarize : \ false) extern void brinGetStats(Relation index, BrinStatsData *stats); #endif /* BRIN_H */