Fix UPDATE/DELETE ... WHERE CURRENT OF on a table with virtual columns.
Dean Rasheed <dean.a.rasheed@gmail.com>
Author:
Dean Rasheed <dean.a.rasheed@gmail.com>
Date: 2026-04-22T10:50:17Z
Releases:
19 (unreleased)
Fix UPDATE/DELETE ... WHERE CURRENT OF on a table with virtual columns. Formerly, attempting to use WHERE CURRENT OF to update or delete from a table with virtual generated columns would fail with the error "WHERE CURRENT OF on a view is not implemented". The reason was that the check preventing WHERE CURRENT OF from being used on a view was in replace_rte_variables_mutator(), which presumed that the only way it could get there was as part of rewriting a query on a view. That is no longer the case, since replace_rte_variables() is now also used to expand the virtual generated columns of a table. Fix by doing the check for WHERE CURRENT OF on a view at parse time. This is safe, since it is no longer possible for the relkind to change after the query is parsed (as of b23cd185f). Reported-by: Satyanarayana Narlapuram <satyanarlapuram@gmail.com> Author: Satyanarayana Narlapuram <satyanarlapuram@gmail.com> Author: Dean Rasheed <dean.a.rasheed@gmail.com> Discussion: https://postgr.es/m/CAHg+QDc_TwzSgb=B_QgNLt3mvZdmRK23rLb+RkanSQkDF40GjA@mail.gmail.com Backpatch-through: 18
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/parser/analyze.c | modified | +16 −0 |
| src/backend/rewrite/rewriteManip.c | modified | +0 −19 |
| src/test/regress/expected/generated_virtual.out | modified | +30 −0 |
| src/test/regress/expected/portals.out | modified | +11 −0 |
| src/test/regress/sql/generated_virtual.sql | modified | +15 −0 |
| src/test/regress/sql/portals.sql | modified | +5 −0 |
Discussion
- [BUG]: WHERE CURRENT OF cursor fail on tables that have virtual generated columns 6 messages · 2026-04-17 → 2026-04-22