From 0d9e5bde9c007e2821bf2fcde50bbdfcba6bf2e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philip=20Dub=C3=A9?= Date: Fri, 26 Jul 2019 00:12:28 +0000 Subject: [PATCH] window_functions: 'ORDER BY time' when using lag(time) & coordinator_plan --- .../regress/expected/window_functions.out | 34 +++++++------------ .../regress/expected/window_functions_0.out | 24 ++++--------- src/test/regress/sql/window_functions.sql | 4 ++- 3 files changed, 22 insertions(+), 40 deletions(-) diff --git a/src/test/regress/expected/window_functions.out b/src/test/regress/expected/window_functions.out index f9e004cc8..7efbe8ee3 100644 --- a/src/test/regress/expected/window_functions.out +++ b/src/test/regress/expected/window_functions.out @@ -302,7 +302,7 @@ SELECT COUNT(*) OVER (PARTITION BY user_id, user_id + 1), rank() OVER (PARTITION BY user_id) as cnt1, COUNT(*) OVER (PARTITION BY user_id, abs(value_1 - value_2)) as cnt2, - date_trunc('min', lag(time) OVER (PARTITION BY user_id)) as datee, + date_trunc('min', lag(time) OVER (PARTITION BY user_id ORDER BY time)) as datee, rank() OVER my_win as rnnk, avg(CASE WHEN user_id > 4 @@ -759,6 +759,7 @@ ORDER BY 1 | 3.2857142857142857 | 1.00000000000000000000 (6 rows) +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT user_id, @@ -770,27 +771,16 @@ GROUP BY 1 ORDER BY 3 DESC, 2 DESC, 1 DESC; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------ +$Q$); + coordinator_plan +------------------------------------------------------------------------------------ Sort Sort Key: remote_scan.avg_1 DESC, remote_scan.avg DESC, remote_scan.user_id DESC -> HashAggregate Group Key: remote_scan.user_id - -> Custom Scan (Citus Real-Time) + -> Custom Scan (Citus Adaptive) Task Count: 4 - Tasks Shown: One of 4 - -> Task - Node: host=localhost port=57637 dbname=regression - -> WindowAgg - -> Sort - Sort Key: users_table.user_id, (min(users_table.user_id)), (avg(users_table.value_1)) - -> WindowAgg - -> Sort - Sort Key: users_table.user_id, (max(users_table.user_id)), (min(users_table.value_2)) - -> HashAggregate - Group Key: users_table.user_id - -> Seq Scan on users_table_1400256 users_table -(18 rows) +(6 rows) SELECT user_id, @@ -963,7 +953,7 @@ ORDER BY user_id, avg(value_1) DESC; Sort Key: remote_scan.user_id, (pg_catalog.sum(((pg_catalog.sum(remote_scan.avg) / pg_catalog.sum(remote_scan.avg_1)))) / pg_catalog.sum(remote_scan.rank)) DESC -> HashAggregate Group Key: remote_scan.user_id, remote_scan.worker_column_5 - -> Custom Scan (Citus Real-Time) + -> Custom Scan (Citus Adaptive) Task Count: 4 Tasks Shown: One of 4 -> Task @@ -1039,7 +1029,7 @@ LIMIT 5; Sort Key: remote_scan.user_id, (pg_catalog.sum(((pg_catalog.sum(remote_scan.avg) / pg_catalog.sum(remote_scan.avg_1)))) / pg_catalog.sum(remote_scan.rank)) DESC -> HashAggregate Group Key: remote_scan.user_id, remote_scan.worker_column_5 - -> Custom Scan (Citus Real-Time) + -> Custom Scan (Citus Adaptive) Task Count: 4 Tasks Shown: One of 4 -> Task @@ -1069,7 +1059,7 @@ LIMIT 5; Sort Key: remote_scan.user_id, (pg_catalog.sum(((pg_catalog.sum(remote_scan.avg) / pg_catalog.sum(remote_scan.avg_1)))) / pg_catalog.sum(remote_scan.rank)) DESC -> HashAggregate Group Key: remote_scan.user_id, remote_scan.worker_column_5 - -> Custom Scan (Citus Real-Time) + -> Custom Scan (Citus Adaptive) Task Count: 4 Tasks Shown: One of 4 -> Task @@ -1099,7 +1089,7 @@ LIMIT 5; Sort Key: remote_scan.user_id, (pg_catalog.sum(((pg_catalog.sum(remote_scan.avg) / pg_catalog.sum(remote_scan.avg_1)))) / pg_catalog.sum(remote_scan.rank)) DESC -> HashAggregate Group Key: remote_scan.user_id, remote_scan.worker_column_5 - -> Custom Scan (Citus Real-Time) + -> Custom Scan (Citus Adaptive) Task Count: 4 Tasks Shown: One of 4 -> Task @@ -1129,7 +1119,7 @@ LIMIT 5; Sort Key: remote_scan.user_id, (pg_catalog.sum(((pg_catalog.sum(remote_scan.avg) / pg_catalog.sum(remote_scan.avg_1)))) / pg_catalog.sum(remote_scan.rank)) DESC -> HashAggregate Group Key: remote_scan.user_id, remote_scan.worker_column_5 - -> Custom Scan (Citus Real-Time) + -> Custom Scan (Citus Adaptive) Task Count: 4 Tasks Shown: One of 4 -> Task diff --git a/src/test/regress/expected/window_functions_0.out b/src/test/regress/expected/window_functions_0.out index 185765ef4..de4d2f234 100644 --- a/src/test/regress/expected/window_functions_0.out +++ b/src/test/regress/expected/window_functions_0.out @@ -302,7 +302,7 @@ SELECT COUNT(*) OVER (PARTITION BY user_id, user_id + 1), rank() OVER (PARTITION BY user_id) as cnt1, COUNT(*) OVER (PARTITION BY user_id, abs(value_1 - value_2)) as cnt2, - date_trunc('min', lag(time) OVER (PARTITION BY user_id)) as datee, + date_trunc('min', lag(time) OVER (PARTITION BY user_id ORDER BY time)) as datee, rank() OVER my_win as rnnk, avg(CASE WHEN user_id > 4 @@ -558,6 +558,7 @@ ORDER BY 1 | 3.2857142857142857 | 1.00000000000000000000 (6 rows) +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT user_id, @@ -569,27 +570,16 @@ GROUP BY 1 ORDER BY 3 DESC, 2 DESC, 1 DESC; - QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------ +$Q$); + coordinator_plan +------------------------------------------------------------------------------------ Sort Sort Key: remote_scan.avg_1 DESC, remote_scan.avg DESC, remote_scan.user_id DESC -> HashAggregate Group Key: remote_scan.user_id - -> Custom Scan (Citus Real-Time) + -> Custom Scan (Citus Adaptive) Task Count: 4 - Tasks Shown: One of 4 - -> Task - Node: host=localhost port=57637 dbname=regression - -> WindowAgg - -> Sort - Sort Key: users_table.user_id, (min(users_table.user_id)), (avg(users_table.value_1)) - -> WindowAgg - -> Sort - Sort Key: users_table.user_id, (max(users_table.user_id)), (min(users_table.value_2)) - -> HashAggregate - Group Key: users_table.user_id - -> Seq Scan on users_table_1400256 users_table -(18 rows) +(6 rows) SELECT user_id, diff --git a/src/test/regress/sql/window_functions.sql b/src/test/regress/sql/window_functions.sql index 45e37372e..69f208d89 100644 --- a/src/test/regress/sql/window_functions.sql +++ b/src/test/regress/sql/window_functions.sql @@ -170,7 +170,7 @@ SELECT COUNT(*) OVER (PARTITION BY user_id, user_id + 1), rank() OVER (PARTITION BY user_id) as cnt1, COUNT(*) OVER (PARTITION BY user_id, abs(value_1 - value_2)) as cnt2, - date_trunc('min', lag(time) OVER (PARTITION BY user_id)) as datee, + date_trunc('min', lag(time) OVER (PARTITION BY user_id ORDER BY time)) as datee, rank() OVER my_win as rnnk, avg(CASE WHEN user_id > 4 @@ -336,6 +336,7 @@ GROUP BY ORDER BY 3 DESC, 2 DESC, 1 DESC; +SELECT coordinator_plan($Q$ EXPLAIN (COSTS FALSE) SELECT user_id, @@ -347,6 +348,7 @@ GROUP BY 1 ORDER BY 3 DESC, 2 DESC, 1 DESC; +$Q$); SELECT user_id,