Thread: pgsql: Avoid trying to lock OLD/NEW in a rule with FOR UPDATE.
Avoid trying to lock OLD/NEW in a rule with FOR UPDATE. transformLockingClause neglected to exclude the pseudo-RTEs for OLD/NEW when processing a rule's query. This led to odd errors or even crashes later on. This bug is very ancient, but it's not terribly surprising that nobody noticed, since the use-case for SELECT FOR UPDATE in a non-view rule is somewhere between thin and non-existent. Still, crashing is not OK. Per bug #17151 from Zhiyong Wu. Thanks to Masahiko Sawada for analysis of the problem. Discussion: https://postgr.es/m/17151-c03a3e6e4ec9aadb@postgresql.org Branch ------ REL_14_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/4649003933522282f03643c5a50fd2eb2a31a783 Modified Files -------------- src/backend/parser/analyze.c | 19 +++++++++++++++++-- src/include/nodes/parsenodes.h | 8 ++++---- src/test/regress/expected/rules.out | 25 +++++++++++++++++++++++++ src/test/regress/sql/rules.sql | 14 ++++++++++++++ 4 files changed, 60 insertions(+), 6 deletions(-)