From c0665adccef96c053d11609e508741abdbf3ed7b Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Mon, 2 Dec 2019 02:25:02 +0100 Subject: [PATCH] Fix errors in DML with sublinks hidden by null expressions --- .../distributed/planner/multi_router_planner.c | 2 +- src/test/regress/expected/multi_modifications.out | 12 ++++++++++++ src/test/regress/sql/multi_modifications.sql | 13 +++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/planner/multi_router_planner.c b/src/backend/distributed/planner/multi_router_planner.c index d802bfeea..14f732bdb 100644 --- a/src/backend/distributed/planner/multi_router_planner.c +++ b/src/backend/distributed/planner/multi_router_planner.c @@ -640,7 +640,7 @@ ModifyQuerySupported(Query *queryTree, Query *originalQuery, bool multiShardQuer } /* extract range table entries */ - ExtractRangeTableEntryWalker((Node *) queryTree, &rangeTableList); + ExtractRangeTableEntryWalker((Node *) originalQuery, &rangeTableList); foreach(rangeTableCell, rangeTableList) { diff --git a/src/test/regress/expected/multi_modifications.out b/src/test/regress/expected/multi_modifications.out index eb27aa44e..f1a9813d9 100644 --- a/src/test/regress/expected/multi_modifications.out +++ b/src/test/regress/expected/multi_modifications.out @@ -1292,6 +1292,18 @@ HINT: Try rewriting your queries with 'INSERT INTO ... SELECT' syntax. INSERT INTO summary_table (id) VALUES ((SELECT id FROM reference_summary_table)); ERROR: subqueries are not supported within INSERT queries HINT: Try rewriting your queries with 'INSERT INTO ... SELECT' syntax. +-- subqueries that would be eliminated by = null clauses +DELETE FROM summary_table WHERE ( + SELECT 1 FROM pg_catalog.pg_statio_sys_sequences +) = null; +DELETE FROM summary_table WHERE ( + SELECT (select action_statement from information_schema.triggers) + FROM pg_catalog.pg_statio_sys_sequences +) = null; +ERROR: relation pg_namespace is not distributed +DELETE FROM summary_table WHERE id < ( + SELECT 0 FROM pg_dist_node +); DROP TABLE raw_table; DROP TABLE summary_table; DROP TABLE reference_raw_table; diff --git a/src/test/regress/sql/multi_modifications.sql b/src/test/regress/sql/multi_modifications.sql index 035dade76..4b1010fbc 100644 --- a/src/test/regress/sql/multi_modifications.sql +++ b/src/test/regress/sql/multi_modifications.sql @@ -867,6 +867,19 @@ INSERT INTO summary_table (id) VALUES (5), ((SELECT id FROM summary_table)); INSERT INTO reference_summary_table (id) VALUES ((SELECT id FROM summary_table)); INSERT INTO summary_table (id) VALUES ((SELECT id FROM reference_summary_table)); +-- subqueries that would be eliminated by = null clauses +DELETE FROM summary_table WHERE ( + SELECT 1 FROM pg_catalog.pg_statio_sys_sequences +) = null; +DELETE FROM summary_table WHERE ( + SELECT (select action_statement from information_schema.triggers) + FROM pg_catalog.pg_statio_sys_sequences +) = null; + +DELETE FROM summary_table WHERE id < ( + SELECT 0 FROM pg_dist_node +); + DROP TABLE raw_table; DROP TABLE summary_table; DROP TABLE reference_raw_table;