1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-10 17:42:29 +03:00

First phase of project to use fixed OIDs for all system catalogs and

indexes.  Extend the macros in include/catalog/*.h to carry the info
about hand-assigned OIDs, and adjust the genbki script and bootstrap
code to make the relations actually get those OIDs.  Remove the small
number of RelOid_pg_foo macros that we had in favor of a complete
set named like the catname.h and indexing.h macros.  Next phase will
get rid of internal use of names for looking up catalogs and indexes;
but this completes the changes forcing an initdb, so it looks like a
good place to commit.
Along the way, I made the shared relations (pg_database etc) not be
'bootstrap' relations any more, so as to reduce the number of hardwired
entries and simplify changing those relations in future.  I'm not
sure whether they ever really needed to be handled as bootstrap
relations, but it seems to work fine to not do so now.
This commit is contained in:
Tom Lane
2005-04-14 01:38:22 +00:00
parent 2193a856a2
commit 7c13781ee7
72 changed files with 712 additions and 616 deletions

View File

@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/bootstrap/bootparse.y,v 1.75 2004/12/31 21:59:34 pgsql Exp $
* $PostgreSQL: pgsql/src/backend/bootstrap/bootparse.y,v 1.76 2005/04/14 01:38:15 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -50,6 +50,8 @@
#include "utils/nabstime.h"
#include "utils/rel.h"
#define atooid(x) ((Oid) strtoul((x), NULL, 10))
static void
do_start(void)
@@ -91,11 +93,10 @@ int num_columns_read = 0;
%type <ival> boot_const boot_ident
%type <ival> optbootstrap optsharedrelation optwithoutoids
%type <ival> boot_tuple boot_tuplelist
%type <oidval> optoideq
%type <oidval> oidspec optoideq
%token <ival> CONST_P ID
%token OPEN XCLOSE XCREATE INSERT_TUPLE
%token STRING XDEFINE
%token XDECLARE INDEX ON USING XBUILD INDICES UNIQUE
%token COMMA EQUALS LPAREN RPAREN
%token OBJ_ID XBOOTSTRAP XSHARED_RELATION XWITHOUT_OIDS NULLVAL
@@ -151,14 +152,15 @@ Boot_CloseStmt:
;
Boot_CreateStmt:
XCREATE optbootstrap optsharedrelation optwithoutoids boot_ident LPAREN
XCREATE optbootstrap optsharedrelation optwithoutoids boot_ident oidspec LPAREN
{
do_start();
numattr = 0;
elog(DEBUG4, "creating%s%s relation %s",
elog(DEBUG4, "creating%s%s relation %s %u",
$2 ? " bootstrap" : "",
$3 ? " shared" : "",
LexIDStr($5));
LexIDStr($5),
$6);
}
boot_typelist
{
@@ -183,6 +185,7 @@ Boot_CreateStmt:
boot_reldesc = heap_create(LexIDStr($5),
PG_CATALOG_NAMESPACE,
$3 ? GLOBALTABLESPACE_OID : 0,
$6,
tupdesc,
RELKIND_RELATION,
$3,
@@ -196,6 +199,7 @@ Boot_CreateStmt:
id = heap_create_with_catalog(LexIDStr($5),
PG_CATALOG_NAMESPACE,
$3 ? GLOBALTABLESPACE_OID : 0,
$6,
tupdesc,
RELKIND_RELATION,
$3,
@@ -235,15 +239,16 @@ Boot_InsertStmt:
;
Boot_DeclareIndexStmt:
XDECLARE INDEX boot_ident ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN
XDECLARE INDEX boot_ident oidspec ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN
{
do_start();
DefineIndex(makeRangeVar(NULL, LexIDStr($5)),
DefineIndex(makeRangeVar(NULL, LexIDStr($6)),
LexIDStr($3),
LexIDStr($7),
$4,
LexIDStr($8),
NULL,
$9,
$10,
NULL, NIL,
false, false, false,
false, false, true, false);
@@ -252,15 +257,16 @@ Boot_DeclareIndexStmt:
;
Boot_DeclareUniqueIndexStmt:
XDECLARE UNIQUE INDEX boot_ident ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN
XDECLARE UNIQUE INDEX boot_ident oidspec ON boot_ident USING boot_ident LPAREN boot_index_params RPAREN
{
do_start();
DefineIndex(makeRangeVar(NULL, LexIDStr($6)),
DefineIndex(makeRangeVar(NULL, LexIDStr($7)),
LexIDStr($4),
LexIDStr($8),
$5,
LexIDStr($9),
NULL,
$10,
$11,
NULL, NIL,
true, false, false,
false, false, true, false);
@@ -323,9 +329,13 @@ boot_type_thing:
}
;
oidspec:
boot_ident { $$ = atooid(LexIDStr($1)); }
;
optoideq:
OBJ_ID EQUALS boot_ident { $$ = atol(LexIDStr($3)); }
| { $$ = (Oid) 0; }
OBJ_ID EQUALS oidspec { $$ = $3; }
| { $$ = (Oid) 0; }
;
boot_tuplelist:

View File

@@ -1,4 +1,4 @@
$PostgreSQL: pgsql/src/backend/catalog/README,v 1.8 2003/11/29 19:51:42 pgsql Exp $
$PostgreSQL: pgsql/src/backend/catalog/README,v 1.9 2005/04/14 01:38:15 tgl Exp $
This directory contains .c files that manipulate the system catalogs;
src/include/catalog contains the .h files that define the structure
@@ -6,7 +6,7 @@ of the system catalogs.
When the compile-time scripts (such as Gen_fmgrtab.sh and genbki.sh)
execute, they grep the DATA statements out of the .h files and munge
these in order to generate the .bki files. The .bki files are then
these in order to generate the postgres.bki file. The .bki file is then
used as input to initdb (which is just a wrapper around postgres
running single-user in bootstrapping mode) in order to generate the
initial (template) system catalog relation files.
@@ -30,8 +30,8 @@ contains back-pointers into pg_type (pg_proc.proargtypes). For such
cases, the OID assigned to a tuple may be explicitly set by use of the
"OID = n" clause of the .bki insert statement. If no such pointers are
required to a given tuple, then the OID = n clause may be omitted
(then the system generates a random OID in the usual way, or leaves it
0 in a catalog that has no OIDs). In practice we usually preassign OIDs
(then the system generates an OID in the usual way, or leaves it 0 in a
catalog that has no OIDs). In practice we usually preassign OIDs
for all or none of the pre-loaded tuples in a given catalog, even if only
some of them are actually cross-referenced.
@@ -39,42 +39,36 @@ some of them are actually cross-referenced.
be known directly in the C code. In such cases, put a #define in the
catalog's .h file, and use the #define symbol in the C code. Writing
the actual numeric value of any OID in C code is considered very bad form.
(Direct references to pg_proc OIDs are common enough that there's a special
Direct references to pg_proc OIDs are common enough that there's a special
mechanism to create the necessary #define's automatically: see
backend/utils/Gen_fmgrtab.sh. For all the other system catalogs, you have
to manually create any #define's you need.)
backend/utils/Gen_fmgrtab.sh. We also have standard conventions for setting
up #define's for the pg_class OIDs of system catalogs and indexes. For all
the other system catalogs, you have to manually create any #define's you
need.
- If you need to find a valid OID for a tuple that will be referred to by
others, use the unused_oids script. It generates inclusive ranges of
- If you need to find a valid OID for a new predefined tuple,
use the unused_oids script. It generates inclusive ranges of
*unused* OIDs (e.g., the line "45-900" means OIDs 45 through 900 have
not been allocated yet). Currently, OIDs 1-9999 are reserved for manual
assignment; the unused_oids script simply looks through the include/catalog
headers to see which ones do not appear in "OID =" clauses.
headers to see which ones do not appear in "OID =" clauses in DATA lines.
(As of Postgres 8.1, it also looks at CATALOG and DECLARE_INDEX lines.)
You can also use the duplicate_oids script to check for mistakes.
- OIDs 10000-16383 are reserved for assignment by the genbki.sh script:
it will insert these OIDs if it sees a clause "OID = 0" in a DATA
statement. You would typically use this feature if you don't care exactly
which OID is assigned to a catalog row (because it has no cross-references
you need to hardwire) but you want to give it a DESCR entry. The DESCR macro
will not work for rows that don't have any OID at genbki.sh time.
- The OID counter starts at 16384 at bootstrap. If a catalog row is in a
table that requires OIDs, but no OID was preassigned by hand or by genbki.sh,
then it will receive an OID of 16384 or above.
- The OID counter starts at 10000 at bootstrap. If a catalog row is in a
table that requires OIDs, but no OID was preassigned by an "OID =" clause,
then it will receive an OID of 10000 or above.
- To create a "BOOTSTRAP" table you have to do a lot of extra work: these
tables are not created through a normal CREATE TABLE operation, but spring
into existence when first written to during initdb. Therefore, you must
manually create appropriate entries for them in the pre-loaded contents of
pg_class, pg_attribute, and pg_type. You'll also need to add code to function
heap_create() in heap.c to force the correct OID to be assigned when the table
is first referenced. (It's near the top of the function with the comment
beginning in "Real ugly stuff".) Avoid making new catalogs be bootstrap
pg_class, pg_attribute, and pg_type. Avoid making new catalogs be bootstrap
catalogs if at all possible; generally, only tables that must be written to
in order to create a table should be bootstrapped.
- Certain BOOTSTRAP tables must be at the start of the Makefile
POSTGRES_BKI_SRCS variable, as these will not be created through the standard
POSTGRES_BKI_SRCS variable, as these cannot be created through the standard
heap_create_with_catalog process, because it needs these tables to exist
already. The list of files this currently includes is:
pg_proc.h pg_type.h pg_attribute.h pg_class.h
@@ -96,7 +90,10 @@ piece of code will likely perform "typetup->typdelim" (or, worse,
"typetyp->typelem", which follows typdelim). This will result in
random errors or even segmentation violations. Hence, do NOT insert
catalog tuples that contain NULL attributes except in their
variable-length portions!
variable-length portions! (The bootstrapping code is fairly good about
marking NOT NULL each of the columns that can legally be referenced via
C struct declarations ... but those markings won't be enforced against
DATA commands, so you must get it right in a DATA line.)
- Modification of the catalogs must be performed with the proper
updating of catalog indexes! That is, most catalogs have indexes

View File

@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.42 2005/02/22 04:35:34 momjian Exp $
* $PostgreSQL: pgsql/src/backend/catalog/dependency.c,v 1.43 2005/04/14 01:38:15 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -29,8 +29,10 @@
#include "catalog/pg_depend.h"
#include "catalog/pg_language.h"
#include "catalog/pg_opclass.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_rewrite.h"
#include "catalog/pg_trigger.h"
#include "catalog/pg_type.h"
#include "commands/comment.h"
#include "commands/defrem.h"
#include "commands/proclang.h"
@@ -907,7 +909,7 @@ recordDependencyOnSingleRelExpr(const ObjectAddress *depender,
{
ObjectAddress *thisobj = context.addrs.refs + oldref;
if (thisobj->classId == RelOid_pg_class &&
if (thisobj->classId == RelationRelationId &&
thisobj->objectId == relId)
{
/* Move this ref into self_addrs */
@@ -1305,9 +1307,9 @@ term_object_addresses(ObjectAddresses *addrs)
static void
init_object_classes(void)
{
object_classes[OCLASS_CLASS] = RelOid_pg_class;
object_classes[OCLASS_PROC] = RelOid_pg_proc;
object_classes[OCLASS_TYPE] = RelOid_pg_type;
object_classes[OCLASS_CLASS] = RelationRelationId;
object_classes[OCLASS_PROC] = ProcedureRelationId;
object_classes[OCLASS_TYPE] = TypeRelationId;
object_classes[OCLASS_CAST] = get_system_catalog_relid(CastRelationName);
object_classes[OCLASS_CONSTRAINT] = get_system_catalog_relid(ConstraintRelationName);
object_classes[OCLASS_CONVERSION] = get_system_catalog_relid(ConversionRelationName);
@@ -1333,15 +1335,15 @@ getObjectClass(const ObjectAddress *object)
/* Easy for the bootstrapped catalogs... */
switch (object->classId)
{
case RelOid_pg_class:
case RelationRelationId:
/* caller must check objectSubId */
return OCLASS_CLASS;
case RelOid_pg_proc:
case ProcedureRelationId:
Assert(object->objectSubId == 0);
return OCLASS_PROC;
case RelOid_pg_type:
case TypeRelationId:
Assert(object->objectSubId == 0);
return OCLASS_TYPE;
}
@@ -1560,7 +1562,7 @@ getObjectDescription(const ObjectAddress *object)
attrdef = (Form_pg_attrdef) GETSTRUCT(tup);
colobject.classId = RelOid_pg_class;
colobject.classId = RelationRelationId;
colobject.objectId = attrdef->adrelid;
colobject.objectSubId = attrdef->adnum;

View File

@@ -10,7 +10,7 @@
#
#
# IDENTIFICATION
# $PostgreSQL: pgsql/src/backend/catalog/genbki.sh,v 1.34 2005/04/13 18:54:56 tgl Exp $
# $PostgreSQL: pgsql/src/backend/catalog/genbki.sh,v 1.35 2005/04/14 01:38:16 tgl Exp $
#
# NOTES
# non-essential whitespace is removed from the generated file.
@@ -192,7 +192,7 @@ comment_level > 0 { next; }
# ----------------
# DATA() statements are basically passed right through after
# stripping off the DATA( and the ) on the end.
# Remember any explicit OID for use by DESCR().
# Remember the OID for use by DESCR().
# ----------------
/^DATA\(/ {
data = substr($0, 6, length($0) - 6);
@@ -221,13 +221,19 @@ comment_level > 0 { next; }
# end any prior catalog data insertions before starting a define index
# ----
if (reln_open == 1) {
# print "show";
print "close " catalog;
reln_open = 0;
}
data = substr($0, 15, length($0) - 15);
print "declare index " data
pos = index(data, ",");
iname = substr(data, 1, pos-1);
data = substr(data, pos+1, length(data)-pos);
pos = index(data, ",");
ioid = substr(data, 1, pos-1);
data = substr(data, pos+1, length(data)-pos);
print "declare index " iname " " ioid " " data
}
/^DECLARE_UNIQUE_INDEX\(/ {
@@ -235,13 +241,19 @@ comment_level > 0 { next; }
# end any prior catalog data insertions before starting a define unique index
# ----
if (reln_open == 1) {
# print "show";
print "close " catalog;
reln_open = 0;
}
data = substr($0, 22, length($0) - 22);
print "declare unique index " data
pos = index(data, ",");
iname = substr(data, 1, pos-1);
data = substr(data, pos+1, length(data)-pos);
pos = index(data, ",");
ioid = substr(data, 1, pos-1);
data = substr(data, pos+1, length(data)-pos);
print "declare unique index " iname " " ioid " " data
}
/^BUILD_INDICES/ { print "build indices"; }
@@ -254,7 +266,6 @@ comment_level > 0 { next; }
# end any prior catalog data insertions before starting a new one..
# ----
if (reln_open == 1) {
# print "show";
print "close " catalog;
reln_open = 0;
}
@@ -263,9 +274,12 @@ comment_level > 0 { next; }
# get the name and properties of the new catalog
# ----
pos = index($1,")");
catalog = substr($1,9,pos-9);
catalogandoid = substr($1,9,pos-9);
pos = index(catalogandoid, ",");
catalog = substr(catalogandoid, 1, pos-1);
catalogoid = substr(catalogandoid, pos+1, length(catalogandoid)-pos);
if ($0 ~ /BOOTSTRAP/) {
if ($0 ~ /BKI_BOOTSTRAP/) {
bootstrap = "bootstrap ";
}
if ($0 ~ /BKI_SHARED_RELATION/) {
@@ -298,7 +312,7 @@ inside == 1 {
# if this is the last line, then output the bki catalog stuff.
# ----
if ($1 ~ /}/) {
print "create " bootstrap shared_relation without_oids catalog;
print "create " bootstrap shared_relation without_oids catalog " " catalogoid;
print "\t(";
for (j=1; j<i-1; j++) {
@@ -338,7 +352,6 @@ inside == 1 {
END {
if (reln_open == 1) {
# print "show";
print "close " catalog;
reln_open = 0;
}

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.282 2005/04/13 16:50:54 tgl Exp $
* $PostgreSQL: pgsql/src/backend/catalog/heap.c,v 1.283 2005/04/14 01:38:16 tgl Exp $
*
*
* INTERFACE ROUTINES
@@ -190,23 +190,24 @@ SystemAttributeByName(const char *attname, bool relhasoids)
/* ----------------------------------------------------------------
* heap_create - Create an uncataloged heap relation
*
* relid is normally InvalidOid to specify that this routine should
* generate an OID for the relation. During bootstrap, it can be
* nonzero to specify a preselected OID.
*
* rel->rd_rel is initialized by RelationBuildLocalRelation,
* and is mostly zeroes at return.
*
* Remove the system relation specific code to elsewhere eventually.
* ----------------------------------------------------------------
*/
Relation
heap_create(const char *relname,
Oid relnamespace,
Oid reltablespace,
Oid relid,
TupleDesc tupDesc,
char relkind,
bool shared_relation,
bool allow_system_table_mods)
{
Oid relid;
bool nailme = false;
bool create_storage;
Relation rel;
@@ -223,45 +224,9 @@ heap_create(const char *relname,
errdetail("System catalog modifications are currently disallowed.")));
/*
* Real ugly stuff to assign the proper relid in the relation
* descriptor follows. Note that only "bootstrapped" relations whose
* OIDs are hard-coded in pg_class.h should be listed here. We also
* have to recognize those rels that must be nailed in cache.
* Allocate an OID for the relation, unless we were told what to use.
*/
if (IsSystemNamespace(relnamespace))
{
if (strcmp(TypeRelationName, relname) == 0)
{
nailme = true;
relid = RelOid_pg_type;
}
else if (strcmp(AttributeRelationName, relname) == 0)
{
nailme = true;
relid = RelOid_pg_attribute;
}
else if (strcmp(ProcedureRelationName, relname) == 0)
{
nailme = true;
relid = RelOid_pg_proc;
}
else if (strcmp(RelationRelationName, relname) == 0)
{
nailme = true;
relid = RelOid_pg_class;
}
else if (strcmp(ShadowRelationName, relname) == 0)
relid = RelOid_pg_shadow;
else if (strcmp(GroupRelationName, relname) == 0)
relid = RelOid_pg_group;
else if (strcmp(DatabaseRelationName, relname) == 0)
relid = RelOid_pg_database;
else if (strcmp(TableSpaceRelationName, relname) == 0)
relid = RelOid_pg_tablespace;
else
relid = newoid();
}
else
if (!OidIsValid(relid))
relid = newoid();
/*
@@ -312,8 +277,7 @@ heap_create(const char *relname,
tupDesc,
relid,
reltablespace,
shared_relation,
nailme);
shared_relation);
/*
* have the storage manager create the relation's disk file, if
@@ -516,10 +480,10 @@ AddNewAttributeTuples(Oid new_rel_oid,
heap_freetuple(tup);
myself.classId = RelOid_pg_class;
myself.classId = RelationRelationId;
myself.objectId = new_rel_oid;
myself.objectSubId = i + 1;
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = (*dpp)->atttypid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -706,6 +670,7 @@ Oid
heap_create_with_catalog(const char *relname,
Oid relnamespace,
Oid reltablespace,
Oid relid,
TupleDesc tupdesc,
char relkind,
bool shared_relation,
@@ -739,6 +704,7 @@ heap_create_with_catalog(const char *relname,
new_rel_desc = heap_create(relname,
relnamespace,
reltablespace,
relid,
tupdesc,
relkind,
shared_relation,
@@ -795,7 +761,7 @@ heap_create_with_catalog(const char *relname,
ObjectAddress myself,
referenced;
myself.classId = RelOid_pg_class;
myself.classId = RelationRelationId;
myself.objectId = new_rel_oid;
myself.objectSubId = 0;
referenced.classId = get_system_catalog_relid(NamespaceRelationName);
@@ -1316,7 +1282,7 @@ StoreAttrDefault(Relation rel, AttrNumber attnum, char *adbin)
* Make a dependency so that the pg_attrdef entry goes away if the
* column (or whole table) is deleted.
*/
colobject.classId = RelOid_pg_class;
colobject.classId = RelationRelationId;
colobject.objectId = RelationGetRelid(rel);
colobject.objectSubId = attnum;

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/index.c,v 1.250 2005/03/29 00:16:55 tgl Exp $
* $PostgreSQL: pgsql/src/backend/catalog/index.c,v 1.251 2005/04/14 01:38:16 tgl Exp $
*
*
* INTERFACE ROUTINES
@@ -443,12 +443,17 @@ UpdateIndexRelation(Oid indexoid,
/* ----------------------------------------------------------------
* index_create
*
* indexRelationId is normally InvalidOid to let this routine
* generate an OID for the index. During bootstrap it may be
* nonzero to specify a preselected OID.
*
* Returns OID of the created index.
* ----------------------------------------------------------------
*/
Oid
index_create(Oid heapRelationId,
const char *indexRelationName,
Oid indexRelationId,
IndexInfo *indexInfo,
Oid accessMethodObjectId,
Oid tableSpaceId,
@@ -526,6 +531,7 @@ index_create(Oid heapRelationId,
indexRelation = heap_create(indexRelationName,
namespaceId,
tableSpaceId,
indexRelationId,
indexTupDesc,
RELKIND_INDEX,
shared_relation,
@@ -600,7 +606,7 @@ index_create(Oid heapRelationId,
ObjectAddress myself,
referenced;
myself.classId = RelOid_pg_class;
myself.classId = RelationRelationId;
myself.objectId = indexoid;
myself.objectSubId = 0;
@@ -656,7 +662,7 @@ index_create(Oid heapRelationId,
{
if (indexInfo->ii_KeyAttrNumbers[i] != 0)
{
referenced.classId = RelOid_pg_class;
referenced.classId = RelationRelationId;
referenced.objectId = heapRelationId;
referenced.objectSubId = indexInfo->ii_KeyAttrNumbers[i];
@@ -1693,7 +1699,7 @@ reindex_relation(Oid relid, bool toast_too)
* be created with an entry for its own pg_class row because we do
* setNewRelfilenode() before we do index_build().
*/
is_pg_class = (RelationGetRelid(rel) == RelOid_pg_class);
is_pg_class = (RelationGetRelid(rel) == RelationRelationId);
doneIndexes = NIL;
/* Reindex all the indexes. */

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/pg_aggregate.c,v 1.73 2005/04/12 04:26:17 tgl Exp $
* $PostgreSQL: pgsql/src/backend/catalog/pg_aggregate.c,v 1.74 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -240,12 +240,12 @@ AggregateCreate(const char *aggName,
* dependency on aggTransType since we depend on it indirectly through
* transfn.
*/
myself.classId = RelOid_pg_proc;
myself.classId = ProcedureRelationId;
myself.objectId = procOid;
myself.objectSubId = 0;
/* Depends on transition function */
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = transfn;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -253,7 +253,7 @@ AggregateCreate(const char *aggName,
/* Depends on final function, if any */
if (OidIsValid(finalfn))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = finalfn;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/pg_constraint.c,v 1.23 2005/03/25 21:57:57 tgl Exp $
* $PostgreSQL: pgsql/src/backend/catalog/pg_constraint.c,v 1.24 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -174,7 +174,7 @@ CreateConstraintEntry(const char *constraintName,
*/
ObjectAddress relobject;
relobject.classId = RelOid_pg_class;
relobject.classId = RelationRelationId;
relobject.objectId = relId;
if (constraintNKeys > 0)
{
@@ -200,7 +200,7 @@ CreateConstraintEntry(const char *constraintName,
*/
ObjectAddress domobject;
domobject.classId = RelOid_pg_type;
domobject.classId = TypeRelationId;
domobject.objectId = domainId;
domobject.objectSubId = 0;
@@ -215,7 +215,7 @@ CreateConstraintEntry(const char *constraintName,
*/
ObjectAddress relobject;
relobject.classId = RelOid_pg_class;
relobject.classId = RelationRelationId;
relobject.objectId = foreignRelId;
if (foreignNKeys > 0)
{
@@ -242,7 +242,7 @@ CreateConstraintEntry(const char *constraintName,
*/
ObjectAddress relobject;
relobject.classId = RelOid_pg_class;
relobject.classId = RelationRelationId;
relobject.objectId = indexRelId;
relobject.objectSubId = 0;

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/pg_conversion.c,v 1.20 2004/12/31 21:59:38 pgsql Exp $
* $PostgreSQL: pgsql/src/backend/catalog/pg_conversion.c,v 1.21 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -18,8 +18,8 @@
#include "catalog/catname.h"
#include "catalog/dependency.h"
#include "catalog/indexing.h"
#include "catalog/pg_class.h"
#include "catalog/pg_conversion.h"
#include "catalog/pg_proc.h"
#include "catalog/namespace.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
@@ -116,7 +116,7 @@ ConversionCreate(const char *conname, Oid connamespace,
myself.objectSubId = 0;
/* create dependency on conversion procedure */
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = conproc;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/pg_operator.c,v 1.89 2005/03/29 03:01:30 tgl Exp $
* $PostgreSQL: pgsql/src/backend/catalog/pg_operator.c,v 1.90 2005/04/14 01:38:16 tgl Exp $
*
* NOTES
* these routines moved here from commands/define.c and somewhat cleaned up.
@@ -23,6 +23,7 @@
#include "catalog/indexing.h"
#include "catalog/namespace.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_type.h"
#include "miscadmin.h"
#include "parser/parse_func.h"
@@ -901,7 +902,7 @@ makeOperatorDependencies(HeapTuple tuple, Oid pg_operator_relid)
/* Dependency on left type */
if (OidIsValid(oper->oprleft))
{
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = oper->oprleft;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -910,7 +911,7 @@ makeOperatorDependencies(HeapTuple tuple, Oid pg_operator_relid)
/* Dependency on right type */
if (OidIsValid(oper->oprright))
{
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = oper->oprright;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -919,7 +920,7 @@ makeOperatorDependencies(HeapTuple tuple, Oid pg_operator_relid)
/* Dependency on result type */
if (OidIsValid(oper->oprresult))
{
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = oper->oprresult;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -938,7 +939,7 @@ makeOperatorDependencies(HeapTuple tuple, Oid pg_operator_relid)
/* Dependency on implementation function */
if (OidIsValid(oper->oprcode))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = oper->oprcode;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -947,7 +948,7 @@ makeOperatorDependencies(HeapTuple tuple, Oid pg_operator_relid)
/* Dependency on restriction selectivity function */
if (OidIsValid(oper->oprrest))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = oper->oprrest;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -956,7 +957,7 @@ makeOperatorDependencies(HeapTuple tuple, Oid pg_operator_relid)
/* Dependency on join selectivity function */
if (OidIsValid(oper->oprjoin))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = oper->oprjoin;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/pg_proc.c,v 1.126 2005/03/31 22:46:06 tgl Exp $
* $PostgreSQL: pgsql/src/backend/catalog/pg_proc.c,v 1.127 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -329,9 +329,9 @@ ProcedureCreate(const char *procedureName,
* existing function, first delete any existing pg_depend entries.
*/
if (is_update)
deleteDependencyRecordsFor(RelOid_pg_proc, retval);
deleteDependencyRecordsFor(ProcedureRelationId, retval);
myself.classId = RelOid_pg_proc;
myself.classId = ProcedureRelationId;
myself.objectId = retval;
myself.objectSubId = 0;
@@ -348,7 +348,7 @@ ProcedureCreate(const char *procedureName,
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
/* dependency on return type */
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = returnType;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -356,7 +356,7 @@ ProcedureCreate(const char *procedureName,
/* dependency on parameter types */
for (i = 0; i < allParamCount; i++)
{
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = allParams[i];
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/catalog/pg_type.c,v 1.98 2005/01/27 23:23:51 neilc Exp $
* $PostgreSQL: pgsql/src/backend/catalog/pg_type.c,v 1.99 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -18,6 +18,7 @@
#include "catalog/catname.h"
#include "catalog/dependency.h"
#include "catalog/indexing.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_type.h"
#include "miscadmin.h"
#include "utils/builtins.h"
@@ -378,10 +379,9 @@ GenerateTypeDependencies(Oid typeNamespace,
referenced;
if (rebuild)
deleteDependencyRecordsFor(RelOid_pg_type,
typeObjectId);
deleteDependencyRecordsFor(TypeRelationId, typeObjectId);
myself.classId = RelOid_pg_type;
myself.classId = TypeRelationId;
myself.objectId = typeObjectId;
myself.objectSubId = 0;
@@ -398,7 +398,7 @@ GenerateTypeDependencies(Oid typeNamespace,
/* Normal dependencies on the I/O functions */
if (OidIsValid(inputProcedure))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = inputProcedure;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -406,7 +406,7 @@ GenerateTypeDependencies(Oid typeNamespace,
if (OidIsValid(outputProcedure))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = outputProcedure;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -414,7 +414,7 @@ GenerateTypeDependencies(Oid typeNamespace,
if (OidIsValid(receiveProcedure))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = receiveProcedure;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -422,7 +422,7 @@ GenerateTypeDependencies(Oid typeNamespace,
if (OidIsValid(sendProcedure))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = sendProcedure;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -430,7 +430,7 @@ GenerateTypeDependencies(Oid typeNamespace,
if (OidIsValid(analyzeProcedure))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = analyzeProcedure;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -448,7 +448,7 @@ GenerateTypeDependencies(Oid typeNamespace,
*/
if (OidIsValid(relationOid))
{
referenced.classId = RelOid_pg_class;
referenced.classId = RelationRelationId;
referenced.objectId = relationOid;
referenced.objectSubId = 0;
@@ -467,7 +467,7 @@ GenerateTypeDependencies(Oid typeNamespace,
*/
if (OidIsValid(elementType))
{
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = elementType;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_AUTO);
@@ -476,7 +476,7 @@ GenerateTypeDependencies(Oid typeNamespace,
/* Normal dependency from a domain to its base type. */
if (OidIsValid(baseType))
{
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = baseType;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

View File

@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/aggregatecmds.c,v 1.24 2005/04/12 04:26:20 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/aggregatecmds.c,v 1.25 2005/04/14 01:38:16 tgl Exp $
*
* DESCRIPTION
* The "DefineFoo" routines take the parse tree and pick out the
@@ -206,7 +206,7 @@ RemoveAggregate(RemoveAggrStmt *stmt)
/*
* Do the deletion
*/
object.classId = RelOid_pg_proc;
object.classId = ProcedureRelationId;
object.objectId = procOid;
object.objectSubId = 0;

View File

@@ -11,7 +11,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.134 2005/03/29 00:16:57 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.135 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -527,7 +527,7 @@ rebuild_relation(Relation OldHeap, Oid indexOid)
CommandCounterIncrement();
/* Destroy new heap with old filenode */
object.classId = RelOid_pg_class;
object.classId = RelationRelationId;
object.objectId = OIDNewHeap;
object.objectSubId = 0;
@@ -570,6 +570,7 @@ make_new_heap(Oid OIDOldHeap, const char *NewName, Oid NewTableSpace)
OIDNewHeap = heap_create_with_catalog(NewName,
RelationGetNamespace(OldHeap),
NewTableSpace,
InvalidOid,
tupdesc,
OldHeap->rd_rel->relkind,
OldHeap->rd_rel->relisshared,
@@ -799,7 +800,7 @@ swap_relation_files(Oid r1, Oid r2)
/* Delete old dependencies */
if (relform1->reltoastrelid)
{
count = deleteDependencyRecordsFor(RelOid_pg_class,
count = deleteDependencyRecordsFor(RelationRelationId,
relform1->reltoastrelid);
if (count != 1)
elog(ERROR, "expected one dependency record for TOAST table, found %ld",
@@ -807,7 +808,7 @@ swap_relation_files(Oid r1, Oid r2)
}
if (relform2->reltoastrelid)
{
count = deleteDependencyRecordsFor(RelOid_pg_class,
count = deleteDependencyRecordsFor(RelationRelationId,
relform2->reltoastrelid);
if (count != 1)
elog(ERROR, "expected one dependency record for TOAST table, found %ld",
@@ -815,9 +816,9 @@ swap_relation_files(Oid r1, Oid r2)
}
/* Register new dependencies */
baseobject.classId = RelOid_pg_class;
baseobject.classId = RelationRelationId;
baseobject.objectSubId = 0;
toastobject.classId = RelOid_pg_class;
toastobject.classId = RelationRelationId;
toastobject.objectSubId = 0;
if (relform1->reltoastrelid)

View File

@@ -7,7 +7,7 @@
* Copyright (c) 1996-2005, PostgreSQL Global Development Group
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.81 2005/01/27 23:23:54 neilc Exp $
* $PostgreSQL: pgsql/src/backend/commands/comment.c,v 1.82 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -20,9 +20,11 @@
#include "catalog/indexing.h"
#include "catalog/namespace.h"
#include "catalog/pg_constraint.h"
#include "catalog/pg_database.h"
#include "catalog/pg_description.h"
#include "catalog/pg_largeobject.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_rewrite.h"
#include "catalog/pg_trigger.h"
#include "catalog/pg_type.h"
@@ -352,7 +354,7 @@ CommentRelation(int objtype, List *relname, char *comment)
/* Create the comment using the relation's oid */
CreateComments(RelationGetRelid(relation), RelOid_pg_class, 0, comment);
CreateComments(RelationGetRelid(relation), RelationRelationId, 0, comment);
/* Done, but hold lock until commit */
relation_close(relation, NoLock);
@@ -406,7 +408,7 @@ CommentAttribute(List *qualname, char *comment)
/* Create the comment using the relation's oid */
CreateComments(RelationGetRelid(relation), RelOid_pg_class,
CreateComments(RelationGetRelid(relation), RelationRelationId,
(int32) attnum, comment);
/* Done, but hold lock until commit */
@@ -475,7 +477,7 @@ CommentDatabase(List *qualname, char *comment)
database);
/* Create the comment with the pg_database oid */
CreateComments(oid, RelOid_pg_database, 0, comment);
CreateComments(oid, DatabaseRelationId, 0, comment);
}
/*
@@ -670,7 +672,7 @@ CommentType(List *typename, char *comment)
/* Call CreateComments() to create/drop the comments */
CreateComments(oid, RelOid_pg_type, 0, comment);
CreateComments(oid, TypeRelationId, 0, comment);
}
/*
@@ -706,7 +708,7 @@ CommentAggregate(List *aggregate, List *arguments, char *comment)
/* Call CreateComments() to create/drop the comments */
CreateComments(oid, RelOid_pg_proc, 0, comment);
CreateComments(oid, ProcedureRelationId, 0, comment);
}
/*
@@ -735,7 +737,7 @@ CommentProc(List *function, List *arguments, char *comment)
/* Call CreateComments() to create/drop the comments */
CreateComments(oid, RelOid_pg_proc, 0, comment);
CreateComments(oid, ProcedureRelationId, 0, comment);
}
/*

View File

@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/functioncmds.c,v 1.59 2005/03/31 22:46:07 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/functioncmds.c,v 1.60 2005/04/14 01:38:16 tgl Exp $
*
* DESCRIPTION
* These routines take the parse tree and pick out the
@@ -719,7 +719,7 @@ RemoveFunction(RemoveFuncStmt *stmt)
/*
* Do the deletion
*/
object.classId = RelOid_pg_proc;
object.classId = ProcedureRelationId;
object.objectId = funcOid;
object.objectSubId = 0;
@@ -1304,13 +1304,13 @@ CreateCast(CreateCastStmt *stmt)
myself.objectSubId = 0;
/* dependency on source type */
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = sourcetypeid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
/* dependency on target type */
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = targettypeid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -1318,7 +1318,7 @@ CreateCast(CreateCastStmt *stmt)
/* dependency on function */
if (OidIsValid(funcid))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = funcid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/indexcmds.c,v 1.128 2004/12/31 21:59:41 pgsql Exp $
* $PostgreSQL: pgsql/src/backend/commands/indexcmds.c,v 1.129 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -65,6 +65,8 @@ static bool relationHasPrimaryKey(Relation rel);
* 'heapRelation': the relation the index will apply to.
* 'indexRelationName': the name for the new index, or NULL to indicate
* that a nonconflicting default name should be picked.
* 'indexRelationId': normally InvalidOid, but during bootstrap can be
* nonzero to specify a preselected OID for the index.
* 'accessMethodName': name of the AM to use.
* 'tableSpaceName': name of the tablespace to create the index in.
* NULL specifies using the appropriate default.
@@ -86,6 +88,7 @@ static bool relationHasPrimaryKey(Relation rel);
void
DefineIndex(RangeVar *heapRelation,
char *indexRelationName,
Oid indexRelationId,
char *accessMethodName,
char *tableSpaceName,
List *attributeList,
@@ -379,7 +382,7 @@ DefineIndex(RangeVar *heapRelation,
primary ? "PRIMARY KEY" : "UNIQUE",
indexRelationName, RelationGetRelationName(rel))));
index_create(relationId, indexRelationName,
index_create(relationId, indexRelationName, indexRelationId,
indexInfo, accessMethodId, tablespaceId, classObjectId,
primary, isconstraint,
allowSystemTableMods, skip_build);
@@ -887,7 +890,7 @@ RemoveIndex(RangeVar *relation, DropBehavior behavior)
errmsg("\"%s\" is not an index",
relation->relname)));
object.classId = RelOid_pg_class;
object.classId = RelationRelationId;
object.objectId = indOid;
object.objectSubId = 0;
@@ -1027,7 +1030,7 @@ ReindexDatabase(const char *dbname, bool force /* currently unused */ ,
* reindexing itself will try to update pg_class.
*/
old = MemoryContextSwitchTo(private_context);
relids = lappend_oid(relids, RelOid_pg_class);
relids = lappend_oid(relids, RelationRelationId);
MemoryContextSwitchTo(old);
/*
@@ -1057,7 +1060,7 @@ ReindexDatabase(const char *dbname, bool force /* currently unused */ ,
continue;
}
if (HeapTupleGetOid(tuple) == RelOid_pg_class)
if (HeapTupleGetOid(tuple) == RelationRelationId)
continue; /* got it already */
old = MemoryContextSwitchTo(private_context);

View File

@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/opclasscmds.c,v 1.30 2005/03/29 00:16:57 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/opclasscmds.c,v 1.31 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -356,7 +356,7 @@ DefineOpClass(CreateOpClassStmt *stmt)
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
/* dependency on indexed datatype */
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = typeoid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -364,7 +364,7 @@ DefineOpClass(CreateOpClassStmt *stmt)
/* dependency on storage datatype */
if (OidIsValid(storageoid))
{
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = storageoid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -386,7 +386,7 @@ DefineOpClass(CreateOpClassStmt *stmt)
{
OpClassMember *proc = (OpClassMember *) lfirst(l);
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = proc->object;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

View File

@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/proclang.c,v 1.58 2005/03/29 03:01:30 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/proclang.c,v 1.59 2005/04/14 01:38:16 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -149,7 +149,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
myself.objectSubId = 0;
/* dependency on the PL handler function */
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = procOid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -157,7 +157,7 @@ CreateProceduralLanguage(CreatePLangStmt *stmt)
/* dependency on the validator function, if any */
if (OidIsValid(valProcOid))
{
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = valProcOid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.153 2005/04/13 16:50:54 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.154 2005/04/14 01:38:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -424,6 +424,7 @@ DefineRelation(CreateStmt *stmt, char relkind)
relationId = heap_create_with_catalog(relname,
namespaceId,
tablespaceId,
InvalidOid,
descriptor,
relkind,
false,
@@ -517,7 +518,7 @@ RemoveRelation(const RangeVar *relation, DropBehavior behavior)
relOid = RangeVarGetRelid(relation, false);
object.classId = RelOid_pg_class;
object.classId = RelationRelationId;
object.objectId = relOid;
object.objectSubId = 0;
@@ -1163,10 +1164,10 @@ StoreCatalogInheritance(Oid relationId, List *supers)
/*
* Store a dependency too
*/
parentobject.classId = RelOid_pg_class;
parentobject.classId = RelationRelationId;
parentobject.objectId = parentOid;
parentobject.objectSubId = 0;
childobject.classId = RelOid_pg_class;
childobject.classId = RelationRelationId;
childobject.objectId = relationId;
childobject.objectSubId = 0;
@@ -2293,7 +2294,7 @@ ATRewriteTables(List **wqueue)
CommandCounterIncrement();
/* Destroy new heap with old filenode */
object.classId = RelOid_pg_class;
object.classId = RelationRelationId;
object.objectId = OIDNewHeap;
object.objectSubId = 0;
@@ -2776,7 +2777,7 @@ find_composite_type_dependencies(Oid typeOid, const char *origTblName)
ScanKeyInit(&key[0],
Anum_pg_depend_refclassid,
BTEqualStrategyNumber, F_OIDEQ,
ObjectIdGetDatum(RelOid_pg_type));
ObjectIdGetDatum(TypeRelationId));
ScanKeyInit(&key[1],
Anum_pg_depend_refobjid,
BTEqualStrategyNumber, F_OIDEQ,
@@ -2793,7 +2794,7 @@ find_composite_type_dependencies(Oid typeOid, const char *origTblName)
/* Ignore dependees that aren't user columns of relations */
/* (we assume system columns are never of rowtypes) */
if (pg_depend->classid != RelOid_pg_class ||
if (pg_depend->classid != RelationRelationId ||
pg_depend->objsubid <= 0)
continue;
@@ -3112,10 +3113,10 @@ add_column_datatype_dependency(Oid relid, int32 attnum, Oid typid)
ObjectAddress myself,
referenced;
myself.classId = RelOid_pg_class;
myself.classId = RelationRelationId;
myself.objectId = relid;
myself.objectSubId = attnum;
referenced.classId = RelOid_pg_type;
referenced.classId = TypeRelationId;
referenced.objectId = typid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
@@ -3130,10 +3131,10 @@ add_column_support_dependency(Oid relid, int32 attnum, RangeVar *support)
ObjectAddress colobject,
suppobject;
colobject.classId = RelOid_pg_class;
colobject.classId = RelationRelationId;
colobject.objectId = relid;
colobject.objectSubId = attnum;
suppobject.classId = RelOid_pg_class;
suppobject.classId = RelationRelationId;
suppobject.objectId = RangeVarGetRelid(support, false);
suppobject.objectSubId = 0;
recordDependencyOn(&suppobject, &colobject, DEPENDENCY_INTERNAL);
@@ -3637,7 +3638,7 @@ ATExecDropColumn(Relation rel, const char *colName,
/*
* Perform the actual column deletion
*/
object.classId = RelOid_pg_class;
object.classId = RelationRelationId;
object.objectId = RelationGetRelid(rel);
object.objectSubId = attnum;
@@ -3697,6 +3698,7 @@ ATExecAddIndex(AlteredTableInfo *tab, Relation rel,
DefineIndex(stmt->relation, /* relation */
stmt->idxname, /* index name */
InvalidOid, /* no predefined OID */
stmt->accessMethod, /* am name */
stmt->tableSpace,
stmt->indexParams, /* parameters */
@@ -4894,7 +4896,7 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
ScanKeyInit(&key[0],
Anum_pg_depend_refclassid,
BTEqualStrategyNumber, F_OIDEQ,
ObjectIdGetDatum(RelOid_pg_class));
ObjectIdGetDatum(RelationRelationId));
ScanKeyInit(&key[1],
Anum_pg_depend_refobjid,
BTEqualStrategyNumber, F_OIDEQ,
@@ -5018,7 +5020,7 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
ScanKeyInit(&key[0],
Anum_pg_depend_classid,
BTEqualStrategyNumber, F_OIDEQ,
ObjectIdGetDatum(RelOid_pg_class));
ObjectIdGetDatum(RelationRelationId));
ScanKeyInit(&key[1],
Anum_pg_depend_objid,
BTEqualStrategyNumber, F_OIDEQ,
@@ -5038,7 +5040,7 @@ ATExecAlterColumnType(AlteredTableInfo *tab, Relation rel,
if (foundDep->deptype != DEPENDENCY_NORMAL)
elog(ERROR, "found unexpected dependency type '%c'",
foundDep->deptype);
if (foundDep->refclassid != RelOid_pg_type ||
if (foundDep->refclassid != TypeRelationId ||
foundDep->refobjid != attTup->atttypid)
elog(ERROR, "found unexpected dependency for column");
@@ -5143,7 +5145,7 @@ ATPostAlterTypeCleanup(List **wqueue, AlteredTableInfo *tab)
performDeletion(&obj, DROP_RESTRICT);
}
obj.classId = RelOid_pg_class;
obj.classId = RelationRelationId;
foreach(l, tab->changedIndexOids)
{
obj.objectId = lfirst_oid(l);
@@ -5399,7 +5401,7 @@ change_owner_recurse_to_sequences(Oid relationOid, int32 newOwnerSysId)
ScanKeyInit(&key[0],
Anum_pg_depend_refclassid,
BTEqualStrategyNumber, F_OIDEQ,
ObjectIdGetDatum(RelOid_pg_class));
ObjectIdGetDatum(RelationRelationId));
ScanKeyInit(&key[1],
Anum_pg_depend_refobjid,
BTEqualStrategyNumber, F_OIDEQ,
@@ -5416,7 +5418,7 @@ change_owner_recurse_to_sequences(Oid relationOid, int32 newOwnerSysId)
/* skip dependencies other than internal dependencies on columns */
if (depForm->refobjsubid == 0 ||
depForm->classid != RelOid_pg_class ||
depForm->classid != RelationRelationId ||
depForm->objsubid != 0 ||
depForm->deptype != DEPENDENCY_INTERNAL)
continue;
@@ -5853,6 +5855,7 @@ AlterTableCreateToastTable(Oid relOid, bool silent)
toast_relid = heap_create_with_catalog(toast_relname,
PG_TOAST_NAMESPACE,
rel->rd_rel->reltablespace,
InvalidOid,
tupdesc,
RELKIND_TOASTVALUE,
shared_relation,
@@ -5889,7 +5892,8 @@ AlterTableCreateToastTable(Oid relOid, bool silent)
classObjectId[0] = OID_BTREE_OPS_OID;
classObjectId[1] = INT4_BTREE_OPS_OID;
toast_idxid = index_create(toast_relid, toast_idxname, indexInfo,
toast_idxid = index_create(toast_relid, toast_idxname, InvalidOid,
indexInfo,
BTREE_AM_OID,
rel->rd_rel->reltablespace,
classObjectId,
@@ -5928,10 +5932,10 @@ AlterTableCreateToastTable(Oid relOid, bool silent)
* Register dependency from the toast table to the master, so that the
* toast table will be deleted if the master is.
*/
baseobject.classId = RelOid_pg_class;
baseobject.classId = RelationRelationId;
baseobject.objectId = relOid;
baseobject.objectSubId = 0;
toastobject.classId = RelOid_pg_class;
toastobject.classId = RelationRelationId;
toastobject.objectId = toast_relid;
toastobject.objectSubId = 0;
@@ -6091,7 +6095,7 @@ PreCommit_on_commit_actions(void)
{
ObjectAddress object;
object.classId = RelOid_pg_class;
object.classId = RelationRelationId;
object.objectId = oc->relid;
object.objectSubId = 0;
performDeletion(&object, DROP_CASCADE);

View File

@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.184 2005/04/11 19:51:15 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.185 2005/04/14 01:38:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -422,20 +422,20 @@ CreateTrigger(CreateTrigStmt *stmt, bool forConstraint)
* dependency on the constraint will indirectly depend on the
* relations.
*/
referenced.classId = RelOid_pg_proc;
referenced.classId = ProcedureRelationId;
referenced.objectId = funcoid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_NORMAL);
if (!forConstraint)
{
referenced.classId = RelOid_pg_class;
referenced.classId = RelationRelationId;
referenced.objectId = RelationGetRelid(rel);
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_AUTO);
if (constrrelid != InvalidOid)
{
referenced.classId = RelOid_pg_class;
referenced.classId = RelationRelationId;
referenced.objectId = constrrelid;
referenced.objectSubId = 0;
recordDependencyOn(&myself, &referenced, DEPENDENCY_AUTO);

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.68 2005/03/29 03:01:30 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.69 2005/04/14 01:38:17 tgl Exp $
*
* DESCRIPTION
* The "DefineFoo" routines take the parse tree and pick out the
@@ -441,7 +441,7 @@ RemoveType(List *names, DropBehavior behavior)
/*
* Do the deletion
*/
object.classId = RelOid_pg_type;
object.classId = TypeRelationId;
object.objectId = typeoid;
object.objectSubId = 0;
@@ -836,7 +836,7 @@ RemoveDomain(List *names, DropBehavior behavior)
/*
* Do the deletion
*/
object.classId = RelOid_pg_type;
object.classId = TypeRelationId;
object.objectId = typeoid;
object.objectSubId = 0;
@@ -1655,7 +1655,7 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode)
ScanKeyInit(&key[0],
Anum_pg_depend_refclassid,
BTEqualStrategyNumber, F_OIDEQ,
ObjectIdGetDatum(RelOid_pg_type));
ObjectIdGetDatum(TypeRelationId));
ScanKeyInit(&key[1],
Anum_pg_depend_refobjid,
BTEqualStrategyNumber, F_OIDEQ,
@@ -1674,7 +1674,7 @@ get_rels_with_domain(Oid domainOid, LOCKMODE lockmode)
/* Ignore dependees that aren't user columns of relations */
/* (we assume system columns are never of domain types) */
if (pg_depend->classid != RelOid_pg_class ||
if (pg_depend->classid != RelationRelationId ||
pg_depend->objsubid <= 0)
continue;

View File

@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/backend/commands/user.c,v 1.149 2005/02/20 02:21:34 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/user.c,v 1.150 2005/04/14 01:38:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -813,10 +813,10 @@ CheckPgUserAclNotNull(void)
HeapTuple htup;
htup = SearchSysCache(RELOID,
ObjectIdGetDatum(RelOid_pg_shadow),
ObjectIdGetDatum(ShadowRelationId),
0, 0, 0);
if (!HeapTupleIsValid(htup)) /* should not happen, we hope */
elog(ERROR, "cache lookup failed for relation %u", RelOid_pg_shadow);
elog(ERROR, "cache lookup failed for relation %u", ShadowRelationId);
if (heap_attisnull(htup, Anum_pg_class_relacl))
ereport(ERROR,

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/view.c,v 1.89 2005/04/13 16:50:54 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/view.c,v 1.90 2005/04/14 01:38:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -448,7 +448,7 @@ RemoveView(const RangeVar *view, DropBehavior behavior)
viewOid = RangeVarGetRelid(view, false);
object.classId = RelOid_pg_class;
object.classId = RelationRelationId;
object.objectId = viewOid;
object.objectSubId = 0;

View File

@@ -26,7 +26,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.245 2005/04/06 16:34:04 tgl Exp $
* $PostgreSQL: pgsql/src/backend/executor/execMain.c,v 1.246 2005/04/14 01:38:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -759,6 +759,7 @@ InitPlan(QueryDesc *queryDesc, bool explainOnly)
intoRelationId = heap_create_with_catalog(intoName,
namespaceId,
InvalidOid,
InvalidOid,
tupdesc,
RELKIND_RELATION,
false,

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/rewrite/rewriteDefine.c,v 1.102 2005/04/06 16:34:06 tgl Exp $
* $PostgreSQL: pgsql/src/backend/rewrite/rewriteDefine.c,v 1.103 2005/04/14 01:38:17 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -148,11 +148,11 @@ InsertRule(char *rulname,
* implicit --- this prevents deleting a view's SELECT rule. Other
* kinds of rules can be AUTO.
*/
myself.classId = RelationGetRelid(pg_rewrite_desc);
myself.classId = RewriteRelationId;
myself.objectId = rewriteObjectId;
myself.objectSubId = 0;
referenced.classId = RelOid_pg_class;
referenced.classId = RelationRelationId;
referenced.objectId = eventrel_oid;
referenced.objectSubId = 0;

View File

@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.234 2005/03/14 00:19:36 neilc Exp $
* $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.235 2005/04/14 01:38:18 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -724,6 +724,7 @@ ProcessUtility(Node *parsetree,
DefineIndex(stmt->relation, /* relation */
stmt->idxname, /* index name */
InvalidOid, /* no predefined OID */
stmt->accessMethod, /* am name */
stmt->tableSpace,
stmt->indexParams, /* parameters */

View File

@@ -3,7 +3,7 @@
* back to source text
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.191 2005/04/07 01:51:39 neilc Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.192 2005/04/14 01:38:19 tgl Exp $
*
* This software is copyrighted by Jan Wieck - Hamburg.
*
@@ -1274,7 +1274,7 @@ pg_get_serial_sequence(PG_FUNCTION_ARGS)
ScanKeyInit(&key[0],
Anum_pg_depend_refclassid,
BTEqualStrategyNumber, F_OIDEQ,
ObjectIdGetDatum(RelOid_pg_class));
ObjectIdGetDatum(RelationRelationId));
ScanKeyInit(&key[1],
Anum_pg_depend_refobjid,
BTEqualStrategyNumber, F_OIDEQ,
@@ -1295,7 +1295,7 @@ pg_get_serial_sequence(PG_FUNCTION_ARGS)
* We assume any internal dependency of a relation on a column
* must be what we are looking for.
*/
if (deprec->classid == RelOid_pg_class &&
if (deprec->classid == RelationRelationId &&
deprec->objsubid == 0 &&
deprec->deptype == DEPENDENCY_INTERNAL)
{

View File

@@ -80,7 +80,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/cache/inval.c,v 1.70 2005/01/10 21:57:17 tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/cache/inval.c,v 1.71 2005/04/14 01:38:19 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -541,7 +541,7 @@ PrepareForTupleInvalidation(Relation relation, HeapTuple tuple)
*/
tupleRelId = RelationGetRelid(relation);
if (tupleRelId == RelOid_pg_class)
if (tupleRelId == RelationRelationId)
{
Form_pg_class classtup = (Form_pg_class) GETSTRUCT(tuple);
RelFileNode rnode;
@@ -575,7 +575,7 @@ PrepareForTupleInvalidation(Relation relation, HeapTuple tuple)
rnode.relNode = classtup->relfilenode;
RegisterSmgrInvalidation(rnode);
}
else if (tupleRelId == RelOid_pg_attribute)
else if (tupleRelId == AttributeRelationId)
{
Form_pg_attribute atttup = (Form_pg_attribute) GETSTRUCT(tuple);

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.218 2005/03/29 00:17:11 tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/cache/relcache.c,v 1.219 2005/04/14 01:38:19 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2150,17 +2150,35 @@ RelationBuildLocalRelation(const char *relname,
TupleDesc tupDesc,
Oid relid,
Oid reltablespace,
bool shared_relation,
bool nailit)
bool shared_relation)
{
Relation rel;
MemoryContext oldcxt;
int natts = tupDesc->natts;
int i;
bool has_not_null;
bool nailit;
AssertArg(natts >= 0);
/*
* check for creation of a rel that must be nailed in cache.
*
* XXX this list had better match RelationCacheInitialize's list.
*/
switch (relid)
{
case RelationRelationId:
case AttributeRelationId:
case ProcedureRelationId:
case TypeRelationId:
nailit = true;
break;
default:
nailit = false;
break;
}
/*
* switch to the cache context to create the relcache entry.
*/
@@ -2179,6 +2197,9 @@ RelationBuildLocalRelation(const char *relname,
/* make sure relation is marked as having no open file yet */
rel->rd_smgr = NULL;
/* mark it nailed if appropriate */
rel->rd_isnailed = nailit;
rel->rd_refcnt = nailit ? 1 : 0;
/* it's being created in this transaction */
@@ -2190,14 +2211,6 @@ RelationBuildLocalRelation(const char *relname,
/* is it a temporary relation? */
rel->rd_istemp = isTempNamespace(relnamespace);
/*
* nail the reldesc if this is a bootstrap create reln and we may need
* it in the cache later on in the bootstrap process so we don't ever
* want it kicked out. e.g. pg_attribute!!!
*/
if (nailit)
rel->rd_isnailed = true;
/*
* create a new tuple descriptor from the one passed in. We do this
* partly to copy it into the cache context, and partly because the

View File

@@ -22,7 +22,7 @@
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/backend/utils/init/flatfiles.c,v 1.4 2005/02/26 18:43:33 tgl Exp $
* $PostgreSQL: pgsql/src/backend/utils/init/flatfiles.c,v 1.5 2005/04/14 01:38:20 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -643,7 +643,7 @@ BuildFlatFiles(bool database_only)
/* hard-wired path to pg_database */
rnode.spcNode = GLOBALTABLESPACE_OID;
rnode.dbNode = 0;
rnode.relNode = RelOid_pg_database;
rnode.relNode = DatabaseRelationId;
/* No locking is needed because no one else is alive yet */
rel = XLogOpenRelation(true, 0, rnode);
@@ -654,7 +654,7 @@ BuildFlatFiles(bool database_only)
/* hard-wired path to pg_group */
rnode.spcNode = GLOBALTABLESPACE_OID;
rnode.dbNode = 0;
rnode.relNode = RelOid_pg_group;
rnode.relNode = GroupRelationId;
rel = XLogOpenRelation(true, 0, rnode);
write_group_file(rel);
@@ -662,7 +662,7 @@ BuildFlatFiles(bool database_only)
/* hard-wired path to pg_shadow */
rnode.spcNode = GLOBALTABLESPACE_OID;
rnode.dbNode = 0;
rnode.relNode = RelOid_pg_shadow;
rnode.relNode = ShadowRelationId;
rel = XLogOpenRelation(true, 0, rnode);
write_user_file(rel);
@@ -816,13 +816,13 @@ flatfile_update_trigger(PG_FUNCTION_ARGS)
switch (RelationGetRelid(trigdata->tg_relation))
{
case RelOid_pg_database:
case DatabaseRelationId:
database_file_update_needed();
break;
case RelOid_pg_group:
case GroupRelationId:
group_file_update_needed();
break;
case RelOid_pg_shadow:
case ShadowRelationId:
user_file_update_needed();
break;
default: