mirror of
https://github.com/postgres/postgres.git
synced 2025-08-22 21:53:06 +03:00
Change CREATE DATABASE to use DefElem instead of constructing structure
members in gram.y. This is the prefered method for WITH and arbitrary param/value pairs.
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.328 2002/06/18 00:28:11 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.329 2002/06/18 17:27:57 momjian Exp $
|
||||
*
|
||||
* HISTORY
|
||||
* AUTHOR DATE MAJOR EVENT
|
||||
@@ -154,7 +154,8 @@ static void doNegateFloat(Value *v);
|
||||
%type <node> alter_column_default
|
||||
%type <ival> add_drop, drop_behavior, opt_drop_behavior
|
||||
|
||||
%type <list> createdb_opt_list, createdb_opt_item
|
||||
%type <list> createdb_opt_list
|
||||
%type <defelt> createdb_opt_item
|
||||
%type <boolean> opt_equal
|
||||
|
||||
%type <ival> opt_lock, lock_type
|
||||
@@ -3351,35 +3352,8 @@ CreatedbStmt:
|
||||
CREATE DATABASE database_name opt_with createdb_opt_list
|
||||
{
|
||||
CreatedbStmt *n = makeNode(CreatedbStmt);
|
||||
List *l;
|
||||
|
||||
n->dbname = $3;
|
||||
/* set default options */
|
||||
n->dbowner = NULL;
|
||||
n->dbpath = NULL;
|
||||
n->dbtemplate = NULL;
|
||||
n->encoding = -1;
|
||||
/* process additional options */
|
||||
foreach(l, $5)
|
||||
{
|
||||
List *optitem = (List *) lfirst(l);
|
||||
|
||||
switch (lfirsti(optitem))
|
||||
{
|
||||
case 1:
|
||||
n->dbpath = (char *) lsecond(optitem);
|
||||
break;
|
||||
case 2:
|
||||
n->dbtemplate = (char *) lsecond(optitem);
|
||||
break;
|
||||
case 3:
|
||||
n->encoding = lfirsti(lnext(optitem));
|
||||
break;
|
||||
case 4:
|
||||
n->dbowner = (char *) lsecond(optitem);
|
||||
break;
|
||||
}
|
||||
}
|
||||
n->options = $5;
|
||||
$$ = (Node *)n;
|
||||
}
|
||||
;
|
||||
@@ -3396,19 +3370,27 @@ createdb_opt_list:
|
||||
createdb_opt_item:
|
||||
LOCATION opt_equal Sconst
|
||||
{
|
||||
$$ = lconsi(1, makeList1($3));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "location";
|
||||
$$->arg = (Node *)makeString($3);
|
||||
}
|
||||
| LOCATION opt_equal DEFAULT
|
||||
{
|
||||
$$ = lconsi(1, makeList1(NULL));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "location";
|
||||
$$->arg = NULL;
|
||||
}
|
||||
| TEMPLATE opt_equal name
|
||||
{
|
||||
$$ = lconsi(2, makeList1($3));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "template";
|
||||
$$->arg = (Node *)makeString($3);
|
||||
}
|
||||
| TEMPLATE opt_equal DEFAULT
|
||||
{
|
||||
$$ = lconsi(2, makeList1(NULL));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "template";
|
||||
$$->arg = NULL;
|
||||
}
|
||||
| ENCODING opt_equal Sconst
|
||||
{
|
||||
@@ -3422,7 +3404,9 @@ createdb_opt_item:
|
||||
elog(ERROR, "Multi-byte support is not enabled");
|
||||
encoding = GetStandardEncoding();
|
||||
#endif
|
||||
$$ = lconsi(3, makeListi1(encoding));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "encoding";
|
||||
$$->arg = (Node *)makeInteger(encoding);
|
||||
}
|
||||
| ENCODING opt_equal Iconst
|
||||
{
|
||||
@@ -3433,19 +3417,27 @@ createdb_opt_item:
|
||||
if ($3 != GetStandardEncoding())
|
||||
elog(ERROR, "Multi-byte support is not enabled");
|
||||
#endif
|
||||
$$ = lconsi(3, makeListi1($3));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "encoding";
|
||||
$$->arg = (Node *)makeInteger($3);
|
||||
}
|
||||
| ENCODING opt_equal DEFAULT
|
||||
{
|
||||
$$ = lconsi(3, makeListi1(-1));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "encoding";
|
||||
$$->arg = (Node *)makeInteger(-1);
|
||||
}
|
||||
| OWNER opt_equal name
|
||||
{
|
||||
$$ = lconsi(4, makeList1($3));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "owner";
|
||||
$$->arg = (Node *)makeString($3);
|
||||
}
|
||||
| OWNER opt_equal DEFAULT
|
||||
{
|
||||
$$ = lconsi(4, makeList1(NULL));
|
||||
$$ = makeNode(DefElem);
|
||||
$$->defname = "owner";
|
||||
$$->arg = NULL;
|
||||
}
|
||||
;
|
||||
|
||||
|
Reference in New Issue
Block a user