aboutsummaryrefslogtreecommitdiff
path: root/src/backend/bootstrap/bootparse.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/bootstrap/bootparse.y')
-rw-r--r--src/backend/bootstrap/bootparse.y418
1 files changed, 213 insertions, 205 deletions
diff --git a/src/backend/bootstrap/bootparse.y b/src/backend/bootstrap/bootparse.y
index c27eabe969f..efc4078662c 100644
--- a/src/backend/bootstrap/bootparse.y
+++ b/src/backend/bootstrap/bootparse.y
@@ -2,13 +2,13 @@
/*-------------------------------------------------------------------------
*
* backendparse.y--
- * yacc parser grammer for the "backend" initialization program.
+ * yacc parser grammer for the "backend" initialization program.
*
* Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.4 1996/11/13 20:47:45 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/bootstrap/bootparse.y,v 1.5 1997/09/08 03:19:50 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -16,11 +16,11 @@
#include "postgres.h"
#include "catalog/pg_attribute.h"
-#include "access/attnum.h"
+#include "access/attnum.h"
#include "nodes/pg_list.h"
-#include "access/tupdesc.h"
+#include "access/tupdesc.h"
#include "storage/fd.h"
-#include "catalog/pg_am.h"
+#include "catalog/pg_am.h"
#include "catalog/pg_class.h"
#include "nodes/nodes.h"
#include "rewrite/prs2lock.h"
@@ -57,24 +57,27 @@
#include "miscadmin.h"
-#define DO_START { StartTransactionCommand();\
- }
+#define DO_START { \
+ StartTransactionCommand();\
+ }
-#define DO_END { CommitTransactionCommand();\
- if (!Quiet) { EMITPROMPT; }\
- fflush(stdout); \
- }
+#define DO_END { \
+ CommitTransactionCommand();\
+ if (!Quiet) { EMITPROMPT; }\
+ fflush(stdout); \
+ }
int num_tuples_read = 0;
static Oid objectid;
%}
-%union {
- List *list;
- IndexElem *ielem;
- char *str;
- int ival;
+%union
+{
+ List *list;
+ IndexElem *ielem;
+ char *str;
+ int ival;
}
%type <list> arg_list
@@ -84,7 +87,7 @@ static Oid objectid;
%token <ival> CONST ID
%token OPEN XCLOSE XCREATE INSERT_TUPLE
-%token STRING XDEFINE
+%token STRING XDEFINE
%token XDECLARE INDEX ON USING XBUILD INDICES
%token COMMA EQUALS LPAREN RPAREN
%token OBJ_ID XBOOTSTRAP NULLVAL
@@ -96,228 +99,233 @@ static Oid objectid;
%%
TopLevel:
- Queries
- |
- ;
+ Queries
+ |
+ ;
Queries:
- Query
- | Queries Query
- ;
+ Query
+ | Queries Query
+ ;
Query :
- OpenStmt
- | CloseStmt
- | CreateStmt
- | InsertStmt
- | DeclareIndexStmt
- | BuildIndsStmt
- ;
-
-OpenStmt:
- OPEN ident
- {
- DO_START;
- boot_openrel(LexIDStr($2));
- DO_END;
- }
- ;
+ OpenStmt
+ | CloseStmt
+ | CreateStmt
+ | InsertStmt
+ | DeclareIndexStmt
+ | BuildIndsStmt
+ ;
+
+OpenStmt:
+ OPEN ident
+ {
+ DO_START;
+ boot_openrel(LexIDStr($2));
+ DO_END;
+ }
+ ;
CloseStmt:
- XCLOSE ident %prec low
- {
- DO_START;
- closerel(LexIDStr($2));
- DO_END;
- }
- | XCLOSE %prec high
- {
- DO_START;
- closerel(NULL);
- DO_END;
- }
- ;
+ XCLOSE ident %prec low
+ {
+ DO_START;
+ closerel(LexIDStr($2));
+ DO_END;
+ }
+ | XCLOSE %prec high
+ {
+ DO_START;
+ closerel(NULL);
+ DO_END;
+ }
+ ;
CreateStmt:
- XCREATE optbootstrap ident LPAREN
- {
- DO_START;
- numattr=(int)0;
- }
- typelist
- {
- if (!Quiet) putchar('\n');
- DO_END;
- }
- RPAREN
- {
- DO_START;
-
- if ($2) {
- extern Relation reldesc;
- TupleDesc tupdesc;
-
- if (reldesc) {
- puts("create bootstrap: Warning, open relation");
- puts("exists, closing first");
- closerel(NULL);
- }
- if (DebugMode)
- puts("creating bootstrap relation");
- tupdesc = CreateTupleDesc(numattr,attrtypes);
- reldesc = heap_creatr(LexIDStr($3),
- DEFAULT_SMGR,
- tupdesc);
- if (DebugMode)
- puts("bootstrap relation created ok");
- } else {
- Oid id;
- TupleDesc tupdesc;
- /* extern Oid heap_create();*/
-
- tupdesc = CreateTupleDesc(numattr,attrtypes);
- id = heap_create(LexIDStr($3),
- NULL,
- 'n',
- DEFAULT_SMGR,
- tupdesc);
- if (!Quiet)
- printf("CREATED relation %s with OID %d\n",
- LexIDStr($3), id);
- }
- DO_END;
- if (DebugMode)
- puts("Commit End");
- }
- ;
+ XCREATE optbootstrap ident LPAREN
+ {
+ DO_START;
+ numattr=(int)0;
+ }
+ typelist
+ {
+ if (!Quiet)
+ putchar('\n');
+ DO_END;
+ }
+ RPAREN
+ {
+ DO_START;
+
+ if ($2)
+ {
+ extern Relation reldesc;
+ TupleDesc tupdesc;
+
+ if (reldesc)
+ {
+ puts("create bootstrap: Warning, open relation");
+ puts("exists, closing first");
+ closerel(NULL);
+ }
+ if (DebugMode)
+ puts("creating bootstrap relation");
+ tupdesc = CreateTupleDesc(numattr,attrtypes);
+ reldesc = heap_creatr(LexIDStr($3),
+ DEFAULT_SMGR,
+ tupdesc);
+ if (DebugMode)
+ puts("bootstrap relation created ok");
+ }
+ else
+ {
+ Oid id;
+ TupleDesc tupdesc;
+ /* extern Oid heap_create();*/
+
+ tupdesc = CreateTupleDesc(numattr,attrtypes);
+ id = heap_create(LexIDStr($3),
+ NULL,
+ 'n',
+ DEFAULT_SMGR,
+ tupdesc);
+ if (!Quiet)
+ printf("CREATED relation %s with OID %d\n",
+ LexIDStr($3), id);
+ }
+ DO_END;
+ if (DebugMode)
+ puts("Commit End");
+ }
+ ;
InsertStmt:
- INSERT_TUPLE optoideq
- {
- DO_START;
- if (DebugMode)
- printf("tuple %d<", $2);
- num_tuples_read = 0;
- }
- LPAREN tuplelist RPAREN
- {
- if (num_tuples_read != numattr)
- elog(WARN,"incorrect number of values for tuple");
- if (reldesc == (Relation)NULL) {
- elog(WARN,"must OPEN RELATION before INSERT\n");
- err_out();
- }
- if (DebugMode)
- puts("Insert Begin");
- objectid = $2;
- InsertOneTuple(objectid);
- if (DebugMode)
- puts("Insert End");
- if (!Quiet) { putchar('\n'); }
- DO_END;
- if (DebugMode)
- puts("Transaction End");
- }
- ;
+ INSERT_TUPLE optoideq
+ {
+ DO_START;
+ if (DebugMode)
+ printf("tuple %d<", $2);
+ num_tuples_read = 0;
+ }
+ LPAREN tuplelist RPAREN
+ {
+ if (num_tuples_read != numattr)
+ elog(WARN,"incorrect number of values for tuple");
+ if (reldesc == (Relation)NULL)
+ {
+ elog(WARN,"must OPEN RELATION before INSERT\n");
+ err_out();
+ }
+ if (DebugMode)
+ puts("Insert Begin");
+ objectid = $2;
+ InsertOneTuple(objectid);
+ if (DebugMode)
+ puts("Insert End");
+ if (!Quiet)
+ putchar('\n');
+ DO_END;
+ if (DebugMode)
+ puts("Transaction End");
+ }
+ ;
DeclareIndexStmt:
- XDECLARE INDEX ident ON ident USING ident LPAREN index_params RPAREN
- {
- List *params;
+ XDECLARE INDEX ident ON ident USING ident LPAREN index_params RPAREN
+ {
+ List *params;
- DO_START;
+ DO_START;
- params = lappend(NIL, (List*)$9);
- DefineIndex(LexIDStr($5),
- LexIDStr($3),
- LexIDStr($7),
- params, NIL, 0, 0, NIL);
- DO_END;
- }
- ;
+ params = lappend(NIL, (List*)$9);
+ DefineIndex(LexIDStr($5),
+ LexIDStr($3),
+ LexIDStr($7),
+ params, NIL, 0, 0, NIL);
+ DO_END;
+ }
+ ;
BuildIndsStmt:
- XBUILD INDICES { build_indices(); }
+ XBUILD INDICES { build_indices(); }
index_params:
- index_on ident
- {
- IndexElem *n = (IndexElem*)$1;
- n->class = LexIDStr($2);
- $$ = n;
- }
+ index_on ident
+ {
+ IndexElem *n = (IndexElem*)$1;
+ n->class = LexIDStr($2);
+ $$ = n;
+ }
index_on:
- ident
- {
- IndexElem *n = makeNode(IndexElem);
- n->name = LexIDStr($1);
- $$ = n;
- }
- | ident LPAREN arg_list RPAREN
- {
- IndexElem *n = makeNode(IndexElem);
- n->name = LexIDStr($1);
- n->args = (List*)$3;
- $$ = n;
- }
+ ident
+ {
+ IndexElem *n = makeNode(IndexElem);
+ n->name = LexIDStr($1);
+ $$ = n;
+ }
+ | ident LPAREN arg_list RPAREN
+ {
+ IndexElem *n = makeNode(IndexElem);
+ n->name = LexIDStr($1);
+ n->args = (List*)$3;
+ $$ = n;
+ }
arg_list:
- ident
- {
- $$ = lappend(NIL, makeString(LexIDStr($1)));
- }
- | arg_list COMMA ident
- {
- $$ = lappend((List*)$1, makeString(LexIDStr($3)));
- }
-
+ ident
+ {
+ $$ = lappend(NIL, makeString(LexIDStr($1)));
+ }
+ | arg_list COMMA ident
+ {
+ $$ = lappend((List*)$1, makeString(LexIDStr($3)));
+ }
+
optbootstrap:
- XBOOTSTRAP { $$ = 1; }
- | { $$ = 0; }
- ;
+ XBOOTSTRAP { $$ = 1; }
+ | { $$ = 0; }
+ ;
typelist:
- typething
- | typelist COMMA typething
- ;
+ typething
+ | typelist COMMA typething
+ ;
typething:
- ident EQUALS ident
- {
- if(++numattr > MAXATTR)
- elog(FATAL,"Too many attributes\n");
- DefineAttr(LexIDStr($1),LexIDStr($3),numattr-1);
- if (DebugMode)
- printf("\n");
- }
- ;
+ ident EQUALS ident
+ {
+ if(++numattr > MAXATTR)
+ elog(FATAL,"Too many attributes\n");
+ DefineAttr(LexIDStr($1),LexIDStr($3),numattr-1);
+ if (DebugMode)
+ printf("\n");
+ }
+ ;
optoideq:
- OBJ_ID EQUALS ident { $$ = atol(LexIDStr($3)); }
- | { extern Oid newoid(); $$ = newoid(); }
- ;
+ OBJ_ID EQUALS ident { $$ = atol(LexIDStr($3)); }
+ | { extern Oid newoid(); $$ = newoid(); }
+ ;
tuplelist:
- tuple
- | tuplelist tuple
- | tuplelist COMMA tuple
- ;
+ tuple
+ | tuplelist tuple
+ | tuplelist COMMA tuple
+ ;
tuple:
- ident {InsertOneValue(objectid, LexIDStr($1), num_tuples_read++); }
- | const {InsertOneValue(objectid, LexIDStr($1), num_tuples_read++); }
- | NULLVAL
- { InsertOneNull(num_tuples_read++); }
- ;
-
+ ident {InsertOneValue(objectid, LexIDStr($1), num_tuples_read++); }
+ | const {InsertOneValue(objectid, LexIDStr($1), num_tuples_read++); }
+ | NULLVAL
+ { InsertOneNull(num_tuples_read++); }
+ ;
+
const :
- CONST { $$=yylval.ival; }
- ;
+ CONST { $$=yylval.ival; }
+ ;
ident :
- ID { $$=yylval.ival; }
- ;
+ ID { $$=yylval.ival; }
+ ;
%%
-
-