11
11
*
12
12
*
13
13
* 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 $
15
15
*
16
16
* HISTORY
17
17
* AUTHOR DATE MAJOR EVENT
@@ -154,7 +154,8 @@ static void doNegateFloat(Value *v);
154
154
%type <node> alter_column_default
155
155
%type <ival> add_drop , drop_behavior , opt_drop_behavior
156
156
157
- %type <list> createdb_opt_list , createdb_opt_item
157
+ %type <list> createdb_opt_list
158
+ %type <defelt> createdb_opt_item
158
159
%type <boolean> opt_equal
159
160
160
161
%type <ival> opt_lock , lock_type
@@ -3351,35 +3352,8 @@ CreatedbStmt:
3351
3352
CREATE DATABASE database_name opt_with createdb_opt_list
3352
3353
{
3353
3354
CreatedbStmt *n = makeNode(CreatedbStmt);
3354
- List *l;
3355
-
3356
3355
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 ;
3383
3357
$$ = (Node *)n;
3384
3358
}
3385
3359
;
@@ -3396,19 +3370,27 @@ createdb_opt_list:
3396
3370
createdb_opt_item :
3397
3371
LOCATION opt_equal Sconst
3398
3372
{
3399
- $$ = lconsi(1 , makeList1($3 ));
3373
+ $$ = makeNode(DefElem);
3374
+ $$ ->defname = " location" ;
3375
+ $$ ->arg = (Node *)makeString($3 );
3400
3376
}
3401
3377
| LOCATION opt_equal DEFAULT
3402
3378
{
3403
- $$ = lconsi(1 , makeList1(NULL ));
3379
+ $$ = makeNode(DefElem);
3380
+ $$ ->defname = " location" ;
3381
+ $$ ->arg = NULL ;
3404
3382
}
3405
3383
| TEMPLATE opt_equal name
3406
3384
{
3407
- $$ = lconsi(2 , makeList1($3 ));
3385
+ $$ = makeNode(DefElem);
3386
+ $$ ->defname = " template" ;
3387
+ $$ ->arg = (Node *)makeString($3 );
3408
3388
}
3409
3389
| TEMPLATE opt_equal DEFAULT
3410
3390
{
3411
- $$ = lconsi(2 , makeList1(NULL ));
3391
+ $$ = makeNode(DefElem);
3392
+ $$ ->defname = " template" ;
3393
+ $$ ->arg = NULL ;
3412
3394
}
3413
3395
| ENCODING opt_equal Sconst
3414
3396
{
@@ -3422,7 +3404,9 @@ createdb_opt_item:
3422
3404
elog (ERROR, " Multi-byte support is not enabled" );
3423
3405
encoding = GetStandardEncoding();
3424
3406
#endif
3425
- $$ = lconsi(3 , makeListi1(encoding));
3407
+ $$ = makeNode(DefElem);
3408
+ $$ ->defname = " encoding" ;
3409
+ $$ ->arg = (Node *)makeInteger(encoding);
3426
3410
}
3427
3411
| ENCODING opt_equal Iconst
3428
3412
{
@@ -3433,19 +3417,27 @@ createdb_opt_item:
3433
3417
if ($3 != GetStandardEncoding())
3434
3418
elog (ERROR, " Multi-byte support is not enabled" );
3435
3419
#endif
3436
- $$ = lconsi(3 , makeListi1($3 ));
3420
+ $$ = makeNode(DefElem);
3421
+ $$ ->defname = " encoding" ;
3422
+ $$ ->arg = (Node *)makeInteger($3 );
3437
3423
}
3438
3424
| ENCODING opt_equal DEFAULT
3439
3425
{
3440
- $$ = lconsi(3 , makeListi1(-1 ));
3426
+ $$ = makeNode(DefElem);
3427
+ $$ ->defname = " encoding" ;
3428
+ $$ ->arg = (Node *)makeInteger(-1 );
3441
3429
}
3442
3430
| OWNER opt_equal name
3443
3431
{
3444
- $$ = lconsi(4 , makeList1($3 ));
3432
+ $$ = makeNode(DefElem);
3433
+ $$ ->defname = " owner" ;
3434
+ $$ ->arg = (Node *)makeString($3 );
3445
3435
}
3446
3436
| OWNER opt_equal DEFAULT
3447
3437
{
3448
- $$ = lconsi(4 , makeList1(NULL ));
3438
+ $$ = makeNode(DefElem);
3439
+ $$ ->defname = " owner" ;
3440
+ $$ ->arg = NULL ;
3449
3441
}
3450
3442
;
3451
3443
0 commit comments