Fix possible crash in pg_dump with identity sequences.
[pgsql.git] / src / include / access / gin.h
blob25983b7a5056653623f0aa38b3f8d6c6a3654e20
1 /*--------------------------------------------------------------------------
2 * gin.h
3 * Public header file for Generalized Inverted Index access method.
5 * Copyright (c) 2006-2024, PostgreSQL Global Development Group
7 * src/include/access/gin.h
8 *--------------------------------------------------------------------------
9 */
10 #ifndef GIN_H
11 #define GIN_H
13 #include "access/xlogreader.h"
14 #include "lib/stringinfo.h"
15 #include "storage/block.h"
16 #include "utils/relcache.h"
20 * amproc indexes for inverted indexes.
22 #define GIN_COMPARE_PROC 1
23 #define GIN_EXTRACTVALUE_PROC 2
24 #define GIN_EXTRACTQUERY_PROC 3
25 #define GIN_CONSISTENT_PROC 4
26 #define GIN_COMPARE_PARTIAL_PROC 5
27 #define GIN_TRICONSISTENT_PROC 6
28 #define GIN_OPTIONS_PROC 7
29 #define GINNProcs 7
32 * searchMode settings for extractQueryFn.
34 #define GIN_SEARCH_MODE_DEFAULT 0
35 #define GIN_SEARCH_MODE_INCLUDE_EMPTY 1
36 #define GIN_SEARCH_MODE_ALL 2
37 #define GIN_SEARCH_MODE_EVERYTHING 3 /* for internal use only */
40 * GinStatsData represents stats data for planner use
42 typedef struct GinStatsData
44 BlockNumber nPendingPages;
45 BlockNumber nTotalPages;
46 BlockNumber nEntryPages;
47 BlockNumber nDataPages;
48 int64 nEntries;
49 int32 ginVersion;
50 } GinStatsData;
53 * A ternary value used by tri-consistent functions.
55 * This must be of the same size as a bool because some code will cast a
56 * pointer to a bool to a pointer to a GinTernaryValue.
58 typedef char GinTernaryValue;
60 StaticAssertDecl(sizeof(GinTernaryValue) == sizeof(bool),
61 "sizes of GinTernaryValue and bool are not equal");
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 know
66 * if matches */
68 static inline GinTernaryValue
69 DatumGetGinTernaryValue(Datum X)
71 return (GinTernaryValue) X;
74 static inline Datum
75 GinTernaryValueGetDatum(GinTernaryValue X)
77 return (Datum) X;
80 #define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x)
82 /* GUC parameters */
83 extern PGDLLIMPORT int GinFuzzySearchLimit;
84 extern PGDLLIMPORT int gin_pending_list_limit;
86 /* ginutil.c */
87 extern void ginGetStats(Relation index, GinStatsData *stats);
88 extern void ginUpdateStats(Relation index, const GinStatsData *stats,
89 bool is_build);
91 #endif /* GIN_H */