65 (
void *) &attopt->
key,
111 if (!AttoptCacheHash)
113 memset(&key, 0,
sizeof(key));
145 Anum_pg_attribute_attoptions,
155 memcpy(opts, bytea_opts,
VARSIZE(bytea_opts));
172 if (attopt->
opts == NULL)
AttributeOpts * get_attribute_options(Oid attrelid, int attnum)
void * hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, bool *foundPtr)
bytea * attribute_reloptions(Datum reloptions, bool validate)
void pfree(void *pointer)
#define ObjectIdGetDatum(X)
HTAB * hash_create(const char *tabname, long nelem, const HASHCTL *info, int flags)
static HTAB * AttoptCacheHash
void CacheRegisterSyscacheCallback(int cacheid, SyscacheCallbackFunction func, Datum arg)
void ReleaseSysCache(HeapTuple tuple)
Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
static void InvalidateAttoptCacheCallback(Datum arg, int cacheid, uint32 hashvalue)
#define HeapTupleIsValid(tuple)
void CreateCacheMemoryContext(void)
HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2)
void * hash_seq_search(HASH_SEQ_STATUS *status)
void hash_seq_init(HASH_SEQ_STATUS *status, HTAB *hashp)
void * MemoryContextAlloc(MemoryContext context, Size size)
static void InitializeAttoptCache(void)
static void static void status(const char *fmt,...) pg_attribute_printf(1
MemoryContext CacheMemoryContext