11
11
*
12
12
*
13
13
* IDENTIFICATION
14
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.170 2000/06/09 01:44:18 momjian Exp $
14
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.171 2000/06/09 15:50:44 momjian Exp $
15
15
*
16
16
* HISTORY
17
17
* AUTHOR DATE MAJOR EVENT
@@ -145,7 +145,8 @@ static void doNegateFloat(Value *v);
145
145
%type <ival> opt_lock , lock_type
146
146
%type <boolean> opt_lmode , opt_force
147
147
148
- %type <ival> user_createdb_clause , user_createuser_clause
148
+ %type <ival> user_createdb_clause , user_createuser_clause , user_createtable_clause ,
149
+ user_locktable_clause
149
150
%type <str> user_passwd_clause
150
151
%type <ival> sysid_clause
151
152
%type <str> user_valid_clause
@@ -339,14 +340,14 @@ static void doNegateFloat(Value *v);
339
340
*/
340
341
%token ABORT_TRANS , ACCESS , AFTER , AGGREGATE , ANALYZE ,
341
342
BACKWARD , BEFORE , BINARY , BIT ,
342
- CACHE , CLUSTER , COMMENT , COPY , CREATEDB , CREATEUSER , CYCLE ,
343
+ CACHE , CLUSTER , COMMENT , COPY , CREATEDB , CREATETABLE , CREATEUSER , CYCLE ,
343
344
DATABASE , DELIMITERS , DO ,
344
345
EACH , ENCODING , EXCLUSIVE , EXPLAIN , EXTEND ,
345
346
FORCE , FORWARD , FUNCTION , HANDLER ,
346
347
INCREMENT , INDEX , INHERITS , INSTEAD , ISNULL ,
347
- LANCOMPILER , LIMIT , LISTEN , LOAD , LOCATION , LOCK_P ,
348
+ LANCOMPILER , LIMIT , LISTEN , LOAD , LOCATION , LOCK_P , LOCKTABLE ,
348
349
MAXVALUE , MINVALUE , MODE , MOVE ,
349
- NEW , NOCREATEDB , NOCREATEUSER , NONE , NOTHING , NOTIFY , NOTNULL ,
350
+ NEW , NOCREATEDB , NOCREATETABLE , NOCREATEUSER , NOLOCKTABLE , NONE , NOTHING , NOTIFY , NOTNULL ,
350
351
OFFSET , OIDS , OPERATOR , PASSWORD , PROCEDURAL ,
351
352
REINDEX , RENAME , RESET , RETURNS , ROW , RULE ,
352
353
SEQUENCE , SERIAL , SETOF , SHARE , SHOW , START , STATEMENT , STDIN , STDOUT , SYSID ,
@@ -473,32 +474,37 @@ stmt : AlterTableStmt
473
474
*
474
475
*****************************************************************************/
475
476
476
- CreateUserStmt : CREATE USER UserId
477
- user_createdb_clause user_createuser_clause user_group_clause
477
+ CreateUserStmt : CREATE USER UserId user_createdb_clause user_createuser_clause
478
+ user_createtable_clause user_locktable_clause user_group_clause
478
479
user_valid_clause
479
480
{
480
481
CreateUserStmt *n = makeNode(CreateUserStmt);
481
482
n->user = $3 ;
482
- n->sysid = -1 ;
483
+ n->sysid = -1 ;
483
484
n->password = NULL ;
484
485
n->createdb = $4 == +1 ? true : false ;
485
486
n->createuser = $5 == +1 ? true : false ;
486
- n->groupElts = $6 ;
487
- n->validUntil = $7 ;
487
+ n->createtable = $6 == +1 ? true : false ;
488
+ n->locktable = $7 == +1 ? true : false ;
489
+ n->groupElts = $8 ;
490
+ n->validUntil = $9 ;
488
491
$$ = (Node *)n;
489
492
}
490
493
| CREATE USER UserId WITH sysid_clause user_passwd_clause
491
- user_createdb_clause user_createuser_clause user_group_clause
494
+ user_createdb_clause user_createuser_clause
495
+ user_createtable_clause user_locktable_clause user_group_clause
492
496
user_valid_clause
493
497
{
494
498
CreateUserStmt *n = makeNode(CreateUserStmt);
495
499
n->user = $3 ;
496
- n->sysid = $5 ;
500
+ n->sysid = $5 ;
497
501
n->password = $6 ;
498
502
n->createdb = $7 == +1 ? true : false ;
499
503
n->createuser = $8 == +1 ? true : false ;
500
- n->groupElts = $9 ;
501
- n->validUntil = $10 ;
504
+ n->createtable = $9 == +1 ? true : false ;
505
+ n->locktable = $10 == +1 ? true : false ;
506
+ n->groupElts = $11 ;
507
+ n->validUntil = $12 ;
502
508
$$ = (Node *)n;
503
509
}
504
510
;
@@ -510,27 +516,32 @@ CreateUserStmt: CREATE USER UserId
510
516
*
511
517
*****************************************************************************/
512
518
513
- AlterUserStmt : ALTER USER UserId user_createdb_clause
514
- user_createuser_clause user_valid_clause
519
+ AlterUserStmt : ALTER USER UserId user_createdb_clause user_createuser_clause
520
+ user_createtable_clause user_locktable_clause user_valid_clause
515
521
{
516
522
AlterUserStmt *n = makeNode(AlterUserStmt);
517
523
n->user = $3 ;
518
524
n->password = NULL ;
519
525
n->createdb = $4 ;
520
526
n->createuser = $5 ;
521
- n->validUntil = $6 ;
527
+ n->createtable = $6 ;
528
+ n->locktable = $7 ;
529
+ n->validUntil = $8 ;
522
530
$$ = (Node *)n;
523
531
}
524
532
| ALTER USER UserId WITH PASSWORD Sconst
525
- user_createdb_clause
526
- user_createuser_clause user_valid_clause
533
+ user_createdb_clause user_createuser_clause
534
+ user_createtable_clause user_locktable_clause
535
+ user_valid_clause
527
536
{
528
537
AlterUserStmt *n = makeNode(AlterUserStmt);
529
538
n->user = $3 ;
530
539
n->password = $6 ;
531
540
n->createdb = $7 ;
532
541
n->createuser = $8 ;
533
- n->validUntil = $9 ;
542
+ n->createtable = $9 ;
543
+ n->locktable = $10 ;
544
+ n->validUntil = $11 ;
534
545
$$ = (Node *)n;
535
546
}
536
547
;
@@ -573,6 +584,22 @@ user_createuser_clause: CREATEUSER { $$ = +1; }
573
584
| /* EMPTY*/ { $$ = 0 ; }
574
585
;
575
586
587
+ user_createtable_clause : CREATETABLE { $$ = +1 ; }
588
+ | NOCREATETABLE { $$ = -1 ; }
589
+ | /* EMPTY*/ {
590
+ /* EMPTY is default = CREATETABLE */
591
+ $$ = +1 ;
592
+ }
593
+ ;
594
+
595
+ user_locktable_clause : LOCKTABLE { $$ = +1 ; }
596
+ | NOLOCKTABLE { $$ = -1 ; }
597
+ | /* EMPTY*/ {
598
+ /* EMPTY is default = LOCKTABLE */
599
+ $$ = +1 ;
600
+ }
601
+ ;
602
+
576
603
user_list : user_list ' ,' UserId
577
604
{
578
605
$$ = lcons((void *)makeString($3 ), $1 );
0 commit comments