mirror of
https://github.com/postgres/postgres.git
synced 2026-03-19 17:16:04 -04:00
Now that commit 62f34097c 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
66 lines
1.9 KiB
C
66 lines
1.9 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* pg_namespace.h
|
|
* definition of the "namespace" system catalog (pg_namespace)
|
|
*
|
|
*
|
|
* Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/catalog/pg_namespace.h
|
|
*
|
|
* NOTES
|
|
* The Catalog.pm module reads this file and derives schema
|
|
* information.
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#ifndef PG_NAMESPACE_H
|
|
#define PG_NAMESPACE_H
|
|
|
|
#include "catalog/genbki.h"
|
|
#include "catalog/pg_namespace_d.h"
|
|
#include "utils/acl.h"
|
|
|
|
/* ----------------------------------------------------------------
|
|
* pg_namespace definition.
|
|
*
|
|
* cpp turns this into typedef struct FormData_pg_namespace
|
|
*
|
|
* nspname name of the namespace
|
|
* nspowner owner (creator) of the namespace
|
|
* nspacl access privilege list
|
|
* ----------------------------------------------------------------
|
|
*/
|
|
CATALOG(pg_namespace,2615,NamespaceRelationId)
|
|
{
|
|
Oid oid; /* oid */
|
|
|
|
NameData nspname;
|
|
Oid nspowner BKI_DEFAULT(POSTGRES) BKI_LOOKUP(pg_authid);
|
|
|
|
#ifdef CATALOG_VARLEN /* variable-length fields start here */
|
|
aclitem nspacl[1];
|
|
#endif
|
|
} FormData_pg_namespace;
|
|
|
|
/* ----------------
|
|
* Form_pg_namespace corresponds to a pointer to a tuple with
|
|
* the format of pg_namespace relation.
|
|
* ----------------
|
|
*/
|
|
typedef FormData_pg_namespace *Form_pg_namespace;
|
|
|
|
DECLARE_TOAST(pg_namespace, 4163, 4164);
|
|
|
|
DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index, 2684, on pg_namespace using btree(nspname name_ops));
|
|
#define NamespaceNameIndexId 2684
|
|
DECLARE_UNIQUE_INDEX_PKEY(pg_namespace_oid_index, 2685, on pg_namespace using btree(oid oid_ops));
|
|
#define NamespaceOidIndexId 2685
|
|
|
|
/*
|
|
* prototypes for functions in pg_namespace.c
|
|
*/
|
|
extern Oid NamespaceCreate(const char *nspName, Oid ownerId, bool isTemp);
|
|
|
|
#endif /* PG_NAMESPACE_H */
|