mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +03:00
Lex/yacc source cleanup like indent.
This commit is contained in:
@@ -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
|
||||
| CloseStmt
|
||||
| CreateStmt
|
||||
| InsertStmt
|
||||
| DeclareIndexStmt
|
||||
| BuildIndsStmt
|
||||
;
|
||||
|
||||
OpenStmt:
|
||||
OPEN ident
|
||||
{
|
||||
DO_START;
|
||||
boot_openrel(LexIDStr($2));
|
||||
DO_END;
|
||||
}
|
||||
;
|
||||
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;
|
||||
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 ($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();*/
|
||||
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");
|
||||
}
|
||||
;
|
||||
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; }
|
||||
;
|
||||
%%
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user