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:
parent
46d8587b50
commit
9b1a6f50b9
|
@ -1,5 +1,7 @@
|
|||
/postgres.bki
|
||||
/schemapg.h
|
||||
/syscache_ids.h
|
||||
/syscache_info.h
|
||||
/system_fk_info.h
|
||||
/system_constraints.sql
|
||||
/pg_*_d.h
|
||||
|
|
|
@ -129,6 +129,16 @@ sub ParseHeader
|
|||
%+,
|
||||
};
|
||||
}
|
||||
elsif (
|
||||
/^MAKE_SYSCACHE\(\s*
|
||||
(?<syscache_name>\w+),\s*
|
||||
(?<index_name>\w+),\s*
|
||||
(?<syscache_nbuckets>\w+)\s*
|
||||
\)/x
|
||||
)
|
||||
{
|
||||
push @{ $catalog{syscaches} }, {%+};
|
||||
}
|
||||
elsif (
|
||||
/^DECLARE_OID_DEFINING_MACRO\(\s*
|
||||
(?<other_name>\w+),\s*
|
||||
|
|
|
@ -120,7 +120,7 @@ CATALOG_HEADERS := \
|
|||
pg_subscription.h \
|
||||
pg_subscription_rel.h
|
||||
|
||||
GENERATED_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h) schemapg.h system_fk_info.h
|
||||
GENERATED_HEADERS := $(CATALOG_HEADERS:%.h=%_d.h) schemapg.h syscache_ids.h syscache_info.h system_fk_info.h
|
||||
|
||||
POSTGRES_BKI_SRCS := $(addprefix $(top_srcdir)/src/include/catalog/, $(CATALOG_HEADERS))
|
||||
|
||||
|
|
|
@ -56,6 +56,8 @@ my %catalogs;
|
|||
my %catalog_data;
|
||||
my @toast_decls;
|
||||
my @index_decls;
|
||||
my %syscaches;
|
||||
my %syscache_catalogs;
|
||||
my %oidcounts;
|
||||
my @system_constraints;
|
||||
|
||||
|
@ -121,6 +123,9 @@ foreach my $header (@ARGV)
|
|||
}
|
||||
}
|
||||
|
||||
# Lookup table to get index info by index name
|
||||
my %indexes;
|
||||
|
||||
# If the header file contained toast or index info, build BKI
|
||||
# commands for those, which we'll output later.
|
||||
foreach my $toast (@{ $catalog->{toasting} })
|
||||
|
@ -134,6 +139,8 @@ foreach my $header (@ARGV)
|
|||
}
|
||||
foreach my $index (@{ $catalog->{indexing} })
|
||||
{
|
||||
$indexes{ $index->{index_name} } = $index;
|
||||
|
||||
push @index_decls,
|
||||
sprintf "declare %sindex %s %s on %s using %s\n",
|
||||
$index->{is_unique} ? 'unique ' : '',
|
||||
|
@ -151,6 +158,26 @@ foreach my $header (@ARGV)
|
|||
$index->{index_name};
|
||||
}
|
||||
}
|
||||
|
||||
# Analyze syscache info
|
||||
foreach my $syscache (@{ $catalog->{syscaches} })
|
||||
{
|
||||
my $index = $indexes{ $syscache->{index_name} };
|
||||
my $tblname = $index->{table_name};
|
||||
my $key = $index->{index_decl};
|
||||
$key =~ s/^\w+\(//;
|
||||
$key =~ s/\)$//;
|
||||
$key =~ s/(\w+)\s+\w+/Anum_${tblname}_$1/g;
|
||||
|
||||
$syscaches{ $syscache->{syscache_name} } = {
|
||||
table_oid_macro => $catalogs{$tblname}->{relation_oid_macro},
|
||||
index_oid_macro => $index->{index_oid_macro},
|
||||
key => $key,
|
||||
nbuckets => $syscache->{syscache_nbuckets},
|
||||
};
|
||||
|
||||
$syscache_catalogs{$catname} = 1;
|
||||
}
|
||||
}
|
||||
|
||||
# Complain and exit if we found any duplicate OIDs.
|
||||
|
@ -419,6 +446,12 @@ open my $fk_info, '>', $fk_info_file . $tmpext
|
|||
my $constraints_file = $output_path . 'system_constraints.sql';
|
||||
open my $constraints, '>', $constraints_file . $tmpext
|
||||
or die "can't open $constraints_file$tmpext: $!";
|
||||
my $syscache_ids_file = $output_path . 'syscache_ids.h';
|
||||
open my $syscache_ids_fh, '>', $syscache_ids_file . $tmpext
|
||||
or die "can't open $syscache_ids_file$tmpext: $!";
|
||||
my $syscache_info_file = $output_path . 'syscache_info.h';
|
||||
open my $syscache_info_fh, '>', $syscache_info_file . $tmpext
|
||||
or die "can't open $syscache_info_file$tmpext: $!";
|
||||
|
||||
# Generate postgres.bki and pg_*_d.h headers.
|
||||
|
||||
|
@ -753,17 +786,59 @@ foreach my $catname (@catnames)
|
|||
# Closing boilerplate for system_fk_info.h
|
||||
print $fk_info "};\n\n#endif\t\t\t\t\t\t\t/* SYSTEM_FK_INFO_H */\n";
|
||||
|
||||
# Now generate syscache info
|
||||
|
||||
print_boilerplate($syscache_ids_fh, "syscache_ids.h", "SysCache identifiers");
|
||||
print $syscache_ids_fh "enum SysCacheIdentifier
|
||||
{
|
||||
";
|
||||
|
||||
print_boilerplate($syscache_info_fh, "syscache_info.h",
|
||||
"SysCache definitions");
|
||||
print $syscache_info_fh "\n";
|
||||
foreach my $catname (sort keys %syscache_catalogs)
|
||||
{
|
||||
print $syscache_info_fh qq{#include "catalog/${catname}_d.h"\n};
|
||||
}
|
||||
print $syscache_info_fh "\n";
|
||||
print $syscache_info_fh "static const struct cachedesc cacheinfo[] = {\n";
|
||||
|
||||
my $last_syscache;
|
||||
foreach my $syscache (sort keys %syscaches)
|
||||
{
|
||||
print $syscache_ids_fh "\t$syscache,\n";
|
||||
$last_syscache = $syscache;
|
||||
|
||||
print $syscache_info_fh "\t[$syscache] = {\n";
|
||||
print $syscache_info_fh "\t\t", $syscaches{$syscache}{table_oid_macro},
|
||||
",\n";
|
||||
print $syscache_info_fh "\t\t", $syscaches{$syscache}{index_oid_macro},
|
||||
",\n";
|
||||
print $syscache_info_fh "\t\tKEY(", $syscaches{$syscache}{key}, "),\n";
|
||||
print $syscache_info_fh "\t\t", $syscaches{$syscache}{nbuckets}, "\n";
|
||||
print $syscache_info_fh "\t},\n";
|
||||
}
|
||||
|
||||
print $syscache_ids_fh "};\n";
|
||||
print $syscache_ids_fh "#define SysCacheSize ($last_syscache + 1)\n";
|
||||
|
||||
print $syscache_info_fh "};\n";
|
||||
|
||||
# We're done emitting data
|
||||
close $bki;
|
||||
close $schemapg;
|
||||
close $fk_info;
|
||||
close $constraints;
|
||||
close $syscache_ids_fh;
|
||||
close $syscache_info_fh;
|
||||
|
||||
# Finally, rename the completed files into place.
|
||||
Catalog::RenameTempFile($bkifile, $tmpext);
|
||||
Catalog::RenameTempFile($schemafile, $tmpext);
|
||||
Catalog::RenameTempFile($fk_info_file, $tmpext);
|
||||
Catalog::RenameTempFile($constraints_file, $tmpext);
|
||||
Catalog::RenameTempFile($syscache_ids_file, $tmpext);
|
||||
Catalog::RenameTempFile($syscache_info_file, $tmpext);
|
||||
|
||||
exit($num_errors != 0 ? 1 : 0);
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
/schemapg.h
|
||||
/syscache_ids.h
|
||||
/syscache_info.h
|
||||
/system_fk_info.h
|
||||
/pg_*_d.h
|
||||
/header-stamp
|
||||
|
|
|
@ -120,6 +120,12 @@
|
|||
#define DECLARE_ARRAY_FOREIGN_KEY(cols,reftbl,refcols) extern int no_such_variable
|
||||
#define DECLARE_ARRAY_FOREIGN_KEY_OPT(cols,reftbl,refcols) extern int no_such_variable
|
||||
|
||||
/*
|
||||
* Create a syscache with the given name, index, and bucket size. See
|
||||
* syscache.c.
|
||||
*/
|
||||
#define MAKE_SYSCACHE(name,idxname,nbuckets) extern int no_such_variable
|
||||
|
||||
/* The following are never defined; they are here only for documentation. */
|
||||
|
||||
/*
|
||||
|
|
|
@ -102,8 +102,22 @@ bki_data_f = files(bki_data)
|
|||
|
||||
|
||||
input = []
|
||||
output_files = ['postgres.bki', 'system_constraints.sql', 'schemapg.h', 'system_fk_info.h']
|
||||
output_install = [dir_data, dir_data, dir_include_server / 'catalog', dir_include_server / 'catalog']
|
||||
output_files = [
|
||||
'postgres.bki',
|
||||
'system_constraints.sql',
|
||||
'schemapg.h',
|
||||
'syscache_ids.h',
|
||||
'syscache_info.h',
|
||||
'system_fk_info.h',
|
||||
]
|
||||
output_install = [
|
||||
dir_data,
|
||||
dir_data,
|
||||
dir_include_server / 'catalog',
|
||||
false,
|
||||
dir_include_server / 'catalog',
|
||||
dir_include_server / 'catalog',
|
||||
]
|
||||
|
||||
foreach h : catalog_headers
|
||||
fname = h.split('.h')[0] + '_d.h'
|
||||
|
|
|
@ -112,6 +112,8 @@ DECLARE_TOAST(pg_aggregate, 4159, 4160);
|
|||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_aggregate_fnoid_index, 2650, AggregateFnoidIndexId, pg_aggregate, btree(aggfnoid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(AGGFNOID, pg_aggregate_fnoid_index, 16);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/*
|
||||
|
|
|
@ -50,6 +50,9 @@ typedef FormData_pg_am *Form_pg_am;
|
|||
DECLARE_UNIQUE_INDEX(pg_am_name_index, 2651, AmNameIndexId, pg_am, btree(amname name_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_am_oid_index, 2652, AmOidIndexId, pg_am, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(AMNAME, pg_am_name_index, 4);
|
||||
MAKE_SYSCACHE(AMOID, pg_am_oid_index, 4);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/*
|
||||
|
|
|
@ -91,6 +91,9 @@ DECLARE_UNIQUE_INDEX(pg_amop_fam_strat_index, 2653, AccessMethodStrategyIndexId,
|
|||
DECLARE_UNIQUE_INDEX(pg_amop_opr_fam_index, 2654, AccessMethodOperatorIndexId, pg_amop, btree(amopopr oid_ops, amoppurpose char_ops, amopfamily oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_amop_oid_index, 2756, AccessMethodOperatorOidIndexId, pg_amop, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(AMOPSTRATEGY, pg_amop_fam_strat_index, 64);
|
||||
MAKE_SYSCACHE(AMOPOPID, pg_amop_opr_fam_index, 64);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/* allowed values of amoppurpose: */
|
||||
|
|
|
@ -70,4 +70,6 @@ typedef FormData_pg_amproc *Form_pg_amproc;
|
|||
DECLARE_UNIQUE_INDEX(pg_amproc_fam_proc_index, 2655, AccessMethodProcedureIndexId, pg_amproc, btree(amprocfamily oid_ops, amproclefttype oid_ops, amprocrighttype oid_ops, amprocnum int2_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_amproc_oid_index, 2757, AccessMethodProcedureOidIndexId, pg_amproc, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(AMPROCNUM, pg_amproc_fam_proc_index, 16);
|
||||
|
||||
#endif /* PG_AMPROC_H */
|
||||
|
|
|
@ -211,6 +211,9 @@ typedef FormData_pg_attribute *Form_pg_attribute;
|
|||
DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index, 2658, AttributeRelidNameIndexId, pg_attribute, btree(attrelid oid_ops, attname name_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_attribute_relid_attnum_index, 2659, AttributeRelidNumIndexId, pg_attribute, btree(attrelid oid_ops, attnum int2_ops));
|
||||
|
||||
MAKE_SYSCACHE(ATTNAME, pg_attribute_relid_attnam_index, 32);
|
||||
MAKE_SYSCACHE(ATTNUM, pg_attribute_relid_attnum_index, 128);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
#define ATTRIBUTE_IDENTITY_ALWAYS 'a'
|
||||
|
|
|
@ -50,4 +50,7 @@ DECLARE_UNIQUE_INDEX(pg_auth_members_role_member_index, 2694, AuthMemRoleMemInde
|
|||
DECLARE_UNIQUE_INDEX(pg_auth_members_member_role_index, 2695, AuthMemMemRoleIndexId, pg_auth_members, btree(member oid_ops, roleid oid_ops, grantor oid_ops));
|
||||
DECLARE_INDEX(pg_auth_members_grantor_index, 6302, AuthMemGrantorIndexId, pg_auth_members, btree(grantor oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(AUTHMEMROLEMEM, pg_auth_members_role_member_index, 8);
|
||||
MAKE_SYSCACHE(AUTHMEMMEMROLE, pg_auth_members_member_role_index, 8);
|
||||
|
||||
#endif /* PG_AUTH_MEMBERS_H */
|
||||
|
|
|
@ -60,4 +60,7 @@ DECLARE_TOAST_WITH_MACRO(pg_authid, 4175, 4176, PgAuthidToastTable, PgAuthidToas
|
|||
DECLARE_UNIQUE_INDEX(pg_authid_rolname_index, 2676, AuthIdRolnameIndexId, pg_authid, btree(rolname name_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_authid_oid_index, 2677, AuthIdOidIndexId, pg_authid, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(AUTHNAME, pg_authid_rolname_index, 8);
|
||||
MAKE_SYSCACHE(AUTHOID, pg_authid_oid_index, 8);
|
||||
|
||||
#endif /* PG_AUTHID_H */
|
||||
|
|
|
@ -59,6 +59,8 @@ typedef FormData_pg_cast *Form_pg_cast;
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_cast_oid_index, 2660, CastOidIndexId, pg_cast, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_cast_source_target_index, 2661, CastSourceTargetIndexId, pg_cast, btree(castsource oid_ops, casttarget oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(CASTSOURCETARGET, pg_cast_source_target_index, 256);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/*
|
||||
|
|
|
@ -156,6 +156,9 @@ DECLARE_UNIQUE_INDEX_PKEY(pg_class_oid_index, 2662, ClassOidIndexId, pg_class, b
|
|||
DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index, 2663, ClassNameNspIndexId, pg_class, btree(relname name_ops, relnamespace oid_ops));
|
||||
DECLARE_INDEX(pg_class_tblspc_relfilenode_index, 3455, ClassTblspcRelfilenodeIndexId, pg_class, btree(reltablespace oid_ops, relfilenode oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(RELOID, pg_class_oid_index, 128);
|
||||
MAKE_SYSCACHE(RELNAMENSP, pg_class_relname_nsp_index, 128);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
#define RELKIND_RELATION 'r' /* ordinary table */
|
||||
|
|
|
@ -62,6 +62,9 @@ DECLARE_TOAST(pg_collation, 6175, 6176);
|
|||
DECLARE_UNIQUE_INDEX(pg_collation_name_enc_nsp_index, 3164, CollationNameEncNspIndexId, pg_collation, btree(collname name_ops, collencoding int4_ops, collnamespace oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_collation_oid_index, 3085, CollationOidIndexId, pg_collation, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(COLLNAMEENCNSP, pg_collation_name_enc_nsp_index, 8);
|
||||
MAKE_SYSCACHE(COLLOID, pg_collation_oid_index, 8);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
#define COLLPROVIDER_DEFAULT 'd'
|
||||
|
|
|
@ -172,6 +172,8 @@ DECLARE_INDEX(pg_constraint_contypid_index, 2666, ConstraintTypidIndexId, pg_con
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_constraint_oid_index, 2667, ConstraintOidIndexId, pg_constraint, btree(oid oid_ops));
|
||||
DECLARE_INDEX(pg_constraint_conparentid_index, 2579, ConstraintParentIndexId, pg_constraint, btree(conparentid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(CONSTROID, pg_constraint_oid_index, 16);
|
||||
|
||||
/* conkey can contain zero (InvalidAttrNumber) if a whole-row Var is used */
|
||||
DECLARE_ARRAY_FOREIGN_KEY_OPT((conrelid, conkey), pg_attribute, (attrelid, attnum));
|
||||
DECLARE_ARRAY_FOREIGN_KEY((confrelid, confkey), pg_attribute, (attrelid, attnum));
|
||||
|
|
|
@ -64,6 +64,10 @@ DECLARE_UNIQUE_INDEX(pg_conversion_default_index, 2668, ConversionDefaultIndexId
|
|||
DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index, 2669, ConversionNameNspIndexId, pg_conversion, btree(conname name_ops, connamespace oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_conversion_oid_index, 2670, ConversionOidIndexId, pg_conversion, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(CONDEFAULT, pg_conversion_default_index, 8);
|
||||
MAKE_SYSCACHE(CONNAMENSP, pg_conversion_name_nsp_index, 8);
|
||||
MAKE_SYSCACHE(CONVOID, pg_conversion_oid_index, 8);
|
||||
|
||||
|
||||
extern ObjectAddress ConversionCreate(const char *conname, Oid connamespace,
|
||||
Oid conowner,
|
||||
|
|
|
@ -100,6 +100,8 @@ DECLARE_TOAST_WITH_MACRO(pg_database, 4177, 4178, PgDatabaseToastTable, PgDataba
|
|||
DECLARE_UNIQUE_INDEX(pg_database_datname_index, 2671, DatabaseNameIndexId, pg_database, btree(datname name_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_database_oid_index, 2672, DatabaseOidIndexId, pg_database, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(DATABASEOID, pg_database_oid_index, 4);
|
||||
|
||||
/*
|
||||
* pg_database.dat contains an entry for template1, but not for the template0
|
||||
* or postgres databases, because those are created later in initdb.
|
||||
|
|
|
@ -54,6 +54,8 @@ DECLARE_TOAST(pg_default_acl, 4143, 4144);
|
|||
DECLARE_UNIQUE_INDEX(pg_default_acl_role_nsp_obj_index, 827, DefaultAclRoleNspObjIndexId, pg_default_acl, btree(defaclrole oid_ops, defaclnamespace oid_ops, defaclobjtype char_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_default_acl_oid_index, 828, DefaultAclOidIndexId, pg_default_acl, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(DEFACLROLENSPOBJ, pg_default_acl_role_nsp_obj_index, 8);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/*
|
||||
|
|
|
@ -47,6 +47,9 @@ DECLARE_UNIQUE_INDEX_PKEY(pg_enum_oid_index, 3502, EnumOidIndexId, pg_enum, btre
|
|||
DECLARE_UNIQUE_INDEX(pg_enum_typid_label_index, 3503, EnumTypIdLabelIndexId, pg_enum, btree(enumtypid oid_ops, enumlabel name_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_enum_typid_sortorder_index, 3534, EnumTypIdSortOrderIndexId, pg_enum, btree(enumtypid oid_ops, enumsortorder float4_ops));
|
||||
|
||||
MAKE_SYSCACHE(ENUMOID, pg_enum_oid_index, 8);
|
||||
MAKE_SYSCACHE(ENUMTYPOIDNAME, pg_enum_typid_label_index, 8);
|
||||
|
||||
/*
|
||||
* prototypes for functions in pg_enum.c
|
||||
*/
|
||||
|
|
|
@ -54,4 +54,7 @@ DECLARE_TOAST(pg_event_trigger, 4145, 4146);
|
|||
DECLARE_UNIQUE_INDEX(pg_event_trigger_evtname_index, 3467, EventTriggerNameIndexId, pg_event_trigger, btree(evtname name_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_event_trigger_oid_index, 3468, EventTriggerOidIndexId, pg_event_trigger, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(EVENTTRIGGERNAME, pg_event_trigger_evtname_index, 8);
|
||||
MAKE_SYSCACHE(EVENTTRIGGEROID, pg_event_trigger_oid_index, 8);
|
||||
|
||||
#endif /* PG_EVENT_TRIGGER_H */
|
||||
|
|
|
@ -55,4 +55,7 @@ DECLARE_TOAST(pg_foreign_data_wrapper, 4149, 4150);
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_foreign_data_wrapper_oid_index, 112, ForeignDataWrapperOidIndexId, pg_foreign_data_wrapper, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_foreign_data_wrapper_name_index, 548, ForeignDataWrapperNameIndexId, pg_foreign_data_wrapper, btree(fdwname name_ops));
|
||||
|
||||
MAKE_SYSCACHE(FOREIGNDATAWRAPPEROID, pg_foreign_data_wrapper_oid_index, 2);
|
||||
MAKE_SYSCACHE(FOREIGNDATAWRAPPERNAME, pg_foreign_data_wrapper_name_index, 2);
|
||||
|
||||
#endif /* PG_FOREIGN_DATA_WRAPPER_H */
|
||||
|
|
|
@ -52,4 +52,7 @@ DECLARE_TOAST(pg_foreign_server, 4151, 4152);
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_foreign_server_oid_index, 113, ForeignServerOidIndexId, pg_foreign_server, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_foreign_server_name_index, 549, ForeignServerNameIndexId, pg_foreign_server, btree(srvname name_ops));
|
||||
|
||||
MAKE_SYSCACHE(FOREIGNSERVEROID, pg_foreign_server_oid_index, 2);
|
||||
MAKE_SYSCACHE(FOREIGNSERVERNAME, pg_foreign_server_name_index, 2);
|
||||
|
||||
#endif /* PG_FOREIGN_SERVER_H */
|
||||
|
|
|
@ -46,4 +46,6 @@ DECLARE_TOAST(pg_foreign_table, 4153, 4154);
|
|||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_foreign_table_relid_index, 3119, ForeignTableRelidIndexId, pg_foreign_table, btree(ftrelid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(FOREIGNTABLEREL, pg_foreign_table_relid_index, 4);
|
||||
|
||||
#endif /* PG_FOREIGN_TABLE_H */
|
||||
|
|
|
@ -72,6 +72,8 @@ typedef FormData_pg_index *Form_pg_index;
|
|||
DECLARE_INDEX(pg_index_indrelid_index, 2678, IndexIndrelidIndexId, pg_index, btree(indrelid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_index_indexrelid_index, 2679, IndexRelidIndexId, pg_index, btree(indexrelid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(INDEXRELID, pg_index_indexrelid_index, 64);
|
||||
|
||||
/* indkey can contain zero (InvalidAttrNumber) to represent expressions */
|
||||
DECLARE_ARRAY_FOREIGN_KEY_OPT((indrelid, indkey), pg_attribute, (attrelid, attnum));
|
||||
|
||||
|
|
|
@ -69,4 +69,7 @@ DECLARE_TOAST(pg_language, 4157, 4158);
|
|||
DECLARE_UNIQUE_INDEX(pg_language_name_index, 2681, LanguageNameIndexId, pg_language, btree(lanname name_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_language_oid_index, 2682, LanguageOidIndexId, pg_language, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(LANGNAME, pg_language_name_index, 4);
|
||||
MAKE_SYSCACHE(LANGOID, pg_language_oid_index, 4);
|
||||
|
||||
#endif /* PG_LANGUAGE_H */
|
||||
|
|
|
@ -56,6 +56,9 @@ DECLARE_TOAST(pg_namespace, 4163, 4164);
|
|||
DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, NamespaceNameIndexId, pg_namespace, btree(nspname name_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_namespace_oid_index, 2685, NamespaceOidIndexId, pg_namespace, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(NAMESPACENAME, pg_namespace_nspname_index, 4);
|
||||
MAKE_SYSCACHE(NAMESPACEOID, pg_namespace_oid_index, 16);
|
||||
|
||||
/*
|
||||
* prototypes for functions in pg_namespace.c
|
||||
*/
|
||||
|
|
|
@ -85,4 +85,7 @@ typedef FormData_pg_opclass *Form_pg_opclass;
|
|||
DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index, 2686, OpclassAmNameNspIndexId, pg_opclass, btree(opcmethod oid_ops, opcname name_ops, opcnamespace oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_opclass_oid_index, 2687, OpclassOidIndexId, pg_opclass, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(CLAAMNAMENSP, pg_opclass_am_name_nsp_index, 8);
|
||||
MAKE_SYSCACHE(CLAOID, pg_opclass_oid_index, 8);
|
||||
|
||||
#endif /* PG_OPCLASS_H */
|
||||
|
|
|
@ -85,6 +85,8 @@ typedef FormData_pg_operator *Form_pg_operator;
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_operator_oid_index, 2688, OperatorOidIndexId, pg_operator, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index, 2689, OperatorNameNspIndexId, pg_operator, btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(OPEROID, pg_operator_oid_index, 32);
|
||||
MAKE_SYSCACHE(OPERNAMENSP, pg_operator_oprname_l_r_n_index, 256);
|
||||
|
||||
extern Oid OperatorLookup(List *operatorName,
|
||||
Oid leftObjectId,
|
||||
|
|
|
@ -53,6 +53,9 @@ typedef FormData_pg_opfamily *Form_pg_opfamily;
|
|||
DECLARE_UNIQUE_INDEX(pg_opfamily_am_name_nsp_index, 2754, OpfamilyAmNameNspIndexId, pg_opfamily, btree(opfmethod oid_ops, opfname name_ops, opfnamespace oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_opfamily_oid_index, 2755, OpfamilyOidIndexId, pg_opfamily, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(OPFAMILYAMNAMENSP, pg_opfamily_am_name_nsp_index, 8);
|
||||
MAKE_SYSCACHE(OPFAMILYOID, pg_opfamily_oid_index, 8);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/* This does not account for non-core opfamilies that might accept boolean */
|
||||
|
|
|
@ -53,6 +53,8 @@ DECLARE_TOAST_WITH_MACRO(pg_parameter_acl, 6244, 6245, PgParameterAclToastTable,
|
|||
DECLARE_UNIQUE_INDEX(pg_parameter_acl_parname_index, 6246, ParameterAclParnameIndexId, pg_parameter_acl, btree(parname text_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_parameter_acl_oid_index, 6247, ParameterAclOidIndexId, pg_parameter_acl, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(PARAMETERACLNAME, pg_parameter_acl_parname_index, 4);
|
||||
MAKE_SYSCACHE(PARAMETERACLOID, pg_parameter_acl_oid_index, 4);
|
||||
|
||||
extern Oid ParameterAclLookup(const char *parameter, bool missing_ok);
|
||||
extern Oid ParameterAclCreate(const char *parameter);
|
||||
|
|
|
@ -68,6 +68,8 @@ DECLARE_TOAST(pg_partitioned_table, 4165, 4166);
|
|||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_partitioned_table_partrelid_index, 3351, PartitionedRelidIndexId, pg_partitioned_table, btree(partrelid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(PARTRELID, pg_partitioned_table_partrelid_index, 32);
|
||||
|
||||
/* partattrs can contain zero (InvalidAttrNumber) to represent expressions */
|
||||
DECLARE_ARRAY_FOREIGN_KEY_OPT((partrelid, partattrs), pg_attribute, (attrelid, attnum));
|
||||
|
||||
|
|
|
@ -140,6 +140,9 @@ DECLARE_TOAST(pg_proc, 2836, 2837);
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_proc_oid_index, 2690, ProcedureOidIndexId, pg_proc, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index, 2691, ProcedureNameArgsNspIndexId, pg_proc, btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(PROCOID, pg_proc_oid_index, 128);
|
||||
MAKE_SYSCACHE(PROCNAMEARGSNSP, pg_proc_proname_args_nsp_index, 128);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/*
|
||||
|
|
|
@ -66,6 +66,9 @@ typedef FormData_pg_publication *Form_pg_publication;
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_publication_oid_index, 6110, PublicationObjectIndexId, pg_publication, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_publication_pubname_index, 6111, PublicationNameIndexId, pg_publication, btree(pubname name_ops));
|
||||
|
||||
MAKE_SYSCACHE(PUBLICATIONOID, pg_publication_oid_index, 8);
|
||||
MAKE_SYSCACHE(PUBLICATIONNAME, pg_publication_pubname_index, 8);
|
||||
|
||||
typedef struct PublicationActions
|
||||
{
|
||||
bool pubinsert;
|
||||
|
|
|
@ -44,4 +44,7 @@ typedef FormData_pg_publication_namespace *Form_pg_publication_namespace;
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_publication_namespace_oid_index, 6238, PublicationNamespaceObjectIndexId, pg_publication_namespace, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_publication_namespace_pnnspid_pnpubid_index, 6239, PublicationNamespacePnnspidPnpubidIndexId, pg_publication_namespace, btree(pnnspid oid_ops, pnpubid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(PUBLICATIONNAMESPACE, pg_publication_namespace_oid_index, 64);
|
||||
MAKE_SYSCACHE(PUBLICATIONNAMESPACEMAP, pg_publication_namespace_pnnspid_pnpubid_index, 64);
|
||||
|
||||
#endif /* PG_PUBLICATION_NAMESPACE_H */
|
||||
|
|
|
@ -51,4 +51,7 @@ DECLARE_UNIQUE_INDEX_PKEY(pg_publication_rel_oid_index, 6112, PublicationRelObje
|
|||
DECLARE_UNIQUE_INDEX(pg_publication_rel_prrelid_prpubid_index, 6113, PublicationRelPrrelidPrpubidIndexId, pg_publication_rel, btree(prrelid oid_ops, prpubid oid_ops));
|
||||
DECLARE_INDEX(pg_publication_rel_prpubid_index, 6116, PublicationRelPrpubidIndexId, pg_publication_rel, btree(prpubid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(PUBLICATIONREL, pg_publication_rel_oid_index, 64);
|
||||
MAKE_SYSCACHE(PUBLICATIONRELMAP, pg_publication_rel_prrelid_prpubid_index, 64);
|
||||
|
||||
#endif /* PG_PUBLICATION_REL_H */
|
||||
|
|
|
@ -60,6 +60,9 @@ typedef FormData_pg_range *Form_pg_range;
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_range_rngtypid_index, 3542, RangeTypidIndexId, pg_range, btree(rngtypid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_range_rngmultitypid_index, 2228, RangeMultirangeTypidIndexId, pg_range, btree(rngmultitypid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(RANGETYPE, pg_range_rngtypid_index, 4);
|
||||
MAKE_SYSCACHE(RANGEMULTIRANGE, pg_range_rngmultitypid_index, 4);
|
||||
|
||||
/*
|
||||
* prototypes for functions in pg_range.c
|
||||
*/
|
||||
|
|
|
@ -59,4 +59,7 @@ DECLARE_TOAST_WITH_MACRO(pg_replication_origin, 4181, 4182, PgReplicationOriginT
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_replication_origin_roiident_index, 6001, ReplicationOriginIdentIndex, pg_replication_origin, btree(roident oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_replication_origin_roname_index, 6002, ReplicationOriginNameIndex, pg_replication_origin, btree(roname text_ops));
|
||||
|
||||
MAKE_SYSCACHE(REPLORIGIDENT, pg_replication_origin_roiident_index, 16);
|
||||
MAKE_SYSCACHE(REPLORIGNAME, pg_replication_origin_roname_index, 16);
|
||||
|
||||
#endif /* PG_REPLICATION_ORIGIN_H */
|
||||
|
|
|
@ -56,4 +56,6 @@ DECLARE_TOAST(pg_rewrite, 2838, 2839);
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_rewrite_oid_index, 2692, RewriteOidIndexId, pg_rewrite, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index, 2693, RewriteRelRulenameIndexId, pg_rewrite, btree(ev_class oid_ops, rulename name_ops));
|
||||
|
||||
MAKE_SYSCACHE(RULERELNAME, pg_rewrite_rel_rulename_index, 8);
|
||||
|
||||
#endif /* PG_REWRITE_H */
|
||||
|
|
|
@ -41,4 +41,6 @@ typedef FormData_pg_sequence *Form_pg_sequence;
|
|||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_sequence_seqrelid_index, 5002, SequenceRelidIndexId, pg_sequence, btree(seqrelid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(SEQRELID, pg_sequence_seqrelid_index, 32);
|
||||
|
||||
#endif /* PG_SEQUENCE_H */
|
||||
|
|
|
@ -138,6 +138,8 @@ DECLARE_TOAST(pg_statistic, 2840, 2841);
|
|||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_statistic_relid_att_inh_index, 2696, StatisticRelidAttnumInhIndexId, pg_statistic, btree(starelid oid_ops, staattnum int2_ops, stainherit bool_ops));
|
||||
|
||||
MAKE_SYSCACHE(STATRELATTINH, pg_statistic_relid_att_inh_index, 128);
|
||||
|
||||
DECLARE_FOREIGN_KEY((starelid, staattnum), pg_attribute, (attrelid, attnum));
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
|
|
@ -74,6 +74,9 @@ DECLARE_UNIQUE_INDEX_PKEY(pg_statistic_ext_oid_index, 3380, StatisticExtOidIndex
|
|||
DECLARE_UNIQUE_INDEX(pg_statistic_ext_name_index, 3997, StatisticExtNameIndexId, pg_statistic_ext, btree(stxname name_ops, stxnamespace oid_ops));
|
||||
DECLARE_INDEX(pg_statistic_ext_relid_index, 3379, StatisticExtRelidIndexId, pg_statistic_ext, btree(stxrelid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(STATEXTOID, pg_statistic_ext_oid_index, 4);
|
||||
MAKE_SYSCACHE(STATEXTNAMENSP, pg_statistic_ext_name_index, 4);
|
||||
|
||||
DECLARE_ARRAY_FOREIGN_KEY((stxrelid, stxkeys), pg_attribute, (attrelid, attnum));
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
|
|
@ -56,5 +56,6 @@ DECLARE_TOAST(pg_statistic_ext_data, 3430, 3431);
|
|||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_statistic_ext_data_stxoid_inh_index, 3433, StatisticExtDataStxoidInhIndexId, pg_statistic_ext_data, btree(stxoid oid_ops, stxdinherit bool_ops));
|
||||
|
||||
MAKE_SYSCACHE(STATEXTDATASTXOID, pg_statistic_ext_data_stxoid_inh_index, 4);
|
||||
|
||||
#endif /* PG_STATISTIC_EXT_DATA_H */
|
||||
|
|
|
@ -118,6 +118,9 @@ DECLARE_TOAST_WITH_MACRO(pg_subscription, 4183, 4184, PgSubscriptionToastTable,
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_subscription_oid_index, 6114, SubscriptionObjectIndexId, pg_subscription, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_subscription_subname_index, 6115, SubscriptionNameIndexId, pg_subscription, btree(subdbid oid_ops, subname name_ops));
|
||||
|
||||
MAKE_SYSCACHE(SUBSCRIPTIONOID, pg_subscription_oid_index, 4);
|
||||
MAKE_SYSCACHE(SUBSCRIPTIONNAME, pg_subscription_subname_index, 4);
|
||||
|
||||
typedef struct Subscription
|
||||
{
|
||||
Oid oid; /* Oid of the subscription */
|
||||
|
|
|
@ -51,6 +51,8 @@ typedef FormData_pg_subscription_rel *Form_pg_subscription_rel;
|
|||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_subscription_rel_srrelid_srsubid_index, 6117, SubscriptionRelSrrelidSrsubidIndexId, pg_subscription_rel, btree(srrelid oid_ops, srsubid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(SUBSCRIPTIONRELMAP, pg_subscription_rel_srrelid_srsubid_index, 64);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/* ----------------
|
||||
|
|
|
@ -52,4 +52,6 @@ DECLARE_TOAST_WITH_MACRO(pg_tablespace, 4185, 4186, PgTablespaceToastTable, PgTa
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_tablespace_oid_index, 2697, TablespaceOidIndexId, pg_tablespace, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index, 2698, TablespaceNameIndexId, pg_tablespace, btree(spcname name_ops));
|
||||
|
||||
MAKE_SYSCACHE(TABLESPACEOID, pg_tablespace_oid_index, 4);
|
||||
|
||||
#endif /* PG_TABLESPACE_H */
|
||||
|
|
|
@ -45,4 +45,7 @@ typedef FormData_pg_transform *Form_pg_transform;
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_transform_oid_index, 3574, TransformOidIndexId, pg_transform, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_transform_type_lang_index, 3575, TransformTypeLangIndexId, pg_transform, btree(trftype oid_ops, trflang oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(TRFOID, pg_transform_oid_index, 16);
|
||||
MAKE_SYSCACHE(TRFTYPELANG, pg_transform_type_lang_index, 16);
|
||||
|
||||
#endif /* PG_TRANSFORM_H */
|
||||
|
|
|
@ -50,4 +50,7 @@ typedef FormData_pg_ts_config *Form_pg_ts_config;
|
|||
DECLARE_UNIQUE_INDEX(pg_ts_config_cfgname_index, 3608, TSConfigNameNspIndexId, pg_ts_config, btree(cfgname name_ops, cfgnamespace oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_ts_config_oid_index, 3712, TSConfigOidIndexId, pg_ts_config, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(TSCONFIGNAMENSP, pg_ts_config_cfgname_index, 2);
|
||||
MAKE_SYSCACHE(TSCONFIGOID, pg_ts_config_oid_index, 2);
|
||||
|
||||
#endif /* PG_TS_CONFIG_H */
|
||||
|
|
|
@ -46,4 +46,6 @@ typedef FormData_pg_ts_config_map *Form_pg_ts_config_map;
|
|||
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_ts_config_map_index, 3609, TSConfigMapIndexId, pg_ts_config_map, btree(mapcfg oid_ops, maptokentype int4_ops, mapseqno int4_ops));
|
||||
|
||||
MAKE_SYSCACHE(TSCONFIGMAP, pg_ts_config_map_index, 2);
|
||||
|
||||
#endif /* PG_TS_CONFIG_MAP_H */
|
||||
|
|
|
@ -56,4 +56,7 @@ DECLARE_TOAST(pg_ts_dict, 4169, 4170);
|
|||
DECLARE_UNIQUE_INDEX(pg_ts_dict_dictname_index, 3604, TSDictionaryNameNspIndexId, pg_ts_dict, btree(dictname name_ops, dictnamespace oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_ts_dict_oid_index, 3605, TSDictionaryOidIndexId, pg_ts_dict, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(TSDICTNAMENSP, pg_ts_dict_dictname_index, 2);
|
||||
MAKE_SYSCACHE(TSDICTOID, pg_ts_dict_oid_index, 2);
|
||||
|
||||
#endif /* PG_TS_DICT_H */
|
||||
|
|
|
@ -57,4 +57,7 @@ typedef FormData_pg_ts_parser *Form_pg_ts_parser;
|
|||
DECLARE_UNIQUE_INDEX(pg_ts_parser_prsname_index, 3606, TSParserNameNspIndexId, pg_ts_parser, btree(prsname name_ops, prsnamespace oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_ts_parser_oid_index, 3607, TSParserOidIndexId, pg_ts_parser, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(TSPARSERNAMENSP, pg_ts_parser_prsname_index, 2);
|
||||
MAKE_SYSCACHE(TSPARSEROID, pg_ts_parser_oid_index, 2);
|
||||
|
||||
#endif /* PG_TS_PARSER_H */
|
||||
|
|
|
@ -48,4 +48,7 @@ typedef FormData_pg_ts_template *Form_pg_ts_template;
|
|||
DECLARE_UNIQUE_INDEX(pg_ts_template_tmplname_index, 3766, TSTemplateNameNspIndexId, pg_ts_template, btree(tmplname name_ops, tmplnamespace oid_ops));
|
||||
DECLARE_UNIQUE_INDEX_PKEY(pg_ts_template_oid_index, 3767, TSTemplateOidIndexId, pg_ts_template, btree(oid oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(TSTEMPLATENAMENSP, pg_ts_template_tmplname_index, 2);
|
||||
MAKE_SYSCACHE(TSTEMPLATEOID, pg_ts_template_oid_index, 2);
|
||||
|
||||
#endif /* PG_TS_TEMPLATE_H */
|
||||
|
|
|
@ -265,6 +265,9 @@ DECLARE_TOAST(pg_type, 4171, 4172);
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_type_oid_index, 2703, TypeOidIndexId, pg_type, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index, 2704, TypeNameNspIndexId, pg_type, btree(typname name_ops, typnamespace oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(TYPEOID, pg_type_oid_index, 64);
|
||||
MAKE_SYSCACHE(TYPENAMENSP, pg_type_typname_nsp_index, 64);
|
||||
|
||||
#ifdef EXPOSE_TO_CLIENT_CODE
|
||||
|
||||
/*
|
||||
|
|
|
@ -52,4 +52,7 @@ DECLARE_TOAST(pg_user_mapping, 4173, 4174);
|
|||
DECLARE_UNIQUE_INDEX_PKEY(pg_user_mapping_oid_index, 174, UserMappingOidIndexId, pg_user_mapping, btree(oid oid_ops));
|
||||
DECLARE_UNIQUE_INDEX(pg_user_mapping_user_server_index, 175, UserMappingUserServerIndexId, pg_user_mapping, btree(umuser oid_ops, umserver oid_ops));
|
||||
|
||||
MAKE_SYSCACHE(USERMAPPINGOID, pg_user_mapping_oid_index, 2);
|
||||
MAKE_SYSCACHE(USERMAPPINGUSERSERVER, pg_user_mapping_user_server_index, 2);
|
||||
|
||||
#endif /* PG_USER_MAPPING_H */
|
||||
|
|
|
@ -20,103 +20,7 @@
|
|||
#include "access/htup.h"
|
||||
/* we intentionally do not include utils/catcache.h here */
|
||||
|
||||
/*
|
||||
* SysCache identifiers.
|
||||
*
|
||||
* The order of these identifiers must match the order
|
||||
* of the entries in the array cacheinfo[] in syscache.c.
|
||||
* Keep them in alphabetical order (renumbering only costs a
|
||||
* backend rebuild).
|
||||
*/
|
||||
|
||||
enum SysCacheIdentifier
|
||||
{
|
||||
AGGFNOID = 0,
|
||||
AMNAME,
|
||||
AMOID,
|
||||
AMOPOPID,
|
||||
AMOPSTRATEGY,
|
||||
AMPROCNUM,
|
||||
ATTNAME,
|
||||
ATTNUM,
|
||||
AUTHMEMMEMROLE,
|
||||
AUTHMEMROLEMEM,
|
||||
AUTHNAME,
|
||||
AUTHOID,
|
||||
CASTSOURCETARGET,
|
||||
CLAAMNAMENSP,
|
||||
CLAOID,
|
||||
COLLNAMEENCNSP,
|
||||
COLLOID,
|
||||
CONDEFAULT,
|
||||
CONNAMENSP,
|
||||
CONSTROID,
|
||||
CONVOID,
|
||||
DATABASEOID,
|
||||
DEFACLROLENSPOBJ,
|
||||
ENUMOID,
|
||||
ENUMTYPOIDNAME,
|
||||
EVENTTRIGGERNAME,
|
||||
EVENTTRIGGEROID,
|
||||
FOREIGNDATAWRAPPERNAME,
|
||||
FOREIGNDATAWRAPPEROID,
|
||||
FOREIGNSERVERNAME,
|
||||
FOREIGNSERVEROID,
|
||||
FOREIGNTABLEREL,
|
||||
INDEXRELID,
|
||||
LANGNAME,
|
||||
LANGOID,
|
||||
NAMESPACENAME,
|
||||
NAMESPACEOID,
|
||||
OPERNAMENSP,
|
||||
OPEROID,
|
||||
OPFAMILYAMNAMENSP,
|
||||
OPFAMILYOID,
|
||||
PARAMETERACLNAME,
|
||||
PARAMETERACLOID,
|
||||
PARTRELID,
|
||||
PROCNAMEARGSNSP,
|
||||
PROCOID,
|
||||
PUBLICATIONNAME,
|
||||
PUBLICATIONNAMESPACE,
|
||||
PUBLICATIONNAMESPACEMAP,
|
||||
PUBLICATIONOID,
|
||||
PUBLICATIONREL,
|
||||
PUBLICATIONRELMAP,
|
||||
RANGEMULTIRANGE,
|
||||
RANGETYPE,
|
||||
RELNAMENSP,
|
||||
RELOID,
|
||||
REPLORIGIDENT,
|
||||
REPLORIGNAME,
|
||||
RULERELNAME,
|
||||
SEQRELID,
|
||||
STATEXTDATASTXOID,
|
||||
STATEXTNAMENSP,
|
||||
STATEXTOID,
|
||||
STATRELATTINH,
|
||||
SUBSCRIPTIONNAME,
|
||||
SUBSCRIPTIONOID,
|
||||
SUBSCRIPTIONRELMAP,
|
||||
TABLESPACEOID,
|
||||
TRFOID,
|
||||
TRFTYPELANG,
|
||||
TSCONFIGMAP,
|
||||
TSCONFIGNAMENSP,
|
||||
TSCONFIGOID,
|
||||
TSDICTNAMENSP,
|
||||
TSDICTOID,
|
||||
TSPARSERNAMENSP,
|
||||
TSPARSEROID,
|
||||
TSTEMPLATENAMENSP,
|
||||
TSTEMPLATEOID,
|
||||
TYPENAMENSP,
|
||||
TYPEOID,
|
||||
USERMAPPINGOID,
|
||||
USERMAPPINGUSERSERVER,
|
||||
|
||||
#define SysCacheSize (USERMAPPINGUSERSERVER + 1)
|
||||
};
|
||||
#include "catalog/syscache_ids.h"
|
||||
|
||||
extern void InitCatalogCache(void);
|
||||
extern void InitCatalogCachePhase2(void);
|
||||
|
|
|
@ -119,6 +119,11 @@ do
|
|||
test "$f" = src/include/common/unicode_nonspacing_table.h && continue
|
||||
test "$f" = src/include/common/unicode_east_asian_fw_table.h && continue
|
||||
|
||||
test "$f" = src/backend/catalog/syscache_ids.h && continue
|
||||
test "$f" = src/backend/catalog/syscache_info.h && continue
|
||||
test "$f" = src/include/catalog/syscache_ids.h && continue
|
||||
test "$f" = src/include/catalog/syscache_info.h && continue
|
||||
|
||||
# We can't make these Bison output files compilable standalone
|
||||
# without using "%code require", which old Bison versions lack.
|
||||
# parser/gram.h will be included by parser/gramparse.h anyway.
|
||||
|
|
|
@ -114,6 +114,11 @@ do
|
|||
test "$f" = src/include/common/unicode_nonspacing_table.h && continue
|
||||
test "$f" = src/include/common/unicode_east_asian_fw_table.h && continue
|
||||
|
||||
test "$f" = src/backend/catalog/syscache_ids.h && continue
|
||||
test "$f" = src/backend/catalog/syscache_info.h && continue
|
||||
test "$f" = src/include/catalog/syscache_ids.h && continue
|
||||
test "$f" = src/include/catalog/syscache_info.h && continue
|
||||
|
||||
# We can't make these Bison output files compilable standalone
|
||||
# without using "%code require", which old Bison versions lack.
|
||||
# parser/gram.h will be included by parser/gramparse.h anyway.
|
||||
|
|
Loading…
Reference in New Issue