remove-more-precedence.patch
application/octet-stream
Filename: remove-more-precedence.patch
Type: application/octet-stream
Part: 0
Patch
Format: unified
| File | + | − |
|---|---|---|
| src/backend/parser/gram.y | 15 | 15 |
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 0171da5f4b..e90aa731ad 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -731,24 +731,15 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
/* Precedence: lowest to highest */
-%nonassoc SET /* see relation_expr_opt_alias */
-%left UNION EXCEPT
-%left INTERSECT
-%left OR
-%left AND
-%right NOT
-%nonassoc IS ISNULL NOTNULL /* IS sets precedence for IS NULL, etc */
-%nonassoc '<' '>' '=' LESS_EQUALS GREATER_EQUALS NOT_EQUALS
-%nonassoc BETWEEN IN_P LIKE ILIKE SIMILAR NOT_LA
-%nonassoc ESCAPE /* ESCAPE must be just above LIKE/ILIKE/SIMILAR */
+
/*
* To support target_el without AS, we must give IDENT an explicit priority
- * greater than Op. We can safely assign the same priority to various
+ * lower than Op. We can safely assign the same priority to various
* unreserved keywords as needed to resolve ambiguities (this can't have any
* bad effects since obviously the keywords will still behave the same as if
* they weren't keywords). We need to do this:
* for PARTITION, RANGE, ROWS, GROUPS to support opt_existing_window_name;
- * for GENERATED so that it can follow b_expr;
+ * for UNBOUNDED, PRECEDING, FOLLOWING to support frame_bound;
*
* To support CUBE and ROLLUP in GROUP BY without reserving them, we give them
* an explicit priority lower than '(', so that a rule with CUBE '(' will shift
@@ -765,7 +756,18 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
* blame any funny behavior of UNBOUNDED on the SQL standard, though.
*/
%nonassoc UNBOUNDED /* ideally should have same precedence as IDENT */
-%nonassoc IDENT GENERATED PARTITION RANGE ROWS GROUPS PRECEDING FOLLOWING CUBE ROLLUP
+%nonassoc IDENT PARTITION RANGE ROWS GROUPS PRECEDING FOLLOWING CUBE ROLLUP
+
+%nonassoc SET /* see relation_expr_opt_alias */
+%left UNION EXCEPT
+%left INTERSECT
+%left OR
+%left AND
+%right NOT
+%nonassoc IS ISNULL NOTNULL /* IS sets precedence for IS NULL, etc */
+%nonassoc '<' '>' '=' LESS_EQUALS GREATER_EQUALS NOT_EQUALS
+%nonassoc BETWEEN IN_P LIKE ILIKE SIMILAR NOT_LA
+%nonassoc ESCAPE /* ESCAPE must be just above LIKE/ILIKE/SIMILAR */
%left Op OPERATOR /* multi-character ops and user-defined operators */
%left '+' '-'
%left '*' '/' '%'
@@ -786,8 +788,6 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
* left-associativity among the JOIN rules themselves.
*/
%left JOIN CROSS LEFT FULL RIGHT INNER_P NATURAL
-/* kluge to keep xml_whitespace_option from causing shift/reduce conflicts */
-%right PRESERVE STRIP_P
%%