diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index 6d3c5be67f..db1b3d5e9a 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -540,17 +540,6 @@
expected to be in the pg_catalog schema.
-
-
-
- In addition to the generic lookup mechanisms, there is a special
- convention that PGNSP is replaced by the OID of
- the pg_catalog schema,
- and PGUID is replaced by the OID of the bootstrap
- superuser role. These usages are somewhat historical but so far
- there hasn't been a need to generalize them.
-
-
diff --git a/src/backend/catalog/genbki.pl b/src/backend/catalog/genbki.pl
index 5bdc7adc44..b159958112 100644
--- a/src/backend/catalog/genbki.pl
+++ b/src/backend/catalog/genbki.pl
@@ -184,15 +184,9 @@ my $GenbkiNextOid = $FirstGenbkiObjectId;
# within a given Postgres release, such as fixed OIDs. Do not substitute
# anything that could depend on platform or configuration. (The right place
# to handle those sorts of things is in initdb.c's bootstrap_template1().)
-my $BOOTSTRAP_SUPERUSERID =
- Catalog::FindDefinedSymbolFromData($catalog_data{pg_authid},
- 'BOOTSTRAP_SUPERUSERID');
my $C_COLLATION_OID =
Catalog::FindDefinedSymbolFromData($catalog_data{pg_collation},
'C_COLLATION_OID');
-my $PG_CATALOG_NAMESPACE =
- Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace},
- 'PG_CATALOG_NAMESPACE');
# Fill in pg_class.relnatts by looking at the referenced catalog's schema.
@@ -213,11 +207,12 @@ foreach my $row (@{ $catalog_data{pg_am} })
$amoids{ $row->{amname} } = $row->{oid};
}
-# There is only one authid at bootstrap time, and we handle it specially:
-# the usually-defaulted symbol PGUID becomes the bootstrap superuser's OID.
-# (We could drop this in favor of writing out BKI_DEFAULT(POSTGRES) ...)
+# role OID lookup
my %authidoids;
-$authidoids{'PGUID'} = $BOOTSTRAP_SUPERUSERID;
+foreach my $row (@{ $catalog_data{pg_authid} })
+{
+ $authidoids{ $row->{rolname} } = $row->{oid};
+}
# class (relation) OID lookup (note this only covers bootstrap catalogs!)
my %classoids;
@@ -240,11 +235,12 @@ foreach my $row (@{ $catalog_data{pg_language} })
$langoids{ $row->{lanname} } = $row->{oid};
}
-# There is only one namespace at bootstrap time, and we handle it specially:
-# the usually-defaulted symbol PGNSP becomes the pg_catalog namespace's OID.
-# (We could drop this in favor of writing out BKI_DEFAULT(pg_catalog) ...)
+# namespace (schema) OID lookup
my %namespaceoids;
-$namespaceoids{'PGNSP'} = $PG_CATALOG_NAMESPACE;
+foreach my $row (@{ $catalog_data{pg_namespace} })
+{
+ $namespaceoids{ $row->{nspname} } = $row->{oid};
+}
# opclass OID lookup
my %opcoids;
diff --git a/src/include/catalog/pg_authid.dat b/src/include/catalog/pg_authid.dat
index a643a09588..87d917ffc3 100644
--- a/src/include/catalog/pg_authid.dat
+++ b/src/include/catalog/pg_authid.dat
@@ -15,6 +15,10 @@
# The C code typically refers to these roles using the #define symbols,
# so make sure every entry has an oid_symbol value.
+# The bootstrap superuser is named POSTGRES according to this data and
+# according to BKI_DEFAULT entries in other catalogs. However, initdb
+# will replace that at database initialization time.
+
{ oid => '10', oid_symbol => 'BOOTSTRAP_SUPERUSERID',
rolname => 'POSTGRES', rolsuper => 't', rolinherit => 't',
rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't',
diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h
index bb6938caa2..3e37729436 100644
--- a/src/include/catalog/pg_class.h
+++ b/src/include/catalog/pg_class.h
@@ -38,7 +38,7 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
NameData relname;
/* OID of namespace containing this class */
- Oid relnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid relnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* OID of entry in pg_type for relation's implicit row type, if any */
Oid reltype BKI_LOOKUP_OPT(pg_type);
@@ -47,7 +47,7 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);
/* class owner */
- Oid relowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid relowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* access method; 0 if not a table / index */
Oid relam BKI_DEFAULT(heap) BKI_LOOKUP_OPT(pg_am);
diff --git a/src/include/catalog/pg_collation.h b/src/include/catalog/pg_collation.h
index 3bd7873c68..c6394ca222 100644
--- a/src/include/catalog/pg_collation.h
+++ b/src/include/catalog/pg_collation.h
@@ -30,9 +30,12 @@ CATALOG(pg_collation,3456,CollationRelationId)
{
Oid oid; /* oid */
NameData collname; /* collation name */
- Oid collnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace); /* OID of namespace
- * containing collation */
- Oid collowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid); /* owner of collation */
+
+ /* OID of namespace containing this collation */
+ Oid collnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
+
+ /* owner of collation */
+ Oid collowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
char collprovider; /* see constants below */
bool collisdeterministic BKI_DEFAULT(t);
int32 collencoding; /* encoding for this collation; -1 = "all" */
diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h
index 96bb92f251..ca556f6030 100644
--- a/src/include/catalog/pg_conversion.h
+++ b/src/include/catalog/pg_conversion.h
@@ -35,10 +35,10 @@ CATALOG(pg_conversion,2607,ConversionRelationId)
NameData conname;
/* namespace that the conversion belongs to */
- Oid connamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid connamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* owner of the conversion */
- Oid conowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid conowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* FOR encoding id */
int32 conforencoding BKI_LOOKUP(encoding);
diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h
index f0240c58cf..d3de45821c 100644
--- a/src/include/catalog/pg_database.h
+++ b/src/include/catalog/pg_database.h
@@ -35,7 +35,7 @@ CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID
NameData datname;
/* owner of database */
- Oid datdba BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid datdba BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* character encoding */
int32 encoding;
diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h
index e9df9dac09..3e56597ece 100644
--- a/src/include/catalog/pg_language.h
+++ b/src/include/catalog/pg_language.h
@@ -34,7 +34,7 @@ CATALOG(pg_language,2612,LanguageRelationId)
NameData lanname;
/* Language's owner */
- Oid lanowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid lanowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* Is a procedural language */
bool lanispl BKI_DEFAULT(f);
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index d920c6cfc6..fe87a947ee 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -37,7 +37,7 @@ CATALOG(pg_namespace,2615,NamespaceRelationId)
Oid oid; /* oid */
NameData nspname;
- Oid nspowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid nspowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
#ifdef CATALOG_VARLEN /* variable-length fields start here */
aclitem nspacl[1];
diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h
index 9f321f2a85..7b2cf25920 100644
--- a/src/include/catalog/pg_opclass.h
+++ b/src/include/catalog/pg_opclass.h
@@ -57,10 +57,10 @@ CATALOG(pg_opclass,2616,OperatorClassRelationId)
NameData opcname;
/* namespace of this opclass */
- Oid opcnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid opcnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* opclass owner */
- Oid opcowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid opcowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* containing operator family */
Oid opcfamily BKI_LOOKUP(pg_opfamily);
diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h
index 7f06abaeec..d32fcdc64e 100644
--- a/src/include/catalog/pg_operator.h
+++ b/src/include/catalog/pg_operator.h
@@ -36,10 +36,10 @@ CATALOG(pg_operator,2617,OperatorRelationId)
NameData oprname;
/* OID of namespace containing this oper */
- Oid oprnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid oprnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* operator owner */
- Oid oprowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid oprowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* 'l' for prefix or 'b' for infix */
char oprkind BKI_DEFAULT(b);
diff --git a/src/include/catalog/pg_opfamily.h b/src/include/catalog/pg_opfamily.h
index 1a723b76f6..129102b576 100644
--- a/src/include/catalog/pg_opfamily.h
+++ b/src/include/catalog/pg_opfamily.h
@@ -37,10 +37,10 @@ CATALOG(pg_opfamily,2753,OperatorFamilyRelationId)
NameData opfname;
/* namespace of this opfamily */
- Oid opfnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid opfnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* opfamily owner */
- Oid opfowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid opfowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
} FormData_pg_opfamily;
/* ----------------
diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h
index 2f54aa171e..78f230894b 100644
--- a/src/include/catalog/pg_proc.h
+++ b/src/include/catalog/pg_proc.h
@@ -35,10 +35,10 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
NameData proname;
/* OID of namespace containing this proc */
- Oid pronamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid pronamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* procedure owner */
- Oid proowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid proowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* OID of pg_language entry */
Oid prolang BKI_DEFAULT(internal) BKI_LOOKUP(pg_language);
diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h
index ed38e6950d..58bb1087a3 100644
--- a/src/include/catalog/pg_tablespace.h
+++ b/src/include/catalog/pg_tablespace.h
@@ -30,7 +30,9 @@ CATALOG(pg_tablespace,1213,TableSpaceRelationId) BKI_SHARED_RELATION
{
Oid oid; /* oid */
NameData spcname; /* tablespace name */
- Oid spcowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid); /* owner of tablespace */
+
+ /* owner of tablespace */
+ Oid spcowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
#ifdef CATALOG_VARLEN /* variable-length fields start here */
aclitem spcacl[1]; /* access permissions */
diff --git a/src/include/catalog/pg_ts_config.h b/src/include/catalog/pg_ts_config.h
index e705899b17..2e0263962d 100644
--- a/src/include/catalog/pg_ts_config.h
+++ b/src/include/catalog/pg_ts_config.h
@@ -36,10 +36,10 @@ CATALOG(pg_ts_config,3602,TSConfigRelationId)
NameData cfgname;
/* name space */
- Oid cfgnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid cfgnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* owner */
- Oid cfgowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid cfgowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* OID of parser */
Oid cfgparser BKI_LOOKUP(pg_ts_parser);
diff --git a/src/include/catalog/pg_ts_dict.h b/src/include/catalog/pg_ts_dict.h
index 57f626e7b5..e53eead829 100644
--- a/src/include/catalog/pg_ts_dict.h
+++ b/src/include/catalog/pg_ts_dict.h
@@ -35,10 +35,10 @@ CATALOG(pg_ts_dict,3600,TSDictionaryRelationId)
NameData dictname;
/* name space */
- Oid dictnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid dictnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* owner */
- Oid dictowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid dictowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/* dictionary's template */
Oid dicttemplate BKI_LOOKUP(pg_ts_template);
diff --git a/src/include/catalog/pg_ts_parser.h b/src/include/catalog/pg_ts_parser.h
index e0d705fd9a..0231051cee 100644
--- a/src/include/catalog/pg_ts_parser.h
+++ b/src/include/catalog/pg_ts_parser.h
@@ -34,7 +34,7 @@ CATALOG(pg_ts_parser,3601,TSParserRelationId)
NameData prsname;
/* name space */
- Oid prsnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid prsnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* init parsing session */
regproc prsstart BKI_LOOKUP(pg_proc);
diff --git a/src/include/catalog/pg_ts_template.h b/src/include/catalog/pg_ts_template.h
index 2ee1ae4e85..194b921136 100644
--- a/src/include/catalog/pg_ts_template.h
+++ b/src/include/catalog/pg_ts_template.h
@@ -34,7 +34,7 @@ CATALOG(pg_ts_template,3764,TSTemplateRelationId)
NameData tmplname;
/* name space */
- Oid tmplnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid tmplnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* initialization method of dict (may be 0) */
regproc tmplinit BKI_LOOKUP_OPT(pg_proc);
diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h
index 1ec8606703..8ee5fa0507 100644
--- a/src/include/catalog/pg_type.h
+++ b/src/include/catalog/pg_type.h
@@ -41,10 +41,10 @@ CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelati
NameData typname;
/* OID of namespace containing this type */
- Oid typnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
+ Oid typnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
/* type owner */
- Oid typowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
+ Oid typowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
/*
* For a fixed-size type, typlen is the number of bytes we use to