Fix under-parenthesized display of AT TIME ZONE constructs.
Tom Lane <tgl@sss.pgh.pa.us>
Fix under-parenthesized display of AT TIME ZONE constructs. In commit 40c24bfef, I forgot to use get_rule_expr_paren() for the arguments of AT TIME ZONE, resulting in possibly not printing parens for expressions that need it. But get_rule_expr_paren() wouldn't have gotten it right anyway, because isSimpleNode() hadn't been taught that COERCE_SQL_SYNTAX parent nodes don't guarantee sufficient parentheses. Improve all that. Also use this methodology for F_IS_NORMALIZED, so that we don't print useless parens for that. In passing, remove a comment that was obsoleted later. Per report from Duncan Sands. Back-patch to v14 where this code came in. (Before that, we didn't try to print AT TIME ZONE that way, so there was no bug just ugliness.) Discussion: https://postgr.es/m/f41566aa-a057-6628-4b7c-b48770ecb84a@deepbluecap.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/adt/ruleutils.c | modified | +14 −14 |
| src/test/regress/expected/create_view.out | modified | +5 −3 |
| src/test/regress/sql/create_view.sql | modified | +1 −0 |
Discussion
- pg_catalog.pg_get_viewdef pretty-print removes important parentheses 2 messages · 2022-12-01