Improve notation of cacheinfo table in syscache.c.
authorThomas Munro <[email protected]>
Thu, 22 Dec 2022 21:40:18 +0000 (10:40 +1300)
committerThomas Munro <[email protected]>
Thu, 22 Dec 2022 21:40:18 +0000 (10:40 +1300)
Use C99 designated initializer syntax for the array elements, instead of
writing the enumerator name and position in a comment.  Replace nkeys
and key with a local variadic macro, for a shorter notation.

Reviewed-by: Tom Lane <[email protected]>
Reviewed-by: Peter Eisentraut <[email protected]>
Discussion: https://postgr.es/m/CA%2BhUKGKdpDjKL2jgC-GpoL4DGZU1YPqnOFHbDqFkfRQcPaR5DQ%40mail.gmail.com

src/backend/utils/cache/syscache.c

index 5f17047047bec924548737d4f6f735dbb73d7f79..d3add33527978bf321300a72df015678fc500d20 100644 (file)
@@ -122,920 +122,558 @@ struct cachedesc
        int                     nbuckets;               /* number of hash buckets for this cache */
 };
 
+/* Macro to provide nkeys and key array with convenient syntax. */
+#define KEY(...) VA_ARGS_NARGS(__VA_ARGS__), { __VA_ARGS__ }
+
 static const struct cachedesc cacheinfo[] = {
-       {AggregateRelationId,           /* AGGFNOID */
+       [AGGFNOID] = {
+               AggregateRelationId,
                AggregateFnoidIndexId,
-               1,
-               {
-                       Anum_pg_aggregate_aggfnoid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_aggregate_aggfnoid),
                16
        },
-       {AccessMethodRelationId,        /* AMNAME */
+       [AMNAME] = {
+               AccessMethodRelationId,
                AmNameIndexId,
-               1,
-               {
-                       Anum_pg_am_amname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_am_amname),
                4
        },
-       {AccessMethodRelationId,        /* AMOID */
+       [AMOID] = {
+               AccessMethodRelationId,
                AmOidIndexId,
-               1,
-               {
-                       Anum_pg_am_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_am_oid),
                4
        },
-       {AccessMethodOperatorRelationId,        /* AMOPOPID */
+       [AMOPOPID] = {
+               AccessMethodOperatorRelationId,
                AccessMethodOperatorIndexId,
-               3,
-               {
-                       Anum_pg_amop_amopopr,
+               KEY(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,
+               KEY(Anum_pg_amop_amopfamily,
                        Anum_pg_amop_amoplefttype,
                        Anum_pg_amop_amoprighttype,
-                       Anum_pg_amop_amopstrategy
-               },
+                       Anum_pg_amop_amopstrategy),
                64
        },
-       {AccessMethodProcedureRelationId,       /* AMPROCNUM */
+       [AMPROCNUM] = {
+               AccessMethodProcedureRelationId,
                AccessMethodProcedureIndexId,
-               4,
-               {
-                       Anum_pg_amproc_amprocfamily,
+               KEY(Anum_pg_amproc_amprocfamily,
                        Anum_pg_amproc_amproclefttype,
                        Anum_pg_amproc_amprocrighttype,
-                       Anum_pg_amproc_amprocnum
-               },
+                       Anum_pg_amproc_amprocnum),
                16
        },
-       {AttributeRelationId,           /* ATTNAME */
+       [ATTNAME] = {
+               AttributeRelationId,
                AttributeRelidNameIndexId,
-               2,
-               {
-                       Anum_pg_attribute_attrelid,
-                       Anum_pg_attribute_attname,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_attribute_attrelid,
+                       Anum_pg_attribute_attname),
                32
        },
-       {AttributeRelationId,           /* ATTNUM */
+       [ATTNUM] = {
+               AttributeRelationId,
                AttributeRelidNumIndexId,
-               2,
-               {
-                       Anum_pg_attribute_attrelid,
-                       Anum_pg_attribute_attnum,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_attribute_attrelid,
+                       Anum_pg_attribute_attnum),
                128
        },
-       {AuthMemRelationId,                     /* AUTHMEMMEMROLE */
+       [AUTHMEMMEMROLE] = {
+               AuthMemRelationId,
                AuthMemMemRoleIndexId,
-               3,
-               {
-                       Anum_pg_auth_members_member,
+               KEY(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,
+               KEY(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
-               },
+               KEY(Anum_pg_authid_rolname),
                8
        },
-       {AuthIdRelationId,                      /* AUTHOID */
+       [AUTHOID] = {
+               AuthIdRelationId,
                AuthIdOidIndexId,
-               1,
-               {
-                       Anum_pg_authid_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_authid_oid),
                8
        },
-       {
-               CastRelationId,                 /* CASTSOURCETARGET */
+       [CASTSOURCETARGET] = {
+               CastRelationId,
                CastSourceTargetIndexId,
-               2,
-               {
-                       Anum_pg_cast_castsource,
-                       Anum_pg_cast_casttarget,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_cast_castsource,
+                       Anum_pg_cast_casttarget),
                256
        },
-       {OperatorClassRelationId,       /* CLAAMNAMENSP */
+       [CLAAMNAMENSP] = {
+               OperatorClassRelationId,
                OpclassAmNameNspIndexId,
-               3,
-               {
-                       Anum_pg_opclass_opcmethod,
+               KEY(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
-               },
+               KEY(Anum_pg_opclass_oid),
                8
        },
-       {CollationRelationId,           /* COLLNAMEENCNSP */
+       [COLLNAMEENCNSP] = {
+               CollationRelationId,
                CollationNameEncNspIndexId,
-               3,
-               {
-                       Anum_pg_collation_collname,
+               KEY(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
-               },
+               KEY(Anum_pg_collation_oid),
                8
        },
-       {ConversionRelationId,          /* CONDEFAULT */
+       [CONDEFAULT] = {
+               ConversionRelationId,
                ConversionDefaultIndexId,
-               4,
-               {
-                       Anum_pg_conversion_connamespace,
+               KEY(Anum_pg_conversion_connamespace,
                        Anum_pg_conversion_conforencoding,
                        Anum_pg_conversion_contoencoding,
-                       Anum_pg_conversion_oid
-               },
+                       Anum_pg_conversion_oid),
                8
        },
-       {ConversionRelationId,          /* CONNAMENSP */
+       [CONNAMENSP] = {
+               ConversionRelationId,
                ConversionNameNspIndexId,
-               2,
-               {
-                       Anum_pg_conversion_conname,
-                       Anum_pg_conversion_connamespace,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_conversion_conname,
+                       Anum_pg_conversion_connamespace),
                8
        },
-       {ConstraintRelationId,          /* CONSTROID */
+       [CONSTROID] = {
+               ConstraintRelationId,
                ConstraintOidIndexId,
-               1,
-               {
-                       Anum_pg_constraint_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_constraint_oid),
                16
        },
-       {ConversionRelationId,          /* CONVOID */
+       [CONVOID] = {
+               ConversionRelationId,
                ConversionOidIndexId,
-               1,
-               {
-                       Anum_pg_conversion_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_conversion_oid),
                8
        },
-       {DatabaseRelationId,            /* DATABASEOID */
+       [DATABASEOID] = {
+               DatabaseRelationId,
                DatabaseOidIndexId,
-               1,
-               {
-                       Anum_pg_database_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_database_oid),
                4
        },
-       {DefaultAclRelationId,          /* DEFACLROLENSPOBJ */
+       [DEFACLROLENSPOBJ] = {
+               DefaultAclRelationId,
                DefaultAclRoleNspObjIndexId,
-               3,
-               {
-                       Anum_pg_default_acl_defaclrole,
+               KEY(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
-               },
+               KEY(Anum_pg_enum_oid),
                8
        },
-       {EnumRelationId,                        /* ENUMTYPOIDNAME */
+       [ENUMTYPOIDNAME] = {
+               EnumRelationId,
                EnumTypIdLabelIndexId,
-               2,
-               {
-                       Anum_pg_enum_enumtypid,
-                       Anum_pg_enum_enumlabel,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_enum_enumtypid,
+                       Anum_pg_enum_enumlabel),
                8
        },
-       {EventTriggerRelationId,        /* EVENTTRIGGERNAME */
+       [EVENTTRIGGERNAME] = {
+               EventTriggerRelationId,
                EventTriggerNameIndexId,
-               1,
-               {
-                       Anum_pg_event_trigger_evtname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_event_trigger_evtname),
                8
        },
-       {EventTriggerRelationId,        /* EVENTTRIGGEROID */
+       [EVENTTRIGGEROID] = {
+               EventTriggerRelationId,
                EventTriggerOidIndexId,
-               1,
-               {
-                       Anum_pg_event_trigger_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_event_trigger_oid),
                8
        },
-       {ForeignDataWrapperRelationId,  /* FOREIGNDATAWRAPPERNAME */
+       [FOREIGNDATAWRAPPERNAME] = {
+               ForeignDataWrapperRelationId,
                ForeignDataWrapperNameIndexId,
-               1,
-               {
-                       Anum_pg_foreign_data_wrapper_fdwname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_foreign_data_wrapper_fdwname),
                2
        },
-       {ForeignDataWrapperRelationId,  /* FOREIGNDATAWRAPPEROID */
+       [FOREIGNDATAWRAPPEROID] = {
+               ForeignDataWrapperRelationId,
                ForeignDataWrapperOidIndexId,
-               1,
-               {
-                       Anum_pg_foreign_data_wrapper_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_foreign_data_wrapper_oid),
                2
        },
-       {ForeignServerRelationId,       /* FOREIGNSERVERNAME */
+       [FOREIGNSERVERNAME] = {
+               ForeignServerRelationId,
                ForeignServerNameIndexId,
-               1,
-               {
-                       Anum_pg_foreign_server_srvname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_foreign_server_srvname),
                2
        },
-       {ForeignServerRelationId,       /* FOREIGNSERVEROID */
+       [FOREIGNSERVEROID] = {
+               ForeignServerRelationId,
                ForeignServerOidIndexId,
-               1,
-               {
-                       Anum_pg_foreign_server_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_foreign_server_oid),
                2
        },
-       {ForeignTableRelationId,        /* FOREIGNTABLEREL */
+       [FOREIGNTABLEREL] = {
+               ForeignTableRelationId,
                ForeignTableRelidIndexId,
-               1,
-               {
-                       Anum_pg_foreign_table_ftrelid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_foreign_table_ftrelid),
                4
        },
-       {IndexRelationId,                       /* INDEXRELID */
+       [INDEXRELID] = {
+               IndexRelationId,
                IndexRelidIndexId,
-               1,
-               {
-                       Anum_pg_index_indexrelid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_index_indexrelid),
                64
        },
-       {LanguageRelationId,            /* LANGNAME */
+       [LANGNAME] = {
+               LanguageRelationId,
                LanguageNameIndexId,
-               1,
-               {
-                       Anum_pg_language_lanname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_language_lanname),
                4
        },
-       {LanguageRelationId,            /* LANGOID */
+       [LANGOID] = {
+               LanguageRelationId,
                LanguageOidIndexId,
-               1,
-               {
-                       Anum_pg_language_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_language_oid),
                4
        },
-       {NamespaceRelationId,           /* NAMESPACENAME */
+       [NAMESPACENAME] = {
+               NamespaceRelationId,
                NamespaceNameIndexId,
-               1,
-               {
-                       Anum_pg_namespace_nspname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_namespace_nspname),
                4
        },
-       {NamespaceRelationId,           /* NAMESPACEOID */
+       [NAMESPACEOID] = {
+               NamespaceRelationId,
                NamespaceOidIndexId,
-               1,
-               {
-                       Anum_pg_namespace_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_namespace_oid),
                16
        },
-       {OperatorRelationId,            /* OPERNAMENSP */
+       [OPERNAMENSP] = {
+               OperatorRelationId,
                OperatorNameNspIndexId,
-               4,
-               {
-                       Anum_pg_operator_oprname,
+               KEY(Anum_pg_operator_oprname,
                        Anum_pg_operator_oprleft,
                        Anum_pg_operator_oprright,
-                       Anum_pg_operator_oprnamespace
-               },
+                       Anum_pg_operator_oprnamespace),
                256
        },
-       {OperatorRelationId,            /* OPEROID */
+       [OPEROID] = {
+               OperatorRelationId,
                OperatorOidIndexId,
-               1,
-               {
-                       Anum_pg_operator_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_operator_oid),
                32
        },
-       {OperatorFamilyRelationId,      /* OPFAMILYAMNAMENSP */
+       [OPFAMILYAMNAMENSP] = {
+               OperatorFamilyRelationId,
                OpfamilyAmNameNspIndexId,
-               3,
-               {
-                       Anum_pg_opfamily_opfmethod,
+               KEY(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
-               },
+               KEY(Anum_pg_opfamily_oid),
                8
        },
-       {ParameterAclRelationId,        /* PARAMETERACLNAME */
+       [PARAMETERACLNAME] = {
+               ParameterAclRelationId,
                ParameterAclParnameIndexId,
-               1,
-               {
-                       Anum_pg_parameter_acl_parname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_parameter_acl_parname),
                4
        },
-       {ParameterAclRelationId,        /* PARAMETERACLOID */
+       [PARAMETERACLOID] = {
+               ParameterAclRelationId,
                ParameterAclOidIndexId,
-               1,
-               {
-                       Anum_pg_parameter_acl_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_parameter_acl_oid),
                4
        },
-       {PartitionedRelationId,         /* PARTRELID */
+       [PARTRELID] = {
+               PartitionedRelationId,
                PartitionedRelidIndexId,
-               1,
-               {
-                       Anum_pg_partitioned_table_partrelid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_partitioned_table_partrelid),
                32
        },
-       {ProcedureRelationId,           /* PROCNAMEARGSNSP */
+       [PROCNAMEARGSNSP] = {
+               ProcedureRelationId,
                ProcedureNameArgsNspIndexId,
-               3,
-               {
-                       Anum_pg_proc_proname,
+               KEY(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
-               },
+               KEY(Anum_pg_proc_oid),
                128
        },
-       {PublicationRelationId,         /* PUBLICATIONNAME */
+       [PUBLICATIONNAME] = {
+               PublicationRelationId,
                PublicationNameIndexId,
-               1,
-               {
-                       Anum_pg_publication_pubname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_publication_pubname),
                8
        },
-       {PublicationNamespaceRelationId,        /* PUBLICATIONNAMESPACE */
+       [PUBLICATIONNAMESPACE] = {
+               PublicationNamespaceRelationId,
                PublicationNamespaceObjectIndexId,
-               1,
-               {
-                       Anum_pg_publication_namespace_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_publication_namespace_oid),
                64
        },
-       {PublicationNamespaceRelationId,        /* PUBLICATIONNAMESPACEMAP */
+       [PUBLICATIONNAMESPACEMAP] = {
+               PublicationNamespaceRelationId,
                PublicationNamespacePnnspidPnpubidIndexId,
-               2,
-               {
-                       Anum_pg_publication_namespace_pnnspid,
-                       Anum_pg_publication_namespace_pnpubid,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_publication_namespace_pnnspid,
+                       Anum_pg_publication_namespace_pnpubid),
                64
        },
-       {PublicationRelationId,         /* PUBLICATIONOID */
+       [PUBLICATIONOID] = {
+               PublicationRelationId,
                PublicationObjectIndexId,
-               1,
-               {
-                       Anum_pg_publication_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_publication_oid),
                8
        },
-       {PublicationRelRelationId,      /* PUBLICATIONREL */
+       [PUBLICATIONREL] = {
+               PublicationRelRelationId,
                PublicationRelObjectIndexId,
-               1,
-               {
-                       Anum_pg_publication_rel_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_publication_rel_oid),
                64
        },
-       {PublicationRelRelationId,      /* PUBLICATIONRELMAP */
+       [PUBLICATIONRELMAP] = {
+               PublicationRelRelationId,
                PublicationRelPrrelidPrpubidIndexId,
-               2,
-               {
-                       Anum_pg_publication_rel_prrelid,
-                       Anum_pg_publication_rel_prpubid,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_publication_rel_prrelid,
+                       Anum_pg_publication_rel_prpubid),
                64
        },
-       {RangeRelationId,                       /* RANGEMULTIRANGE */
+       [RANGEMULTIRANGE] = {
+               RangeRelationId,
                RangeMultirangeTypidIndexId,
-               1,
-               {
-                       Anum_pg_range_rngmultitypid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_range_rngmultitypid),
                4
        },
-
-       {RangeRelationId,                       /* RANGETYPE */
+       [RANGETYPE] = {
+               RangeRelationId,
                RangeTypidIndexId,
-               1,
-               {
-                       Anum_pg_range_rngtypid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_range_rngtypid),
                4
        },
-       {RelationRelationId,            /* RELNAMENSP */
+       [RELNAMENSP] = {
+               RelationRelationId,
                ClassNameNspIndexId,
-               2,
-               {
-                       Anum_pg_class_relname,
-                       Anum_pg_class_relnamespace,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_class_relname,
+                       Anum_pg_class_relnamespace),
                128
        },
-       {RelationRelationId,            /* RELOID */
+       [RELOID] = {
+               RelationRelationId,
                ClassOidIndexId,
-               1,
-               {
-                       Anum_pg_class_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_class_oid),
                128
        },
-       {ReplicationOriginRelationId,   /* REPLORIGIDENT */
+       [REPLORIGIDENT] = {
+               ReplicationOriginRelationId,
                ReplicationOriginIdentIndex,
-               1,
-               {
-                       Anum_pg_replication_origin_roident,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_replication_origin_roident),
                16
        },
-       {ReplicationOriginRelationId,   /* REPLORIGNAME */
+       [REPLORIGNAME] = {
+               ReplicationOriginRelationId,
                ReplicationOriginNameIndex,
-               1,
-               {
-                       Anum_pg_replication_origin_roname,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_replication_origin_roname),
                16
        },
-       {RewriteRelationId,                     /* RULERELNAME */
+       [RULERELNAME] = {
+               RewriteRelationId,
                RewriteRelRulenameIndexId,
-               2,
-               {
-                       Anum_pg_rewrite_ev_class,
-                       Anum_pg_rewrite_rulename,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_rewrite_ev_class,
+                       Anum_pg_rewrite_rulename),
                8
        },
-       {SequenceRelationId,            /* SEQRELID */
+       [SEQRELID] = {
+               SequenceRelationId,
                SequenceRelidIndexId,
-               1,
-               {
-                       Anum_pg_sequence_seqrelid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(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
-               },
+               KEY(Anum_pg_statistic_ext_data_stxoid,
+                       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
-               },
+               KEY(Anum_pg_statistic_ext_stxname,
+                       Anum_pg_statistic_ext_stxnamespace),
                4
        },
-       {StatisticExtRelationId,        /* STATEXTOID */
+       [STATEXTOID] = {
+               StatisticExtRelationId,
                StatisticExtOidIndexId,
-               1,
-               {
-                       Anum_pg_statistic_ext_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_statistic_ext_oid),
                4
        },
-       {StatisticRelationId,           /* STATRELATTINH */
+       [STATRELATTINH] = {
+               StatisticRelationId,
                StatisticRelidAttnumInhIndexId,
-               3,
-               {
-                       Anum_pg_statistic_starelid,
+               KEY(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
-               },
+               KEY(Anum_pg_subscription_subdbid,
+                       Anum_pg_subscription_subname),
                4
        },
-       {SubscriptionRelationId,        /* SUBSCRIPTIONOID */
+       [SUBSCRIPTIONOID] = {
+               SubscriptionRelationId,
                SubscriptionObjectIndexId,
-               1,
-               {
-                       Anum_pg_subscription_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_subscription_oid),
                4
        },
-       {SubscriptionRelRelationId, /* SUBSCRIPTIONRELMAP */
+       [SUBSCRIPTIONRELMAP] = {
+               SubscriptionRelRelationId,
                SubscriptionRelSrrelidSrsubidIndexId,
-               2,
-               {
-                       Anum_pg_subscription_rel_srrelid,
-                       Anum_pg_subscription_rel_srsubid,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_subscription_rel_srrelid,
+                       Anum_pg_subscription_rel_srsubid),
                64
        },
-       {TableSpaceRelationId,          /* TABLESPACEOID */
+       [TABLESPACEOID] = {
+               TableSpaceRelationId,
                TablespaceOidIndexId,
-               1,
-               {
-                       Anum_pg_tablespace_oid,
-                       0,
-                       0,
-                       0,
-               },
+               KEY(Anum_pg_tablespace_oid),
                4
        },
-       {TransformRelationId,           /* TRFOID */
+       [TRFOID] = {
+               TransformRelationId,
                TransformOidIndexId,
-               1,
-               {
-                       Anum_pg_transform_oid,
-                       0,
-                       0,
-                       0,
-               },
+               KEY(Anum_pg_transform_oid),
                16
        },
-       {TransformRelationId,           /* TRFTYPELANG */
+       [TRFTYPELANG] = {
+               TransformRelationId,
                TransformTypeLangIndexId,
-               2,
-               {
-                       Anum_pg_transform_trftype,
-                       Anum_pg_transform_trflang,
-                       0,
-                       0,
-               },
+               KEY(Anum_pg_transform_trftype,
+                       Anum_pg_transform_trflang),
                16
        },
-       {TSConfigMapRelationId,         /* TSCONFIGMAP */
+       [TSCONFIGMAP] = {
+               TSConfigMapRelationId,
                TSConfigMapIndexId,
-               3,
-               {
-                       Anum_pg_ts_config_map_mapcfg,
+               KEY(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
-               },
+               KEY(Anum_pg_ts_config_cfgname,
+                       Anum_pg_ts_config_cfgnamespace),
                2
        },
-       {TSConfigRelationId,            /* TSCONFIGOID */
+       [TSCONFIGOID] = {
+               TSConfigRelationId,
                TSConfigOidIndexId,
-               1,
-               {
-                       Anum_pg_ts_config_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_ts_config_oid),
                2
        },
-       {TSDictionaryRelationId,        /* TSDICTNAMENSP */
+       [TSDICTNAMENSP] = {
+               TSDictionaryRelationId,
                TSDictionaryNameNspIndexId,
-               2,
-               {
-                       Anum_pg_ts_dict_dictname,
-                       Anum_pg_ts_dict_dictnamespace,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_ts_dict_dictname,
+                       Anum_pg_ts_dict_dictnamespace),
                2
        },
-       {TSDictionaryRelationId,        /* TSDICTOID */
+       [TSDICTOID] = {
+               TSDictionaryRelationId,
                TSDictionaryOidIndexId,
-               1,
-               {
-                       Anum_pg_ts_dict_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_ts_dict_oid),
                2
        },
-       {TSParserRelationId,            /* TSPARSERNAMENSP */
+       [TSPARSERNAMENSP] = {
+               TSParserRelationId,
                TSParserNameNspIndexId,
-               2,
-               {
-                       Anum_pg_ts_parser_prsname,
-                       Anum_pg_ts_parser_prsnamespace,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_ts_parser_prsname,
+                       Anum_pg_ts_parser_prsnamespace),
                2
        },
-       {TSParserRelationId,            /* TSPARSEROID */
+       [TSPARSEROID] = {
+               TSParserRelationId,
                TSParserOidIndexId,
-               1,
-               {
-                       Anum_pg_ts_parser_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_ts_parser_oid),
                2
        },
-       {TSTemplateRelationId,          /* TSTEMPLATENAMENSP */
+       [TSTEMPLATENAMENSP] = {
+               TSTemplateRelationId,
                TSTemplateNameNspIndexId,
-               2,
-               {
-                       Anum_pg_ts_template_tmplname,
-                       Anum_pg_ts_template_tmplnamespace,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_ts_template_tmplname,
+                       Anum_pg_ts_template_tmplnamespace),
                2
        },
-       {TSTemplateRelationId,          /* TSTEMPLATEOID */
+       [TSTEMPLATEOID] = {
+               TSTemplateRelationId,
                TSTemplateOidIndexId,
-               1,
-               {
-                       Anum_pg_ts_template_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_ts_template_oid),
                2
        },
-       {TypeRelationId,                        /* TYPENAMENSP */
+       [TYPENAMENSP] = {
+               TypeRelationId,
                TypeNameNspIndexId,
-               2,
-               {
-                       Anum_pg_type_typname,
-                       Anum_pg_type_typnamespace,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_type_typname,
+                       Anum_pg_type_typnamespace),
                64
        },
-       {TypeRelationId,                        /* TYPEOID */
+       [TYPEOID] = {
+               TypeRelationId,
                TypeOidIndexId,
-               1,
-               {
-                       Anum_pg_type_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_type_oid),
                64
        },
-       {UserMappingRelationId,         /* USERMAPPINGOID */
+       [USERMAPPINGOID] = {
+               UserMappingRelationId,
                UserMappingOidIndexId,
-               1,
-               {
-                       Anum_pg_user_mapping_oid,
-                       0,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_user_mapping_oid),
                2
        },
-       {UserMappingRelationId,         /* USERMAPPINGUSERSERVER */
+       [USERMAPPINGUSERSERVER] = {
+               UserMappingRelationId,
                UserMappingUserServerIndexId,
-               2,
-               {
-                       Anum_pg_user_mapping_umuser,
-                       Anum_pg_user_mapping_umserver,
-                       0,
-                       0
-               },
+               KEY(Anum_pg_user_mapping_umuser,
+                       Anum_pg_user_mapping_umserver),
                2
        }
 };
@@ -1077,6 +715,12 @@ InitCatalogCache(void)
 
        for (cacheId = 0; cacheId < SysCacheSize; cacheId++)
        {
+               /*
+                * Assert that every enumeration value defined in syscache.h has been
+                * populated in the cacheinfo array.
+                */
+               Assert(cacheinfo[cacheId].reloid != 0);
+
                SysCache[cacheId] = InitCatCache(cacheId,
                                                                                 cacheinfo[cacheId].reloid,
                                                                                 cacheinfo[cacheId].indoid,