8000 Simplify optional WITH handling in CREATE USER, ALTER USER, CREATE · linearregression/postgres@f91ee12 · GitHub
[go: up one dir, main page]

Skip to content

Commit f91ee12

Browse files
committed
Simplify optional WITH handling in CREATE USER, ALTER USER, CREATE
GROUP. Make WITH optional in CREATE DATABASE for consistency.
1 parent 0daee96 commit f91ee12

File tree

2 files changed

+50
-65
lines changed

2 files changed

+50
-65
lines changed

doc/src/sgml/ref/create_database.sgml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<!--
2-
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_database.sgml,v 1.27 2002/04/21 19:02:39 thomas Exp $
2+
$Header: /cvsroot/pgsql/doc/src/sgml/ref/create_database.sgml,v 1.28 2002/06/17 05:40:32 momjian Exp $
33
PostgreSQL documentation
44
-->
55

@@ -22,7 +22,7 @@ PostgreSQL documentation
2222
</refsynopsisdivinfo>
2323
<synopsis>
2424
CREATE DATABASE <replaceable class="PARAMETER">name</replaceable>
25-
[ WITH [ OWNER [=] <replaceable class="parameter">dbowner</replaceable> ]
25+
[ [ WITH ] [ OWNER [=] <replaceable class="parameter">dbowner</replaceable> ]
2626
[ LOCATION [=] '<replaceable class="parameter">dbpath</replaceable>' ]
2727
[ TEMPLATE [=] <replaceable class="parameter">template</replaceable> ]
2828
[ ENCODING [=] <replaceable class="parameter">encoding</replaceable> ] ]

src/backend/parser/gram.y

Lines changed: 48 additions & 63 deletions
< 67E6 td data-grid-cell-id="diff-46b3d04d01695e2f03dd655e14087ef74a793b725ef5c8c7a8c365c51667d182-521-520-1" data-selected="false" role="gridcell" style="background-color:var(--diffBlob-deletionNum-bgColor, var(--diffBlob-deletion-bgColor-num));text-align:center" tabindex="-1" valign="top" class="focusable-grid-cell diff-line-number position-relative left-side">
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
*
1212
*
1313
* IDENTIFICATION
14-
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.323 2002/06/15 03:00:03 thomas Exp $
14+
* $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.324 2002/06/17 05:40:32 momjian Exp $
1515
*
1616
* HISTORY
1717
* AUTHOR DATE MAJOR EVENT
@@ -201,7 +201,7 @@ static void doNegateFloat(Value *v);
201201

202202
%type <list> stmtblock, stmtmulti,
203203
OptTableElementList, OptInherit, definition, opt_distinct,
204-
opt_with, func_args, func_args_list, func_as, createfunc_opt_list
204+
opt_definition, func_args, func_args_list, func_as, createfunc_opt_list
205205
oper_argtypes, RuleActionList, RuleActionMulti,
206206
opt_column_list, columnList, opt_name_list,
207207
sort_clause, sortby_list, index_params, index_list, name_list,
@@ -232,7 +232,7 @@ static void doNegateFloat(Value *v);
232232
%type <ival> opt_interval
233233
%type <node> overlay_placing, substr_from, substr_for
234234

235-
%type <boolean> opt_binary, opt_using, opt_instead, opt_cursor
235+
%type <boolean> opt_binary, opt_using, opt_instead, opt_cursor, opt_with
236236
%type <boolean> opt_with_copy, index_opt_unique, opt_verbose, opt_full
237237
%type <boolean> opt_freeze, analyze_keyword
238238

@@ -469,7 +469,7 @@ stmt : AlterDatabaseSetStmt
469469
| CreateUserStmt
470470
| ClusterStmt
471471
| DefineStmt
472-
| DropStmt
472+
| DropStmt
473473
| DropSchemaStmt
474474
| TruncateStmt
475475
| CommentStmt
@@ -518,20 +518,18 @@ stmt : AlterDatabaseSetStmt
518518
*
519519
*****************************************************************************/
520520

521-
CreateUserStmt: CREATE USER UserId OptUserList
522-
{
523-
CreateUserStmt *n = makeNode(CreateUserStmt);
524-
n->user = $3;
525-
n->options = $4;
526-
$$ = (Node *)n;
527-
}
528-
| CREATE USER UserId WITH OptUserList
521+
CreateUserStmt: CREATE USER UserId opt_with OptUserList
529522
{
530523
CreateUserStmt *n = makeNode(CreateUserStmt);
531524
n->user = $3;
532525
n->options = $5;
533526
$$ = (Node *)n;
534-
}
527+
}
528+
;
529+
530+
531+
opt_with: WITH { $$ = TRUE; }
532+
| /*EMPTY*/ { $$ = TRUE; }
535533
;
536534

537535
/*****************************************************************************
@@ -541,14 +539,7 @@ CreateUserStmt: CREATE USER UserId OptUserList
541539
*
542540
*****************************************************************************/
543541

544-
AlterUserStmt: ALTER USER UserId OptUserList
545-
{
546-
AlterUserStmt *n = makeNode(AlterUserStmt);
547-
n->user = $3;
548-
n->options = $4;
549-
$$ = (Node *)n;
550-
}
551-
| ALTER USER UserId WITH OptUserList
542+
AlterUserStmt: ALTER USER UserId opt_with OptUserList
552543
{
553544
AlterUserStmt *n = makeNode(AlterUserStmt);
554545
n->user = $3;
@@ -600,19 +591,19 @@ OptUserList: OptUserList OptUserElem { $$ = lappend($1, $2); }
600591
;
601592

602593
OptUserElem: PASSWORD Sconst
603-
{
594+
{
604595
$$ = makeNode(DefElem);
605596
$$->defname = "password";
606597
$$->arg = (Node *)makeString($2);
607598
}
608599
| ENCRYPTED PASSWORD Sconst
609-
{
600+
{
610601
$$ = makeNode(DefElem);
611602
$$->defname = "encryptedPassword";
612603
$$->arg = (Node *)makeString($3);
613604
}
614605
| UNENCRYPTED PASSWORD Sconst
615-
{
606+
{
616607
$$ = makeNode(DefElem);
617608
$$->defname = "unencryptedPassword";
618609
$$->arg = (Node *)makeString($3);
@@ -624,37 +615,37 @@ OptUserElem: PASSWORD Sconst
624615
$$->arg = (Node *)makeInteger($2);
625616
}
626617
| CREATEDB
627-
{
618+
{
628619
$$ = makeNode(DefElem);
629620
$$->defname = "createdb";
630621
$$->arg = (Node *)makeInteger(TRUE);
631622
}
632623
| NOCREATEDB
633-
{
624+
{
634625
$$ = makeNode(DefElem);
635626
$$->defname = "createdb";
636627
$$->arg = (Node *)makeInteger(FALSE);
637628
}
638629
| CREATEUSER
639-
{
630+
{
640631
$$ = makeNode(DefElem);
641632
$$->defname = "createuser";
642633
$$->arg = (Node *)makeInteger(TRUE);
643634
}
644635
| NOCREATEUSER
645-
{
636+
{
646637
$$ = makeNode(DefElem);
647638
$$->defname = "createuser";
648639
$$->arg = (Node *)makeInteger(FALSE);
649640
}
650641
| IN_P GROUP_P user_list
651-
{
642+
{
652643
$$ = makeNode(DefElem);
653644
$$->defname = "groupElts";
654645
$$->arg = (Node *)$3;
655646
}
656647
| VALID UNTIL Sconst
657-
{
648+
{
658649
$$ = makeNode(DefElem);
659650
$$->defname = "validUntil";
660651
$$->arg = (Node *)makeString($3);
@@ -680,14 +671,7 @@ user_list: user_list ',' UserId
680671
*
681672
*****************************************************************************/
682673

683-
CreateGroupStmt: CREATE GROUP_P UserId OptGroupList
684-
{
685-
CreateGroupStmt *n = makeNode(CreateGroupStmt);
686-
n->name = $3;
687-
n->options = $4;
688-
$$ = (Node *)n;
689-
}
690-
| CREATE GROUP_P UserId WITH OptGroupList
674+
CreateGroupStmt: CREATE GROUP_P UserId opt_with OptGroupList
691675
{
692676
CreateGroupStmt *n = makeNode(CreateGroupStmt);
693677
n->name = $3;
@@ -704,7 +688,7 @@ OptGroupList: OptGroupList OptGroupElem { $$ = lappend($1, $2); }
704688
;
705689

706690
OptGroupElem: USER user_list
707-
{
691+
{
708692
$$ = makeNode(DefElem);
709693
$$->defname = "userElts";
710694
$$->arg = (Node *)$2;
@@ -1504,7 +1488,7 @@ ColConstraintElem:
15041488
n->keys = NULL;
15051489
$$ = (Node *)n;
15061490
}
1507-
| REFERENCES qualified_name opt_column_list key_match key_actions
1491+
| REFERENCES qualified_name opt_column_list key_match key_actions
15081492
{
15091493
FkConstraint *n = makeNode(FkConstraint);
15101494
n->constr_name = NULL;
@@ -1880,7 +1864,7 @@ DropPLangStmt: DROP opt_procedural LANGUAGE ColId_or_Sconst
18801864
opt_procedural: PROCEDURAL { $$ = TRUE; }
18811865
| /*EMPTY*/ { $$ = TRUE; }
18821866
;
1883-
1867+
18841868
/*****************************************************************************
18851869
*
18861870
* QUERIES :
@@ -1913,7 +1897,7 @@ CreateTrigStmt: CREATE TRIGGER name TriggerActionTime TriggerEvents ON
19131897
$$ = (Node *)n;
19141898
}
19151899
| CREATE CONSTRAINT TRIGGER name AFTER TriggerEvents ON
1916-
qualified_name OptConstrFromTable
1900+
qualified_name OptConstrFromTable
19171901
ConstraintAttributeSpec
19181902
FOR EACH ROW EXECUTE PROCEDURE
19191903
func_name '(' TriggerFuncArgs ')'
@@ -2237,13 +2221,13 @@ TruncateStmt: TRUNCATE opt_table qualified_name
22372221
* the object associated with the comment. The form of the statement is:
22382222
*
22392223
* COMMENT ON [ [ DATABASE | DOMAIN | INDEX | SEQUENCE | TABLE | TYPE | VIEW ]
2240-
* <objname> | AGGREGATE <aggname> (<aggtype>) | FUNCTION
2241-
* <funcname> (arg1, arg2, ...) | OPERATOR <op>
2224+
* <objname> | AGGREGATE <aggname> (<aggtype>) | FUNCTION
2225+
* <funcname> (arg1, arg2, ...) | OPERATOR <op>
22422226
* (leftoperand_typ rightoperand_typ) | TRIGGER <triggername> ON
22432227
* <relname> | RULE <rulename> ON <relname> ] IS 'text'
22442228
*
22452229
*****************************************************************************/
2246-
2230+
22472231
CommentStmt: COMMENT ON comment_type any_name IS comment_text
22482232
{
22492233
CommentStmt *n = makeNode(CommentStmt);
@@ -2319,12 +2303,12 @@ comment_type: COLUMN { $$ = COLUMN; }
23192303
| DOMAIN_P { $$ = TYPE_P; }
23202304
| TYPE_P { $$ = TYPE_P; }
23212305
| VIEW { $$ = VIEW; }
2322-
;
2306+
;
23232307

23242308
comment_text: Sconst { $$ = $1; }
23252309
| NULL_P { $$ = NULL; }
23262310
;
2327-
2311+
23282312
/*****************************************************************************
23292313
*
23302314
* QUERY:
@@ -2775,7 +2759,7 @@ RecipeStmt: EXECUTE RECIPE recipe_name
27752759
*****************************************************************************/
27762760

27772761
CreateFunctionStmt: CREATE opt_or_replace FUNCTION func_name func_args
2778-
RETURNS func_return createfunc_opt_list opt_with
2762+
RETURNS func_return createfunc_opt_list opt_definition
27792763
{
27802764
CreateFunctionStmt *n = makeNode(CreateFunctionStmt);
27812765
n->replace = $2;
@@ -2951,7 +2935,7 @@ func_as: Sconst
29512935
{ $$ = makeList2(makeString($1), makeString($3)); }
29522936
;
29532937

2954-
opt_with: WITH definition { $$ = $2; }
2938+
opt_definition: WITH definition { $$ = $2; }
29552939
| /*EMPTY*/ { $$ = NIL; }
29562940
;
29572941

@@ -3118,7 +3102,7 @@ RuleStmt: CREATE RULE name AS
31183102

31193103
RuleActionList: NOTHING { $$ = NIL; }
31203104
| RuleActionStmt { $$ = makeList1($1); }
3121-
| '(' RuleActionMulti ')' { $$ = $2; }
3105+
| '(' RuleActionMulti ')' { $$ = $2; }
31223106
;
31233107

31243108
/* the thrashing around here is to discard "empty" statements... */
@@ -3324,7 +3308,7 @@ LoadStmt: LOAD file_name
33243308
*
33253309
*****************************************************************************/
33263310

3327-
CreatedbStmt: CREATE DATABASE database_name WITH createdb_opt_list
3311+
CreatedbStmt: CREATE DATABASE database_name opt_with createdb_opt_list
33283312
{
33293313
CreatedbStmt *n = makeNode(CreatedbStmt);
33303314
List *l;
@@ -3425,7 +3409,7 @@ createdb_opt_item: LOCATION opt_equal Sconst
34253409
{
34263410
$$ = lconsi(3, makeListi1(-1));
34273411
}
3428-
| OWNER opt_equal name
3412+
| OWNER opt_equal name
34293413
{
34303414
$$ = lconsi(4, makeList1($3));
34313415
}
@@ -3437,7 +3421,8 @@ createdb_opt_item: LOCATION opt_equal Sconst
34373421

34383422
/*
34393423
* Though the equals sign doesn't match other WITH options, pg_dump uses
3440-
* equals for backward compability, and it doesn't seem worth remove it.
3424+
* equals for backward compability, and it doesn't seem worth removing it.
3425+
* 2002-02-25
34413426
*/
34423427
opt_equal: '=' { $$ = TRUE; }
34433428
| /*EMPTY*/ { $$ = FALSE; }
@@ -3496,7 +3481,7 @@ CreateDomainStmt: CREATE DOMAIN_P any_name opt_as Typename ColQualList opt_coll
34963481
n->domainname = $3;
34973482
n->typename = $5;
34983483
n->constraints = $6;
3499-
3484+
35003485
if ($7 != NULL)
35013486
elog(NOTICE,"CREATE DOMAIN / COLLATE %s not yet "
35023487
"implemented; clause ignored", $7);
@@ -3940,7 +3925,7 @@ simple_select: SELECT opt_distinct target_list
39403925
$$ = (Node *)n;
39413926
}
39423927
| select_clause UNION opt_all select_clause
3943-
{
3928+
{
39443929
$$ = makeSetOp(SETOP_UNION, $3, $1, $4);
39453930
}
39463931
| select_clause INTERSECT opt_all select_clause
@@ -3951,7 +3936,7 @@ simple_select: SELECT opt_distinct target_list
39513936
{
39523937
$$ = makeSetOp(SETOP_EXCEPT, $3, $1, $4);
39533938
}
3954-
;
3939+
;
39553940

39563941
into_clause: INTO OptTempTableName { $$ = $2; }
39573942
| /*EMPTY*/ { $$ = NULL; }
@@ -3962,22 +3947,22 @@ into_clause: INTO OptTempTableName { $$ = $2; }
39623947
* since TEMP is not a reserved word. See also OptTemp.
39633948
*/
39643949
OptTempTableName: TEMPORARY opt_table qualified_name
3965-
{
3950+
{
39663951
$$ = $3;
39673952
$$->istemp = true;
39683953
}
39693954
| TEMP opt_table qualified_name
3970-
{
3955+
{
39713956
$$ = $3;
39723957
$$->istemp = true;
39733958
}
39743959
| LOCAL TEMPORARY opt_table qualified_name
3975-
{
3960+
{
39763961
$$ = $4;
39773962
$$->istemp = true;
39783963
}
39793964
| LOCAL TEMP opt_table qualified_name
3980-
{
3965+
{
39813966
$$ = $4;
39823967
$$->istemp = true;
39833968
}
@@ -3994,12 +3979,12 @@ OptTempTableName: TEMPORARY opt_table qualified_name
39943979
$$->istemp = true;
39953980
}
39963981
| TABLE qualified_name
3997-
{
3982+
{
39983983
$$ = $2;
39993984
$$->istemp = false;
40003985
}
40013986
| qualified_name
4002-
{
3987+
{
40033988
$$ = $1;
40043989
$$->istemp = false;
40053990
}
@@ -6122,7 +6107,7 @@ insert_target_list: insert_target_list ',' insert_target_el
61226107
;
61236108

61246109
insert_target_el: target_el { $$ = $1; }
6125-
| DEFAULT {
6110+
| DEFAULT {
61266111
InsertDefault *def = makeNode(InsertDefault);
61276112
$$ = makeNode(ResTarget);
61286113
$$->name = NULL;

0 commit comments

Comments
 (0)
0