LCOV - code coverage report
Current view: top level - src/include/access - gin.h (source / functions) Hit Total Coverage
Test: PostgreSQL 18devel Lines: 4 4 100.0 %
Date: 2024-11-21 09:14:53 Functions: 2 2 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*--------------------------------------------------------------------------
       2             :  * gin.h
       3             :  *    Public header file for Generalized Inverted Index access method.
       4             :  *
       5             :  *  Copyright (c) 2006-2024, PostgreSQL Global Development Group
       6             :  *
       7             :  *  src/include/access/gin.h
       8             :  *--------------------------------------------------------------------------
       9             :  */
      10             : #ifndef GIN_H
      11             : #define GIN_H
      12             : 
      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               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
      30             : 
      31             : /*
      32             :  * searchMode settings for extractQueryFn.
      33             :  */
      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 */
      38             : 
      39             : /*
      40             :  * GinStatsData represents stats data for planner use
      41             :  */
      42             : typedef struct GinStatsData
      43             : {
      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 a
      56             :  * pointer to a bool to a pointer to a GinTernaryValue.
      57             :  */
      58             : typedef char GinTernaryValue;
      59             : 
      60             : StaticAssertDecl(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 know
      66             :                                  * if matches */
      67             : 
      68             : static inline GinTernaryValue
      69      968956 : DatumGetGinTernaryValue(Datum X)
      70             : {
      71      968956 :     return (GinTernaryValue) X;
      72             : }
      73             : 
      74             : static inline Datum
      75      968956 : GinTernaryValueGetDatum(GinTernaryValue X)
      76             : {
      77      968956 :     return (Datum) X;
      78             : }
      79             : 
      80             : #define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x)
      81             : 
      82             : /* GUC parameters */
      83             : extern PGDLLIMPORT int GinFuzzySearchLimit;
      84             : extern PGDLLIMPORT int gin_pending_list_limit;
      85             : 
      86             : /* ginutil.c */
      87             : extern void ginGetStats(Relation index, GinStatsData *stats);
      88             : extern void ginUpdateStats(Relation index, const GinStatsData *stats,
      89             :                            bool is_build);
      90             : 
      91             : #endif                          /* GIN_H */

Generated by: LCOV version 1.14