|
|
|
|
@ -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"); |
|
|
|
|
|