Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit ba0faf8

Browse files
committed
Remove special BKI_LOOKUP magic for namespace and role OIDs.
Now that commit 62f3409 attached BKI_LOOKUP annotation to all the namespace and role OID columns in the catalogs, there's no real reason to have the magic PGNSP and PGUID symbols. Get rid of them in favor of implementing those lookups according to genbki.pl's normal pattern. This means that in the catalog headers, BKI_DEFAULT(PGNSP) becomes BKI_DEFAULT(pg_catalog), which seems a lot more transparent. BKI_DEFAULT(PGUID) becomes BKI_DEFAULT(POSTGRES), which is perhaps less so; but you can look into pg_authid.dat to discover that POSTGRES is the nonce name for the bootstrap superuser. This change also means that if we ever need cross-references in the initial catalog data to any of the other built-in roles besides POSTGRES, or to some other built-in schema besides pg_catalog, we can just do it. No catversion bump here, as there's no actual change in the contents of postgres.bki. Discussion: https://postgr.es/m/3240355.1612129197@sss.pgh.pa.us
1 parent 0bf8364 commit ba0faf8

19 files changed

+46
-52
lines changed

doc/src/sgml/bki.sgml

-11
Original file line numberDiff line numberDiff line change
@@ -540,17 +540,6 @@
540540
expected to be in the <literal>pg_catalog</literal> schema.
541541
</para>
542542
</listitem>
543-
544-
<listitem>
545-
<para>
546-
In addition to the generic lookup mechanisms, there is a special
547-
convention that <literal>PGNSP</literal> is replaced by the OID of
548-
the <literal>pg_catalog</literal> schema,
549-
and <literal>PGUID</literal> is replaced by the OID of the bootstrap
550-
superuser role. These usages are somewhat historical but so far
551-
there hasn't been a need to generalize them.
552-
</para>
553-
</listitem>
554543
</itemizedlist>
555544

556545
<para>

src/backend/catalog/genbki.pl

+10-14
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,9 @@
184184
# within a given Postgres release, such as fixed OIDs. Do not substitute
185185
# anything that could depend on platform or configuration. (The right place
186186
# to handle those sorts of things is in initdb.c's bootstrap_template1().)
187-
my $BOOTSTRAP_SUPERUSERID =
188-
Catalog::FindDefinedSymbolFromData($catalog_data{pg_authid},
189-
'BOOTSTRAP_SUPERUSERID');
190187
my $C_COLLATION_OID =
191188
Catalog::FindDefinedSymbolFromData($catalog_data{pg_collation},
192189
'C_COLLATION_OID');
193-
my $PG_CATALOG_NAMESPACE =
194-
Catalog::FindDefinedSymbolFromData($catalog_data{pg_namespace},
195-
'PG_CATALOG_NAMESPACE');
196190

197191

198192
# Fill in pg_class.relnatts by looking at the referenced catalog's schema.
@@ -213,11 +207,12 @@
213207
$amoids{ $row->{amname} } = $row->{oid};
214208
}
215209

216-
# There is only one authid at bootstrap time, and we handle it specially:
217-
# the usually-defaulted symbol PGUID becomes the bootstrap superuser's OID.
218-
# (We could drop this in favor of writing out BKI_DEFAULT(POSTGRES) ...)
210+
# role OID lookup
219211
my %authidoids;
220-
$authidoids{'PGUID'} = $BOOTSTRAP_SUPERUSERID;
212+
foreach my $row (@{ $catalog_data{pg_authid} })
213+
{
214+
$authidoids{ $row->{rolname} } = $row->{oid};
215+
}
221216

222217
# class (relation) OID lookup (note this only covers bootstrap catalogs!)
223218
my %classoids;
@@ -240,11 +235,12 @@
240235
$langoids{ $row->{lanname} } = $row->{oid};
241236
}
242237

243-
# There is only one namespace at bootstrap time, and we handle it specially:
244-
# the usually-defaulted symbol PGNSP becomes the pg_catalog namespace's OID.
245-
# (We could drop this in favor of writing out BKI_DEFAULT(pg_catalog) ...)
238+
# namespace (schema) OID lookup
246239
my %namespaceoids;
247-
$namespaceoids{'PGNSP'} = $PG_CATALOG_NAMESPACE;
240+
foreach my $row (@{ $catalog_data{pg_namespace} })
241+
{
242+
$namespaceoids{ $row->{nspname} } = $row->{oid};
243+
}
248244

249245
# opclass OID lookup
250246
my %opcoids;

src/include/catalog/pg_authid.dat

+4
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
# The C code typically refers to these roles using the #define symbols,
1616
# so make sure every entry has an oid_symbol value.
1717

18+
# The bootstrap superuser is named POSTGRES according to this data and
19+
# according to BKI_DEFAULT entries in other catalogs. However, initdb
20+
# will replace that at database initialization time.
21+
1822
{ oid => '10', oid_symbol => 'BOOTSTRAP_SUPERUSERID',
1923
rolname => 'POSTGRES', rolsuper => 't', rolinherit => 't',
2024
rolcreaterole => 't', rolcreatedb => 't', rolcanlogin => 't',

src/include/catalog/pg_class.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
3838
NameData relname;
3939

4040
/* OID of namespace containing this class */
41-
Oid relnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
41+
Oid relnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
4242

4343
/* OID of entry in pg_type for relation's implicit row type, if any */
4444
Oid reltype BKI_LOOKUP_OPT(pg_type);
@@ -47,7 +47,7 @@ CATALOG(pg_class,1259,RelationRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(83,Relat
4747
Oid reloftype BKI_DEFAULT(0) BKI_LOOKUP_OPT(pg_type);
4848

4949
/* class owner */
50-
Oid relowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
50+
Oid relowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
5151

5252
/* access method; 0 if not a table / index */
5353
Oid relam BKI_DEFAULT(heap) BKI_LOOKUP_OPT(pg_am);

src/include/catalog/pg_collation.h

+6-3
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,12 @@ CATALOG(pg_collation,3456,CollationRelationId)
3030
{
3131
Oid oid; /* oid */
3232
NameData collname; /* collation name */
33-
Oid collnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace); /* OID of namespace
34-
* containing collation */
35-
Oid collowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid); /* owner of collation */
33+
34+
/* OID of namespace containing this collation */
35+
Oid collnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
36+
37+
/* owner of collation */
38+
Oid collowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
3639
char collprovider; /* see constants below */
3740
bool collisdeterministic BKI_DEFAULT(t);
3841
int32 collencoding; /* encoding for this collation; -1 = "all" */

src/include/catalog/pg_conversion.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ CATALOG(pg_conversion,2607,ConversionRelationId)
3535
NameData conname;
3636

3737
/* namespace that the conversion belongs to */
38-
Oid connamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
38+
Oid connamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
3939

4040
/* owner of the conversion */
41-
Oid conowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
41+
Oid conowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
4242

4343
/* FOR encoding id */
4444
int32 conforencoding BKI_LOOKUP(encoding);

src/include/catalog/pg_database.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ CATALOG(pg_database,1262,DatabaseRelationId) BKI_SHARED_RELATION BKI_ROWTYPE_OID
3535
NameData datname;
3636

3737
/* owner of database */
38-
Oid datdba BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
38+
Oid datdba BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
3939

4040
/* character encoding */
4141
int32 encoding;

src/include/catalog/pg_language.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ CATALOG(pg_language,2612,LanguageRelationId)
3434
NameData lanname;
3535

3636
/* Language's owner */
37-
Oid lanowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
37+
Oid lanowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
3838

3939
/* Is a procedural language */
4040
bool lanispl BKI_DEFAULT(f);

src/include/catalog/pg_namespace.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ CATALOG(pg_namespace,2615,NamespaceRelationId)
3737
Oid oid; /* oid */
3838

3939
NameData nspname;
40-
Oid nspowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
40+
Oid nspowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
4141

4242
#ifdef CATALOG_VARLEN /* variable-length fields start here */
4343
aclitem nspacl[1];

src/include/catalog/pg_opclass.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ CATALOG(pg_opclass,2616,OperatorClassRelationId)
5757
NameData opcname;
5858

5959
/* namespace of this opclass */
60-
Oid opcnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
60+
Oid opcnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
6161

6262
/* opclass owner */
63-
Oid opcowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
63+
Oid opcowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
6464

6565
/* containing operator family */
6666
Oid opcfamily BKI_LOOKUP(pg_opfamily);

src/include/catalog/pg_operator.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ CATALOG(pg_operator,2617,OperatorRelationId)
3636
NameData oprname;
3737

3838
/* OID of namespace containing this oper */
39-
Oid oprnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
39+
Oid oprnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
4040

4141
/* operator owner */
42-
Oid oprowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
42+
Oid oprowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
4343

4444
/* 'l' for prefix or 'b' for infix */
4545
char oprkind BKI_DEFAULT(b);

src/include/catalog/pg_opfamily.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ CATALOG(pg_opfamily,2753,OperatorFamilyRelationId)
3737
NameData opfname;
3838

3939
/* namespace of this opfamily */
40-
Oid opfnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
40+
Oid opfnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
4141

4242
/* opfamily owner */
43-
Oid opfowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
43+
Oid opfowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
4444
} FormData_pg_opfamily;
4545

4646
/* ----------------

src/include/catalog/pg_proc.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ CATALOG(pg_proc,1255,ProcedureRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(81,Proce
3535
NameData proname;
3636

3737
/* OID of namespace containing this proc */
38-
Oid pronamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
38+
Oid pronamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
3939

4040
/* procedure owner */
41-
Oid proowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
41+
Oid proowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
4242

4343
/* OID of pg_language entry */
4444
Oid prolang BKI_DEFAULT(internal) BKI_LOOKUP(pg_language);

src/include/catalog/pg_tablespace.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ CATALOG(pg_tablespace,1213,TableSpaceRelationId) BKI_SHARED_RELATION
3030
{
3131
Oid oid; /* oid */
3232
NameData spcname; /* tablespace name */
33-
Oid spcowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid); /* owner of tablespace */
33+
34+
/* owner of tablespace */
35+
Oid spcowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
3436

3537
#ifdef CATALOG_VARLEN /* variable-length fields start here */
3638
aclitem spcacl[1]; /* access permissions */

src/include/catalog/pg_ts_config.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ CATALOG(pg_ts_config,3602,TSConfigRelationId)
3636
NameData cfgname;
3737

3838
/* name space */
39-
Oid cfgnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
39+
Oid cfgnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
4040

4141
/* owner */
42-
Oid cfgowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
42+
Oid cfgowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
4343

4444
/* OID of parser */
4545
Oid cfgparser BKI_LOOKUP(pg_ts_parser);

src/include/catalog/pg_ts_dict.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ CATALOG(pg_ts_dict,3600,TSDictionaryRelationId)
3535
NameData dictname;
3636

3737
/* name space */
38-
Oid dictnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
38+
Oid dictnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
3939

4040
/* owner */
41-
Oid dictowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
41+
Oid dictowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
4242

4343
/* dictionary's template */
4444
Oid dicttemplate BKI_LOOKUP(pg_ts_template);

src/include/catalog/pg_ts_parser.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ CATALOG(pg_ts_parser,3601,TSParserRelationId)
3434
NameData prsname;
3535

3636
/* name space */
37-
Oid prsnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
37+
Oid prsnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
3838

3939
/* init parsing session */
4040
regproc prsstart BKI_LOOKUP(pg_proc);

src/include/catalog/pg_ts_template.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ CATALOG(pg_ts_template,3764,TSTemplateRelationId)
3434
NameData tmplname;
3535

3636
/* name space */
37-
Oid tmplnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
37+
Oid tmplnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
3838

3939
/* initialization method of dict (may be 0) */
4040
regproc tmplinit BKI_LOOKUP_OPT(pg_proc);

src/include/catalog/pg_type.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ CATALOG(pg_type,1247,TypeRelationId) BKI_BOOTSTRAP BKI_ROWTYPE_OID(71,TypeRelati
4141
NameData typname;
4242

4343
/* OID of namespace containing this type */
44-
Oid typnamespace BKI_DEFAULT(PGNSP) BKI_LOOKUP(pg_namespace);
44+
Oid typnamespace BKI_DEFAULT(pg_catalog) BKI_LOOKUP(pg_namespace);
4545

4646
/* type owner */
47-
Oid typowner BKI_DEFAULT(PGUID) BKI_LOOKUP(pg_authid);
47+
Oid typowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
4848

4949
/*
5050
* For a fixed-size type, typlen is the number of bytes we use to

0 commit comments

Comments
 (0)