Fix deparsing FETCH FIRST <expr> ROWS WITH TIES
Heikki Linnakangas <heikki.linnakangas@iki.fi>
Fix deparsing FETCH FIRST <expr> ROWS WITH TIES In the grammar, <expr> is a c_expr, which accepts only a limited set of integer literals and simple expressions without parens. The deparsing logic didn't quite match the grammar rule, and failed to use parens e.g. for "5::bigint". To fix, always surround the expression with parens. Would be nice to omit the parens in simple cases, but unfortunately it's non-trivial to detect such simple cases. Even if the expression is a simple literal 123 in the original query, after parse analysis it becomes a FuncExpr with COERCE_IMPLICIT_CAST rather than a simple Const. Reported-by: yonghao lee Backpatch-through: 13 Discussion: https://www.postgresql.org/message-id/18929-077d6b7093b176e2@postgresql.org
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/utils/adt/ruleutils.c | modified | +10 −0 |
| src/test/regress/expected/limit.out | modified | +17 −3 |
| src/test/regress/sql/limit.sql | modified | +4 −1 |
Discussion
- BUG #18929: After the view is created, executed query against the view definition, reported syntax error. 7 messages · 2025-05-15 → 2025-05-20