Thread: WITH handling in CREATE USER, etc
I noticed that gram.y doesn't handle with optional WITH in CREATE USER, ALTER USER, CREATE GROUP very well. It duplicates the actions, rather than creating an optional WITH clause. I have fixed this, and made WITH in CREATE DATABASE optional for constency. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania19026
On Mon, 17 Jun 2002, Bruce Momjian wrote: > I noticed that gram.y doesn't handle with optional WITH in CREATE USER, > ALTER USER, CREATE GROUP very well. It duplicates the actions, rather > than creating an optional WITH clause. Care to elaborate? Vince. -- ========================================================================== Vince Vielhaber -- KA8CSH email: vev@michvhf.com http://www.pop4.net 56K Nationwide Dialup from $16.00/mo atPop4 Networking Online Campground Directory http://www.camping-usa.com Online Giftshop Superstore http://www.cloudninegifts.com ==========================================================================
Vince Vielhaber wrote: > On Mon, 17 Jun 2002, Bruce Momjian wrote: > > > I noticed that gram.y doesn't handle with optional WITH in CREATE USER, > > ALTER USER, CREATE GROUP very well. It duplicates the actions, rather > > than creating an optional WITH clause. > > Care to elaborate? Sure, here is a sample where there were two rules that were merged into one with opt_with: Index: gram.y =================================================================== RCS file: /cvsroot/pgsql/src/backend/parser/gram.y,v retrieving revision 2.323 retrieving revision 2.324 diff -c -r2.323 -r2.324 *** gram.y 15 Jun 2002 03:00:03 -0000 2.323 --- gram.y 17 Jun 2002 05:40:32 -0000 2.324 *************** *** 518,537 **** * *****************************************************************************/ ! CreateUserStmt: CREATE USER UserId OptUserList ! { ! CreateUserStmt *n = makeNode(CreateUserStmt); ! n->user = $3; ! n->options = $4; ! $$ = (Node *)n; ! } ! | CREATE USER UserId WITH OptUserList { CreateUserStmt *n = makeNode(CreateUserStmt); n->user = $3; n->options = $5; $$ =(Node *)n; ! } ; /***************************************************************************** --- 518,535 ---- * *****************************************************************************/ ! CreateUserStmt: CREATE USER UserId opt_with OptUserList { CreateUserStmt *n = makeNode(CreateUserStmt); n->user = $3; n->options = $5; $$ =(Node *)n; ! } ! ; ! ! ! opt_with: WITH { $$ = TRUE; } ! | /*EMPTY*/ { $$ = TRUE; } ; /*****************************************************************************
On Mon, 17 Jun 2002, Bruce Momjian wrote: > Vince Vielhaber wrote: > > On Mon, 17 Jun 2002, Bruce Momjian wrote: > > > > > I noticed that gram.y doesn't handle with optional WITH in CREATE USER, > > > ALTER USER, CREATE GROUP very well. It duplicates the actions, rather > > > than creating an optional WITH clause. > > > > Care to elaborate? > > Sure, here is a sample where there were two rules that were merged into > one with opt_with: That makes sense. Vince. -- ========================================================================== Vince Vielhaber -- KA8CSH email: vev@michvhf.com http://www.pop4.net 56K Nationwide Dialup from $16.00/mo atPop4 Networking Online Campground Directory http://www.camping-usa.com Online Giftshop Superstore http://www.cloudninegifts.com ==========================================================================