1111 *
1212 *
1313 * IDENTIFICATION
14- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.328 2002/06/18 00:28:11 momjian Exp $
14+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.329 2002/06/18 17:27:57 momjian Exp $
1515 *
1616 * HISTORY
1717 * AUTHOR DATE MAJOR EVENT
@@ -154,7 +154,8 @@ static void doNegateFloat(Value *v);
154154%type <node> alter_column_default
155155%type <ival> add_drop , drop_behavior , opt_drop_behavior
156156
157- %type <list> createdb_opt_list , createdb_opt_item
157+ %type <list> createdb_opt_list
158+ %type <defelt> createdb_opt_item
158159%type <boolean> opt_equal
159160
160161%type <ival> opt_lock , lock_type
@@ -3351,35 +3352,8 @@ CreatedbStmt:
33513352 CREATE DATABASE database_name opt_with createdb_opt_list
33523353 {
33533354 CreatedbStmt *n = makeNode(CreatedbStmt);
3354- List *l;
3355-
33563355 n->dbname = $3 ;
3357- /* set default options */
3358- n->dbowner = NULL ;
3359- n->dbpath = NULL ;
3360- n->dbtemplate = NULL ;
3361- n->encoding = -1 ;
3362- /* process additional options */
3363- foreach (l, $5 )
3364- {
3365- List *optitem = (List *) lfirst (l);
3366-
3367- switch (lfirsti (optitem))
3368- {
3369- case 1 :
3370- n->dbpath = (char *) lsecond (optitem);
3371- break ;
3372- case 2 :
3373- n->dbtemplate = (char *) lsecond (optitem);
3374- break ;
3375- case 3 :
3376- n->encoding = lfirsti (lnext (optitem));
3377- break ;
3378- case 4 :
3379- n->dbowner = (char *) lsecond (optitem);
3380- break ;
3381- }
3382- }
3356+ n->options = $5 ;
33833357 $$ = (Node *)n;
33843358 }
33853359 ;
@@ -3396,19 +3370,27 @@ createdb_opt_list:
33963370createdb_opt_item :
33973371 LOCATION opt_equal Sconst
33983372 {
3399- $$ = lconsi(1 , makeList1($3 ));
3373+ $$ = makeNode(DefElem);
3374+ $$ ->defname = " location" ;
3375+ $$ ->arg = (Node *)makeString($3 );
34003376 }
34013377 | LOCATION opt_equal DEFAULT
34023378 {
3403- $$ = lconsi(1 , makeList1(NULL ));
3379+ $$ = makeNode(DefElem);
3380+ $$ ->defname = " location" ;
3381+ $$ ->arg = NULL ;
34043382 }
34053383 | TEMPLATE opt_equal name
34063384 {
3407- $$ = lconsi(2 , makeList1($3 ));
3385+ $$ = makeNode(DefElem);
3386+ $$ ->defname = " template" ;
3387+ $$ ->arg = (Node *)makeString($3 );
34083388 }
34093389 | TEMPLATE opt_equal DEFAULT
34103390 {
3411- $$ = lconsi(2 , makeList1(NULL ));
3391+ $$ = makeNode(DefElem);
3392+ $$ ->defname = " template" ;
3393+ $$ ->arg = NULL ;
34123394 }
34133395 | ENCODING opt_equal Sconst
34143396 {
@@ -3422,7 +3404,9 @@ createdb_opt_item:
34223404 elog (ERROR, " Multi-byte support is not enabled" );
34233405 encoding = GetStandardEncoding();
34243406#endif
3425- $$ = lconsi(3 , makeListi1(encoding));
3407+ $$ = makeNode(DefElem);
3408+ $$ ->defname = " encoding" ;
3409+ $$ ->arg = (Node *)makeInteger(encoding);
34263410 }
34273411 | ENCODING opt_equal Iconst
34283412 {
@@ -3433,19 +3417,27 @@ createdb_opt_item:
34333417 if ($3 != GetStandardEncoding())
34343418 elog (ERROR, " Multi-byte support is not enabled" );
34353419#endif
3436- $$ = lconsi(3 , makeListi1($3 ));
3420+ $$ = makeNode(DefElem);
3421+ $$ ->defname = " encoding" ;
3422+ $$ ->arg = (Node *)makeInteger($3 );
34373423 }
34383424 | ENCODING opt_equal DEFAULT
34393425 {
3440- $$ = lconsi(3 , makeListi1(-1 ));
3426+ $$ = makeNode(DefElem);
3427+ $$ ->defname = " encoding" ;
3428+ $$ ->arg = (Node *)makeInteger(-1 );
34413429 }
34423430 | OWNER opt_equal name
34433431 {
3444- $$ = lconsi(4 , makeList1($3 ));
3432+ $$ = makeNode(DefElem);
3433+ $$ ->defname = " owner" ;
3434+ $$ ->arg = (Node *)makeString($3 );
34453435 }
34463436 | OWNER opt_equal DEFAULT
34473437 {
3448- $$ = lconsi(4 , makeList1(NULL ));
3438+ $$ = makeNode(DefElem);
3439+ $$ ->defname = " owner" ;
3440+ $$ ->arg = NULL ;
34493441 }
34503442 ;
34513443
0 commit comments