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 <[email protected]>
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