From 6369645db4bd4d7cce3b000358d864c2a9056729 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emel=20=C5=9Eim=C5=9Fek?= Date: Wed, 7 Jun 2023 12:14:34 +0300 Subject: [PATCH] Restore Test Coverage for Pushing Down Subqueries. (#6976) When we add the coordinator in metadata, reference tables gets replicated to coordinator. As a result we lose some test coverage since some queries start to run locally instead of getting pushed down. This PR adds new test cases involving distributed tables instead of reference tables for covering distributed execution in related cases. --- src/test/regress/expected/subquery_view.out | 40 +++++++++++++++++++++ src/test/regress/sql/subquery_view.sql | 18 ++++++++++ 2 files changed, 58 insertions(+) diff --git a/src/test/regress/expected/subquery_view.out b/src/test/regress/expected/subquery_view.out index 3de55b3aa..0fb4ec714 100644 --- a/src/test/regress/expected/subquery_view.out +++ b/src/test/regress/expected/subquery_view.out @@ -590,6 +590,30 @@ $Q$); Task Count: 1 (2 rows) +CREATE TABLE dist_table(text_col text, int_col int); +SELECT create_distributed_table('dist_table', 'text_col'); + create_distributed_table +--------------------------------------------------------------------- + +(1 row) + +SELECT public.coordinator_plan_with_subplans($Q$ +EXPLAIN (COSTS OFF) WITH cte AS ( + SELECT application_name AS text_col + FROM pg_stat_activity +) SELECT * FROM dist_table JOIN cte USING (text_col); +$Q$); + coordinator_plan_with_subplans +--------------------------------------------------------------------- + Custom Scan (Citus Adaptive) + -> Distributed Subplan XXX_1 + -> Function Scan on pg_stat_get_activity s + -> Distributed Subplan XXX_2 + -> Custom Scan (Citus Adaptive) + Task Count: 1 + Task Count: 4 +(7 rows) + CREATE OR REPLACE VIEW view_on_views AS SELECT pg_stat_activity.application_name, pg_locks.pid FROM pg_stat_activity, pg_locks; SELECT public.coordinator_plan_with_subplans($Q$ EXPLAIN (COSTS OFF) WITH cte AS ( @@ -603,6 +627,22 @@ $Q$); Task Count: 1 (2 rows) +SELECT public.coordinator_plan_with_subplans($Q$ +EXPLAIN (COSTS OFF) WITH cte AS ( + SELECT application_name AS text_col + FROM view_on_views +) SELECT * FROM dist_table JOIN cte USING (text_col); +$Q$); + coordinator_plan_with_subplans +--------------------------------------------------------------------- + Custom Scan (Citus Adaptive) + -> Distributed Subplan XXX_1 + -> Nested Loop + -> Function Scan on pg_stat_get_activity s + -> Function Scan on pg_lock_status l + Task Count: 4 +(6 rows) + SET client_min_messages TO WARNING; DROP SCHEMA subquery_view CASCADE; SET search_path TO public; diff --git a/src/test/regress/sql/subquery_view.sql b/src/test/regress/sql/subquery_view.sql index 23732d7e8..e5bc08c0f 100644 --- a/src/test/regress/sql/subquery_view.sql +++ b/src/test/regress/sql/subquery_view.sql @@ -434,6 +434,17 @@ EXPLAIN (COSTS OFF) WITH cte AS ( ) SELECT * FROM reference_table JOIN cte USING (text_col); $Q$); +CREATE TABLE dist_table(text_col text, int_col int); +SELECT create_distributed_table('dist_table', 'text_col'); + +SELECT public.coordinator_plan_with_subplans($Q$ +EXPLAIN (COSTS OFF) WITH cte AS ( + SELECT application_name AS text_col + FROM pg_stat_activity +) SELECT * FROM dist_table JOIN cte USING (text_col); +$Q$); + + CREATE OR REPLACE VIEW view_on_views AS SELECT pg_stat_activity.application_name, pg_locks.pid FROM pg_stat_activity, pg_locks; SELECT public.coordinator_plan_with_subplans($Q$ @@ -443,6 +454,13 @@ EXPLAIN (COSTS OFF) WITH cte AS ( ) SELECT * FROM reference_table JOIN cte USING (text_col); $Q$); +SELECT public.coordinator_plan_with_subplans($Q$ +EXPLAIN (COSTS OFF) WITH cte AS ( + SELECT application_name AS text_col + FROM view_on_views +) SELECT * FROM dist_table JOIN cte USING (text_col); +$Q$); + SET client_min_messages TO WARNING; DROP SCHEMA subquery_view CASCADE; SET search_path TO public;