On 04.12.23 12:40, Tatsuo Ishii wrote:
> diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
> index d631ac89a9..5a77fca17f 100644
> --- a/src/backend/parser/gram.y
> +++ b/src/backend/parser/gram.y
> @@ -251,6 +251,8 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
> DefElem *defelt;
> SortBy *sortby;
> WindowDef *windef;
> + RPCommonSyntax *rpcom;
> + RPSubsetItem *rpsubset;
> JoinExpr *jexpr;
> IndexElem *ielem;
> StatsElem *selem;
> @@ -278,6 +280,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
> MergeWhenClause *mergewhen;
> struct KeyActions *keyactions;
> struct KeyAction *keyaction;
> + RPSkipTo skipto;
> }
>
> %type <node> stmt toplevel_stmt schema_stmt routine_body_stmt
It is usually not the style to add an entry for every node type to the
%union. Otherwise, we'd have hundreds of entries in there.
> @@ -866,6 +878,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query);
> %nonassoc UNBOUNDED /* ideally would have same precedence as IDENT */
> %nonassoc IDENT PARTITION RANGE ROWS GROUPS PRECEDING FOLLOWING CUBE ROLLUP
> SET KEYS OBJECT_P SCALAR VALUE_P WITH WITHOUT
> +%nonassoc MEASURES AFTER INITIAL SEEK PATTERN_P
> %left Op OPERATOR /* multi-character ops and user-defined operators */
> %left '+' '-'
> %left '*' '/' '%'
It was recently discussed that these %nonassoc should ideally all have
the same precedence. Did you consider that here?