I wrote: > Comparing the precedence list in the grammar with the doc table, > the only omissions I feel bad about are AT and COLLATE.
Concretely, as attached. regards, tom lane
diff --git a/doc/src/sgml/syntax.sgml b/doc/src/sgml/syntax.sgml index 37817d0638..4dfbbd0862 100644 --- a/doc/src/sgml/syntax.sgml +++ b/doc/src/sgml/syntax.sgml @@ -1065,6 +1065,18 @@ CAST ( '<replaceable>string</replaceable>' AS <replaceable>type</replaceable> ) <entry>unary plus, unary minus</entry> </row> + <row> + <entry><token>COLLATE</token></entry> + <entry>left</entry> + <entry>collation selection</entry> + </row> + + <row> + <entry><token>AT</token></entry> + <entry>left</entry> + <entry><literal>AT TIME ZONE</literal>, <literal>AT LOCAL</literal></entry> + </row> + <row> <entry><token>^</token></entry> <entry>left</entry> diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y index c224df4ecc..8c00b119ec 100644 --- a/src/backend/parser/gram.y +++ b/src/backend/parser/gram.y @@ -858,7 +858,7 @@ static Node *makeRecursiveViewSelect(char *relname, List *aliases, Node *query); %left '*' '/' '%' %left '^' /* Unary Operators */ -%left AT /* sets precedence for AT TIME ZONE */ +%left AT /* sets precedence for AT TIME ZONE, AT LOCAL */ %left COLLATE %right UMINUS %left '[' ']'