127 #define KEY(...) VA_ARGS_NARGS(__VA_ARGS__), { __VA_ARGS__ }
132 AggregateFnoidIndexId,
133 KEY(Anum_pg_aggregate_aggfnoid),
137 AccessMethodRelationId,
139 KEY(Anum_pg_am_amname),
143 AccessMethodRelationId,
149 AccessMethodOperatorRelationId,
150 AccessMethodOperatorIndexId,
151 KEY(Anum_pg_amop_amopopr,
152 Anum_pg_amop_amoppurpose,
153 Anum_pg_amop_amopfamily),
157 AccessMethodOperatorRelationId,
158 AccessMethodStrategyIndexId,
159 KEY(Anum_pg_amop_amopfamily,
160 Anum_pg_amop_amoplefttype,
161 Anum_pg_amop_amoprighttype,
162 Anum_pg_amop_amopstrategy),
166 AccessMethodProcedureRelationId,
167 AccessMethodProcedureIndexId,
168 KEY(Anum_pg_amproc_amprocfamily,
169 Anum_pg_amproc_amproclefttype,
170 Anum_pg_amproc_amprocrighttype,
171 Anum_pg_amproc_amprocnum),
176 AttributeRelidNameIndexId,
177 KEY(Anum_pg_attribute_attrelid,
178 Anum_pg_attribute_attname),
183 AttributeRelidNumIndexId,
184 KEY(Anum_pg_attribute_attrelid,
185 Anum_pg_attribute_attnum),
190 AuthMemMemRoleIndexId,
191 KEY(Anum_pg_auth_members_member,
192 Anum_pg_auth_members_roleid,
193 Anum_pg_auth_members_grantor),
198 AuthMemRoleMemIndexId,
199 KEY(Anum_pg_auth_members_roleid,
200 Anum_pg_auth_members_member,
201 Anum_pg_auth_members_grantor),
206 AuthIdRolnameIndexId,
207 KEY(Anum_pg_authid_rolname),
213 KEY(Anum_pg_authid_oid),
218 CastSourceTargetIndexId,
219 KEY(Anum_pg_cast_castsource,
220 Anum_pg_cast_casttarget),
224 OperatorClassRelationId,
225 OpclassAmNameNspIndexId,
226 KEY(Anum_pg_opclass_opcmethod,
227 Anum_pg_opclass_opcname,
228 Anum_pg_opclass_opcnamespace),
232 OperatorClassRelationId,
234 KEY(Anum_pg_opclass_oid),
239 CollationNameEncNspIndexId,
240 KEY(Anum_pg_collation_collname,
241 Anum_pg_collation_collencoding,
242 Anum_pg_collation_collnamespace),
248 KEY(Anum_pg_collation_oid),
252 ConversionRelationId,
253 ConversionDefaultIndexId,
254 KEY(Anum_pg_conversion_connamespace,
255 Anum_pg_conversion_conforencoding,
256 Anum_pg_conversion_contoencoding,
257 Anum_pg_conversion_oid),
261 ConversionRelationId,
262 ConversionNameNspIndexId,
263 KEY(Anum_pg_conversion_conname,
264 Anum_pg_conversion_connamespace),
268 ConstraintRelationId,
269 ConstraintOidIndexId,
270 KEY(Anum_pg_constraint_oid),
274 ConversionRelationId,
275 ConversionOidIndexId,
276 KEY(Anum_pg_conversion_oid),
282 KEY(Anum_pg_database_oid),
286 DefaultAclRelationId,
287 DefaultAclRoleNspObjIndexId,
288 KEY(Anum_pg_default_acl_defaclrole,
289 Anum_pg_default_acl_defaclnamespace,
290 Anum_pg_default_acl_defaclobjtype),
296 KEY(Anum_pg_enum_oid),
301 EnumTypIdLabelIndexId,
302 KEY(Anum_pg_enum_enumtypid,
303 Anum_pg_enum_enumlabel),
307 EventTriggerRelationId,
308 EventTriggerNameIndexId,
309 KEY(Anum_pg_event_trigger_evtname),
313 EventTriggerRelationId,
314 EventTriggerOidIndexId,
315 KEY(Anum_pg_event_trigger_oid),
319 ForeignDataWrapperRelationId,
320 ForeignDataWrapperNameIndexId,
321 KEY(Anum_pg_foreign_data_wrapper_fdwname),
325 ForeignDataWrapperRelationId,
326 ForeignDataWrapperOidIndexId,
327 KEY(Anum_pg_foreign_data_wrapper_oid),
331 ForeignServerRelationId,
332 ForeignServerNameIndexId,
333 KEY(Anum_pg_foreign_server_srvname),
337 ForeignServerRelationId,
338 ForeignServerOidIndexId,
339 KEY(Anum_pg_foreign_server_oid),
343 ForeignTableRelationId,
344 ForeignTableRelidIndexId,
345 KEY(Anum_pg_foreign_table_ftrelid),
351 KEY(Anum_pg_index_indexrelid),
357 KEY(Anum_pg_language_lanname),
363 KEY(Anum_pg_language_oid),
368 NamespaceNameIndexId,
369 KEY(Anum_pg_namespace_nspname),
375 KEY(Anum_pg_namespace_oid),
380 OperatorNameNspIndexId,
381 KEY(Anum_pg_operator_oprname,
382 Anum_pg_operator_oprleft,
383 Anum_pg_operator_oprright,
384 Anum_pg_operator_oprnamespace),
390 KEY(Anum_pg_operator_oid),
394 OperatorFamilyRelationId,
395 OpfamilyAmNameNspIndexId,
396 KEY(Anum_pg_opfamily_opfmethod,
397 Anum_pg_opfamily_opfname,
398 Anum_pg_opfamily_opfnamespace),
402 OperatorFamilyRelationId,
404 KEY(Anum_pg_opfamily_oid),
408 ParameterAclRelationId,
409 ParameterAclParnameIndexId,
410 KEY(Anum_pg_parameter_acl_parname),
414 ParameterAclRelationId,
415 ParameterAclOidIndexId,
416 KEY(Anum_pg_parameter_acl_oid),
420 PartitionedRelationId,
421 PartitionedRelidIndexId,
422 KEY(Anum_pg_partitioned_table_partrelid),
427 ProcedureNameArgsNspIndexId,
428 KEY(Anum_pg_proc_proname,
429 Anum_pg_proc_proargtypes,
430 Anum_pg_proc_pronamespace),
436 KEY(Anum_pg_proc_oid),
440 PublicationRelationId,
441 PublicationNameIndexId,
442 KEY(Anum_pg_publication_pubname),
446 PublicationNamespaceRelationId,
447 PublicationNamespaceObjectIndexId,
448 KEY(Anum_pg_publication_namespace_oid),
452 PublicationNamespaceRelationId,
453 PublicationNamespacePnnspidPnpubidIndexId,
454 KEY(Anum_pg_publication_namespace_pnnspid,
455 Anum_pg_publication_namespace_pnpubid),
459 PublicationRelationId,
460 PublicationObjectIndexId,
461 KEY(Anum_pg_publication_oid),
465 PublicationRelRelationId,
466 PublicationRelObjectIndexId,
467 KEY(Anum_pg_publication_rel_oid),
471 PublicationRelRelationId,
472 PublicationRelPrrelidPrpubidIndexId,
473 KEY(Anum_pg_publication_rel_prrelid,
474 Anum_pg_publication_rel_prpubid),
479 RangeMultirangeTypidIndexId,
480 KEY(Anum_pg_range_rngmultitypid),
486 KEY(Anum_pg_range_rngtypid),
492 KEY(Anum_pg_class_relname,
493 Anum_pg_class_relnamespace),
499 KEY(Anum_pg_class_oid),
503 ReplicationOriginRelationId,
504 ReplicationOriginIdentIndex,
505 KEY(Anum_pg_replication_origin_roident),
509 ReplicationOriginRelationId,
510 ReplicationOriginNameIndex,
511 KEY(Anum_pg_replication_origin_roname),
516 RewriteRelRulenameIndexId,
517 KEY(Anum_pg_rewrite_ev_class,
518 Anum_pg_rewrite_rulename),
523 SequenceRelidIndexId,
524 KEY(Anum_pg_sequence_seqrelid),
528 StatisticExtDataRelationId,
529 StatisticExtDataStxoidInhIndexId,
530 KEY(Anum_pg_statistic_ext_data_stxoid,
531 Anum_pg_statistic_ext_data_stxdinherit),
535 StatisticExtRelationId,
536 StatisticExtNameIndexId,
537 KEY(Anum_pg_statistic_ext_stxname,
538 Anum_pg_statistic_ext_stxnamespace),
542 StatisticExtRelationId,
543 StatisticExtOidIndexId,
544 KEY(Anum_pg_statistic_ext_oid),
549 StatisticRelidAttnumInhIndexId,
550 KEY(Anum_pg_statistic_starelid,
551 Anum_pg_statistic_staattnum,
552 Anum_pg_statistic_stainherit),
556 SubscriptionRelationId,
557 SubscriptionNameIndexId,
558 KEY(Anum_pg_subscription_subdbid,
559 Anum_pg_subscription_subname),
563 SubscriptionRelationId,
564 SubscriptionObjectIndexId,
565 KEY(Anum_pg_subscription_oid),
569 SubscriptionRelRelationId,
570 SubscriptionRelSrrelidSrsubidIndexId,
571 KEY(Anum_pg_subscription_rel_srrelid,
572 Anum_pg_subscription_rel_srsubid),
576 TableSpaceRelationId,
577 TablespaceOidIndexId,
578 KEY(Anum_pg_tablespace_oid),
584 KEY(Anum_pg_transform_oid),
589 TransformTypeLangIndexId,
590 KEY(Anum_pg_transform_trftype,
591 Anum_pg_transform_trflang),
595 TSConfigMapRelationId,
597 KEY(Anum_pg_ts_config_map_mapcfg,
598 Anum_pg_ts_config_map_maptokentype,
599 Anum_pg_ts_config_map_mapseqno),
604 TSConfigNameNspIndexId,
605 KEY(Anum_pg_ts_config_cfgname,
606 Anum_pg_ts_config_cfgnamespace),
612 KEY(Anum_pg_ts_config_oid),
616 TSDictionaryRelationId,
617 TSDictionaryNameNspIndexId,
618 KEY(Anum_pg_ts_dict_dictname,
619 Anum_pg_ts_dict_dictnamespace),
623 TSDictionaryRelationId,
624 TSDictionaryOidIndexId,
625 KEY(Anum_pg_ts_dict_oid),
630 TSParserNameNspIndexId,
631 KEY(Anum_pg_ts_parser_prsname,
632 Anum_pg_ts_parser_prsnamespace),
638 KEY(Anum_pg_ts_parser_oid),
642 TSTemplateRelationId,
643 TSTemplateNameNspIndexId,
644 KEY(Anum_pg_ts_template_tmplname,
645 Anum_pg_ts_template_tmplnamespace),
649 TSTemplateRelationId,
650 TSTemplateOidIndexId,
651 KEY(Anum_pg_ts_template_oid),
657 KEY(Anum_pg_type_typname,
658 Anum_pg_type_typnamespace),
664 KEY(Anum_pg_type_oid),
668 UserMappingRelationId,
669 UserMappingOidIndexId,
670 KEY(Anum_pg_user_mapping_oid),
673 [USERMAPPINGUSERSERVER] = {
674 UserMappingRelationId,
675 UserMappingUserServerIndexId,
676 KEY(Anum_pg_user_mapping_umuser,
677 Anum_pg_user_mapping_umserver),
683 "SysCacheSize does not match syscache.c's array");
734 elog(
ERROR,
"could not initialize cache %u (%d)",
1093 elog(
ERROR,
"invalid cache ID: %d", cacheId);
1123 "unexpected null value in cached tuple for catalog %s column %s",
1150 elog(
ERROR,
"invalid cache ID: %d", cacheId);
1164 elog(
ERROR,
"invalid cache ID: %d", cacheId);
1182 elog(
ERROR,
"invalid cache ID: %d", cacheId);
1207 case DbRoleSettingRelationId:
1208 case DependRelationId:
1209 case SharedDependRelationId:
1210 case DescriptionRelationId:
1211 case SharedDescriptionRelationId:
1212 case SecLabelRelationId:
1213 case SharedSecLabelRelationId:
1233 int middle = low + (high - low) / 2;
1258 int middle = low + (high - low) / 2;
1283 return (oa > ob) ? 1 : -1;
#define PointerIsValid(pointer)
#define OidIsValid(objectId)
HeapTuple SearchCatCache2(CatCache *cache, Datum v1, Datum v2)
HeapTuple SearchCatCache3(CatCache *cache, Datum v1, Datum v2, Datum v3)
void InitCatCachePhase2(CatCache *cache, bool touch_index)
uint32 GetCatCacheHashValue(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
HeapTuple SearchCatCache4(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
CatCache * InitCatCache(int id, Oid reloid, Oid indexoid, int nkeys, const int *key, int nbuckets)
CatCList * SearchCatCacheList(CatCache *cache, int nkeys, Datum v1, Datum v2, Datum v3)
void CatCacheInvalidate(CatCache *cache, uint32 hashValue)
HeapTuple SearchCatCache1(CatCache *cache, Datum v1)
void ReleaseCatCache(HeapTuple tuple)
HeapTuple SearchCatCache(CatCache *cache, Datum v1, Datum v2, Datum v3, Datum v4)
elog(ERROR, "%s: %s", p2, msg)
HeapTuple heap_copytuple(HeapTuple tuple)
#define HeapTupleIsValid(tuple)
static Datum heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
Assert(fmt[strlen(fmt) - 1] !='\n')
char * get_rel_name(Oid relid)
FormData_pg_attribute * Form_pg_attribute
void pg_qsort(void *base, size_t nel, size_t elsize, int(*cmp)(const void *, const void *))
static Datum Int16GetDatum(int16 X)
static Datum ObjectIdGetDatum(Oid X)
static Datum CStringGetDatum(const char *X)
static size_t qunique(void *array, size_t elements, size_t width, int(*compare)(const void *, const void *))
HeapTuple SearchSysCacheCopyAttName(Oid relid, const char *attname)
void SysCacheInvalidate(int cacheId, uint32 hashValue)
bool RelationHasSysCache(Oid relid)
HeapTuple SearchSysCacheCopyAttNum(Oid relid, int16 attnum)
void InitCatalogCache(void)
static const struct cachedesc cacheinfo[]
void ReleaseSysCache(HeapTuple tuple)
static bool CacheInitialized
static int oid_compare(const void *a, const void *b)
HeapTuple SearchSysCache(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
HeapTuple SearchSysCache1(int cacheId, Datum key1)
uint32 GetSysCacheHashValue(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
struct catclist * SearchSysCacheList(int cacheId, int nkeys, Datum key1, Datum key2, Datum key3)
StaticAssertDecl(lengthof(cacheinfo)==SysCacheSize, "SysCacheSize does not match syscache.c's array")
HeapTuple SearchSysCache3(int cacheId, Datum key1, Datum key2, Datum key3)
static int SysCacheSupportingRelOidSize
HeapTuple SearchSysCacheAttNum(Oid relid, int16 attnum)
bool RelationSupportsSysCache(Oid relid)
Datum SysCacheGetAttr(int cacheId, HeapTuple tup, AttrNumber attributeNumber, bool *isNull)
bool SearchSysCacheExistsAttName(Oid relid, const char *attname)
void InitCatalogCachePhase2(void)
HeapTuple SearchSysCache2(int cacheId, Datum key1, Datum key2)
HeapTuple SearchSysCacheAttName(Oid relid, const char *attname)
bool SearchSysCacheExists(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
HeapTuple SearchSysCacheCopy(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
static Oid SysCacheRelationOid[SysCacheSize]
static CatCache * SysCache[SysCacheSize]
static Oid SysCacheSupportingRelOid[SysCacheSize *2]
static int SysCacheRelationOidSize
bool RelationInvalidatesSnapshotsOnly(Oid relid)
HeapTuple SearchSysCache4(int cacheId, Datum key1, Datum key2, Datum key3, Datum key4)
Datum SysCacheGetAttrNotNull(int cacheId, HeapTuple tup, AttrNumber attributeNumber)
Oid GetSysCacheOid(int cacheId, AttrNumber oidcol, Datum key1, Datum key2, Datum key3, Datum key4)
@ PUBLICATIONNAMESPACEMAP
#define TupleDescAttr(tupdesc, i)