diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml index 7aec23130d6..23a036c9c24 100644 --- a/doc/src/sgml/bki.sgml +++ b/doc/src/sgml/bki.sgml @@ -1,5 +1,5 @@ @@ -58,7 +58,7 @@ $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.15 2005/04/13 18:54:55 tgl Exp $ - Lines starting with a # are ignored. + Lines starting with # are ignored. @@ -69,11 +69,12 @@ $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.15 2005/04/13 18:54:55 tgl Exp $ - create - bootstrap - shared_relation - without_oids + create + bootstrap + shared_relation + without_oids tablename + tableoid (name1 = type1 , name2 = Create a table named tablename with the columns given - in parentheses. + class="parameter">tablename, and having the OID + tableoid, + with the columns given in parentheses. @@ -101,7 +103,9 @@ $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.15 2005/04/13 18:54:55 tgl Exp $ _aclitem (array). Although it is possible to create tables containing columns of other types, this cannot be done until after pg_type has been created and filled with - appropriate entries. + appropriate entries. (That effectively means that only these + column types can be used in bootstrapped tables, but non-bootstrap + catalogs can contain any built-in type.) @@ -125,38 +129,34 @@ $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.15 2005/04/13 18:54:55 tgl Exp $ - open tablename + open tablename - Open the table called + Open the table named tablename - for further manipulation. + for insertion of data. Any currently open table is closed. - close tablename + close tablename - Close the open table called tablename. It is an error if - tablename is not - already opened. If no tablename is given, then the - currently open table is closed. + Close the open table. The name of the table can be given as a + cross-check, but this is not required. - insert OID = oid_value (value1 value2 ...) + insert OID = oid_value ( value1 value2 ... ) @@ -181,19 +181,23 @@ $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.15 2005/04/13 18:54:55 tgl Exp $ - declare unique index indexname on tablename using amname (opclass1 name1 , ...) + declare unique + index indexname + indexoid + on tablename + using amname + ( opclass1 + name1 + , ... ) Create an index named indexname on the table named - tablename using the + class="parameter">indexname, having OID + indexoid, + on the table named + tablename, using the amname access method. The fields to index are called name1, - build indices + build indices @@ -220,17 +224,97 @@ $PostgreSQL: pgsql/doc/src/sgml/bki.sgml,v 1.15 2005/04/13 18:54:55 tgl Exp $ + + Structure of the Bootstrap <acronym>BKI</acronym> File + + + The open command cannot be used until the tables it uses + exist and have entries for the table that is to be opened. + (These minimum tables are pg_class, + pg_attribute, pg_proc, and + pg_type.) To allow those tables themselves to be filled, + create with the bootstrap option implicitly opens + the created table for data insertion. + + + + Thus, the structure of the postgres.bki file has to + be: + + + + create bootstrap one of the critical tables + + + + + insert data describing at least the critical tables + + + + + close + + + + + Repeat for the other critical tables. + + + + + create (without bootstrap) a noncritical table + + + + + open + + + + + insert desired data + + + + + close + + + + + Repeat for the other noncritical tables. + + + + + Define indexes. + + + + + build indices + + + + + + + There are doubtless other, undocumented ordering dependencies. + + + Example The following sequence of commands will create the - table test_table with two columns + table test_table with OID 420, having two columns cola and colb of type int4 and text, respectively, and insert two rows into the table. -create test_table (cola = int4, colb = text) +create test_table 420 (cola = int4, colb = text) open test_table insert OID=421 ( 1 "value1" ) insert OID=422 ( 2 _null_ ) diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y index e656e6e6380..1945c4074d9 100644 --- a/src/backend/bootstrap/bootparse.y +++ b/src/backend/bootstrap/bootparse.y @@ -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 boot_const boot_ident %type optbootstrap optsharedrelation optwithoutoids %type boot_tuple boot_tuplelist -%type optoideq +%type oidspec optoideq %token 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: diff --git a/src/backend/catalog/README b/src/backend/catalog/README index 41251740f9e..3f002add5a0 100644 --- a/src/backend/catalog/README +++ b/src/backend/catalog/README @@ -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 diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index 16d100f4291..4090eb3a911 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -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; diff --git a/src/backend/catalog/genbki.sh b/src/backend/catalog/genbki.sh index dd4c8d05a51..d53970fd7a2 100644 --- a/src/backend/catalog/genbki.sh +++ b/src/backend/catalog/genbki.sh @@ -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; jrd_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; diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c index ebe303ed22a..28562661bdf 100644 --- a/src/backend/catalog/index.c +++ b/src/backend/catalog/index.c @@ -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. */ diff --git a/src/backend/catalog/pg_aggregate.c b/src/backend/catalog/pg_aggregate.c index c833f948a81..8a08f69cbf7 100644 --- a/src/backend/catalog/pg_aggregate.c +++ b/src/backend/catalog/pg_aggregate.c @@ -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); diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c index d76c956d14a..5c53bfb5e85 100644 --- a/src/backend/catalog/pg_constraint.c +++ b/src/backend/catalog/pg_constraint.c @@ -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; diff --git a/src/backend/catalog/pg_conversion.c b/src/backend/catalog/pg_conversion.c index 1cc8bdc8ae4..a62e133a640 100644 --- a/src/backend/catalog/pg_conversion.c +++ b/src/backend/catalog/pg_conversion.c @@ -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); diff --git a/src/backend/catalog/pg_operator.c b/src/backend/catalog/pg_operator.c index 20524184220..0a69411d751 100644 --- a/src/backend/catalog/pg_operator.c +++ b/src/backend/catalog/pg_operator.c @@ -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); diff --git a/src/backend/catalog/pg_proc.c b/src/backend/catalog/pg_proc.c index b56eb54200b..b144f935cd5 100644 --- a/src/backend/catalog/pg_proc.c +++ b/src/backend/catalog/pg_proc.c @@ -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); diff --git a/src/backend/catalog/pg_type.c b/src/backend/catalog/pg_type.c index c6ff34762fe..9bbc19c5f5b 100644 --- a/src/backend/catalog/pg_type.c +++ b/src/backend/catalog/pg_type.c @@ -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); diff --git a/src/backend/commands/aggregatecmds.c b/src/backend/commands/aggregatecmds.c index 32bf25389a4..95c81b1aac4 100644 --- a/src/backend/commands/aggregatecmds.c +++ b/src/backend/commands/aggregatecmds.c @@ -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; diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index e29750c535c..553a8420699 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -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) diff --git a/src/backend/commands/comment.c b/src/backend/commands/comment.c index 973719d8058..68d498641b8 100644 --- a/src/backend/commands/comment.c +++ b/src/backend/commands/comment.c @@ -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); } /* diff --git a/src/backend/commands/functioncmds.c b/src/backend/commands/functioncmds.c index 5776738045b..fc00b45baec 100644 --- a/src/backend/commands/functioncmds.c +++ b/src/backend/commands/functioncmds.c @@ -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); diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c index 469e7b3f02b..01e3396efa5 100644 --- a/src/backend/commands/indexcmds.c +++ b/src/backend/commands/indexcmds.c @@ -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); diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c index 9af0ae15dba..5d5ae51a82c 100644 --- a/src/backend/commands/opclasscmds.c +++ b/src/backend/commands/opclasscmds.c @@ -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); diff --git a/src/backend/commands/proclang.c b/src/backend/commands/proclang.c index f50e0936c80..e94d5b4b288 100644 --- a/src/backend/commands/proclang.c +++ b/src/backend/commands/proclang.c @@ -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); diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 79e36c64e71..3a88ea520b8 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -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); diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 8c8ed9e21ca..851aed3b6d8 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -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); diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index 5fd01c6f598..0af04f86f54 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -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; diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 6136e99519e..12dd14ff1b9 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -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, diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index 81421f2a7b4..6158b16654c 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -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; diff --git a/src/backend/executor/execMain.c b/src/backend/executor/execMain.c index 0ba61044222..8facabbadad 100644 --- a/src/backend/executor/execMain.c +++ b/src/backend/executor/execMain.c @@ -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, diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c index 45c44501a66..8c94ab3175a 100644 --- a/src/backend/rewrite/rewriteDefine.c +++ b/src/backend/rewrite/rewriteDefine.c @@ -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; diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c index a3b946647ac..3fc8a2d8882 100644 --- a/src/backend/tcop/utility.c +++ b/src/backend/tcop/utility.c @@ -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 */ diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index a6e5699357c..af840cdf971 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -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) { diff --git a/src/backend/utils/cache/inval.c b/src/backend/utils/cache/inval.c index 21954589829..61b7522f8c9 100644 --- a/src/backend/utils/cache/inval.c +++ b/src/backend/utils/cache/inval.c @@ -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); diff --git a/src/backend/utils/cache/relcache.c b/src/backend/utils/cache/relcache.c index 109a6e811aa..e6c59b1815b 100644 --- a/src/backend/utils/cache/relcache.c +++ b/src/backend/utils/cache/relcache.c @@ -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 diff --git a/src/backend/utils/init/flatfiles.c b/src/backend/utils/init/flatfiles.c index e7ddd0a42c1..4dc27dcdf5a 100644 --- a/src/backend/utils/init/flatfiles.c +++ b/src/backend/utils/init/flatfiles.c @@ -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: diff --git a/src/include/catalog/catname.h b/src/include/catalog/catname.h index 915dc361635..27186ef0b23 100644 --- a/src/include/catalog/catname.h +++ b/src/include/catalog/catname.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/catname.h,v 1.34 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/catname.h,v 1.35 2005/04/14 01:38:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -42,7 +42,6 @@ #define StatisticRelationName "pg_statistic" #define TableSpaceRelationName "pg_tablespace" #define TypeRelationName "pg_type" -#define VersionRelationName "pg_version" #define AttrDefaultRelationName "pg_attrdef" #define TriggerRelationName "pg_trigger" diff --git a/src/include/catalog/catversion.h b/src/include/catalog/catversion.h index cb3868ea155..43d538cba70 100644 --- a/src/include/catalog/catversion.h +++ b/src/include/catalog/catversion.h @@ -37,7 +37,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.264 2005/04/12 04:26:28 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.265 2005/04/14 01:38:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -53,6 +53,6 @@ */ /* yyyymmddN */ -#define CATALOG_VERSION_NO 200504111 +#define CATALOG_VERSION_NO 200504131 #endif diff --git a/src/include/catalog/duplicate_oids b/src/include/catalog/duplicate_oids index 6ff75b4a3a0..1964faabe3d 100755 --- a/src/include/catalog/duplicate_oids +++ b/src/include/catalog/duplicate_oids @@ -2,18 +2,23 @@ # # duplicate_oids # -# $PostgreSQL: pgsql/src/include/catalog/duplicate_oids,v 1.6 2005/04/13 18:54:57 tgl Exp $ +# $PostgreSQL: pgsql/src/include/catalog/duplicate_oids,v 1.7 2005/04/14 01:38:20 tgl Exp $ # # finds manually-assigned oids that are duplicated in the system tables. # # run this script in src/include/catalog. # -FILES=`ls pg_*.h` +# note: we exclude BKI_BOOTSTRAP relations since they are expected to have +# matching DATA lines in pg_class.h -egrep '^DATA' $FILES | \ - sed -e 's/^.*OID[^=]*=[^0-9]*//' -e 's/[^0-9].*$//' | \ - sort -n | uniq -d | \ - egrep -v '^0*$' +cat pg_*.h indexing.h | \ +egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \ +sed -n -e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \ + -e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ + -e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ + -e 's/^DECLARE_UNIQUE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' | \ +sort -n | \ +uniq -d exit 0 diff --git a/src/include/catalog/heap.h b/src/include/catalog/heap.h index 7a7352c6938..d38bbd1ae0d 100644 --- a/src/include/catalog/heap.h +++ b/src/include/catalog/heap.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/heap.h,v 1.73 2005/01/27 03:18:15 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/heap.h,v 1.74 2005/04/14 01:38:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -38,6 +38,7 @@ typedef struct CookedConstraint extern Relation heap_create(const char *relname, Oid relnamespace, Oid reltablespace, + Oid relid, TupleDesc tupDesc, char relkind, bool shared_relation, @@ -46,6 +47,7 @@ extern Relation heap_create(const char *relname, extern Oid heap_create_with_catalog(const char *relname, Oid relnamespace, Oid reltablespace, + Oid relid, TupleDesc tupdesc, char relkind, bool shared_relation, diff --git a/src/include/catalog/index.h b/src/include/catalog/index.h index cd69d0f2508..f8bfdfb5266 100644 --- a/src/include/catalog/index.h +++ b/src/include/catalog/index.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/index.h,v 1.61 2005/03/21 01:24:04 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/index.h,v 1.62 2005/04/14 01:38:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -32,6 +32,7 @@ typedef void (*IndexBuildCallback) (Relation index, extern Oid index_create(Oid heapRelationId, const char *indexRelationName, + Oid indexRelationId, IndexInfo *indexInfo, Oid accessMethodObjectId, Oid tableSpaceId, diff --git a/src/include/catalog/indexing.h b/src/include/catalog/indexing.h index 5b0a63cd4da..a64771cd813 100644 --- a/src/include/catalog/indexing.h +++ b/src/include/catalog/indexing.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/indexing.h,v 1.85 2005/03/29 00:17:17 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/indexing.h,v 1.86 2005/04/14 01:38:20 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -101,8 +101,8 @@ extern void CatalogUpdateIndexes(Relation heapRel, HeapTuple heapTuple); * These macros are just to keep the C compiler from spitting up on the * upcoming commands for genbki.sh. */ -#define DECLARE_INDEX(x) extern int no_such_variable -#define DECLARE_UNIQUE_INDEX(x) extern int no_such_variable +#define DECLARE_INDEX(name,oid,decl) extern int no_such_variable +#define DECLARE_UNIQUE_INDEX(name,oid,decl) extern int no_such_variable #define BUILD_INDICES @@ -110,74 +110,157 @@ extern void CatalogUpdateIndexes(Relation heapRel, HeapTuple heapTuple); * What follows are lines processed by genbki.sh to create the statements * the bootstrap parser will turn into DefineIndex commands. * - * The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX. Everything after - * that is just like in a normal 'create index' SQL command. + * The keyword is DECLARE_INDEX or DECLARE_UNIQUE_INDEX. The first two + * arguments are the index name and OID, the rest is much like a standard + * 'create index' SQL command. */ -DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index on pg_aggregate using btree(aggfnoid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_am_name_index on pg_am using btree(amname name_ops)); -DECLARE_UNIQUE_INDEX(pg_am_oid_index on pg_am using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_amop_opc_strat_index on pg_amop using btree(amopclaid oid_ops, amopsubtype oid_ops, amopstrategy int2_ops)); -DECLARE_UNIQUE_INDEX(pg_amop_opr_opc_index on pg_amop using btree(amopopr oid_ops, amopclaid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_amproc_opc_proc_index on pg_amproc using btree(amopclaid oid_ops, amprocsubtype oid_ops, amprocnum int2_ops)); -DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops)); -DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index on pg_attrdef using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index on pg_attribute using btree(attrelid oid_ops, attname name_ops)); -DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnum_index on pg_attribute using btree(attrelid oid_ops, attnum int2_ops)); -DECLARE_UNIQUE_INDEX(pg_cast_oid_index on pg_cast using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_cast_source_target_index on pg_cast using btree(castsource oid_ops, casttarget oid_ops)); -DECLARE_UNIQUE_INDEX(pg_class_oid_index on pg_class using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index on pg_class using btree(relname name_ops, relnamespace oid_ops)); +DECLARE_UNIQUE_INDEX(pg_aggregate_fnoid_index,2650, on pg_aggregate using btree(aggfnoid oid_ops)); +#define AggregateFnoidIndexId 2650 + +DECLARE_UNIQUE_INDEX(pg_am_name_index,2651, on pg_am using btree(amname name_ops)); +#define AmNameIndexId 2651 +DECLARE_UNIQUE_INDEX(pg_am_oid_index,2652, on pg_am using btree(oid oid_ops)); +#define AmOidIndexId 2652 + +DECLARE_UNIQUE_INDEX(pg_amop_opc_strat_index,2653, on pg_amop using btree(amopclaid oid_ops, amopsubtype oid_ops, amopstrategy int2_ops)); +#define AccessMethodStrategyIndexId 2653 +DECLARE_UNIQUE_INDEX(pg_amop_opr_opc_index,2654, on pg_amop using btree(amopopr oid_ops, amopclaid oid_ops)); +#define AccessMethodOperatorIndexId 2654 + +DECLARE_UNIQUE_INDEX(pg_amproc_opc_proc_index,2655, on pg_amproc using btree(amopclaid oid_ops, amprocsubtype oid_ops, amprocnum int2_ops)); +#define AccessMethodProcedureIndexId 2655 + +DECLARE_UNIQUE_INDEX(pg_attrdef_adrelid_adnum_index,2656, on pg_attrdef using btree(adrelid oid_ops, adnum int2_ops)); +#define AttrDefaultIndexId 2656 +DECLARE_UNIQUE_INDEX(pg_attrdef_oid_index,2657, on pg_attrdef using btree(oid oid_ops)); +#define AttrDefaultOidIndexId 2657 + +DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnam_index,2658, on pg_attribute using btree(attrelid oid_ops, attname name_ops)); +#define AttributeRelidNameIndexId 2658 +DECLARE_UNIQUE_INDEX(pg_attribute_relid_attnum_index,2659, on pg_attribute using btree(attrelid oid_ops, attnum int2_ops)); +#define AttributeRelidNumIndexId 2659 + +DECLARE_UNIQUE_INDEX(pg_cast_oid_index,2660, on pg_cast using btree(oid oid_ops)); +#define CastOidIndexId 2660 +DECLARE_UNIQUE_INDEX(pg_cast_source_target_index,2661, on pg_cast using btree(castsource oid_ops, casttarget oid_ops)); +#define CastSourceTargetIndexId 2661 + +DECLARE_UNIQUE_INDEX(pg_class_oid_index,2662, on pg_class using btree(oid oid_ops)); +#define ClassOidIndexId 2662 +DECLARE_UNIQUE_INDEX(pg_class_relname_nsp_index,2663, on pg_class using btree(relname name_ops, relnamespace oid_ops)); +#define ClassNameNspIndexId 2663 + /* This following index is not used for a cache and is not unique */ -DECLARE_INDEX(pg_constraint_conname_nsp_index on pg_constraint using btree(conname name_ops, connamespace oid_ops)); +DECLARE_INDEX(pg_constraint_conname_nsp_index,2664, on pg_constraint using btree(conname name_ops, connamespace oid_ops)); +#define ConstraintNameNspIndexId 2664 /* This following index is not used for a cache and is not unique */ -DECLARE_INDEX(pg_constraint_conrelid_index on pg_constraint using btree(conrelid oid_ops)); +DECLARE_INDEX(pg_constraint_conrelid_index,2665, on pg_constraint using btree(conrelid oid_ops)); +#define ConstraintRelidIndexId 2665 /* This following index is not used for a cache and is not unique */ -DECLARE_INDEX(pg_constraint_contypid_index on pg_constraint using btree(contypid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_constraint_oid_index on pg_constraint using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_conversion_default_index on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index on pg_conversion using btree(conname name_ops, connamespace oid_ops)); -DECLARE_UNIQUE_INDEX(pg_conversion_oid_index on pg_conversion using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_database_datname_index on pg_database using btree(datname name_ops)); -DECLARE_UNIQUE_INDEX(pg_database_oid_index on pg_database using btree(oid oid_ops)); +DECLARE_INDEX(pg_constraint_contypid_index,2666, on pg_constraint using btree(contypid oid_ops)); +#define ConstraintTypidIndexId 2666 +DECLARE_UNIQUE_INDEX(pg_constraint_oid_index,2667, on pg_constraint using btree(oid oid_ops)); +#define ConstraintOidIndexId 2667 + +DECLARE_UNIQUE_INDEX(pg_conversion_default_index,2668, on pg_conversion using btree(connamespace oid_ops, conforencoding int4_ops, contoencoding int4_ops, oid oid_ops)); +#define ConversionDefaultIndexId 2668 +DECLARE_UNIQUE_INDEX(pg_conversion_name_nsp_index,2669, on pg_conversion using btree(conname name_ops, connamespace oid_ops)); +#define ConversionNameNspIndexId 2669 +DECLARE_UNIQUE_INDEX(pg_conversion_oid_index,2670, on pg_conversion using btree(oid oid_ops)); +#define ConversionOidIndexId 2670 + +DECLARE_UNIQUE_INDEX(pg_database_datname_index,2671, on pg_database using btree(datname name_ops)); +#define DatabaseNameIndexId 2671 +DECLARE_UNIQUE_INDEX(pg_database_oid_index,2672, on pg_database using btree(oid oid_ops)); +#define DatabaseOidIndexId 2672 + /* This following index is not used for a cache and is not unique */ -DECLARE_INDEX(pg_depend_depender_index on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops)); +DECLARE_INDEX(pg_depend_depender_index,2673, on pg_depend using btree(classid oid_ops, objid oid_ops, objsubid int4_ops)); +#define DependDependerIndexId 2673 /* This following index is not used for a cache and is not unique */ -DECLARE_INDEX(pg_depend_reference_index on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops)); -DECLARE_UNIQUE_INDEX(pg_description_o_c_o_index on pg_description using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops)); -DECLARE_UNIQUE_INDEX(pg_group_name_index on pg_group using btree(groname name_ops)); -DECLARE_UNIQUE_INDEX(pg_group_sysid_index on pg_group using btree(grosysid int4_ops)); +DECLARE_INDEX(pg_depend_reference_index,2674, on pg_depend using btree(refclassid oid_ops, refobjid oid_ops, refobjsubid int4_ops)); +#define DependReferenceIndexId 2674 + +DECLARE_UNIQUE_INDEX(pg_description_o_c_o_index,2675, on pg_description using btree(objoid oid_ops, classoid oid_ops, objsubid int4_ops)); +#define DescriptionObjIndexId 2675 + +DECLARE_UNIQUE_INDEX(pg_group_name_index,2676, on pg_group using btree(groname name_ops)); +#define GroupNameIndexId 2676 +DECLARE_UNIQUE_INDEX(pg_group_sysid_index,2677, on pg_group using btree(grosysid int4_ops)); +#define GroupSysidIndexId 2677 + /* This following index is not used for a cache and is not unique */ -DECLARE_INDEX(pg_index_indrelid_index on pg_index using btree(indrelid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index on pg_index using btree(indexrelid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops)); -DECLARE_UNIQUE_INDEX(pg_language_name_index on pg_language using btree(lanname name_ops)); -DECLARE_UNIQUE_INDEX(pg_language_oid_index on pg_language using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index on pg_largeobject using btree(loid oid_ops, pageno int4_ops)); -DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index on pg_namespace using btree(nspname name_ops)); -DECLARE_UNIQUE_INDEX(pg_namespace_oid_index on pg_namespace using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index on pg_opclass using btree(opcamid oid_ops, opcname name_ops, opcnamespace oid_ops)); -DECLARE_UNIQUE_INDEX(pg_opclass_oid_index on pg_opclass using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_operator_oid_index on pg_operator using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops)); -DECLARE_UNIQUE_INDEX(pg_proc_oid_index on pg_proc using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops)); +DECLARE_INDEX(pg_index_indrelid_index,2678, on pg_index using btree(indrelid oid_ops)); +#define IndexIndrelidIndexId 2678 +DECLARE_UNIQUE_INDEX(pg_index_indexrelid_index,2679, on pg_index using btree(indexrelid oid_ops)); +#define IndexRelidIndexId 2679 + +DECLARE_UNIQUE_INDEX(pg_inherits_relid_seqno_index,2680, on pg_inherits using btree(inhrelid oid_ops, inhseqno int4_ops)); +#define InheritsRelidSeqnoIndexId 2680 + +DECLARE_UNIQUE_INDEX(pg_language_name_index,2681, on pg_language using btree(lanname name_ops)); +#define LanguageNameIndexId 2681 +DECLARE_UNIQUE_INDEX(pg_language_oid_index,2682, on pg_language using btree(oid oid_ops)); +#define LanguageOidIndexId 2682 + +DECLARE_UNIQUE_INDEX(pg_largeobject_loid_pn_index,2683, on pg_largeobject using btree(loid oid_ops, pageno int4_ops)); +#define LargeObjectLOidPNIndexId 2683 + +DECLARE_UNIQUE_INDEX(pg_namespace_nspname_index,2684, on pg_namespace using btree(nspname name_ops)); +#define NamespaceNameIndexId 2684 +DECLARE_UNIQUE_INDEX(pg_namespace_oid_index,2685, on pg_namespace using btree(oid oid_ops)); +#define NamespaceOidIndexId 2685 + +DECLARE_UNIQUE_INDEX(pg_opclass_am_name_nsp_index,2686, on pg_opclass using btree(opcamid oid_ops, opcname name_ops, opcnamespace oid_ops)); +#define OpclassAmNameNspIndexId 2686 +DECLARE_UNIQUE_INDEX(pg_opclass_oid_index,2687, on pg_opclass using btree(oid oid_ops)); +#define OpclassOidIndexId 2687 + +DECLARE_UNIQUE_INDEX(pg_operator_oid_index,2688, on pg_operator using btree(oid oid_ops)); +#define OperatorOidIndexId 2688 +DECLARE_UNIQUE_INDEX(pg_operator_oprname_l_r_n_index,2689, on pg_operator using btree(oprname name_ops, oprleft oid_ops, oprright oid_ops, oprnamespace oid_ops)); +#define OperatorNameNspIndexId 2689 + +DECLARE_UNIQUE_INDEX(pg_proc_oid_index,2690, on pg_proc using btree(oid oid_ops)); +#define ProcedureOidIndexId 2690 +DECLARE_UNIQUE_INDEX(pg_proc_proname_args_nsp_index,2691, on pg_proc using btree(proname name_ops, proargtypes oidvector_ops, pronamespace oid_ops)); +#define ProcedureNameArgsNspIndexId 2691 + +DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index,2692, on pg_rewrite using btree(oid oid_ops)); +#define RewriteOidIndexId 2692 +DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index,2693, on pg_rewrite using btree(ev_class oid_ops, rulename name_ops)); +#define RewriteRelRulenameIndexId 2693 + +DECLARE_UNIQUE_INDEX(pg_shadow_usename_index,2694, on pg_shadow using btree(usename name_ops)); +#define ShadowNameIndexId 2694 +DECLARE_UNIQUE_INDEX(pg_shadow_usesysid_index,2695, on pg_shadow using btree(usesysid int4_ops)); +#define ShadowSysidIndexId 2695 + +DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_index,2696, on pg_statistic using btree(starelid oid_ops, staattnum int2_ops)); +#define StatisticRelidAttnumIndexId 2696 + +DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index,2697, on pg_tablespace using btree(oid oid_ops)); +#define TablespaceOidIndexId 2697 +DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index,2698, on pg_tablespace using btree(spcname name_ops)); +#define TablespaceNameIndexId 2698 + /* This following index is not used for a cache and is not unique */ -DECLARE_UNIQUE_INDEX(pg_rewrite_oid_index on pg_rewrite using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_rewrite_rel_rulename_index on pg_rewrite using btree(ev_class oid_ops, rulename name_ops)); -DECLARE_UNIQUE_INDEX(pg_shadow_usename_index on pg_shadow using btree(usename name_ops)); -DECLARE_UNIQUE_INDEX(pg_shadow_usesysid_index on pg_shadow using btree(usesysid int4_ops)); -DECLARE_UNIQUE_INDEX(pg_statistic_relid_att_index on pg_statistic using btree(starelid oid_ops, staattnum int2_ops)); -DECLARE_UNIQUE_INDEX(pg_tablespace_oid_index on pg_tablespace using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_tablespace_spcname_index on pg_tablespace using btree(spcname name_ops)); +DECLARE_INDEX(pg_trigger_tgconstrname_index,2699, on pg_trigger using btree(tgconstrname name_ops)); +#define TriggerConstrNameIndexId 2699 /* This following index is not used for a cache and is not unique */ -DECLARE_INDEX(pg_trigger_tgconstrname_index on pg_trigger using btree(tgconstrname name_ops)); -/* This following index is not used for a cache and is not unique */ -DECLARE_INDEX(pg_trigger_tgconstrrelid_index on pg_trigger using btree(tgconstrrelid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index on pg_trigger using btree(tgrelid oid_ops, tgname name_ops)); -DECLARE_UNIQUE_INDEX(pg_trigger_oid_index on pg_trigger using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_type_oid_index on pg_type using btree(oid oid_ops)); -DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index on pg_type using btree(typname name_ops, typnamespace oid_ops)); +DECLARE_INDEX(pg_trigger_tgconstrrelid_index,2700, on pg_trigger using btree(tgconstrrelid oid_ops)); +#define TriggerConstrRelidIndexId 2700 +DECLARE_UNIQUE_INDEX(pg_trigger_tgrelid_tgname_index,2701, on pg_trigger using btree(tgrelid oid_ops, tgname name_ops)); +#define TriggerRelidNameIndexId 2701 +DECLARE_UNIQUE_INDEX(pg_trigger_oid_index,2702, on pg_trigger using btree(oid oid_ops)); +#define TriggerOidIndexId 2702 + +DECLARE_UNIQUE_INDEX(pg_type_oid_index,2703, on pg_type using btree(oid oid_ops)); +#define TypeOidIndexId 2703 +DECLARE_UNIQUE_INDEX(pg_type_typname_nsp_index,2704, on pg_type using btree(typname name_ops, typnamespace oid_ops)); +#define TypeNameNspIndexId 2704 + /* last step of initialization script: build the indexes declared above */ BUILD_INDICES diff --git a/src/include/catalog/pg_aggregate.h b/src/include/catalog/pg_aggregate.h index 6e339c76873..2e150137ee6 100644 --- a/src/include/catalog/pg_aggregate.h +++ b/src/include/catalog/pg_aggregate.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_aggregate.h,v 1.50 2005/04/12 04:26:28 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_aggregate.h,v 1.51 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -23,7 +23,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -41,7 +41,9 @@ * agginitval initial value for transition state (can be NULL) * ---------------------------------------------------------------- */ -CATALOG(pg_aggregate) BKI_WITHOUT_OIDS +#define AggregateRelationId 2600 + +CATALOG(pg_aggregate,2600) BKI_WITHOUT_OIDS { regproc aggfnoid; regproc aggtransfn; diff --git a/src/include/catalog/pg_am.h b/src/include/catalog/pg_am.h index 3bb646b1cdd..bddfda993bb 100644 --- a/src/include/catalog/pg_am.h +++ b/src/include/catalog/pg_am.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_am.h,v 1.32 2005/03/27 23:53:05 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_am.h,v 1.33 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -24,7 +24,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -34,7 +34,9 @@ * typedef struct FormData_pg_am * ---------------- */ -CATALOG(pg_am) +#define AccessMethodRelationId 2601 + +CATALOG(pg_am,2601) { NameData amname; /* access method name */ int2 amstrategies; /* total NUMBER of strategies (operators) diff --git a/src/include/catalog/pg_amop.h b/src/include/catalog/pg_amop.h index 7eb0c221fcf..2b30f67a16a 100644 --- a/src/include/catalog/pg_amop.h +++ b/src/include/catalog/pg_amop.h @@ -23,7 +23,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_amop.h,v 1.62 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_amop.h,v 1.63 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -36,7 +36,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -46,7 +46,9 @@ * typedef struct FormData_pg_amop * ---------------- */ -CATALOG(pg_amop) BKI_WITHOUT_OIDS +#define AccessMethodOperatorRelationId 2602 + +CATALOG(pg_amop,2602) BKI_WITHOUT_OIDS { Oid amopclaid; /* the index opclass this entry is for */ Oid amopsubtype; /* operator subtype, or zero if default */ diff --git a/src/include/catalog/pg_amproc.h b/src/include/catalog/pg_amproc.h index 4dfb1fa6cfa..f9eb419a169 100644 --- a/src/include/catalog/pg_amproc.h +++ b/src/include/catalog/pg_amproc.h @@ -19,7 +19,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_amproc.h,v 1.52 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_amproc.h,v 1.53 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -32,7 +32,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -42,7 +42,9 @@ * typedef struct FormData_pg_amproc * ---------------- */ -CATALOG(pg_amproc) BKI_WITHOUT_OIDS +#define AccessMethodProcedureRelationId 2603 + +CATALOG(pg_amproc,2603) BKI_WITHOUT_OIDS { Oid amopclaid; /* the index opclass this entry is for */ Oid amprocsubtype; /* procedure subtype, or zero if default */ diff --git a/src/include/catalog/pg_attrdef.h b/src/include/catalog/pg_attrdef.h index cf52290fc1d..73962029b57 100644 --- a/src/include/catalog/pg_attrdef.h +++ b/src/include/catalog/pg_attrdef.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_attrdef.h,v 1.18 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_attrdef.h,v 1.19 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,7 +31,9 @@ * typedef struct FormData_pg_attrdef * ---------------- */ -CATALOG(pg_attrdef) +#define AttrDefaultRelationId 2604 + +CATALOG(pg_attrdef,2604) { Oid adrelid; int2 adnum; diff --git a/src/include/catalog/pg_attribute.h b/src/include/catalog/pg_attribute.h index 2b07117ff95..a58f1d886b9 100644 --- a/src/include/catalog/pg_attribute.h +++ b/src/include/catalog/pg_attribute.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_attribute.h,v 1.115 2005/03/29 19:44:23 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_attribute.h,v 1.116 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -26,7 +26,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -39,7 +39,9 @@ * system attributes in catalog/heap.c also. * ---------------- */ -CATALOG(pg_attribute) BOOTSTRAP BKI_WITHOUT_OIDS +#define AttributeRelationId 1249 + +CATALOG(pg_attribute,1249) BKI_BOOTSTRAP BKI_WITHOUT_OIDS { Oid attrelid; /* OID of relation containing this * attribute */ @@ -246,7 +248,6 @@ typedef FormData_pg_attribute *Form_pg_attribute; { 1247, {"typdefaultbin"}, 25, -1, -1, 22, 0, -1, -1, false, 'x', 'i', false, false, false, true, 0 }, \ { 1247, {"typdefault"}, 25, -1, -1, 23, 0, -1, -1, false, 'x', 'i', false, false, false, true, 0 } - DATA(insert ( 1247 typname 19 -1 NAMEDATALEN 1 0 -1 -1 f p i t f f t 0)); DATA(insert ( 1247 typnamespace 26 -1 4 2 0 -1 -1 t p i t f f t 0)); DATA(insert ( 1247 typowner 23 -1 4 3 0 -1 -1 t p i t f f t 0)); @@ -278,29 +279,6 @@ DATA(insert ( 1247 xmax 28 0 4 -5 0 -1 -1 t p i t f f t 0)); DATA(insert ( 1247 cmax 29 0 4 -6 0 -1 -1 t p i t f f t 0)); DATA(insert ( 1247 tableoid 26 0 4 -7 0 -1 -1 t p i t f f t 0)); -/* ---------------- - * pg_database - * ---------------- - */ -DATA(insert ( 1262 datname 19 -1 NAMEDATALEN 1 0 -1 -1 f p i t f f t 0)); -DATA(insert ( 1262 datdba 23 -1 4 2 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 encoding 23 -1 4 3 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 datistemplate 16 -1 1 4 0 -1 -1 t p c t f f t 0)); -DATA(insert ( 1262 datallowconn 16 -1 1 5 0 -1 -1 t p c t f f t 0)); -DATA(insert ( 1262 datlastsysoid 26 -1 4 6 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 datvacuumxid 28 -1 4 7 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 datfrozenxid 28 -1 4 8 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 dattablespace 26 -1 4 9 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 datconfig 1009 -1 -1 10 1 -1 -1 f x i f f f t 0)); -DATA(insert ( 1262 datacl 1034 -1 -1 11 1 -1 -1 f x i f f f t 0)); -DATA(insert ( 1262 ctid 27 0 6 -1 0 -1 -1 f p s t f f t 0)); -DATA(insert ( 1262 oid 26 0 4 -2 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 xmin 28 0 4 -3 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 cmin 29 0 4 -4 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 xmax 28 0 4 -5 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 cmax 29 0 4 -6 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1262 tableoid 26 0 4 -7 0 -1 -1 t p i t f f t 0)); - /* ---------------- * pg_proc * ---------------- @@ -351,41 +329,6 @@ DATA(insert ( 1255 xmax 28 0 4 -5 0 -1 -1 t p i t f f t 0)); DATA(insert ( 1255 cmax 29 0 4 -6 0 -1 -1 t p i t f f t 0)); DATA(insert ( 1255 tableoid 26 0 4 -7 0 -1 -1 t p i t f f t 0)); -/* ---------------- - * pg_shadow - * ---------------- - */ -DATA(insert ( 1260 usename 19 -1 NAMEDATALEN 1 0 -1 -1 f p i t f f t 0)); -DATA(insert ( 1260 usesysid 23 -1 4 2 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1260 usecreatedb 16 -1 1 3 0 -1 -1 t p c t f f t 0)); -DATA(insert ( 1260 usesuper 16 -1 1 4 0 -1 -1 t p c t f f t 0)); -DATA(insert ( 1260 usecatupd 16 -1 1 5 0 -1 -1 t p c t f f t 0)); -DATA(insert ( 1260 passwd 25 -1 -1 6 0 -1 -1 f x i f f f t 0)); -DATA(insert ( 1260 valuntil 702 -1 4 7 0 -1 -1 t p i f f f t 0)); -DATA(insert ( 1260 useconfig 1009 -1 -1 8 1 -1 -1 f x i f f f t 0)); -DATA(insert ( 1260 ctid 27 0 6 -1 0 -1 -1 f p s t f f t 0)); -/* no OIDs in pg_shadow */ -DATA(insert ( 1260 xmin 28 0 4 -3 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1260 cmin 29 0 4 -4 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1260 xmax 28 0 4 -5 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1260 cmax 29 0 4 -6 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1260 tableoid 26 0 4 -7 0 -1 -1 t p i t f f t 0)); - -/* ---------------- - * pg_group - * ---------------- - */ -DATA(insert ( 1261 groname 19 -1 NAMEDATALEN 1 0 -1 -1 f p i t f f t 0)); -DATA(insert ( 1261 grosysid 23 -1 4 2 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1261 grolist 1007 -1 -1 3 1 -1 -1 f x i f f f t 0)); -DATA(insert ( 1261 ctid 27 0 6 -1 0 -1 -1 f p s t f f t 0)); -/* no OIDs in pg_group */ -DATA(insert ( 1261 xmin 28 0 4 -3 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1261 cmin 29 0 4 -4 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1261 xmax 28 0 4 -5 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1261 cmax 29 0 4 -6 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1261 tableoid 26 0 4 -7 0 -1 -1 t p i t f f t 0)); - /* ---------------- * pg_attribute * ---------------- @@ -498,23 +441,6 @@ DATA(insert ( 1259 xmax 28 0 4 -5 0 -1 -1 t p i t f f t 0)); DATA(insert ( 1259 cmax 29 0 4 -6 0 -1 -1 t p i t f f t 0)); DATA(insert ( 1259 tableoid 26 0 4 -7 0 -1 -1 t p i t f f t 0)); -/* ---------------- - * pg_tablespace - * ---------------- - */ - -DATA(insert ( 1213 spcname 19 -1 NAMEDATALEN 1 0 -1 -1 f p i t f f t 0)); -DATA(insert ( 1213 spcowner 23 -1 4 2 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1213 spclocation 25 -1 -1 3 0 -1 -1 f x i t f f t 0)); -DATA(insert ( 1213 spcacl 1034 -1 -1 4 1 -1 -1 f x i f f f t 0)); -DATA(insert ( 1213 ctid 27 0 6 -1 0 -1 -1 f p s t f f t 0)); -DATA(insert ( 1213 oid 26 0 4 -2 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1213 xmin 28 0 4 -3 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1213 cmin 29 0 4 -4 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1213 xmax 28 0 4 -5 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1213 cmax 29 0 4 -6 0 -1 -1 t p i t f f t 0)); -DATA(insert ( 1213 tableoid 26 0 4 -7 0 -1 -1 t p i t f f t 0)); - /* ---------------- * pg_index * diff --git a/src/include/catalog/pg_cast.h b/src/include/catalog/pg_cast.h index a917efc163f..99410eeb778 100644 --- a/src/include/catalog/pg_cast.h +++ b/src/include/catalog/pg_cast.h @@ -10,7 +10,7 @@ * * Copyright (c) 2002-2005, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/include/catalog/pg_cast.h,v 1.20 2005/04/13 16:15:35 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_cast.h,v 1.21 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,9 @@ #ifndef PG_CAST_H #define PG_CAST_H -CATALOG(pg_cast) +#define CastRelationId 2605 + +CATALOG(pg_cast,2605) { Oid castsource; /* source datatype for cast */ Oid casttarget; /* destination datatype for cast */ diff --git a/src/include/catalog/pg_class.h b/src/include/catalog/pg_class.h index f03bda60ee3..9ffc79ad8ca 100644 --- a/src/include/catalog/pg_class.h +++ b/src/include/catalog/pg_class.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_class.h,v 1.86 2005/03/29 19:44:23 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_class.h,v 1.87 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -40,7 +40,9 @@ * to get the relacl field ... and don't forget to check isNull. * ---------------- */ -CATALOG(pg_class) BOOTSTRAP +#define RelationRelationId 1259 + +CATALOG(pg_class,1259) BKI_BOOTSTRAP { NameData relname; /* class name */ Oid relnamespace; /* OID of namespace containing this class */ @@ -132,7 +134,8 @@ typedef FormData_pg_class *Form_pg_class; /* ---------------- * initial contents of pg_class * - * NOTE: only "bootstrapped" relations need to be declared here. + * NOTE: only "bootstrapped" relations need to be declared here. Be sure that + * the OIDs listed here match those given in their CATALOG macros. * ---------------- */ @@ -144,26 +147,9 @@ DATA(insert OID = 1255 ( pg_proc PGNSP 81 PGUID 0 1255 0 0 0 0 0 f f r 18 0 0 DESCR(""); DATA(insert OID = 1259 ( pg_class PGNSP 83 PGUID 0 1259 0 0 0 0 0 f f r 25 0 0 0 0 0 t f f f _null_ )); DESCR(""); -DATA(insert OID = 1260 ( pg_shadow PGNSP 86 PGUID 0 1260 1664 0 0 0 0 f t r 8 0 0 0 0 0 f f f f _null_ )); -DESCR(""); -DATA(insert OID = 1261 ( pg_group PGNSP 87 PGUID 0 1261 1664 0 0 0 0 f t r 3 0 0 0 0 0 f f f f _null_ )); -DESCR(""); -DATA(insert OID = 1262 ( pg_database PGNSP 88 PGUID 0 1262 1664 0 0 0 0 f t r 11 0 0 0 0 0 t f f f _null_ )); -DESCR(""); -DATA(insert OID = 1213 ( pg_tablespace PGNSP 90 PGUID 0 1213 1664 0 0 0 0 f t r 4 0 0 0 0 0 t f f f _null_ )); -DESCR(""); DATA(insert OID = 376 ( pg_xactlock PGNSP 0 PGUID 0 0 1664 0 0 0 0 f t s 1 0 0 0 0 0 f f f f _null_ )); DESCR(""); -#define RelOid_pg_type 1247 -#define RelOid_pg_attribute 1249 -#define RelOid_pg_proc 1255 -#define RelOid_pg_class 1259 -#define RelOid_pg_shadow 1260 -#define RelOid_pg_group 1261 -#define RelOid_pg_database 1262 -#define RelOid_pg_tablespace 1213 - /* Xact lock pseudo-table */ #define XactLockTableId 376 diff --git a/src/include/catalog/pg_constraint.h b/src/include/catalog/pg_constraint.h index fdc8c0676da..288a6adfa52 100644 --- a/src/include/catalog/pg_constraint.h +++ b/src/include/catalog/pg_constraint.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_constraint.h,v 1.15 2005/03/25 21:57:59 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_constraint.h,v 1.16 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,7 +31,9 @@ * typedef struct FormData_pg_constraint * ---------------- */ -CATALOG(pg_constraint) +#define ConstraintRelationId 2606 + +CATALOG(pg_constraint,2606) { /* * conname + connamespace is deliberately not unique; we allow, for diff --git a/src/include/catalog/pg_conversion.h b/src/include/catalog/pg_conversion.h index 552766055cf..e9cd3ccca24 100644 --- a/src/include/catalog/pg_conversion.h +++ b/src/include/catalog/pg_conversion.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_conversion.h,v 1.14 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_conversion.h,v 1.15 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -40,7 +40,9 @@ * condefault TRUE if this is a default conversion * ---------------------------------------------------------------- */ -CATALOG(pg_conversion) +#define ConversionRelationId 2607 + +CATALOG(pg_conversion,2607) { NameData conname; Oid connamespace; diff --git a/src/include/catalog/pg_database.h b/src/include/catalog/pg_database.h index f7ac58a05c5..69b41e31720 100644 --- a/src/include/catalog/pg_database.h +++ b/src/include/catalog/pg_database.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_database.h,v 1.34 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_database.h,v 1.35 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,7 +31,9 @@ * typedef struct FormData_pg_database * ---------------- */ -CATALOG(pg_database) BOOTSTRAP BKI_SHARED_RELATION +#define DatabaseRelationId 1262 + +CATALOG(pg_database,1262) BKI_SHARED_RELATION { NameData datname; /* database name */ int4 datdba; /* sysid of owner */ diff --git a/src/include/catalog/pg_depend.h b/src/include/catalog/pg_depend.h index acfae134978..09f5a04ed94 100644 --- a/src/include/catalog/pg_depend.h +++ b/src/include/catalog/pg_depend.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_depend.h,v 1.5 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_depend.h,v 1.6 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,7 +31,9 @@ * typedef struct FormData_pg_depend * ---------------- */ -CATALOG(pg_depend) BKI_WITHOUT_OIDS +#define DependRelationId 2608 + +CATALOG(pg_depend,2608) BKI_WITHOUT_OIDS { /* * Identification of the dependent (referencing) object. diff --git a/src/include/catalog/pg_description.h b/src/include/catalog/pg_description.h index 96e824a427b..b96b2bf089e 100644 --- a/src/include/catalog/pg_description.h +++ b/src/include/catalog/pg_description.h @@ -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/include/catalog/pg_description.h,v 1.22 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_description.h,v 1.23 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -38,7 +38,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -48,7 +48,9 @@ * typedef struct FormData_pg_description * ---------------- */ -CATALOG(pg_description) BKI_WITHOUT_OIDS +#define DescriptionRelationId 2609 + +CATALOG(pg_description,2609) BKI_WITHOUT_OIDS { Oid objoid; /* OID of object itself */ Oid classoid; /* OID of table containing object */ diff --git a/src/include/catalog/pg_group.h b/src/include/catalog/pg_group.h index 33af4b6983d..216d51a6660 100644 --- a/src/include/catalog/pg_group.h +++ b/src/include/catalog/pg_group.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_group.h,v 1.20 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_group.h,v 1.21 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -20,12 +20,13 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ +#define GroupRelationId 1261 -CATALOG(pg_group) BOOTSTRAP BKI_SHARED_RELATION BKI_WITHOUT_OIDS +CATALOG(pg_group,1261) BKI_SHARED_RELATION BKI_WITHOUT_OIDS { NameData groname; int4 grosysid; diff --git a/src/include/catalog/pg_index.h b/src/include/catalog/pg_index.h index 8ed1e29c06e..2c2ec348461 100644 --- a/src/include/catalog/pg_index.h +++ b/src/include/catalog/pg_index.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_index.h,v 1.36 2005/03/29 00:17:17 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_index.h,v 1.37 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,7 +31,9 @@ * typedef struct FormData_pg_index. * ---------------- */ -CATALOG(pg_index) BKI_WITHOUT_OIDS +#define IndexRelationId 2610 + +CATALOG(pg_index,2610) BKI_WITHOUT_OIDS { Oid indexrelid; /* OID of the index */ Oid indrelid; /* OID of the relation it indexes */ diff --git a/src/include/catalog/pg_inherits.h b/src/include/catalog/pg_inherits.h index 361e9339dc5..b1b2b0aa33d 100644 --- a/src/include/catalog/pg_inherits.h +++ b/src/include/catalog/pg_inherits.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_inherits.h,v 1.19 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_inherits.h,v 1.20 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,7 +31,9 @@ * typedef struct FormData_pg_inherits * ---------------- */ -CATALOG(pg_inherits) BKI_WITHOUT_OIDS +#define InheritsRelationId 2611 + +CATALOG(pg_inherits,2611) BKI_WITHOUT_OIDS { Oid inhrelid; Oid inhparent; diff --git a/src/include/catalog/pg_language.h b/src/include/catalog/pg_language.h index 5b82f723404..2254a5bc414 100644 --- a/src/include/catalog/pg_language.h +++ b/src/include/catalog/pg_language.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_language.h,v 1.25 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_language.h,v 1.26 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,7 +31,9 @@ * typedef struct FormData_pg_language * ---------------- */ -CATALOG(pg_language) +#define LanguageRelationId 2612 + +CATALOG(pg_language,2612) { NameData lanname; bool lanispl; /* Is a procedural language */ diff --git a/src/include/catalog/pg_largeobject.h b/src/include/catalog/pg_largeobject.h index 6578fe4dc66..cde3ba3285c 100644 --- a/src/include/catalog/pg_largeobject.h +++ b/src/include/catalog/pg_largeobject.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_largeobject.h,v 1.18 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_largeobject.h,v 1.19 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,8 +31,9 @@ * typedef struct FormData_pg_largeobject * ---------------- */ +#define LargeObjectRelationId 2613 -CATALOG(pg_largeobject) BKI_WITHOUT_OIDS +CATALOG(pg_largeobject,2613) BKI_WITHOUT_OIDS { Oid loid; /* Identifier of large object */ int4 pageno; /* Page number (starting from 0) */ diff --git a/src/include/catalog/pg_listener.h b/src/include/catalog/pg_listener.h index f58317c2c8a..fedacf2b073 100644 --- a/src/include/catalog/pg_listener.h +++ b/src/include/catalog/pg_listener.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_listener.h,v 1.18 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_listener.h,v 1.19 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -20,7 +20,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,8 +31,9 @@ * cpp turns this into typedef struct FormData_pg_listener * ---------------------------------------------------------------- */ +#define ListenerRelationId 2614 -CATALOG(pg_listener) BKI_WITHOUT_OIDS +CATALOG(pg_listener,2614) BKI_WITHOUT_OIDS { NameData relname; int4 listenerpid; diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h index 4bc5c91c5bc..f6cb4cf8e5b 100644 --- a/src/include/catalog/pg_namespace.h +++ b/src/include/catalog/pg_namespace.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_namespace.h,v 1.16 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_namespace.h,v 1.17 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -36,7 +36,9 @@ * nspacl access privilege list * ---------------------------------------------------------------- */ -CATALOG(pg_namespace) +#define NamespaceRelationId 2615 + +CATALOG(pg_namespace,2615) { NameData nspname; int4 nspowner; diff --git a/src/include/catalog/pg_opclass.h b/src/include/catalog/pg_opclass.h index 3e4c1759162..6043fec22d0 100644 --- a/src/include/catalog/pg_opclass.h +++ b/src/include/catalog/pg_opclass.h @@ -27,7 +27,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_opclass.h,v 1.63 2005/03/26 23:29:19 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_opclass.h,v 1.64 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -40,7 +40,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -50,8 +50,9 @@ * typedef struct FormData_pg_opclass * ---------------- */ +#define OperatorClassRelationId 2616 -CATALOG(pg_opclass) +CATALOG(pg_opclass,2616) { Oid opcamid; /* index access method opclass is for */ NameData opcname; /* name of this opclass */ diff --git a/src/include/catalog/pg_operator.h b/src/include/catalog/pg_operator.h index d098db3359d..1ef2b106832 100644 --- a/src/include/catalog/pg_operator.h +++ b/src/include/catalog/pg_operator.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.130 2004/12/31 22:03:24 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_operator.h,v 1.131 2005/04/14 01:38:20 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -26,7 +26,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -36,7 +36,9 @@ * typedef struct FormData_pg_operator * ---------------- */ -CATALOG(pg_operator) +#define OperatorRelationId 2617 + +CATALOG(pg_operator,2617) { NameData oprname; /* name of operator */ Oid oprnamespace; /* OID of namespace containing this oper */ diff --git a/src/include/catalog/pg_proc.h b/src/include/catalog/pg_proc.h index d9bf85973cb..27c6cb7ea8f 100644 --- a/src/include/catalog/pg_proc.h +++ b/src/include/catalog/pg_proc.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.358 2005/04/12 04:26:28 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.359 2005/04/14 01:38:20 tgl Exp $ * * NOTES * The script catalog/genbki.sh reads this file and generates .bki @@ -25,7 +25,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -35,7 +35,9 @@ * typedef struct FormData_pg_proc * ---------------- */ -CATALOG(pg_proc) BOOTSTRAP +#define ProcedureRelationId 1255 + +CATALOG(pg_proc,1255) BKI_BOOTSTRAP { NameData proname; /* procedure name */ Oid pronamespace; /* OID of namespace containing this proc */ diff --git a/src/include/catalog/pg_rewrite.h b/src/include/catalog/pg_rewrite.h index 253e4ea94b7..d29c33fce6d 100644 --- a/src/include/catalog/pg_rewrite.h +++ b/src/include/catalog/pg_rewrite.h @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_rewrite.h,v 1.24 2004/12/31 22:03:25 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_rewrite.h,v 1.25 2005/04/14 01:38:21 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -24,7 +24,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -34,7 +34,9 @@ * typedef struct FormData_pg_rewrite * ---------------- */ -CATALOG(pg_rewrite) +#define RewriteRelationId 2618 + +CATALOG(pg_rewrite,2618) { NameData rulename; Oid ev_class; diff --git a/src/include/catalog/pg_shadow.h b/src/include/catalog/pg_shadow.h index 1de9577b897..3c24d82d450 100644 --- a/src/include/catalog/pg_shadow.h +++ b/src/include/catalog/pg_shadow.h @@ -3,21 +3,19 @@ * pg_shadow.h * definition of the system "shadow" relation (pg_shadow) * along with the relation's initial contents. - * pg_user is now a public accessible view on pg_shadow. + * + * pg_user is now a publicly accessible view on pg_shadow. * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_shadow.h,v 1.27 2004/12/31 22:03:26 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_shadow.h,v 1.28 2005/04/14 01:38:21 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki * information from the DATA() statements. * - * WHENEVER the definition for pg_shadow changes, the - * view creation of pg_user must be changed in initdb.sh! - * *------------------------------------------------------------------------- */ #ifndef PG_SHADOW_H @@ -29,7 +27,9 @@ * typedef struct FormData_pg_shadow * ---------------- */ -CATALOG(pg_shadow) BOOTSTRAP BKI_SHARED_RELATION BKI_WITHOUT_OIDS +#define ShadowRelationId 1260 + +CATALOG(pg_shadow,1260) BKI_SHARED_RELATION BKI_WITHOUT_OIDS { NameData usename; int4 usesysid; @@ -54,7 +54,7 @@ typedef FormData_pg_shadow *Form_pg_shadow; * compiler constants for pg_shadow * ---------------- */ -#define Natts_pg_shadow 8 +#define Natts_pg_shadow 8 #define Anum_pg_shadow_usename 1 #define Anum_pg_shadow_usesysid 2 #define Anum_pg_shadow_usecreatedb 3 diff --git a/src/include/catalog/pg_statistic.h b/src/include/catalog/pg_statistic.h index 9af99ed1a5c..ded22c0329f 100644 --- a/src/include/catalog/pg_statistic.h +++ b/src/include/catalog/pg_statistic.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_statistic.h,v 1.28 2004/12/31 22:03:26 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_statistic.h,v 1.29 2005/04/14 01:38:21 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -37,7 +37,9 @@ typedef struct varlena anyarray; * typedef struct FormData_pg_statistic * ---------------- */ -CATALOG(pg_statistic) BKI_WITHOUT_OIDS +#define StatisticRelationId 2619 + +CATALOG(pg_statistic,2619) BKI_WITHOUT_OIDS { /* These fields form the unique key for the entry: */ Oid starelid; /* relation containing attribute */ diff --git a/src/include/catalog/pg_tablespace.h b/src/include/catalog/pg_tablespace.h index 04c0a993057..7c440042746 100644 --- a/src/include/catalog/pg_tablespace.h +++ b/src/include/catalog/pg_tablespace.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_tablespace.h,v 1.5 2004/12/31 22:03:26 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_tablespace.h,v 1.6 2005/04/14 01:38:21 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -21,7 +21,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -31,7 +31,9 @@ * typedef struct FormData_pg_tablespace * ---------------- */ -CATALOG(pg_tablespace) BOOTSTRAP BKI_SHARED_RELATION +#define TableSpaceRelationId 1213 + +CATALOG(pg_tablespace,1213) BKI_SHARED_RELATION { NameData spcname; /* tablespace name */ int4 spcowner; /* sysid of owner */ diff --git a/src/include/catalog/pg_trigger.h b/src/include/catalog/pg_trigger.h index 3f1754c9940..cf3b51b375f 100644 --- a/src/include/catalog/pg_trigger.h +++ b/src/include/catalog/pg_trigger.h @@ -17,7 +17,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -27,7 +27,9 @@ * typedef struct FormData_pg_trigger * ---------------- */ -CATALOG(pg_trigger) +#define TriggerRelationId 2620 + +CATALOG(pg_trigger,2620) { Oid tgrelid; /* triggered relation */ NameData tgname; /* trigger' name */ diff --git a/src/include/catalog/pg_type.h b/src/include/catalog/pg_type.h index 7b6bd6a948b..1af651c068e 100644 --- a/src/include/catalog/pg_type.h +++ b/src/include/catalog/pg_type.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/catalog/pg_type.h,v 1.159 2005/03/29 00:17:17 tgl Exp $ + * $PostgreSQL: pgsql/src/include/catalog/pg_type.h,v 1.160 2005/04/14 01:38:21 tgl Exp $ * * NOTES * the genbki.sh script reads this file and generates .bki @@ -23,7 +23,7 @@ /* ---------------- * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file + * CATALOG(), BKI_BOOTSTRAP and DATA() sugar words so this file * can be read by both genbki.sh and the C compiler. * ---------------- */ @@ -38,7 +38,9 @@ * See struct FormData_pg_attribute for details. * ---------------- */ -CATALOG(pg_type) BOOTSTRAP +#define TypeRelationId 1247 + +CATALOG(pg_type,1247) BKI_BOOTSTRAP { NameData typname; /* type name */ Oid typnamespace; /* OID of namespace containing this type */ @@ -304,6 +306,8 @@ DATA(insert OID = 30 ( oidvector PGNSP PGUID -1 f b t \054 0 26 oidvectorin oi DESCR("array of oids, used in system tables"); #define OIDVECTOROID 30 +/* hand-built rowtype entries for bootstrapped catalogs: */ + DATA(insert OID = 71 ( pg_type PGNSP PGUID -1 f c t \054 1247 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); #define PG_TYPE_RELTYPE_OID 71 DATA(insert OID = 75 ( pg_attribute PGNSP PGUID -1 f c t \054 1249 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); @@ -312,10 +316,6 @@ DATA(insert OID = 81 ( pg_proc PGNSP PGUID -1 f c t \054 1255 0 record_in reco #define PG_PROC_RELTYPE_OID 81 DATA(insert OID = 83 ( pg_class PGNSP PGUID -1 f c t \054 1259 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); #define PG_CLASS_RELTYPE_OID 83 -DATA(insert OID = 86 ( pg_shadow PGNSP PGUID -1 f c t \054 1260 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); -DATA(insert OID = 87 ( pg_group PGNSP PGUID -1 f c t \054 1261 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); -DATA(insert OID = 88 ( pg_database PGNSP PGUID -1 f c t \054 1262 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); -DATA(insert OID = 90 ( pg_tablespace PGNSP PGUID -1 f c t \054 1213 0 record_in record_out record_recv record_send - d x f 0 -1 0 _null_ _null_ )); /* OIDS 100 - 199 */ diff --git a/src/include/catalog/pg_version.h b/src/include/catalog/pg_version.h deleted file mode 100644 index 246e6f05121..00000000000 --- a/src/include/catalog/pg_version.h +++ /dev/null @@ -1,64 +0,0 @@ -/*------------------------------------------------------------------------- - * - * pg_version.h - * definition of the system "version" relation (pg_version) - * along with the relation's initial contents. - * - * NOTE: this table has nothing to do with the overall Postgres system - * version or anything like that. It is for defining individual relations - * that have multiple concurrently-existing versions. Yes, there used to - * be such a feature in Postgres, but it's been broken for a long time - * (see src/backend/commands/_deadcode/version.c). The pg_version table - * isn't even created at present. - * - * - * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * $PostgreSQL: pgsql/src/include/catalog/pg_version.h,v 1.20 2004/12/31 22:03:26 pgsql Exp $ - * - * NOTES - * the genbki.sh script reads this file and generates .bki - * information from the DATA() statements. - * - *------------------------------------------------------------------------- - */ -#ifndef PG_VERSION_H -#define PG_VERSION_H - -/* ---------------- - * postgres.h contains the system type definitions and the - * CATALOG(), BOOTSTRAP and DATA() sugar words so this file - * can be read by both genbki.sh and the C compiler. - * ---------------- - */ - -/* ---------------- - * pg_version definition. cpp turns this into - * typedef struct FormData_pg_version - * ---------------- - */ -CATALOG(pg_version) -{ - Oid verrelid; - Oid verbaseid; - int4 vertime; /* really should be some abstime */ -} FormData_pg_version; - -/* ---------------- - * Form_pg_version corresponds to a pointer to a tuple with - * the format of pg_version relation. - * ---------------- - */ -typedef FormData_pg_version *Form_pg_version; - -/* ---------------- - * compiler constants for pg_version - * ---------------- - */ -#define Natts_pg_version 3 -#define Anum_pg_version_verrelid 1 -#define Anum_pg_version_verbaseid 2 -#define Anum_pg_version_vertime 3 - -#endif /* PG_VERSION_H */ diff --git a/src/include/catalog/unused_oids b/src/include/catalog/unused_oids index b1ea971f3da..c83a637196a 100755 --- a/src/include/catalog/unused_oids +++ b/src/include/catalog/unused_oids @@ -2,7 +2,7 @@ # # unused_oids # -# $PostgreSQL: pgsql/src/include/catalog/unused_oids,v 1.6 2005/04/13 18:54:57 tgl Exp $ +# $PostgreSQL: pgsql/src/include/catalog/unused_oids,v 1.7 2005/04/14 01:38:21 tgl Exp $ # # finds blocks of manually-assignable oids that have not already been # claimed by post_hackers. primarily useful for finding available @@ -23,11 +23,19 @@ AWK="awk" FIRSTOBJECTID=`grep '#define[ ]*FirstBootstrapObjectId' ../access/transam.h | $AWK '{ print $3 }'` export FIRSTOBJECTID -egrep '^DATA' pg_*.h | \ - sed -e 's/^.*OID[^=]*=[^0-9]*//' -e 's/[^0-9].*$//' | \ - sort -n | \ - uniq | \ - $AWK ' +# this part (down to the uniq step) should match the unused_oids script +# note: we exclude BKI_BOOTSTRAP relations since they are expected to have +# matching DATA lines in pg_class.h + +cat pg_*.h indexing.h | \ +egrep -v -e '^CATALOG\(.*BKI_BOOTSTRAP' | \ +sed -n -e 's/^DATA(insert *OID *= *\([0-9][0-9]*\).*$/\1/p' \ + -e 's/^CATALOG([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ + -e 's/^DECLARE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' \ + -e 's/^DECLARE_UNIQUE_INDEX([^,]*, *\([0-9][0-9]*\).*$/\1/p' | \ +sort -n | \ +uniq | \ +$AWK ' BEGIN { last = 0; } diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h index 546e9f8dc0d..359c5af700c 100644 --- a/src/include/commands/defrem.h +++ b/src/include/commands/defrem.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/commands/defrem.h,v 1.63 2005/03/14 00:19:37 neilc Exp $ + * $PostgreSQL: pgsql/src/include/commands/defrem.h,v 1.64 2005/04/14 01:38:21 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -20,6 +20,7 @@ /* commands/indexcmds.c */ extern void DefineIndex(RangeVar *heapRelation, char *indexRelationName, + Oid indexRelationId, char *accessMethodName, char *tableSpaceName, List *attributeList, diff --git a/src/include/postgres.h b/src/include/postgres.h index 794ffe50b6c..b82cd2fa8b5 100644 --- a/src/include/postgres.h +++ b/src/include/postgres.h @@ -10,7 +10,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1995, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/postgres.h,v 1.70 2004/12/31 22:03:19 pgsql Exp $ + * $PostgreSQL: pgsql/src/include/postgres.h,v 1.71 2005/04/14 01:38:21 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -532,9 +532,9 @@ extern int ExceptionalCondition(char *conditionName, char *errorType, * Section 4: genbki macros used by catalog/pg_xxx.h files * ---------------------------------------------------------------- */ -#define CATALOG(x) typedef struct CppConcat(FormData_,x) +#define CATALOG(name,oid) typedef struct CppConcat(FormData_,name) -#define BOOTSTRAP +#define BKI_BOOTSTRAP #define BKI_SHARED_RELATION #define BKI_WITHOUT_OIDS diff --git a/src/include/utils/relcache.h b/src/include/utils/relcache.h index 3ddfe38e543..e5e8c8e07a2 100644 --- a/src/include/utils/relcache.h +++ b/src/include/utils/relcache.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/utils/relcache.h,v 1.48 2005/01/10 20:02:24 tgl Exp $ + * $PostgreSQL: pgsql/src/include/utils/relcache.h,v 1.49 2005/04/14 01:38:22 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -53,8 +53,7 @@ extern Relation RelationBuildLocalRelation(const char *relname, TupleDesc tupDesc, Oid relid, Oid reltablespace, - bool shared_relation, - bool nailit); + bool shared_relation); /* * Routines for flushing/rebuilding relcache entries in various scenarios