codekingpro/portable-devtools
115k
1/*--------------------------------------------------------------------------2 * gin.h3 * Public header file for Generalized Inverted Index access method.4 *5 * Copyright (c) 2006-2023, PostgreSQL Global Development Group6 *7 * src/include/access/gin.h8 *--------------------------------------------------------------------------9 */10#ifndef GIN_H11#define GIN_H12 13#include "access/xlogreader.h"14#include "lib/stringinfo.h"15#include "storage/block.h"16#include "utils/relcache.h"17 18 19/*20 * amproc indexes for inverted indexes.21 */22#define GIN_COMPARE_PROC 123#define GIN_EXTRACTVALUE_PROC 224#define GIN_EXTRACTQUERY_PROC 325#define GIN_CONSISTENT_PROC 426#define GIN_COMPARE_PARTIAL_PROC 527#define GIN_TRICONSISTENT_PROC 628#define GIN_OPTIONS_PROC 729#define GINNProcs 730 31/*32 * searchMode settings for extractQueryFn.33 */34#define GIN_SEARCH_MODE_DEFAULT 035#define GIN_SEARCH_MODE_INCLUDE_EMPTY 136#define GIN_SEARCH_MODE_ALL 237#define GIN_SEARCH_MODE_EVERYTHING 3 /* for internal use only */38 39/*40 * GinStatsData represents stats data for planner use41 */42typedef struct GinStatsData43{44 BlockNumber nPendingPages;45 BlockNumber nTotalPages;46 BlockNumber nEntryPages;47 BlockNumber nDataPages;48 int64 nEntries;49 int32 ginVersion;50} GinStatsData;51 52/*53 * A ternary value used by tri-consistent functions.54 *55 * This must be of the same size as a bool because some code will cast a56 * pointer to a bool to a pointer to a GinTernaryValue.57 */58typedef char GinTernaryValue;59 60StaticAssertDecl(sizeof(GinTernaryValue) == sizeof(bool),61 "sizes of GinTernaryValue and bool are not equal");62 63#define GIN_FALSE 0 /* item is not present / does not match */64#define GIN_TRUE 1 /* item is present / matches */65#define GIN_MAYBE 2 /* don't know if item is present / don't know66 * if matches */67 68static inline GinTernaryValue69DatumGetGinTernaryValue(Datum X)70{71 return (GinTernaryValue) X;72}73 74static inline Datum75GinTernaryValueGetDatum(GinTernaryValue X)76{77 return (Datum) X;78}79 80#define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x)81 82/* GUC parameters */83extern PGDLLIMPORT int GinFuzzySearchLimit;84extern PGDLLIMPORT int gin_pending_list_limit;85 86/* ginutil.c */87extern void ginGetStats(Relation index, GinStatsData *stats);88extern void ginUpdateStats(Relation index, const GinStatsData *stats,89 bool is_build);90 91#endif /* GIN_H */92 