summaryrefslogtreecommitdiff
path: root/src/backend/bootstrap
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2009-09-26 22:42:03 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2009-09-26 22:42:03 +0000
commit49856352306d1c809c425a384d2887d0f8e1d544 (patch)
treed305158a662e35e71984392ea07cdc21fa42ecfe /src/backend/bootstrap
parentc2e228d44ed919804728d29d87bd8accf3ec1084 (diff)
downloadpostgresql-49856352306d1c809c425a384d2887d0f8e1d544.tar.gz
Extend the BKI infrastructure to allow system catalogs to be given
hand-assigned rowtype OIDs, even when they are not "bootstrapped" catalogs that have handmade type rows in pg_type.h. Give pg_database such an OID. Restore the availability of C macros for the rowtype OIDs of the bootstrapped catalogs. (These macros are now in the individual catalogs' .h files, though, not in pg_type.h.) This commit doesn't do anything especially useful by itself, but it's necessary infrastructure for reverting some ill-considered changes in relcache.c.
Diffstat (limited to 'src/backend/bootstrap')
-rw-r--r--src/backend/bootstrap/bootparse.y44
-rw-r--r--src/backend/bootstrap/bootscanner.l3
2 files changed, 27 insertions, 20 deletions
diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y
index 1670e462bc..0b2733148e 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.97 2009/07/29 20:56:18 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/bootstrap/bootparse.y,v 1.98 2009/09/26 22:42:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -108,13 +108,13 @@ int num_columns_read = 0;
%type <ival> boot_const boot_ident
%type <ival> optbootstrap optsharedrelation optwithoutoids
%type <ival> boot_tuple boot_tuplelist
-%type <oidval> oidspec optoideq
+%type <oidval> oidspec optoideq optrowtypeoid
%token <ival> CONST_P ID
%token OPEN XCLOSE XCREATE INSERT_TUPLE
%token XDECLARE INDEX ON USING XBUILD INDICES UNIQUE XTOAST
%token COMMA EQUALS LPAREN RPAREN
-%token OBJ_ID XBOOTSTRAP XSHARED_RELATION XWITHOUT_OIDS NULLVAL
+%token OBJ_ID XBOOTSTRAP XSHARED_RELATION XWITHOUT_OIDS XROWTYPE_OID NULLVAL
%start TopLevel
%nonassoc low
@@ -168,15 +168,15 @@ Boot_CloseStmt:
;
Boot_CreateStmt:
- XCREATE optbootstrap optsharedrelation optwithoutoids boot_ident oidspec LPAREN
+ XCREATE boot_ident oidspec optbootstrap optsharedrelation optwithoutoids optrowtypeoid LPAREN
{
do_start();
numattr = 0;
elog(DEBUG4, "creating%s%s relation %s %u",
- $2 ? " bootstrap" : "",
- $3 ? " shared" : "",
- LexIDStr($5),
- $6);
+ $4 ? " bootstrap" : "",
+ $5 ? " shared" : "",
+ LexIDStr($2),
+ $3);
}
boot_typelist
{
@@ -188,9 +188,9 @@ Boot_CreateStmt:
do_start();
- tupdesc = CreateTupleDesc(numattr, !($4), attrtypes);
+ tupdesc = CreateTupleDesc(numattr, !($6), attrtypes);
- if ($2)
+ if ($4)
{
if (boot_reldesc)
{
@@ -198,13 +198,13 @@ Boot_CreateStmt:
closerel(NULL);
}
- boot_reldesc = heap_create(LexIDStr($5),
+ boot_reldesc = heap_create(LexIDStr($2),
PG_CATALOG_NAMESPACE,
- $3 ? GLOBALTABLESPACE_OID : 0,
- $6,
+ $5 ? GLOBALTABLESPACE_OID : 0,
+ $3,
tupdesc,
RELKIND_RELATION,
- $3,
+ $5,
true);
elog(DEBUG4, "bootstrap relation created");
}
@@ -212,15 +212,16 @@ Boot_CreateStmt:
{
Oid id;
- id = heap_create_with_catalog(LexIDStr($5),
+ id = heap_create_with_catalog(LexIDStr($2),
PG_CATALOG_NAMESPACE,
- $3 ? GLOBALTABLESPACE_OID : 0,
- $6,
+ $5 ? GLOBALTABLESPACE_OID : 0,
+ $3,
+ $7,
BOOTSTRAP_SUPERUSERID,
tupdesc,
NIL,
RELKIND_RELATION,
- $3,
+ $5,
true,
0,
ONCOMMIT_NOOP,
@@ -343,6 +344,11 @@ optwithoutoids:
| { $$ = 0; }
;
+optrowtypeoid:
+ XROWTYPE_OID oidspec { $$ = $2; }
+ | { $$ = InvalidOid; }
+ ;
+
boot_typelist:
boot_type_thing
| boot_typelist COMMA boot_type_thing
@@ -363,7 +369,7 @@ oidspec:
optoideq:
OBJ_ID EQUALS oidspec { $$ = $3; }
- | { $$ = (Oid) 0; }
+ | { $$ = InvalidOid; }
;
boot_tuplelist:
diff --git a/src/backend/bootstrap/bootscanner.l b/src/backend/bootstrap/bootscanner.l
index ec5d6944ba..d4bcffee53 100644
--- a/src/backend/bootstrap/bootscanner.l
+++ b/src/backend/bootstrap/bootscanner.l
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/bootstrap/bootscanner.l,v 1.48 2009/01/01 17:23:36 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/bootstrap/bootscanner.l,v 1.49 2009/09/26 22:42:01 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -77,6 +77,7 @@ OID { return(OBJ_ID); }
bootstrap { return(XBOOTSTRAP); }
"shared_relation" { return(XSHARED_RELATION); }
"without_oids" { return(XWITHOUT_OIDS); }
+"rowtype_oid" { return(XROWTYPE_OID); }
_null_ { return(NULLVAL); }
insert { return(INSERT_TUPLE); }