mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +03:00
Generate syscache info from catalog files
Add a new genbki macros MAKE_SYSCACHE that specifies the syscache ID macro, the underlying index, and the number of buckets. From that, we can generate the existing tables in syscache.h and syscache.c via genbki.pl. Reviewed-by: John Naylor <johncnaylorls@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/75ae5875-3abc-dafc-8aec-73247ed41cde@eisentraut.org
This commit is contained in:
632
src/backend/utils/cache/syscache.c
vendored
632
src/backend/utils/cache/syscache.c
vendored
@@ -22,59 +22,13 @@
|
||||
|
||||
#include "access/htup_details.h"
|
||||
#include "access/sysattr.h"
|
||||
#include "catalog/pg_aggregate.h"
|
||||
#include "catalog/pg_am.h"
|
||||
#include "catalog/pg_amop.h"
|
||||
#include "catalog/pg_amproc.h"
|
||||
#include "catalog/pg_auth_members.h"
|
||||
#include "catalog/pg_authid.h"
|
||||
#include "catalog/pg_cast.h"
|
||||
#include "catalog/pg_collation.h"
|
||||
#include "catalog/pg_constraint.h"
|
||||
#include "catalog/pg_conversion.h"
|
||||
#include "catalog/pg_database.h"
|
||||
#include "catalog/pg_db_role_setting.h"
|
||||
#include "catalog/pg_default_acl.h"
|
||||
#include "catalog/pg_depend.h"
|
||||
#include "catalog/pg_description.h"
|
||||
#include "catalog/pg_enum.h"
|
||||
#include "catalog/pg_event_trigger.h"
|
||||
#include "catalog/pg_foreign_data_wrapper.h"
|
||||
#include "catalog/pg_foreign_server.h"
|
||||
#include "catalog/pg_foreign_table.h"
|
||||
#include "catalog/pg_language.h"
|
||||
#include "catalog/pg_namespace.h"
|
||||
#include "catalog/pg_opclass.h"
|
||||
#include "catalog/pg_operator.h"
|
||||
#include "catalog/pg_opfamily.h"
|
||||
#include "catalog/pg_parameter_acl.h"
|
||||
#include "catalog/pg_partitioned_table.h"
|
||||
#include "catalog/pg_proc.h"
|
||||
#include "catalog/pg_publication.h"
|
||||
#include "catalog/pg_publication_namespace.h"
|
||||
#include "catalog/pg_publication_rel.h"
|
||||
#include "catalog/pg_range.h"
|
||||
#include "catalog/pg_replication_origin.h"
|
||||
#include "catalog/pg_rewrite.h"
|
||||
#include "catalog/pg_seclabel.h"
|
||||
#include "catalog/pg_sequence.h"
|
||||
#include "catalog/pg_shdepend.h"
|
||||
#include "catalog/pg_shdescription.h"
|
||||
#include "catalog/pg_shseclabel.h"
|
||||
#include "catalog/pg_statistic.h"
|
||||
#include "catalog/pg_statistic_ext.h"
|
||||
#include "catalog/pg_statistic_ext_data.h"
|
||||
#include "catalog/pg_subscription.h"
|
||||
#include "catalog/pg_subscription_rel.h"
|
||||
#include "catalog/pg_tablespace.h"
|
||||
#include "catalog/pg_transform.h"
|
||||
#include "catalog/pg_ts_config.h"
|
||||
#include "catalog/pg_ts_config_map.h"
|
||||
#include "catalog/pg_ts_dict.h"
|
||||
#include "catalog/pg_ts_parser.h"
|
||||
#include "catalog/pg_ts_template.h"
|
||||
#include "catalog/pg_type.h"
|
||||
#include "catalog/pg_user_mapping.h"
|
||||
#include "catalog/pg_db_role_setting_d.h"
|
||||
#include "catalog/pg_depend_d.h"
|
||||
#include "catalog/pg_description_d.h"
|
||||
#include "catalog/pg_seclabel_d.h"
|
||||
#include "catalog/pg_shdepend_d.h"
|
||||
#include "catalog/pg_shdescription_d.h"
|
||||
#include "catalog/pg_shseclabel_d.h"
|
||||
#include "lib/qunique.h"
|
||||
#include "utils/catcache.h"
|
||||
#include "utils/lsyscache.h"
|
||||
@@ -85,18 +39,6 @@
|
||||
|
||||
Adding system caches:
|
||||
|
||||
Add your new cache to the list in include/utils/syscache.h.
|
||||
Keep the list sorted alphabetically.
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
in a medium-size database.
|
||||
|
||||
There must be a unique index underlying each syscache (ie, an index
|
||||
whose key is the same as that of the cache). If there is not one
|
||||
already, add the definition for it to include/catalog/pg_*.h using
|
||||
@@ -104,6 +46,13 @@
|
||||
(Adding an index requires a catversion.h update, while simply
|
||||
adding/deleting caches only requires a recompile.)
|
||||
|
||||
Add a MAKE_SYSCACHE call to the same pg_*.h file specifying the name of
|
||||
your cache, the underlying index, and the 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
|
||||
in a medium-size database.
|
||||
|
||||
Finally, any place your relation gets heap_insert() or
|
||||
heap_update() calls, use CatalogTupleInsert() or CatalogTupleUpdate()
|
||||
instead, which also update indexes. The heap_* calls do not do that.
|
||||
@@ -126,558 +75,7 @@ struct cachedesc
|
||||
/* Macro to provide nkeys and key array with convenient syntax. */
|
||||
#define KEY(...) VA_ARGS_NARGS(__VA_ARGS__), { __VA_ARGS__ }
|
||||
|
||||
static const struct cachedesc cacheinfo[] = {
|
||||
[AGGFNOID] = {
|
||||
AggregateRelationId,
|
||||
AggregateFnoidIndexId,
|
||||
KEY(Anum_pg_aggregate_aggfnoid),
|
||||
16
|
||||
},
|
||||
[AMNAME] = {
|
||||
AccessMethodRelationId,
|
||||
AmNameIndexId,
|
||||
KEY(Anum_pg_am_amname),
|
||||
4
|
||||
},
|
||||
[AMOID] = {
|
||||
AccessMethodRelationId,
|
||||
AmOidIndexId,
|
||||
KEY(Anum_pg_am_oid),
|
||||
4
|
||||
},
|
||||
[AMOPOPID] = {
|
||||
AccessMethodOperatorRelationId,
|
||||
AccessMethodOperatorIndexId,
|
||||
KEY(Anum_pg_amop_amopopr,
|
||||
Anum_pg_amop_amoppurpose,
|
||||
Anum_pg_amop_amopfamily),
|
||||
64
|
||||
},
|
||||
[AMOPSTRATEGY] = {
|
||||
AccessMethodOperatorRelationId,
|
||||
AccessMethodStrategyIndexId,
|
||||
KEY(Anum_pg_amop_amopfamily,
|
||||
Anum_pg_amop_amoplefttype,
|
||||
Anum_pg_amop_amoprighttype,
|
||||
Anum_pg_amop_amopstrategy),
|
||||
64
|
||||
},
|
||||
[AMPROCNUM] = {
|
||||
AccessMethodProcedureRelationId,
|
||||
AccessMethodProcedureIndexId,
|
||||
KEY(Anum_pg_amproc_amprocfamily,
|
||||
Anum_pg_amproc_amproclefttype,
|
||||
Anum_pg_amproc_amprocrighttype,
|
||||
Anum_pg_amproc_amprocnum),
|
||||
16
|
||||
},
|
||||
[ATTNAME] = {
|
||||
AttributeRelationId,
|
||||
AttributeRelidNameIndexId,
|
||||
KEY(Anum_pg_attribute_attrelid,
|
||||
Anum_pg_attribute_attname),
|
||||
32
|
||||
},
|
||||
[ATTNUM] = {
|
||||
AttributeRelationId,
|
||||
AttributeRelidNumIndexId,
|
||||
KEY(Anum_pg_attribute_attrelid,
|
||||
Anum_pg_attribute_attnum),
|
||||
128
|
||||
},
|
||||
[AUTHMEMMEMROLE] = {
|
||||
AuthMemRelationId,
|
||||
AuthMemMemRoleIndexId,
|
||||
KEY(Anum_pg_auth_members_member,
|
||||
Anum_pg_auth_members_roleid,
|
||||
Anum_pg_auth_members_grantor),
|
||||
8
|
||||
},
|
||||
[AUTHMEMROLEMEM] = {
|
||||
AuthMemRelationId,
|
||||
AuthMemRoleMemIndexId,
|
||||
KEY(Anum_pg_auth_members_roleid,
|
||||
Anum_pg_auth_members_member,
|
||||
Anum_pg_auth_members_grantor),
|
||||
8
|
||||
},
|
||||
[AUTHNAME] = {
|
||||
AuthIdRelationId,
|
||||
AuthIdRolnameIndexId,
|
||||
KEY(Anum_pg_authid_rolname),
|
||||
8
|
||||
},
|
||||
[AUTHOID] = {
|
||||
AuthIdRelationId,
|
||||
AuthIdOidIndexId,
|
||||
KEY(Anum_pg_authid_oid),
|
||||
8
|
||||
},
|
||||
[CASTSOURCETARGET] = {
|
||||
CastRelationId,
|
||||
CastSourceTargetIndexId,
|
||||
KEY(Anum_pg_cast_castsource,
|
||||
Anum_pg_cast_casttarget),
|
||||
256
|
||||
},
|
||||
[CLAAMNAMENSP] = {
|
||||
OperatorClassRelationId,
|
||||
OpclassAmNameNspIndexId,
|
||||
KEY(Anum_pg_opclass_opcmethod,
|
||||
Anum_pg_opclass_opcname,
|
||||
Anum_pg_opclass_opcnamespace),
|
||||
8
|
||||
},
|
||||
[CLAOID] = {
|
||||
OperatorClassRelationId,
|
||||
OpclassOidIndexId,
|
||||
KEY(Anum_pg_opclass_oid),
|
||||
8
|
||||
},
|
||||
[COLLNAMEENCNSP] = {
|
||||
CollationRelationId,
|
||||
CollationNameEncNspIndexId,
|
||||
KEY(Anum_pg_collation_collname,
|
||||
Anum_pg_collation_collencoding,
|
||||
Anum_pg_collation_collnamespace),
|
||||
8
|
||||
},
|
||||
[COLLOID] = {
|
||||
CollationRelationId,
|
||||
CollationOidIndexId,
|
||||
KEY(Anum_pg_collation_oid),
|
||||
8
|
||||
},
|
||||
[CONDEFAULT] = {
|
||||
ConversionRelationId,
|
||||
ConversionDefaultIndexId,
|
||||
KEY(Anum_pg_conversion_connamespace,
|
||||
Anum_pg_conversion_conforencoding,
|
||||
Anum_pg_conversion_contoencoding,
|
||||
Anum_pg_conversion_oid),
|
||||
8
|
||||
},
|
||||
[CONNAMENSP] = {
|
||||
ConversionRelationId,
|
||||
ConversionNameNspIndexId,
|
||||
KEY(Anum_pg_conversion_conname,
|
||||
Anum_pg_conversion_connamespace),
|
||||
8
|
||||
},
|
||||
[CONSTROID] = {
|
||||
ConstraintRelationId,
|
||||
ConstraintOidIndexId,
|
||||
KEY(Anum_pg_constraint_oid),
|
||||
16
|
||||
},
|
||||
[CONVOID] = {
|
||||
ConversionRelationId,
|
||||
ConversionOidIndexId,
|
||||
KEY(Anum_pg_conversion_oid),
|
||||
8
|
||||
},
|
||||
[DATABASEOID] = {
|
||||
DatabaseRelationId,
|
||||
DatabaseOidIndexId,
|
||||
KEY(Anum_pg_database_oid),
|
||||
4
|
||||
},
|
||||
[DEFACLROLENSPOBJ] = {
|
||||
DefaultAclRelationId,
|
||||
DefaultAclRoleNspObjIndexId,
|
||||
KEY(Anum_pg_default_acl_defaclrole,
|
||||
Anum_pg_default_acl_defaclnamespace,
|
||||
Anum_pg_default_acl_defaclobjtype),
|
||||
8
|
||||
},
|
||||
[ENUMOID] = {
|
||||
EnumRelationId,
|
||||
EnumOidIndexId,
|
||||
KEY(Anum_pg_enum_oid),
|
||||
8
|
||||
},
|
||||
[ENUMTYPOIDNAME] = {
|
||||
EnumRelationId,
|
||||
EnumTypIdLabelIndexId,
|
||||
KEY(Anum_pg_enum_enumtypid,
|
||||
Anum_pg_enum_enumlabel),
|
||||
8
|
||||
},
|
||||
[EVENTTRIGGERNAME] = {
|
||||
EventTriggerRelationId,
|
||||
EventTriggerNameIndexId,
|
||||
KEY(Anum_pg_event_trigger_evtname),
|
||||
8
|
||||
},
|
||||
[EVENTTRIGGEROID] = {
|
||||
EventTriggerRelationId,
|
||||
EventTriggerOidIndexId,
|
||||
KEY(Anum_pg_event_trigger_oid),
|
||||
8
|
||||
},
|
||||
[FOREIGNDATAWRAPPERNAME] = {
|
||||
ForeignDataWrapperRelationId,
|
||||
ForeignDataWrapperNameIndexId,
|
||||
KEY(Anum_pg_foreign_data_wrapper_fdwname),
|
||||
2
|
||||
},
|
||||
[FOREIGNDATAWRAPPEROID] = {
|
||||
ForeignDataWrapperRelationId,
|
||||
ForeignDataWrapperOidIndexId,
|
||||
KEY(Anum_pg_foreign_data_wrapper_oid),
|
||||
2
|
||||
},
|
||||
[FOREIGNSERVERNAME] = {
|
||||
ForeignServerRelationId,
|
||||
ForeignServerNameIndexId,
|
||||
KEY(Anum_pg_foreign_server_srvname),
|
||||
2
|
||||
},
|
||||
[FOREIGNSERVEROID] = {
|
||||
ForeignServerRelationId,
|
||||
ForeignServerOidIndexId,
|
||||
KEY(Anum_pg_foreign_server_oid),
|
||||
2
|
||||
},
|
||||
[FOREIGNTABLEREL] = {
|
||||
ForeignTableRelationId,
|
||||
ForeignTableRelidIndexId,
|
||||
KEY(Anum_pg_foreign_table_ftrelid),
|
||||
4
|
||||
},
|
||||
[INDEXRELID] = {
|
||||
IndexRelationId,
|
||||
IndexRelidIndexId,
|
||||
KEY(Anum_pg_index_indexrelid),
|
||||
64
|
||||
},
|
||||
[LANGNAME] = {
|
||||
LanguageRelationId,
|
||||
LanguageNameIndexId,
|
||||
KEY(Anum_pg_language_lanname),
|
||||
4
|
||||
},
|
||||
[LANGOID] = {
|
||||
LanguageRelationId,
|
||||
LanguageOidIndexId,
|
||||
KEY(Anum_pg_language_oid),
|
||||
4
|
||||
},
|
||||
[NAMESPACENAME] = {
|
||||
NamespaceRelationId,
|
||||
NamespaceNameIndexId,
|
||||
KEY(Anum_pg_namespace_nspname),
|
||||
4
|
||||
},
|
||||
[NAMESPACEOID] = {
|
||||
NamespaceRelationId,
|
||||
NamespaceOidIndexId,
|
||||
KEY(Anum_pg_namespace_oid),
|
||||
16
|
||||
},
|
||||
[OPERNAMENSP] = {
|
||||
OperatorRelationId,
|
||||
OperatorNameNspIndexId,
|
||||
KEY(Anum_pg_operator_oprname,
|
||||
Anum_pg_operator_oprleft,
|
||||
Anum_pg_operator_oprright,
|
||||
Anum_pg_operator_oprnamespace),
|
||||
256
|
||||
},
|
||||
[OPEROID] = {
|
||||
OperatorRelationId,
|
||||
OperatorOidIndexId,
|
||||
KEY(Anum_pg_operator_oid),
|
||||
32
|
||||
},
|
||||
[OPFAMILYAMNAMENSP] = {
|
||||
OperatorFamilyRelationId,
|
||||
OpfamilyAmNameNspIndexId,
|
||||
KEY(Anum_pg_opfamily_opfmethod,
|
||||
Anum_pg_opfamily_opfname,
|
||||
Anum_pg_opfamily_opfnamespace),
|
||||
8
|
||||
},
|
||||
[OPFAMILYOID] = {
|
||||
OperatorFamilyRelationId,
|
||||
OpfamilyOidIndexId,
|
||||
KEY(Anum_pg_opfamily_oid),
|
||||
8
|
||||
},
|
||||
[PARAMETERACLNAME] = {
|
||||
ParameterAclRelationId,
|
||||
ParameterAclParnameIndexId,
|
||||
KEY(Anum_pg_parameter_acl_parname),
|
||||
4
|
||||
},
|
||||
[PARAMETERACLOID] = {
|
||||
ParameterAclRelationId,
|
||||
ParameterAclOidIndexId,
|
||||
KEY(Anum_pg_parameter_acl_oid),
|
||||
4
|
||||
},
|
||||
[PARTRELID] = {
|
||||
PartitionedRelationId,
|
||||
PartitionedRelidIndexId,
|
||||
KEY(Anum_pg_partitioned_table_partrelid),
|
||||
32
|
||||
},
|
||||
[PROCNAMEARGSNSP] = {
|
||||
ProcedureRelationId,
|
||||
ProcedureNameArgsNspIndexId,
|
||||
KEY(Anum_pg_proc_proname,
|
||||
Anum_pg_proc_proargtypes,
|
||||
Anum_pg_proc_pronamespace),
|
||||
128
|
||||
},
|
||||
[PROCOID] = {
|
||||
ProcedureRelationId,
|
||||
ProcedureOidIndexId,
|
||||
KEY(Anum_pg_proc_oid),
|
||||
128
|
||||
},
|
||||
[PUBLICATIONNAME] = {
|
||||
PublicationRelationId,
|
||||
PublicationNameIndexId,
|
||||
KEY(Anum_pg_publication_pubname),
|
||||
8
|
||||
},
|
||||
[PUBLICATIONNAMESPACE] = {
|
||||
PublicationNamespaceRelationId,
|
||||
PublicationNamespaceObjectIndexId,
|
||||
KEY(Anum_pg_publication_namespace_oid),
|
||||
64
|
||||
},
|
||||
[PUBLICATIONNAMESPACEMAP] = {
|
||||
PublicationNamespaceRelationId,
|
||||
PublicationNamespacePnnspidPnpubidIndexId,
|
||||
KEY(Anum_pg_publication_namespace_pnnspid,
|
||||
Anum_pg_publication_namespace_pnpubid),
|
||||
64
|
||||
},
|
||||
[PUBLICATIONOID] = {
|
||||
PublicationRelationId,
|
||||
PublicationObjectIndexId,
|
||||
KEY(Anum_pg_publication_oid),
|
||||
8
|
||||
},
|
||||
[PUBLICATIONREL] = {
|
||||
PublicationRelRelationId,
|
||||
PublicationRelObjectIndexId,
|
||||
KEY(Anum_pg_publication_rel_oid),
|
||||
64
|
||||
},
|
||||
[PUBLICATIONRELMAP] = {
|
||||
PublicationRelRelationId,
|
||||
PublicationRelPrrelidPrpubidIndexId,
|
||||
KEY(Anum_pg_publication_rel_prrelid,
|
||||
Anum_pg_publication_rel_prpubid),
|
||||
64
|
||||
},
|
||||
[RANGEMULTIRANGE] = {
|
||||
RangeRelationId,
|
||||
RangeMultirangeTypidIndexId,
|
||||
KEY(Anum_pg_range_rngmultitypid),
|
||||
4
|
||||
},
|
||||
[RANGETYPE] = {
|
||||
RangeRelationId,
|
||||
RangeTypidIndexId,
|
||||
KEY(Anum_pg_range_rngtypid),
|
||||
4
|
||||
},
|
||||
[RELNAMENSP] = {
|
||||
RelationRelationId,
|
||||
ClassNameNspIndexId,
|
||||
KEY(Anum_pg_class_relname,
|
||||
Anum_pg_class_relnamespace),
|
||||
128
|
||||
},
|
||||
[RELOID] = {
|
||||
RelationRelationId,
|
||||
ClassOidIndexId,
|
||||
KEY(Anum_pg_class_oid),
|
||||
128
|
||||
},
|
||||
[REPLORIGIDENT] = {
|
||||
ReplicationOriginRelationId,
|
||||
ReplicationOriginIdentIndex,
|
||||
KEY(Anum_pg_replication_origin_roident),
|
||||
16
|
||||
},
|
||||
[REPLORIGNAME] = {
|
||||
ReplicationOriginRelationId,
|
||||
ReplicationOriginNameIndex,
|
||||
KEY(Anum_pg_replication_origin_roname),
|
||||
16
|
||||
},
|
||||
[RULERELNAME] = {
|
||||
RewriteRelationId,
|
||||
RewriteRelRulenameIndexId,
|
||||
KEY(Anum_pg_rewrite_ev_class,
|
||||
Anum_pg_rewrite_rulename),
|
||||
8
|
||||
},
|
||||
[SEQRELID] = {
|
||||
SequenceRelationId,
|
||||
SequenceRelidIndexId,
|
||||
KEY(Anum_pg_sequence_seqrelid),
|
||||
32
|
||||
},
|
||||
[STATEXTDATASTXOID] = {
|
||||
StatisticExtDataRelationId,
|
||||
StatisticExtDataStxoidInhIndexId,
|
||||
KEY(Anum_pg_statistic_ext_data_stxoid,
|
||||
Anum_pg_statistic_ext_data_stxdinherit),
|
||||
4
|
||||
},
|
||||
[STATEXTNAMENSP] = {
|
||||
StatisticExtRelationId,
|
||||
StatisticExtNameIndexId,
|
||||
KEY(Anum_pg_statistic_ext_stxname,
|
||||
Anum_pg_statistic_ext_stxnamespace),
|
||||
4
|
||||
},
|
||||
[STATEXTOID] = {
|
||||
StatisticExtRelationId,
|
||||
StatisticExtOidIndexId,
|
||||
KEY(Anum_pg_statistic_ext_oid),
|
||||
4
|
||||
},
|
||||
[STATRELATTINH] = {
|
||||
StatisticRelationId,
|
||||
StatisticRelidAttnumInhIndexId,
|
||||
KEY(Anum_pg_statistic_starelid,
|
||||
Anum_pg_statistic_staattnum,
|
||||
Anum_pg_statistic_stainherit),
|
||||
128
|
||||
},
|
||||
[SUBSCRIPTIONNAME] = {
|
||||
SubscriptionRelationId,
|
||||
SubscriptionNameIndexId,
|
||||
KEY(Anum_pg_subscription_subdbid,
|
||||
Anum_pg_subscription_subname),
|
||||
4
|
||||
},
|
||||
[SUBSCRIPTIONOID] = {
|
||||
SubscriptionRelationId,
|
||||
SubscriptionObjectIndexId,
|
||||
KEY(Anum_pg_subscription_oid),
|
||||
4
|
||||
},
|
||||
[SUBSCRIPTIONRELMAP] = {
|
||||
SubscriptionRelRelationId,
|
||||
SubscriptionRelSrrelidSrsubidIndexId,
|
||||
KEY(Anum_pg_subscription_rel_srrelid,
|
||||
Anum_pg_subscription_rel_srsubid),
|
||||
64
|
||||
},
|
||||
[TABLESPACEOID] = {
|
||||
TableSpaceRelationId,
|
||||
TablespaceOidIndexId,
|
||||
KEY(Anum_pg_tablespace_oid),
|
||||
4
|
||||
},
|
||||
[TRFOID] = {
|
||||
TransformRelationId,
|
||||
TransformOidIndexId,
|
||||
KEY(Anum_pg_transform_oid),
|
||||
16
|
||||
},
|
||||
[TRFTYPELANG] = {
|
||||
TransformRelationId,
|
||||
TransformTypeLangIndexId,
|
||||
KEY(Anum_pg_transform_trftype,
|
||||
Anum_pg_transform_trflang),
|
||||
16
|
||||
},
|
||||
[TSCONFIGMAP] = {
|
||||
TSConfigMapRelationId,
|
||||
TSConfigMapIndexId,
|
||||
KEY(Anum_pg_ts_config_map_mapcfg,
|
||||
Anum_pg_ts_config_map_maptokentype,
|
||||
Anum_pg_ts_config_map_mapseqno),
|
||||
2
|
||||
},
|
||||
[TSCONFIGNAMENSP] = {
|
||||
TSConfigRelationId,
|
||||
TSConfigNameNspIndexId,
|
||||
KEY(Anum_pg_ts_config_cfgname,
|
||||
Anum_pg_ts_config_cfgnamespace),
|
||||
2
|
||||
},
|
||||
[TSCONFIGOID] = {
|
||||
TSConfigRelationId,
|
||||
TSConfigOidIndexId,
|
||||
KEY(Anum_pg_ts_config_oid),
|
||||
2
|
||||
},
|
||||
[TSDICTNAMENSP] = {
|
||||
TSDictionaryRelationId,
|
||||
TSDictionaryNameNspIndexId,
|
||||
KEY(Anum_pg_ts_dict_dictname,
|
||||
Anum_pg_ts_dict_dictnamespace),
|
||||
2
|
||||
},
|
||||
[TSDICTOID] = {
|
||||
TSDictionaryRelationId,
|
||||
TSDictionaryOidIndexId,
|
||||
KEY(Anum_pg_ts_dict_oid),
|
||||
2
|
||||
},
|
||||
[TSPARSERNAMENSP] = {
|
||||
TSParserRelationId,
|
||||
TSParserNameNspIndexId,
|
||||
KEY(Anum_pg_ts_parser_prsname,
|
||||
Anum_pg_ts_parser_prsnamespace),
|
||||
2
|
||||
},
|
||||
[TSPARSEROID] = {
|
||||
TSParserRelationId,
|
||||
TSParserOidIndexId,
|
||||
KEY(Anum_pg_ts_parser_oid),
|
||||
2
|
||||
},
|
||||
[TSTEMPLATENAMENSP] = {
|
||||
TSTemplateRelationId,
|
||||
TSTemplateNameNspIndexId,
|
||||
KEY(Anum_pg_ts_template_tmplname,
|
||||
Anum_pg_ts_template_tmplnamespace),
|
||||
2
|
||||
},
|
||||
[TSTEMPLATEOID] = {
|
||||
TSTemplateRelationId,
|
||||
TSTemplateOidIndexId,
|
||||
KEY(Anum_pg_ts_template_oid),
|
||||
2
|
||||
},
|
||||
[TYPENAMENSP] = {
|
||||
TypeRelationId,
|
||||
TypeNameNspIndexId,
|
||||
KEY(Anum_pg_type_typname,
|
||||
Anum_pg_type_typnamespace),
|
||||
64
|
||||
},
|
||||
[TYPEOID] = {
|
||||
TypeRelationId,
|
||||
TypeOidIndexId,
|
||||
KEY(Anum_pg_type_oid),
|
||||
64
|
||||
},
|
||||
[USERMAPPINGOID] = {
|
||||
UserMappingRelationId,
|
||||
UserMappingOidIndexId,
|
||||
KEY(Anum_pg_user_mapping_oid),
|
||||
2
|
||||
},
|
||||
[USERMAPPINGUSERSERVER] = {
|
||||
UserMappingRelationId,
|
||||
UserMappingUserServerIndexId,
|
||||
KEY(Anum_pg_user_mapping_umuser,
|
||||
Anum_pg_user_mapping_umserver),
|
||||
2
|
||||
}
|
||||
};
|
||||
#include "catalog/syscache_info.h"
|
||||
|
||||
StaticAssertDecl(lengthof(cacheinfo) == SysCacheSize,
|
||||
"SysCacheSize does not match syscache.c's array");
|
||||
|
||||
Reference in New Issue
Block a user