diff --git a/src/backend/distributed/planner/multi_router_planner.c b/src/backend/distributed/planner/multi_router_planner.c index f410ef55b..0700d11f7 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 8367a5b01..617efb0c1 100644 --- a/src/test/regress/expected/multi_modifications.out +++ b/src/test/regress/expected/multi_modifications.out @@ -1285,6 +1285,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 38247bdf0..f676c4ed4 100644 --- a/src/test/regress/sql/multi_modifications.sql +++ b/src/test/regress/sql/multi_modifications.sql @@ -858,6 +858,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;