Hi, While hacking on a new system catalogue for a nearby thread, it occurred to me that syscache.c's table of entries could be made more readable and less error prone. They look like this:
{AttributeRelationId, /* ATTNUM */ AttributeRelidNumIndexId, 2, { Anum_pg_attribute_attrelid, Anum_pg_attribute_attnum, 0, 0 }, 128 }, Do you think this is better? [ATTNUM] = { AttributeRelationId, AttributeRelidNumIndexId, { Anum_pg_attribute_attrelid, Anum_pg_attribute_attnum }, 128 }, We could also consider writing eg ".nbuckets = 128", but it's not a complicated struct that the eye gets lost in, so I didn't bother with that in the attached.
From 3c554145b65bde834a1ff9f65396d2ab07f72120 Mon Sep 17 00:00:00 2001 From: Thomas Munro <thomas.mu...@gmail.com> Date: Tue, 20 Dec 2022 15:47:59 +1300 Subject: [PATCH] Improve notation of cacheinfo table in syscache.c. Use C99 designated initializer syntax for the array elements, instead of writing the position in a comment. Remove the explicit trailing zeros from the key. Remove the human-supplied nkeys member, which can be computed by searching for the last non-zero key. --- src/backend/utils/cache/syscache.c | 700 +++++++++++------------------ 1 file changed, 253 insertions(+), 447 deletions(-) diff --git a/src/backend/utils/cache/syscache.c b/src/backend/utils/cache/syscache.c index 5f17047047..4f22861926 100644 --- a/src/backend/utils/cache/syscache.c +++ b/src/backend/utils/cache/syscache.c @@ -89,8 +89,7 @@ Add your entry to the cacheinfo[] array below. All cache lists are alphabetical, so add it in the proper place. Specify the relation OID, - index OID, number of keys, key attribute numbers, and initial number of - hash buckets. + index OID, key attribute numbers, and initial number of hash buckets. The number of hash buckets must be a power of 2. It's reasonable to set this to the number of entries that might be in the particular cache @@ -117,59 +116,48 @@ struct cachedesc { Oid reloid; /* OID of the relation being cached */ Oid indoid; /* OID of index relation for this cache */ - int nkeys; /* # of keys needed for cache lookup */ int key[4]; /* attribute numbers of key attrs */ int nbuckets; /* number of hash buckets for this cache */ }; static const struct cachedesc cacheinfo[] = { - {AggregateRelationId, /* AGGFNOID */ + [AGGFNOID] = { + AggregateRelationId, AggregateFnoidIndexId, - 1, { - Anum_pg_aggregate_aggfnoid, - 0, - 0, - 0 + Anum_pg_aggregate_aggfnoid }, 16 }, - {AccessMethodRelationId, /* AMNAME */ + [AMNAME] = { + AccessMethodRelationId, AmNameIndexId, - 1, { - Anum_pg_am_amname, - 0, - 0, - 0 + Anum_pg_am_amname }, 4 }, - {AccessMethodRelationId, /* AMOID */ + [AMOID] = { + AccessMethodRelationId, AmOidIndexId, - 1, { - Anum_pg_am_oid, - 0, - 0, - 0 + Anum_pg_am_oid }, 4 }, - {AccessMethodOperatorRelationId, /* AMOPOPID */ + [AMOPOPID] = { + AccessMethodOperatorRelationId, AccessMethodOperatorIndexId, - 3, { Anum_pg_amop_amopopr, Anum_pg_amop_amoppurpose, - Anum_pg_amop_amopfamily, - 0 + Anum_pg_amop_amopfamily }, 64 }, - {AccessMethodOperatorRelationId, /* AMOPSTRATEGY */ + [AMOPSTRATEGY] = { + AccessMethodOperatorRelationId, AccessMethodStrategyIndexId, - 4, { Anum_pg_amop_amopfamily, Anum_pg_amop_amoplefttype, @@ -178,9 +166,9 @@ static const struct cachedesc cacheinfo[] = { }, 64 }, - {AccessMethodProcedureRelationId, /* AMPROCNUM */ + [AMPROCNUM] = { + AccessMethodProcedureRelationId, AccessMethodProcedureIndexId, - 4, { Anum_pg_amproc_amprocfamily, Anum_pg_amproc_amproclefttype, @@ -189,131 +177,108 @@ static const struct cachedesc cacheinfo[] = { }, 16 }, - {AttributeRelationId, /* ATTNAME */ + [ATTNAME] = { + AttributeRelationId, AttributeRelidNameIndexId, - 2, { Anum_pg_attribute_attrelid, - Anum_pg_attribute_attname, - 0, - 0 + Anum_pg_attribute_attname }, 32 }, - {AttributeRelationId, /* ATTNUM */ + [ATTNUM] = { + AttributeRelationId, AttributeRelidNumIndexId, - 2, { Anum_pg_attribute_attrelid, - Anum_pg_attribute_attnum, - 0, - 0 + Anum_pg_attribute_attnum }, 128 }, - {AuthMemRelationId, /* AUTHMEMMEMROLE */ + [AUTHMEMMEMROLE] = { + AuthMemRelationId, AuthMemMemRoleIndexId, - 3, { Anum_pg_auth_members_member, Anum_pg_auth_members_roleid, - Anum_pg_auth_members_grantor, - 0 + Anum_pg_auth_members_grantor }, 8 }, - {AuthMemRelationId, /* AUTHMEMROLEMEM */ + [AUTHMEMROLEMEM] = { + AuthMemRelationId, AuthMemRoleMemIndexId, - 3, { Anum_pg_auth_members_roleid, Anum_pg_auth_members_member, - Anum_pg_auth_members_grantor, - 0 + Anum_pg_auth_members_grantor }, 8 }, - {AuthIdRelationId, /* AUTHNAME */ + [AUTHNAME] = { + AuthIdRelationId, AuthIdRolnameIndexId, - 1, { - Anum_pg_authid_rolname, - 0, - 0, - 0 + Anum_pg_authid_rolname }, 8 }, - {AuthIdRelationId, /* AUTHOID */ + [AUTHOID] = { + AuthIdRelationId, AuthIdOidIndexId, - 1, { - Anum_pg_authid_oid, - 0, - 0, - 0 + Anum_pg_authid_oid }, 8 }, - { - CastRelationId, /* CASTSOURCETARGET */ + [CASTSOURCETARGET] = { + CastRelationId, CastSourceTargetIndexId, - 2, { Anum_pg_cast_castsource, - Anum_pg_cast_casttarget, - 0, - 0 + Anum_pg_cast_casttarget }, 256 }, - {OperatorClassRelationId, /* CLAAMNAMENSP */ + [CLAAMNAMENSP] = { + OperatorClassRelationId, OpclassAmNameNspIndexId, - 3, { Anum_pg_opclass_opcmethod, Anum_pg_opclass_opcname, - Anum_pg_opclass_opcnamespace, - 0 + Anum_pg_opclass_opcnamespace }, 8 }, - {OperatorClassRelationId, /* CLAOID */ + [CLAOID] = { + OperatorClassRelationId, OpclassOidIndexId, - 1, { - Anum_pg_opclass_oid, - 0, - 0, - 0 + Anum_pg_opclass_oid }, 8 }, - {CollationRelationId, /* COLLNAMEENCNSP */ + [COLLNAMEENCNSP] = { + CollationRelationId, CollationNameEncNspIndexId, - 3, { Anum_pg_collation_collname, Anum_pg_collation_collencoding, - Anum_pg_collation_collnamespace, - 0 + Anum_pg_collation_collnamespace }, 8 }, - {CollationRelationId, /* COLLOID */ + [COLLOID] = { + CollationRelationId, CollationOidIndexId, - 1, { - Anum_pg_collation_oid, - 0, - 0, - 0 + Anum_pg_collation_oid }, 8 }, - {ConversionRelationId, /* CONDEFAULT */ + [CONDEFAULT] = { + ConversionRelationId, ConversionDefaultIndexId, - 4, { Anum_pg_conversion_connamespace, Anum_pg_conversion_conforencoding, @@ -322,218 +287,165 @@ static const struct cachedesc cacheinfo[] = { }, 8 }, - {ConversionRelationId, /* CONNAMENSP */ + [CONNAMENSP] = { + ConversionRelationId, ConversionNameNspIndexId, - 2, { Anum_pg_conversion_conname, - Anum_pg_conversion_connamespace, - 0, - 0 + Anum_pg_conversion_connamespace }, 8 }, - {ConstraintRelationId, /* CONSTROID */ + [CONSTROID] = { + ConstraintRelationId, ConstraintOidIndexId, - 1, { - Anum_pg_constraint_oid, - 0, - 0, - 0 + Anum_pg_constraint_oid }, 16 }, - {ConversionRelationId, /* CONVOID */ + [CONVOID] = { + ConversionRelationId, ConversionOidIndexId, - 1, { - Anum_pg_conversion_oid, - 0, - 0, - 0 + Anum_pg_conversion_oid }, 8 }, - {DatabaseRelationId, /* DATABASEOID */ + [DATABASEOID] = { + DatabaseRelationId, DatabaseOidIndexId, - 1, { - Anum_pg_database_oid, - 0, - 0, - 0 + Anum_pg_database_oid }, 4 }, - {DefaultAclRelationId, /* DEFACLROLENSPOBJ */ + [DEFACLROLENSPOBJ] = { + DefaultAclRelationId, DefaultAclRoleNspObjIndexId, - 3, { Anum_pg_default_acl_defaclrole, Anum_pg_default_acl_defaclnamespace, - Anum_pg_default_acl_defaclobjtype, - 0 + Anum_pg_default_acl_defaclobjtype }, 8 }, - {EnumRelationId, /* ENUMOID */ + [ENUMOID] = { + EnumRelationId, EnumOidIndexId, - 1, { - Anum_pg_enum_oid, - 0, - 0, - 0 + Anum_pg_enum_oid }, 8 }, - {EnumRelationId, /* ENUMTYPOIDNAME */ + [ENUMTYPOIDNAME] = { + EnumRelationId, EnumTypIdLabelIndexId, - 2, { Anum_pg_enum_enumtypid, - Anum_pg_enum_enumlabel, - 0, - 0 + Anum_pg_enum_enumlabel }, 8 }, - {EventTriggerRelationId, /* EVENTTRIGGERNAME */ + [EVENTTRIGGERNAME] = { + EventTriggerRelationId, EventTriggerNameIndexId, - 1, { - Anum_pg_event_trigger_evtname, - 0, - 0, - 0 + Anum_pg_event_trigger_evtname }, 8 }, - {EventTriggerRelationId, /* EVENTTRIGGEROID */ + [EVENTTRIGGEROID] = { + EventTriggerRelationId, EventTriggerOidIndexId, - 1, { - Anum_pg_event_trigger_oid, - 0, - 0, - 0 + Anum_pg_event_trigger_oid }, 8 }, - {ForeignDataWrapperRelationId, /* FOREIGNDATAWRAPPERNAME */ + [FOREIGNDATAWRAPPERNAME] = { + ForeignDataWrapperRelationId, ForeignDataWrapperNameIndexId, - 1, { - Anum_pg_foreign_data_wrapper_fdwname, - 0, - 0, - 0 + Anum_pg_foreign_data_wrapper_fdwname }, 2 }, - {ForeignDataWrapperRelationId, /* FOREIGNDATAWRAPPEROID */ + [FOREIGNDATAWRAPPEROID] = { + ForeignDataWrapperRelationId, ForeignDataWrapperOidIndexId, - 1, { - Anum_pg_foreign_data_wrapper_oid, - 0, - 0, - 0 + Anum_pg_foreign_data_wrapper_oid }, 2 }, - {ForeignServerRelationId, /* FOREIGNSERVERNAME */ + [FOREIGNSERVERNAME] = { + ForeignServerRelationId, ForeignServerNameIndexId, - 1, { - Anum_pg_foreign_server_srvname, - 0, - 0, - 0 + Anum_pg_foreign_server_srvname }, 2 }, - {ForeignServerRelationId, /* FOREIGNSERVEROID */ + [FOREIGNSERVEROID] = { + ForeignServerRelationId, ForeignServerOidIndexId, - 1, { - Anum_pg_foreign_server_oid, - 0, - 0, - 0 + Anum_pg_foreign_server_oid }, 2 }, - {ForeignTableRelationId, /* FOREIGNTABLEREL */ + [FOREIGNTABLEREL] = { + ForeignTableRelationId, ForeignTableRelidIndexId, - 1, { - Anum_pg_foreign_table_ftrelid, - 0, - 0, - 0 + Anum_pg_foreign_table_ftrelid }, 4 }, - {IndexRelationId, /* INDEXRELID */ + [INDEXRELID] = { + IndexRelationId, IndexRelidIndexId, - 1, { - Anum_pg_index_indexrelid, - 0, - 0, - 0 + Anum_pg_index_indexrelid }, 64 }, - {LanguageRelationId, /* LANGNAME */ + [LANGNAME] = { + LanguageRelationId, LanguageNameIndexId, - 1, { - Anum_pg_language_lanname, - 0, - 0, - 0 + Anum_pg_language_lanname }, 4 }, - {LanguageRelationId, /* LANGOID */ + [LANGOID] = { + LanguageRelationId, LanguageOidIndexId, - 1, { - Anum_pg_language_oid, - 0, - 0, - 0 + Anum_pg_language_oid }, 4 }, - {NamespaceRelationId, /* NAMESPACENAME */ + [NAMESPACENAME] = { + NamespaceRelationId, NamespaceNameIndexId, - 1, { - Anum_pg_namespace_nspname, - 0, - 0, - 0 + Anum_pg_namespace_nspname }, 4 }, - {NamespaceRelationId, /* NAMESPACEOID */ + [NAMESPACEOID] = { + NamespaceRelationId, NamespaceOidIndexId, - 1, { - Anum_pg_namespace_oid, - 0, - 0, - 0 + Anum_pg_namespace_oid }, 16 }, - {OperatorRelationId, /* OPERNAMENSP */ + [OPERNAMENSP] = { + OperatorRelationId, OperatorNameNspIndexId, - 4, { Anum_pg_operator_oprname, Anum_pg_operator_oprleft, @@ -542,499 +454,387 @@ static const struct cachedesc cacheinfo[] = { }, 256 }, - {OperatorRelationId, /* OPEROID */ + [OPEROID] = { + OperatorRelationId, OperatorOidIndexId, - 1, { - Anum_pg_operator_oid, - 0, - 0, - 0 + Anum_pg_operator_oid }, 32 }, - {OperatorFamilyRelationId, /* OPFAMILYAMNAMENSP */ + [OPFAMILYAMNAMENSP] = { + OperatorFamilyRelationId, OpfamilyAmNameNspIndexId, - 3, { Anum_pg_opfamily_opfmethod, Anum_pg_opfamily_opfname, - Anum_pg_opfamily_opfnamespace, - 0 + Anum_pg_opfamily_opfnamespace }, 8 }, - {OperatorFamilyRelationId, /* OPFAMILYOID */ + [OPFAMILYOID] = { + OperatorFamilyRelationId, OpfamilyOidIndexId, - 1, { - Anum_pg_opfamily_oid, - 0, - 0, - 0 + Anum_pg_opfamily_oid }, 8 }, - {ParameterAclRelationId, /* PARAMETERACLNAME */ + [PARAMETERACLNAME] = { + ParameterAclRelationId, ParameterAclParnameIndexId, - 1, { - Anum_pg_parameter_acl_parname, - 0, - 0, - 0 + Anum_pg_parameter_acl_parname }, 4 }, - {ParameterAclRelationId, /* PARAMETERACLOID */ + [PARAMETERACLOID] = { + ParameterAclRelationId, ParameterAclOidIndexId, - 1, { - Anum_pg_parameter_acl_oid, - 0, - 0, - 0 + Anum_pg_parameter_acl_oid }, 4 }, - {PartitionedRelationId, /* PARTRELID */ + [PARTRELID] = { + PartitionedRelationId, PartitionedRelidIndexId, - 1, { - Anum_pg_partitioned_table_partrelid, - 0, - 0, - 0 + Anum_pg_partitioned_table_partrelid }, 32 }, - {ProcedureRelationId, /* PROCNAMEARGSNSP */ + [PROCNAMEARGSNSP] = { + ProcedureRelationId, ProcedureNameArgsNspIndexId, - 3, { Anum_pg_proc_proname, Anum_pg_proc_proargtypes, - Anum_pg_proc_pronamespace, - 0 + Anum_pg_proc_pronamespace }, 128 }, - {ProcedureRelationId, /* PROCOID */ + [PROCOID] = { + ProcedureRelationId, ProcedureOidIndexId, - 1, { - Anum_pg_proc_oid, - 0, - 0, - 0 + Anum_pg_proc_oid }, 128 }, - {PublicationRelationId, /* PUBLICATIONNAME */ + [PUBLICATIONNAME] = { + PublicationRelationId, PublicationNameIndexId, - 1, { - Anum_pg_publication_pubname, - 0, - 0, - 0 + Anum_pg_publication_pubname }, 8 }, - {PublicationNamespaceRelationId, /* PUBLICATIONNAMESPACE */ + [PUBLICATIONNAMESPACE] = { + PublicationNamespaceRelationId, PublicationNamespaceObjectIndexId, - 1, { - Anum_pg_publication_namespace_oid, - 0, - 0, - 0 + Anum_pg_publication_namespace_oid }, 64 }, - {PublicationNamespaceRelationId, /* PUBLICATIONNAMESPACEMAP */ + [PUBLICATIONNAMESPACEMAP] = { + PublicationNamespaceRelationId, PublicationNamespacePnnspidPnpubidIndexId, - 2, { Anum_pg_publication_namespace_pnnspid, - Anum_pg_publication_namespace_pnpubid, - 0, - 0 + Anum_pg_publication_namespace_pnpubid }, 64 }, - {PublicationRelationId, /* PUBLICATIONOID */ + [PUBLICATIONOID] = { + PublicationRelationId, PublicationObjectIndexId, - 1, { - Anum_pg_publication_oid, - 0, - 0, - 0 + Anum_pg_publication_oid }, 8 }, - {PublicationRelRelationId, /* PUBLICATIONREL */ + [PUBLICATIONREL] = { + PublicationRelRelationId, PublicationRelObjectIndexId, - 1, { - Anum_pg_publication_rel_oid, - 0, - 0, - 0 + Anum_pg_publication_rel_oid }, 64 }, - {PublicationRelRelationId, /* PUBLICATIONRELMAP */ + [PUBLICATIONRELMAP] = { + PublicationRelRelationId, PublicationRelPrrelidPrpubidIndexId, - 2, { Anum_pg_publication_rel_prrelid, - Anum_pg_publication_rel_prpubid, - 0, - 0 + Anum_pg_publication_rel_prpubid }, 64 }, - {RangeRelationId, /* RANGEMULTIRANGE */ + [RANGEMULTIRANGE] = { + RangeRelationId, RangeMultirangeTypidIndexId, - 1, { - Anum_pg_range_rngmultitypid, - 0, - 0, - 0 + Anum_pg_range_rngmultitypid }, 4 }, - {RangeRelationId, /* RANGETYPE */ + [RANGETYPE] = { + RangeRelationId, RangeTypidIndexId, - 1, { - Anum_pg_range_rngtypid, - 0, - 0, - 0 + Anum_pg_range_rngtypid }, 4 }, - {RelationRelationId, /* RELNAMENSP */ + [RELNAMENSP] = { + RelationRelationId, ClassNameNspIndexId, - 2, { Anum_pg_class_relname, - Anum_pg_class_relnamespace, - 0, - 0 + Anum_pg_class_relnamespace }, 128 }, - {RelationRelationId, /* RELOID */ + [RELOID] = { + RelationRelationId, ClassOidIndexId, - 1, { - Anum_pg_class_oid, - 0, - 0, - 0 + Anum_pg_class_oid }, 128 }, - {ReplicationOriginRelationId, /* REPLORIGIDENT */ + [REPLORIGIDENT] = { + ReplicationOriginRelationId, ReplicationOriginIdentIndex, - 1, { - Anum_pg_replication_origin_roident, - 0, - 0, - 0 + Anum_pg_replication_origin_roident }, 16 }, - {ReplicationOriginRelationId, /* REPLORIGNAME */ + [REPLORIGNAME] = { + ReplicationOriginRelationId, ReplicationOriginNameIndex, - 1, { - Anum_pg_replication_origin_roname, - 0, - 0, - 0 + Anum_pg_replication_origin_roname }, 16 }, - {RewriteRelationId, /* RULERELNAME */ + [RULERELNAME] = { + RewriteRelationId, RewriteRelRulenameIndexId, - 2, { Anum_pg_rewrite_ev_class, - Anum_pg_rewrite_rulename, - 0, - 0 + Anum_pg_rewrite_rulename }, 8 }, - {SequenceRelationId, /* SEQRELID */ + [SEQRELID] = { + SequenceRelationId, SequenceRelidIndexId, - 1, { - Anum_pg_sequence_seqrelid, - 0, - 0, - 0 + Anum_pg_sequence_seqrelid }, 32 }, - {StatisticExtDataRelationId, /* STATEXTDATASTXOID */ + [STATEXTDATASTXOID] = { + StatisticExtDataRelationId, StatisticExtDataStxoidInhIndexId, - 2, { Anum_pg_statistic_ext_data_stxoid, - Anum_pg_statistic_ext_data_stxdinherit, - 0, - 0 + Anum_pg_statistic_ext_data_stxdinherit }, 4 }, - {StatisticExtRelationId, /* STATEXTNAMENSP */ + [STATEXTNAMENSP] = { + StatisticExtRelationId, StatisticExtNameIndexId, - 2, { Anum_pg_statistic_ext_stxname, - Anum_pg_statistic_ext_stxnamespace, - 0, - 0 + Anum_pg_statistic_ext_stxnamespace }, 4 }, - {StatisticExtRelationId, /* STATEXTOID */ + [STATEXTOID] = { + StatisticExtRelationId, StatisticExtOidIndexId, - 1, { - Anum_pg_statistic_ext_oid, - 0, - 0, - 0 + Anum_pg_statistic_ext_oid }, 4 }, - {StatisticRelationId, /* STATRELATTINH */ + [STATRELATTINH] = { + StatisticRelationId, StatisticRelidAttnumInhIndexId, - 3, { Anum_pg_statistic_starelid, Anum_pg_statistic_staattnum, - Anum_pg_statistic_stainherit, - 0 + Anum_pg_statistic_stainherit }, 128 }, - {SubscriptionRelationId, /* SUBSCRIPTIONNAME */ + [SUBSCRIPTIONNAME] = { + SubscriptionRelationId, SubscriptionNameIndexId, - 2, { Anum_pg_subscription_subdbid, - Anum_pg_subscription_subname, - 0, - 0 + Anum_pg_subscription_subname }, 4 }, - {SubscriptionRelationId, /* SUBSCRIPTIONOID */ + [SUBSCRIPTIONOID] = { + SubscriptionRelationId, SubscriptionObjectIndexId, - 1, { - Anum_pg_subscription_oid, - 0, - 0, - 0 + Anum_pg_subscription_oid }, 4 }, - {SubscriptionRelRelationId, /* SUBSCRIPTIONRELMAP */ + [SUBSCRIPTIONRELMAP] = { + SubscriptionRelRelationId, SubscriptionRelSrrelidSrsubidIndexId, - 2, { Anum_pg_subscription_rel_srrelid, - Anum_pg_subscription_rel_srsubid, - 0, - 0 + Anum_pg_subscription_rel_srsubid }, 64 }, - {TableSpaceRelationId, /* TABLESPACEOID */ + [TABLESPACEOID] = { + TableSpaceRelationId, TablespaceOidIndexId, - 1, { - Anum_pg_tablespace_oid, - 0, - 0, - 0, + Anum_pg_tablespace_oid }, 4 }, - {TransformRelationId, /* TRFOID */ + [TRFOID] = { + TransformRelationId, TransformOidIndexId, - 1, { - Anum_pg_transform_oid, - 0, - 0, - 0, + Anum_pg_transform_oid }, 16 }, - {TransformRelationId, /* TRFTYPELANG */ + [TRFTYPELANG] = { + TransformRelationId, TransformTypeLangIndexId, - 2, { Anum_pg_transform_trftype, - Anum_pg_transform_trflang, - 0, - 0, + Anum_pg_transform_trflang }, 16 }, - {TSConfigMapRelationId, /* TSCONFIGMAP */ + [TSCONFIGMAP] = { + TSConfigMapRelationId, TSConfigMapIndexId, - 3, { Anum_pg_ts_config_map_mapcfg, Anum_pg_ts_config_map_maptokentype, - Anum_pg_ts_config_map_mapseqno, - 0 + Anum_pg_ts_config_map_mapseqno }, 2 }, - {TSConfigRelationId, /* TSCONFIGNAMENSP */ + [TSCONFIGNAMENSP] = { + TSConfigRelationId, TSConfigNameNspIndexId, - 2, { Anum_pg_ts_config_cfgname, - Anum_pg_ts_config_cfgnamespace, - 0, - 0 + Anum_pg_ts_config_cfgnamespace }, 2 }, - {TSConfigRelationId, /* TSCONFIGOID */ + [TSCONFIGOID] = { + TSConfigRelationId, TSConfigOidIndexId, - 1, { - Anum_pg_ts_config_oid, - 0, - 0, - 0 + Anum_pg_ts_config_oid }, 2 }, - {TSDictionaryRelationId, /* TSDICTNAMENSP */ + [TSDICTNAMENSP] = { + TSDictionaryRelationId, TSDictionaryNameNspIndexId, - 2, { Anum_pg_ts_dict_dictname, - Anum_pg_ts_dict_dictnamespace, - 0, - 0 + Anum_pg_ts_dict_dictnamespace }, 2 }, - {TSDictionaryRelationId, /* TSDICTOID */ + [TSDICTOID] = { + TSDictionaryRelationId, TSDictionaryOidIndexId, - 1, { - Anum_pg_ts_dict_oid, - 0, - 0, - 0 + Anum_pg_ts_dict_oid }, 2 }, - {TSParserRelationId, /* TSPARSERNAMENSP */ + [TSPARSERNAMENSP] = { + TSParserRelationId, TSParserNameNspIndexId, - 2, { Anum_pg_ts_parser_prsname, - Anum_pg_ts_parser_prsnamespace, - 0, - 0 + Anum_pg_ts_parser_prsnamespace }, 2 }, - {TSParserRelationId, /* TSPARSEROID */ + [TSPARSEROID] = { + TSParserRelationId, TSParserOidIndexId, - 1, { - Anum_pg_ts_parser_oid, - 0, - 0, - 0 + Anum_pg_ts_parser_oid }, 2 }, - {TSTemplateRelationId, /* TSTEMPLATENAMENSP */ + [TSTEMPLATENAMENSP] = { + TSTemplateRelationId, TSTemplateNameNspIndexId, - 2, { Anum_pg_ts_template_tmplname, - Anum_pg_ts_template_tmplnamespace, - 0, - 0 + Anum_pg_ts_template_tmplnamespace }, 2 }, - {TSTemplateRelationId, /* TSTEMPLATEOID */ + [TSTEMPLATEOID] = { + TSTemplateRelationId, TSTemplateOidIndexId, - 1, { - Anum_pg_ts_template_oid, - 0, - 0, - 0 + Anum_pg_ts_template_oid }, 2 }, - {TypeRelationId, /* TYPENAMENSP */ + [TYPENAMENSP] = { + TypeRelationId, TypeNameNspIndexId, - 2, { Anum_pg_type_typname, - Anum_pg_type_typnamespace, - 0, - 0 + Anum_pg_type_typnamespace }, 64 }, - {TypeRelationId, /* TYPEOID */ + [TYPEOID] = { + TypeRelationId, TypeOidIndexId, - 1, { - Anum_pg_type_oid, - 0, - 0, - 0 + Anum_pg_type_oid }, 64 }, - {UserMappingRelationId, /* USERMAPPINGOID */ + [USERMAPPINGOID] = { + UserMappingRelationId, UserMappingOidIndexId, - 1, { - Anum_pg_user_mapping_oid, - 0, - 0, - 0 + Anum_pg_user_mapping_oid }, 2 }, - {UserMappingRelationId, /* USERMAPPINGUSERSERVER */ + [USERMAPPINGUSERSERVER] = { + UserMappingRelationId, UserMappingUserServerIndexId, - 2, { Anum_pg_user_mapping_umuser, - Anum_pg_user_mapping_umserver, - 0, - 0 + Anum_pg_user_mapping_umserver }, 2 } @@ -1077,10 +877,16 @@ InitCatalogCache(void) for (cacheId = 0; cacheId < SysCacheSize; cacheId++) { + int nkeys; + + for (nkeys = lengthof(cacheinfo[cacheId].key); nkeys > 1; --nkeys) + if (cacheinfo[cacheId].key[nkeys - 1]) + break; + SysCache[cacheId] = InitCatCache(cacheId, cacheinfo[cacheId].reloid, cacheinfo[cacheId].indoid, - cacheinfo[cacheId].nkeys, + nkeys, cacheinfo[cacheId].key, cacheinfo[cacheId].nbuckets); if (!PointerIsValid(SysCache[cacheId])) -- 2.38.1