Re: Missing docs on AT TIME ZONE precedence?

Andrew Dunstan <andrew@dunslane.net>

From: Andrew Dunstan <andrew@dunslane.net>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>, Bruce Momjian <bruce@momjian.us>, Shay Rojansky <roji@roji.org>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2023-11-28T15:48:00Z
Lists: pgsql-hackers
On 2023-11-28 Tu 10:27, Tom Lane wrote:
> Andrew Dunstan <andrew@dunslane.net> writes:
>> Looks good. Perhaps the comments above the UNBOUNDED precedence setting
>> (esp. the first paragraph) need strengthening, with a stern injunction
>> to avoid different precedence for non-reserved keywords if at all possible.
> OK.  How about rewriting that first para like this?
>
>   * Sometimes it is necessary to assign precedence to keywords that are not
>   * really part of the operator hierarchy, in order to resolve grammar
>   * ambiguities.  It's best to avoid doing so whenever possible, because such
>   * assignments have global effect and may hide ambiguities besides the one
>   * you intended to solve.  (Attaching a precedence to a single rule with
>   * %prec is far safer and should be preferred.)  If you must give precedence
>   * to a new keyword, try very hard to give it the same precedence as IDENT.
>   * If the keyword has IDENT's precedence then it clearly acts the same as
>   * non-keywords and other similar keywords, thus reducing the risk of
>   * unexpected precedence effects.
>   *
>   * We used to need to assign IDENT an explicit precedence just less than Op,
>   * to support target_el without AS.  While that's not really necessary since
>   * we removed postfix operators, we continue to do so because it provides a
>   * reference point for a precedence level that we can assign to other
>   * keywords that lack a natural precedence level.
>
> 			


LGTM. Thanks.


cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com




Commits

  1. Clean up usage of bison precedence for non-operator keywords.

  2. Doc: list AT TIME ZONE and COLLATE in operator precedence table.

  3. SQL/JSON: support the IS JSON predicate