This patch completes the following TODO item:
* Remove brackets as multi-statement rule grouping, must use parens
One question I have is whether this change is needed:
%left '.'
- %left '[' ']'
%left '(' ')'
I believe the logic for removal of brackets for multi-statement rules is
that brackets are just weird in this usage. :-)
--
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, Pennsylvania 19026
Index: doc/src/sgml/ref/create_rule.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/create_rule.sgml,v
retrieving revision 1.31
diff -c -r1.31 create_rule.sgml
*** doc/src/sgml/ref/create_rule.sgml 24 Jan 2002 18:28:15 -0000 1.31
--- doc/src/sgml/ref/create_rule.sgml 8 Mar 2002 04:00:46 -0000
***************
*** 32,39 ****
<replaceable class="parameter">query</replaceable>
|
( <replaceable class="parameter">query</replaceable> ; <replaceable class="parameter">query</replaceable> ... )
- |
- [ <replaceable class="parameter">query</replaceable> ; <replaceable class="parameter">query</replaceable> ... ]
</synopsis>
<refsect2 id="R2-SQL-CREATERULE-1">
--- 32,37 ----
***************
*** 177,191 ****
</para>
<para>
! The <replaceable class="parameter">action</replaceable> part of the rule
! can consist of one or more queries. To write multiple queries, surround
! them with either parentheses or square brackets. Such queries will be
! performed in the specified order (whereas there are no guarantees about
! the execution order of multiple rules for an object). The
! <replaceable class="parameter">action</replaceable> can also be NOTHING
! indicating no action. Thus, a DO INSTEAD NOTHING rule suppresses the
! original query from executing (when its condition is true); a DO NOTHING
! rule is useless.
</para>
<para>
--- 175,189 ----
</para>
<para>
! The <replaceable class="parameter">action</replaceable> part of the
! rule can consist of one or more queries. To write multiple queries,
! surround them with parentheses. Such queries will be performed in the
! specified order (whereas there are no guarantees about the execution
! order of multiple rules for an object). The <replaceable
! class="parameter">action</replaceable> can also be NOTHING indicating
! no action. Thus, a DO INSTEAD NOTHING rule suppresses the original
! query from executing (when its condition is true); a DO NOTHING rule
! is useless.
</para>
<para>
Index: src/backend/parser/gram.y
===================================================================
RCS file: /cvsroot/pgsql/src/backend/parser/gram.y,v
retrieving revision 2.287
diff -c -r2.287 gram.y
*** src/backend/parser/gram.y 7 Mar 2002 16:35:35 -0000 2.287
--- src/backend/parser/gram.y 8 Mar 2002 04:01:02 -0000
***************
*** 407,413 ****
%left AT ZONE /* sets precedence for AT TIME ZONE */
%right UMINUS
%left '.'
- %left '[' ']'
%left '(' ')'
%left TYPECAST
%%
--- 407,412 ----
***************
*** 2864,2870 ****
RuleActionList: NOTHING { $$ = NIL; }
| RuleActionStmt { $$ = makeList1($1); }
- | '[' RuleActionMulti ']' { $$ = $2; }
| '(' RuleActionMulti ')' { $$ = $2; }
;
--- 2863,2868 ----
Index: src/interfaces/ecpg/preproc/preproc.y
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/ecpg/preproc/preproc.y,v
retrieving revision 1.180
diff -c -r1.180 preproc.y
*** src/interfaces/ecpg/preproc/preproc.y 6 Mar 2002 10:10:52 -0000 1.180
--- src/interfaces/ecpg/preproc/preproc.y 8 Mar 2002 04:01:29 -0000
***************
*** 273,279 ****
%left AT ZONE
%right UMINUS
%left '.'
- %left '[' ']'
%left '(' ')'
%left TYPECAST
--- 273,278 ----
***************
*** 2153,2159 ****
RuleActionList: NOTHING { $$ = make_str("nothing"); }
| RuleActionStmt { $$ = $1; }
- | '[' RuleActionMulti ']' { $$ = cat_str(3, make_str("["), $2, make_str("]")); }
| '(' RuleActionMulti ')' { $$ = cat_str(3, make_str("("), $2, make_str(")")); }
;
--- 2152,2157 ----