From aea1b8c44455048d9fa99dac910f47ebbb20ab41 Mon Sep 17 00:00:00 2001 From: Mehmet Yilmaz Date: Tue, 11 Nov 2025 10:04:00 +0000 Subject: [PATCH] Fix EXPLAIN output in regression tests for consistency --- .../expected/columnar_chunk_filtering.out | 3 +- .../expected/columnar_chunk_filtering_0.out | 3 +- src/test/regress/expected/columnar_paths.out | 4 +-- .../regress/expected/columnar_paths_0.out | 4 +-- src/test/regress/expected/multi_explain.out | 36 ++++++++++--------- src/test/regress/expected/multi_explain_0.out | 36 ++++++++++--------- .../regress/sql/columnar_chunk_filtering.sql | 2 ++ src/test/regress/sql/columnar_paths.sql | 2 +- src/test/regress/sql/multi_explain.sql | 6 ++-- 9 files changed, 53 insertions(+), 43 deletions(-) diff --git a/src/test/regress/expected/columnar_chunk_filtering.out b/src/test/regress/expected/columnar_chunk_filtering.out index 5f7b816a9..a4dd0e0e5 100644 --- a/src/test/regress/expected/columnar_chunk_filtering.out +++ b/src/test/regress/expected/columnar_chunk_filtering.out @@ -979,6 +979,7 @@ DETAIL: unparameterized; 1 clauses pushed down (1 row) SET hash_mem_multiplier = 1.0; +\pset footer off SELECT columnar_test_helpers.explain_with_pg16_subplan_format($Q$ EXPLAIN (analyze on, costs off, timing off, summary off, BUFFERS OFF) SELECT sum(a) FROM pushdown_test where @@ -1017,8 +1018,8 @@ CONTEXT: PL/pgSQL function columnar_test_helpers.explain_with_pg16_subplan_form -> Materialize (actual rows=100 loops=199) -> Custom Scan (ColumnarScan) on pushdown_test pushdown_test_1 (actual rows=199 loops=1) Columnar Projected Columns: a -(11 rows) +\pset footer on RESET hash_mem_multiplier; SELECT sum(a) FROM pushdown_test where ( diff --git a/src/test/regress/expected/columnar_chunk_filtering_0.out b/src/test/regress/expected/columnar_chunk_filtering_0.out index 9ce0ff008..4d6cfef2f 100644 --- a/src/test/regress/expected/columnar_chunk_filtering_0.out +++ b/src/test/regress/expected/columnar_chunk_filtering_0.out @@ -979,6 +979,7 @@ DETAIL: unparameterized; 1 clauses pushed down (1 row) SET hash_mem_multiplier = 1.0; +\pset footer off SELECT columnar_test_helpers.explain_with_pg16_subplan_format($Q$ EXPLAIN (analyze on, costs off, timing off, summary off, BUFFERS OFF) SELECT sum(a) FROM pushdown_test where @@ -1017,8 +1018,8 @@ CONTEXT: PL/pgSQL function columnar_test_helpers.explain_with_pg16_subplan_form -> Materialize (actual rows=100 loops=199) -> Custom Scan (ColumnarScan) on pushdown_test pushdown_test_1 (actual rows=199 loops=1) Columnar Projected Columns: a -(11 rows) +\pset footer on RESET hash_mem_multiplier; SELECT sum(a) FROM pushdown_test where ( diff --git a/src/test/regress/expected/columnar_paths.out b/src/test/regress/expected/columnar_paths.out index 1fdef4dd5..18edc337a 100644 --- a/src/test/regress/expected/columnar_paths.out +++ b/src/test/regress/expected/columnar_paths.out @@ -598,11 +598,11 @@ SELECT * FROM correlated WHERE x = 78910; (1 row) -- should choose index scan; selective but uncorrelated -EXPLAIN (analyze on, costs off, timing off, summary off, BUFFERS OFF) +EXPLAIN (analyze off, costs off, timing off, summary off, BUFFERS OFF) SELECT * FROM uncorrelated WHERE x = 78910; QUERY PLAN --------------------------------------------------------------------- - Index Scan using uncorrelated_idx on uncorrelated (actual rows=1 loops=1) + Index Scan using uncorrelated_idx on uncorrelated Index Cond: (x = 78910) (2 rows) diff --git a/src/test/regress/expected/columnar_paths_0.out b/src/test/regress/expected/columnar_paths_0.out index 4fd8c4535..c8100bfc3 100644 --- a/src/test/regress/expected/columnar_paths_0.out +++ b/src/test/regress/expected/columnar_paths_0.out @@ -602,11 +602,11 @@ SELECT * FROM correlated WHERE x = 78910; (1 row) -- should choose index scan; selective but uncorrelated -EXPLAIN (analyze on, costs off, timing off, summary off, BUFFERS OFF) +EXPLAIN (analyze off, costs off, timing off, summary off, BUFFERS OFF) SELECT * FROM uncorrelated WHERE x = 78910; QUERY PLAN --------------------------------------------------------------------- - Index Scan using uncorrelated_idx on uncorrelated (actual rows=1 loops=1) + Index Scan using uncorrelated_idx on uncorrelated Index Cond: (x = 78910) (2 rows) diff --git a/src/test/regress/expected/multi_explain.out b/src/test/regress/expected/multi_explain.out index 6fc2e36a3..5d80f4ce4 100644 --- a/src/test/regress/expected/multi_explain.out +++ b/src/test/regress/expected/multi_explain.out @@ -519,20 +519,22 @@ Custom Scan (Citus Adaptive) Filter: (l_partkey = 0) -- Test analyze (with TIMING FALSE and SUMMARY FALSE for consistent output) BEGIN; +select public.explain_filter(' EXPLAIN (COSTS FALSE, ANALYZE TRUE, TIMING FALSE, SUMMARY FALSE, BUFFERS OFF) UPDATE lineitem SET l_suppkey = 12 - WHERE l_orderkey = 1 AND l_partkey = 0; -Custom Scan (Citus Adaptive) (actual rows=0 loops=1) - Task Count: 1 + WHERE l_orderkey = 1 AND l_partkey = 0 + '); +Custom Scan (Citus Adaptive) (actual rows=N loops=N) + Task Count: N Tasks Shown: All -> Task - Node: host=localhost port=xxxxx dbname=regression - -> Update on lineitem_360000 lineitem (actual rows=0 loops=1) - -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (actual rows=0 loops=1) - Index Cond: (l_orderkey = 1) - Filter: (l_partkey = 0) - Rows Removed by Filter: 6 + Node: host=localhost port=N dbname=regression + -> Update on lineitem_360000 lineitem (actual rows=N loops=N) + -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (actual rows=N loops=N) + Index Cond: (l_orderkey = N) + Filter: (l_partkey = N) + Rows Removed by Filter: N ROLLBACk; -- Test delete EXPLAIN (COSTS FALSE) @@ -1387,16 +1389,16 @@ Custom Scan (Citus Adaptive) (cost=0.00..0.00 rows=0 width=0) Node: host=localhost port=xxxxx dbname=regression -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (cost=0.28..13.60 rows=4 width=5) Index Cond: (l_orderkey = 5) -EXPLAIN (ANALYZE ON, COSTS OFF, TIMING OFF, SUMMARY OFF, BUFFERS OFF) EXECUTE router_executor_query_param(5); -Custom Scan (Citus Adaptive) (actual rows=3 loops=1) - Task Count: 1 - Tuple data received from nodes: 30 bytes +select public.explain_filter('EXPLAIN (ANALYZE ON, COSTS OFF, TIMING OFF, SUMMARY OFF, BUFFERS OFF) EXECUTE router_executor_query_param(5)'); +Custom Scan (Citus Adaptive) (actual rows=N loops=N) + Task Count: N + Tuple data received from nodes: N bytes Tasks Shown: All -> Task - Tuple data received from node: 30 bytes - Node: host=localhost port=xxxxx dbname=regression - -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (actual rows=3 loops=1) - Index Cond: (l_orderkey = 5) + Tuple data received from node: N bytes + Node: host=localhost port=N dbname=regression + -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (actual rows=N loops=N) + Index Cond: (l_orderkey = N) \set VERBOSITY TERSE PREPARE multi_shard_query_param(int) AS UPDATE lineitem SET l_quantity = $1; BEGIN; diff --git a/src/test/regress/expected/multi_explain_0.out b/src/test/regress/expected/multi_explain_0.out index 5589f3d69..b7cdc0e11 100644 --- a/src/test/regress/expected/multi_explain_0.out +++ b/src/test/regress/expected/multi_explain_0.out @@ -519,20 +519,22 @@ Custom Scan (Citus Adaptive) Filter: (l_partkey = 0) -- Test analyze (with TIMING FALSE and SUMMARY FALSE for consistent output) BEGIN; +select public.explain_filter(' EXPLAIN (COSTS FALSE, ANALYZE TRUE, TIMING FALSE, SUMMARY FALSE, BUFFERS OFF) UPDATE lineitem SET l_suppkey = 12 - WHERE l_orderkey = 1 AND l_partkey = 0; -Custom Scan (Citus Adaptive) (actual rows=0 loops=1) - Task Count: 1 + WHERE l_orderkey = 1 AND l_partkey = 0 + '); +Custom Scan (Citus Adaptive) (actual rows=N loops=N) + Task Count: N Tasks Shown: All -> Task - Node: host=localhost port=xxxxx dbname=regression - -> Update on lineitem_360000 lineitem (actual rows=0 loops=1) - -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (actual rows=0 loops=1) - Index Cond: (l_orderkey = 1) - Filter: (l_partkey = 0) - Rows Removed by Filter: 6 + Node: host=localhost port=N dbname=regression + -> Update on lineitem_360000 lineitem (actual rows=N loops=N) + -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (actual rows=N loops=N) + Index Cond: (l_orderkey = N) + Filter: (l_partkey = N) + Rows Removed by Filter: N ROLLBACk; -- Test delete EXPLAIN (COSTS FALSE) @@ -1387,16 +1389,16 @@ Custom Scan (Citus Adaptive) (cost=0.00..0.00 rows=0 width=0) Node: host=localhost port=xxxxx dbname=regression -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (cost=0.28..13.60 rows=4 width=5) Index Cond: (l_orderkey = 5) -EXPLAIN (ANALYZE ON, COSTS OFF, TIMING OFF, SUMMARY OFF, BUFFERS OFF) EXECUTE router_executor_query_param(5); -Custom Scan (Citus Adaptive) (actual rows=3 loops=1) - Task Count: 1 - Tuple data received from nodes: 30 bytes +select public.explain_filter('EXPLAIN (ANALYZE ON, COSTS OFF, TIMING OFF, SUMMARY OFF, BUFFERS OFF) EXECUTE router_executor_query_param(5)'); +Custom Scan (Citus Adaptive) (actual rows=N loops=N) + Task Count: N + Tuple data received from nodes: N bytes Tasks Shown: All -> Task - Tuple data received from node: 30 bytes - Node: host=localhost port=xxxxx dbname=regression - -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (actual rows=3 loops=1) - Index Cond: (l_orderkey = 5) + Tuple data received from node: N bytes + Node: host=localhost port=N dbname=regression + -> Index Scan using lineitem_pkey_360000 on lineitem_360000 lineitem (actual rows=N loops=N) + Index Cond: (l_orderkey = N) \set VERBOSITY TERSE PREPARE multi_shard_query_param(int) AS UPDATE lineitem SET l_quantity = $1; BEGIN; diff --git a/src/test/regress/sql/columnar_chunk_filtering.sql b/src/test/regress/sql/columnar_chunk_filtering.sql index 7265f889b..5f2cf9bb9 100644 --- a/src/test/regress/sql/columnar_chunk_filtering.sql +++ b/src/test/regress/sql/columnar_chunk_filtering.sql @@ -419,6 +419,7 @@ SELECT sum(a) FROM pushdown_test where (a > random() and a <= 2000) or (a > 2000 SELECT sum(a) FROM pushdown_test where (a > random() and a <= 2000) or (a > 200000-1010); SET hash_mem_multiplier = 1.0; +\pset footer off SELECT columnar_test_helpers.explain_with_pg16_subplan_format($Q$ EXPLAIN (analyze on, costs off, timing off, summary off, BUFFERS OFF) SELECT sum(a) FROM pushdown_test where @@ -433,6 +434,7 @@ SELECT sum(a) FROM pushdown_test where or (a > 200000-2010); $Q$) as "QUERY PLAN"; +\pset footer on RESET hash_mem_multiplier; SELECT sum(a) FROM pushdown_test where ( diff --git a/src/test/regress/sql/columnar_paths.sql b/src/test/regress/sql/columnar_paths.sql index c9c1c2026..7a11db911 100644 --- a/src/test/regress/sql/columnar_paths.sql +++ b/src/test/regress/sql/columnar_paths.sql @@ -366,7 +366,7 @@ SELECT * FROM correlated WHERE x = 78910; SELECT * FROM correlated WHERE x = 78910; -- should choose index scan; selective but uncorrelated -EXPLAIN (analyze on, costs off, timing off, summary off, BUFFERS OFF) +EXPLAIN (analyze off, costs off, timing off, summary off, BUFFERS OFF) SELECT * FROM uncorrelated WHERE x = 78910; SELECT * FROM uncorrelated WHERE x = 78910; diff --git a/src/test/regress/sql/multi_explain.sql b/src/test/regress/sql/multi_explain.sql index 365fda970..437c54218 100644 --- a/src/test/regress/sql/multi_explain.sql +++ b/src/test/regress/sql/multi_explain.sql @@ -184,10 +184,12 @@ EXPLAIN (COSTS FALSE) -- Test analyze (with TIMING FALSE and SUMMARY FALSE for consistent output) BEGIN; +select public.explain_filter(' EXPLAIN (COSTS FALSE, ANALYZE TRUE, TIMING FALSE, SUMMARY FALSE, BUFFERS OFF) UPDATE lineitem SET l_suppkey = 12 - WHERE l_orderkey = 1 AND l_partkey = 0; + WHERE l_orderkey = 1 AND l_partkey = 0 + '); ROLLBACk; -- Test delete @@ -597,7 +599,7 @@ EXPLAIN (COSTS FALSE) EXECUTE real_time_executor_query; -- at least make sure to fail without crashing PREPARE router_executor_query_param(int) AS SELECT l_quantity FROM lineitem WHERE l_orderkey = $1; EXPLAIN EXECUTE router_executor_query_param(5); -EXPLAIN (ANALYZE ON, COSTS OFF, TIMING OFF, SUMMARY OFF, BUFFERS OFF) EXECUTE router_executor_query_param(5); +select public.explain_filter('EXPLAIN (ANALYZE ON, COSTS OFF, TIMING OFF, SUMMARY OFF, BUFFERS OFF) EXECUTE router_executor_query_param(5)'); \set VERBOSITY TERSE PREPARE multi_shard_query_param(int) AS UPDATE lineitem SET l_quantity = $1;