codekingpro/portable-devtools
115k
1/*-------------------------------------------------------------------------2 *3 * ts_cache.h4 * Tsearch related object caches.5 *6 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group7 * Portions Copyright (c) 1994, Regents of the University of California8 *9 * src/include/tsearch/ts_cache.h10 *11 *-------------------------------------------------------------------------12 */13#ifndef TS_CACHE_H14#define TS_CACHE_H15 16#include "fmgr.h"17 18 19/*20 * All TS*CacheEntry structs must share this common header21 * (see InvalidateTSCacheCallBack)22 */23typedef struct TSAnyCacheEntry24{25 Oid objId;26 bool isvalid;27} TSAnyCacheEntry;28 29 30typedef struct TSParserCacheEntry31{32 /* prsId is the hash lookup key and MUST BE FIRST */33 Oid prsId; /* OID of the parser */34 bool isvalid;35 36 Oid startOid;37 Oid tokenOid;38 Oid endOid;39 Oid headlineOid;40 Oid lextypeOid;41 42 /*43 * Pre-set-up fmgr call of most needed parser's methods44 */45 FmgrInfo prsstart;46 FmgrInfo prstoken;47 FmgrInfo prsend;48 FmgrInfo prsheadline;49} TSParserCacheEntry;50 51typedef struct TSDictionaryCacheEntry52{53 /* dictId is the hash lookup key and MUST BE FIRST */54 Oid dictId;55 bool isvalid;56 57 /* most frequent fmgr call */58 Oid lexizeOid;59 FmgrInfo lexize;60 61 MemoryContext dictCtx; /* memory context to store private data */62 void *dictData;63} TSDictionaryCacheEntry;64 65typedef struct66{67 int len;68 Oid *dictIds;69} ListDictionary;70 71typedef struct72{73 /* cfgId is the hash lookup key and MUST BE FIRST */74 Oid cfgId;75 bool isvalid;76 77 Oid prsId;78 79 int lenmap;80 ListDictionary *map;81} TSConfigCacheEntry;82 83 84/*85 * GUC variable for current configuration86 */87extern PGDLLIMPORT char *TSCurrentConfig;88 89 90extern TSParserCacheEntry *lookup_ts_parser_cache(Oid prsId);91extern TSDictionaryCacheEntry *lookup_ts_dictionary_cache(Oid dictId);92extern TSConfigCacheEntry *lookup_ts_config_cache(Oid cfgId);93 94extern Oid getTSCurrentConfig(bool emitError);95 96#endif /* TS_CACHE_H */97 