88 Assert(keysize ==
sizeof(*ckey));
141 memset(&
key, 0,
sizeof(
key));
142 key.attrelid = attrelid;
173 Anum_pg_attribute_attoptions,
200 if (attopt->
opts == NULL)
static uint32 relatt_cache_syshash(const void *key, Size keysize)
AttributeOpts * get_attribute_options(Oid attrelid, int attnum)
static HTAB * AttoptCacheHash
static void InvalidateAttoptCacheCallback(Datum arg, int cacheid, uint32 hashvalue)
static void InitializeAttoptCache(void)
#define Assert(condition)
void CreateCacheMemoryContext(void)
void hash_seq_init_with_hash_value(HASH_SEQ_STATUS *status, HTAB *hashp, uint32 hashvalue)
void * hash_search(HTAB *hashp, const void *keyPtr, HASHACTION action, bool *foundPtr)
void * hash_seq_search(HASH_SEQ_STATUS *status)
HTAB * hash_create(const char *tabname, long nelem, const HASHCTL *info, int flags)
void hash_seq_init(HASH_SEQ_STATUS *status, HTAB *hashp)
#define HeapTupleIsValid(tuple)
void CacheRegisterSyscacheCallback(int cacheid, SyscacheCallbackFunction func, Datum arg)
void * MemoryContextAlloc(MemoryContext context, Size size)
void pfree(void *pointer)
MemoryContext CacheMemoryContext
static AmcheckOptions opts
static Datum Int16GetDatum(int16 X)
static Datum ObjectIdGetDatum(Oid X)
bytea * attribute_reloptions(Datum reloptions, bool validate)
void ReleaseSysCache(HeapTuple tuple)
Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2)
#define GetSysCacheHashValue2(cacheId, key1, key2)