1111 *
1212 *
1313 * IDENTIFICATION
14- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.328 2002/06/1800:28:11 momjian Exp $
14+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.329 2002/06/1817:27:57 momjian Exp $
1515 *
1616 * HISTORY
1717 * AUTHORDATEMAJOR 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:
33513352CREATE DATABASE database_name opt_with createdb_opt_list
33523353{
33533354CreatedbStmt *n = makeNode(CreatedbStmt);
3354- List *l;
3355-
33563355n->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 :
33973371LOCATION 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:
34223404elog (ERROR," Multi-byte support is not enabled" );
34233405encoding = 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:
34333417if ($3 != GetStandardEncoding())
34343418elog (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