Fix multi-row INSERT with a sublink in a target column subscript For INSERT ... VALUES with more than one row, transformInsertStmt() calls transformInsertRow() once for each VALUES row and once more for the final targetlist, and each call transformed the same raw indirection from the target column list. That doesn't work for sublinks, because transformSubLink() replaces the raw subselect with its analyzed Query, so the second pass failed with "unexpected non-SELECT command in SubLink". Other nodes that are transformed in place, such as NullTest, failed with "unrecognized node type".
Fix by giving each transformation its own copy of the indirection. Claude found this issue when reviewing another bug. Discussion: https://postgr.es/m/CA+HiwqHCZLZV_20nz3fQX+1=vyFLDMbG0_3wY=qujnkzwts...@mail.gmail.com Reviewed-by: Chao Li <[email protected]> Reviewed-by: Shihao Zhong <[email protected]> Backpatch-through: 14 Branch ------ REL_15_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/861a9c4026e6c99fbb589d20fe0b9304ef99433c Modified Files -------------- src/backend/parser/analyze.c | 8 +++++++- src/test/regress/expected/insert.out | 10 ++++++++++ src/test/regress/sql/insert.sql | 4 ++++ 3 files changed, 21 insertions(+), 1 deletion(-)
