mirror of https://github.com/citusdata/citus.git
Better format subquery regression tests (#1340)
* Style fix for subquery pushdown regression tests With this commit we intented a more consistent style for the regression tests we've added in the - multi_subquery_union.sql - multi_subquery_complex_queries.sql - multi_subquery_behavioral_analytics.sql * Enable the tests that are temporarily commented This commit enables some of the regression tests that were commented out until all the development is done.pull/1348/head
parent
0935ab570f
commit
bef8811673
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -191,32 +191,40 @@ FROM (
|
|||
( SELECT user_id,
|
||||
sum(counter)
|
||||
FROM
|
||||
( SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM users_table
|
||||
GROUP BY user_id
|
||||
|
||||
(SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
users_table
|
||||
GROUP BY
|
||||
user_id
|
||||
UNION
|
||||
SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM events_table
|
||||
GROUP BY user_id ) user_id_1
|
||||
GROUP BY user_id)
|
||||
SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
events_table
|
||||
GROUP BY
|
||||
user_id) user_id_1
|
||||
GROUP BY
|
||||
user_id)
|
||||
UNION
|
||||
( SELECT user_id,
|
||||
sum(counter)
|
||||
(SELECT
|
||||
user_id, sum(counter)
|
||||
FROM
|
||||
( SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM users_table
|
||||
GROUP BY user_id
|
||||
|
||||
(SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
users_table
|
||||
GROUP BY
|
||||
user_id
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter
|
||||
|
||||
FROM events_table
|
||||
GROUP BY user_id) user_id_2
|
||||
GROUP BY user_id)) AS ftop
|
||||
SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
events_table
|
||||
GROUP BY
|
||||
user_id) user_id_2
|
||||
GROUP BY
|
||||
user_id)) AS ftop
|
||||
ORDER BY 2 DESC, 1 DESC
|
||||
LIMIT 5;
|
||||
user_id | sum
|
||||
|
@ -233,40 +241,45 @@ SELECT ("final_query"."event_types") as types, count(*) AS sumOfEventType
|
|||
FROM
|
||||
( SELECT *, random()
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
( SELECT "t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event")
|
||||
ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
( SELECT "t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15) ) events_subquery_1)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15)) events_subquery_1)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) ) events_subquery_2)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) ) events_subquery_2)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) ) events_subquery_3)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) ) events_subquery_3)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13)) events_subquery_4)) t1
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13)) events_subquery_4)) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
) as final_query
|
||||
GROUP BY types
|
||||
|
@ -283,36 +296,41 @@ ORDER BY types;
|
|||
-- but wrapper unions are removed from the inner part of the query
|
||||
SELECT ("final_query"."event_types") as types, count(*) AS sumOfEventType
|
||||
FROM
|
||||
( SELECT *, random()
|
||||
(SELECT *, random()
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
(SELECT
|
||||
"t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event")
|
||||
ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15))
|
||||
(SELECT
|
||||
"t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM(
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15))
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
) as final_query
|
||||
GROUP BY types
|
||||
|
@ -328,35 +346,37 @@ ORDER BY types;
|
|||
-- again excatly the same query with top level wrapper removed
|
||||
SELECT ("q"."event_types") as types, count(*) AS sumOfEventType
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
( SELECT "t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event")
|
||||
ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
( SELECT "t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15)
|
||||
)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15))
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
GROUP BY types
|
||||
ORDER BY types;
|
||||
|
@ -375,27 +395,36 @@ FROM
|
|||
FROM
|
||||
( SELECT "t1"."user_id"
|
||||
FROM (
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15)
|
||||
)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15))
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
) AS t) "q" ORDER BY 1 LIMIT 5;
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
) AS t) "q"
|
||||
ORDER BY 1
|
||||
LIMIT 5;
|
||||
user_id
|
||||
---------
|
||||
0
|
||||
|
@ -408,35 +437,37 @@ FROM
|
|||
-- a very similar query UNION ALL
|
||||
SELECT ("q"."event_types") as types, count(*) AS sumOfEventType
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
( SELECT "t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event")
|
||||
ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
( SELECT "t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15)
|
||||
)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION ALL
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION ALL
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
GROUP BY types
|
||||
ORDER BY types;
|
||||
|
@ -551,13 +582,13 @@ FROM
|
|||
(SELECT value_3, user_id FROM events_table where event_type IN (1, 2, 3, 4, 5))
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (6, 7, 8, 9, 10))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (16, 17, 18, 19, 20))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (21, 22, 23, 24, 25))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (26, 27, 28, 29, 30))
|
||||
) b
|
||||
ORDER BY 1 DESC, 2 DESC
|
||||
|
@ -579,13 +610,13 @@ FROM
|
|||
(SELECT value_3, user_id FROM events_table where event_type IN (1, 2, 3, 4, 5))
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (6, 7, 8, 9, 10))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (16, 17, 18, 19, 20))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (21, 22, 23, 24, 25))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (26, 27, 28, 29, 30))
|
||||
) b
|
||||
GROUP BY user_id
|
||||
|
@ -619,9 +650,9 @@ FROM (
|
|||
SELECT user_id, sum(value_2) AS counter FROM users_table where value_1 < 40 and value_1 < 60 GROUP BY user_id HAVING sum(value_2) > 500
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table where value_1 < 60 and value_1 < 80 GROUP BY user_id HAVING sum(value_2) > 500
|
||||
UNION
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table where value_1 < 80 and value_1 < 100 GROUP BY user_id HAVING sum(value_2) > 500
|
||||
UNION
|
||||
UNION
|
||||
SELECT 2 * user_id, sum(value_2) AS counter FROM users_table where value_1 < 100 and value_1 < 120 GROUP BY user_id HAVING sum(value_2) > 500
|
||||
) user_id
|
||||
GROUP BY user_id ORDER BY 1 DESC LIMIT 5;
|
||||
|
@ -634,7 +665,7 @@ SELECT * FROM
|
|||
SELECT user_id, sum(counter)
|
||||
FROM (
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table GROUP BY user_id
|
||||
UNION
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter FROM events_table GROUP BY user_id
|
||||
) user_id_1
|
||||
GROUP BY user_id
|
||||
|
@ -655,7 +686,7 @@ DETAIL: Intersect and Except are currently unsupported
|
|||
SELECT user_id, sum(counter)
|
||||
FROM (
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table GROUP BY user_id
|
||||
UNION
|
||||
UNION
|
||||
SELECT events_table.user_id, sum(events_table.value_2) AS counter FROM events_table, users_table WHERE users_table.user_id > events_table.user_id GROUP BY 1
|
||||
) user_id
|
||||
GROUP BY user_id;
|
||||
|
@ -668,7 +699,7 @@ SELECT * FROM
|
|||
SELECT user_id, sum(counter)
|
||||
FROM (
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table GROUP BY user_id
|
||||
UNION
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter FROM events_table GROUP BY user_id
|
||||
) user_id_1
|
||||
GROUP BY user_id
|
||||
|
@ -701,32 +732,40 @@ FROM (
|
|||
( SELECT user_id,
|
||||
sum(counter)
|
||||
FROM
|
||||
( SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM users_table
|
||||
GROUP BY user_id
|
||||
|
||||
(SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
users_table
|
||||
GROUP BY
|
||||
user_id
|
||||
UNION
|
||||
SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM events_table
|
||||
GROUP BY user_id ) user_id_1
|
||||
GROUP BY user_id)
|
||||
SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
events_table
|
||||
GROUP BY
|
||||
user_id) user_id_1
|
||||
GROUP BY
|
||||
user_id)
|
||||
UNION
|
||||
( SELECT user_id,
|
||||
sum(counter)
|
||||
(SELECT
|
||||
user_id, sum(counter)
|
||||
FROM
|
||||
( SELECT sum(value_2) AS counter,
|
||||
user_id
|
||||
FROM users_table
|
||||
GROUP BY user_id
|
||||
|
||||
(SELECT
|
||||
sum(value_2) AS counter, user_id
|
||||
FROM
|
||||
users_table
|
||||
GROUP BY
|
||||
user_id
|
||||
UNION
|
||||
SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM events_table
|
||||
GROUP BY user_id) user_id_2
|
||||
GROUP BY user_id)) AS ftop;
|
||||
SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
events_table
|
||||
GROUP BY
|
||||
user_id) user_id_2
|
||||
GROUP BY
|
||||
user_id)) AS ftop;
|
||||
ERROR: cannot pushdown the subquery since all leaves of the UNION does not include partition key at the same position
|
||||
DETAIL: Each leaf query of the UNION should return partition key at the same position on its target list.
|
||||
-- some UNION all queries that are going to be pulled up
|
||||
|
@ -748,13 +787,13 @@ FROM
|
|||
(SELECT value_3, user_id FROM events_table where event_type IN (1, 2, 3, 4, 5))
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (6, 7, 8, 9, 10))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (16, 17, 18, 19, 20))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (21, 22, 23, 24, 25))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, value_2 FROM events_table where event_type IN (26, 27, 28, 29, 30))
|
||||
) b
|
||||
ORDER BY 1 DESC, 2 DESC
|
||||
|
@ -802,44 +841,59 @@ FROM
|
|||
(SELECT value_3, user_id FROM events_table where event_type IN (1, 2, 3, 4, 5))
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (6, 7, 8, 9, 10))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (16, 17, 18, 19, 20))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (21, 22, 23, 24, 25))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT 1, 2)
|
||||
) b
|
||||
ORDER BY 1 DESC, 2 DESC
|
||||
LIMIT 5;
|
||||
ERROR: cannot push down this subquery
|
||||
DETAIL: Subqueries without relations are unsupported
|
||||
SELECT ("q"."event_types") as types, count(*) AS sumOfEventType
|
||||
SELECT ("final_query"."event_types") as types, count(*) AS sumOfEventType
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
( SELECT *, random()
|
||||
FROM
|
||||
( SELECT "t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event") ORDER BY time ASC, event DESC) AS collected_events
|
||||
( SELECT "t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT "events"."user_id", "events"."time", 0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15)
|
||||
)
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION
|
||||
(SELECT 1, now(), 3 AS event)) t1
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15)) events_subquery_1)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) ) events_subquery_2)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) ) events_subquery_3)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT 1, now(), 3 AS event) events_subquery_4)) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
) as final_query
|
||||
GROUP BY types
|
||||
ORDER BY types;
|
||||
ERROR: cannot push down this subquery
|
||||
|
|
|
@ -170,32 +170,29 @@ FROM
|
|||
GROUP BY
|
||||
l_orderkey) AS unit_prices;
|
||||
|
||||
-- Check that we error out if there is union all.
|
||||
-- TEMPORARLY DISABLE UNION ALL
|
||||
-- SELECT count(*) FROM
|
||||
-- (
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION ALL
|
||||
-- (SELECT 1::bigint)
|
||||
--) b;
|
||||
-- Check that we error out if there is non relation subqueries
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION ALL
|
||||
(SELECT 1::bigint)
|
||||
) b;
|
||||
|
||||
|
||||
---
|
||||
-- TEMPORARLY DISABLE UNIONS WITHOUT JOINS
|
||||
---
|
||||
-- Check that we error out if queries in union do not include partition columns.
|
||||
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
-- (SELECT l_partkey FROM lineitem_subquery)
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_partkey FROM lineitem_subquery)
|
||||
) b;
|
||||
|
||||
-- Check that we run union queries if partition column is selected.
|
||||
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery)
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_orderkey FROM lineitem_subquery)
|
||||
) b;
|
||||
-- Check that we error out if inner query has limit but outer quers has not.
|
||||
SELECT
|
||||
avg(o_totalprice/l_quantity)
|
||||
|
@ -273,23 +270,23 @@ WHERE
|
|||
|
||||
-- Check that if subquery is pulled, we don't error and run query properly.
|
||||
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
--SELECT l_orderkey FROM (
|
||||
--(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
--(SELECT l_orderkey FROM lineitem_subquery)
|
||||
--) a
|
||||
--WHERE l_orderkey = 1
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
SELECT l_orderkey FROM (
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_orderkey FROM lineitem_subquery)
|
||||
) a
|
||||
WHERE l_orderkey = 1
|
||||
) b;
|
||||
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
--SELECT * FROM (
|
||||
--(SELECT * FROM lineitem_subquery) UNION
|
||||
--(SELECT * FROM lineitem_subquery)
|
||||
--) a
|
||||
--WHERE l_orderkey = 1
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
SELECT * FROM (
|
||||
(SELECT * FROM lineitem_subquery) UNION
|
||||
(SELECT * FROM lineitem_subquery)
|
||||
) a
|
||||
WHERE l_orderkey = 1
|
||||
) b;
|
||||
|
||||
SELECT max(l_orderkey) FROM
|
||||
(
|
||||
|
|
|
@ -174,28 +174,33 @@ FROM
|
|||
l_orderkey) AS unit_prices;
|
||||
ERROR: cannot pushdown the subquery since all relations are not joined using distribution keys
|
||||
DETAIL: Each relation should be joined with at least one another relation using distribution keys and equality operator.
|
||||
-- Check that we error out if there is union all.
|
||||
-- TEMPORARLY DISABLE UNION ALL
|
||||
-- SELECT count(*) FROM
|
||||
-- (
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION ALL
|
||||
-- (SELECT 1::bigint)
|
||||
--) b;
|
||||
---
|
||||
-- TEMPORARLY DISABLE UNIONS WITHOUT JOINS
|
||||
---
|
||||
-- Check that we error out if there is non relation subqueries
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION ALL
|
||||
(SELECT 1::bigint)
|
||||
) b;
|
||||
ERROR: cannot push down this subquery
|
||||
DETAIL: Subqueries without relations are unsupported
|
||||
-- Check that we error out if queries in union do not include partition columns.
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
-- (SELECT l_partkey FROM lineitem_subquery)
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_partkey FROM lineitem_subquery)
|
||||
) b;
|
||||
ERROR: cannot pushdown the subquery since all leaves of the UNION does not include partition key at the same position
|
||||
DETAIL: Each leaf query of the UNION should return partition key at the same position on its target list.
|
||||
-- Check that we run union queries if partition column is selected.
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery)
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_orderkey FROM lineitem_subquery)
|
||||
) b;
|
||||
count
|
||||
-------
|
||||
2985
|
||||
(1 row)
|
||||
|
||||
-- Check that we error out if inner query has limit but outer quers has not.
|
||||
SELECT
|
||||
avg(o_totalprice/l_quantity)
|
||||
|
@ -289,22 +294,32 @@ WHERE
|
|||
(1 row)
|
||||
|
||||
-- Check that if subquery is pulled, we don't error and run query properly.
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
--SELECT l_orderkey FROM (
|
||||
--(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
--(SELECT l_orderkey FROM lineitem_subquery)
|
||||
--) a
|
||||
--WHERE l_orderkey = 1
|
||||
--) b;
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
--SELECT * FROM (
|
||||
--(SELECT * FROM lineitem_subquery) UNION
|
||||
--(SELECT * FROM lineitem_subquery)
|
||||
--) a
|
||||
--WHERE l_orderkey = 1
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
SELECT l_orderkey FROM (
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_orderkey FROM lineitem_subquery)
|
||||
) a
|
||||
WHERE l_orderkey = 1
|
||||
) b;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
SELECT * FROM (
|
||||
(SELECT * FROM lineitem_subquery) UNION
|
||||
(SELECT * FROM lineitem_subquery)
|
||||
) a
|
||||
WHERE l_orderkey = 1
|
||||
) b;
|
||||
count
|
||||
-------
|
||||
6
|
||||
(1 row)
|
||||
|
||||
SELECT max(l_orderkey) FROM
|
||||
(
|
||||
SELECT l_orderkey FROM (
|
||||
|
|
|
@ -174,28 +174,33 @@ FROM
|
|||
l_orderkey) AS unit_prices;
|
||||
ERROR: cannot pushdown the subquery since all relations are not joined using distribution keys
|
||||
DETAIL: Each relation should be joined with at least one another relation using distribution keys and equality operator.
|
||||
-- Check that we error out if there is union all.
|
||||
-- TEMPORARLY DISABLE UNION ALL
|
||||
-- SELECT count(*) FROM
|
||||
-- (
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION ALL
|
||||
-- (SELECT 1::bigint)
|
||||
--) b;
|
||||
---
|
||||
-- TEMPORARLY DISABLE UNIONS WITHOUT JOINS
|
||||
---
|
||||
-- Check that we error out if there is non relation subqueries
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION ALL
|
||||
(SELECT 1::bigint)
|
||||
) b;
|
||||
ERROR: cannot push down this subquery
|
||||
DETAIL: Subqueries without relations are unsupported
|
||||
-- Check that we error out if queries in union do not include partition columns.
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
-- (SELECT l_partkey FROM lineitem_subquery)
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_partkey FROM lineitem_subquery)
|
||||
) b;
|
||||
ERROR: cannot pushdown the subquery since all leaves of the UNION does not include partition key at the same position
|
||||
DETAIL: Each leaf query of the UNION should return partition key at the same position on its target list.
|
||||
-- Check that we run union queries if partition column is selected.
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
-- (SELECT l_orderkey FROM lineitem_subquery)
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_orderkey FROM lineitem_subquery)
|
||||
) b;
|
||||
count
|
||||
-------
|
||||
2985
|
||||
(1 row)
|
||||
|
||||
-- Check that we error out if inner query has limit but outer quers has not.
|
||||
SELECT
|
||||
avg(o_totalprice/l_quantity)
|
||||
|
@ -289,22 +294,32 @@ WHERE
|
|||
(1 row)
|
||||
|
||||
-- Check that if subquery is pulled, we don't error and run query properly.
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
--SELECT l_orderkey FROM (
|
||||
--(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
--(SELECT l_orderkey FROM lineitem_subquery)
|
||||
--) a
|
||||
--WHERE l_orderkey = 1
|
||||
--) b;
|
||||
--SELECT count(*) FROM
|
||||
--(
|
||||
--SELECT * FROM (
|
||||
--(SELECT * FROM lineitem_subquery) UNION
|
||||
--(SELECT * FROM lineitem_subquery)
|
||||
--) a
|
||||
--WHERE l_orderkey = 1
|
||||
--) b;
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
SELECT l_orderkey FROM (
|
||||
(SELECT l_orderkey FROM lineitem_subquery) UNION
|
||||
(SELECT l_orderkey FROM lineitem_subquery)
|
||||
) a
|
||||
WHERE l_orderkey = 1
|
||||
) b;
|
||||
count
|
||||
-------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT count(*) FROM
|
||||
(
|
||||
SELECT * FROM (
|
||||
(SELECT * FROM lineitem_subquery) UNION
|
||||
(SELECT * FROM lineitem_subquery)
|
||||
) a
|
||||
WHERE l_orderkey = 1
|
||||
) b;
|
||||
count
|
||||
-------
|
||||
6
|
||||
(1 row)
|
||||
|
||||
SELECT max(l_orderkey) FROM
|
||||
(
|
||||
SELECT l_orderkey FROM (
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -123,34 +123,40 @@ FROM (
|
|||
( SELECT user_id,
|
||||
sum(counter)
|
||||
FROM
|
||||
( SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM users_table
|
||||
GROUP BY user_id
|
||||
|
||||
(SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
users_table
|
||||
GROUP BY
|
||||
user_id
|
||||
UNION
|
||||
|
||||
SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM events_table
|
||||
GROUP BY user_id ) user_id_1
|
||||
GROUP BY user_id)
|
||||
SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
events_table
|
||||
GROUP BY
|
||||
user_id) user_id_1
|
||||
GROUP BY
|
||||
user_id)
|
||||
UNION
|
||||
( SELECT user_id,
|
||||
sum(counter)
|
||||
(SELECT
|
||||
user_id, sum(counter)
|
||||
FROM
|
||||
( SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM users_table
|
||||
GROUP BY user_id
|
||||
|
||||
(SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
users_table
|
||||
GROUP BY
|
||||
user_id
|
||||
UNION
|
||||
|
||||
SELECT user_id, sum(value_2) AS counter
|
||||
|
||||
FROM events_table
|
||||
GROUP BY user_id) user_id_2
|
||||
GROUP BY user_id)) AS ftop
|
||||
SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
events_table
|
||||
GROUP BY
|
||||
user_id) user_id_2
|
||||
GROUP BY
|
||||
user_id)) AS ftop
|
||||
ORDER BY 2 DESC, 1 DESC
|
||||
LIMIT 5;
|
||||
|
||||
|
@ -159,40 +165,45 @@ SELECT ("final_query"."event_types") as types, count(*) AS sumOfEventType
|
|||
FROM
|
||||
( SELECT *, random()
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
( SELECT "t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event")
|
||||
ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
( SELECT "t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15) ) events_subquery_1)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15)) events_subquery_1)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) ) events_subquery_2)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) ) events_subquery_2)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) ) events_subquery_3)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) ) events_subquery_3)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13)) events_subquery_4)) t1
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13)) events_subquery_4)) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
) as final_query
|
||||
GROUP BY types
|
||||
|
@ -202,36 +213,41 @@ ORDER BY types;
|
|||
-- but wrapper unions are removed from the inner part of the query
|
||||
SELECT ("final_query"."event_types") as types, count(*) AS sumOfEventType
|
||||
FROM
|
||||
( SELECT *, random()
|
||||
(SELECT *, random()
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
(SELECT
|
||||
"t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event")
|
||||
ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15))
|
||||
(SELECT
|
||||
"t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM(
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15))
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
) as final_query
|
||||
GROUP BY types
|
||||
|
@ -240,35 +256,37 @@ ORDER BY types;
|
|||
-- again excatly the same query with top level wrapper removed
|
||||
SELECT ("q"."event_types") as types, count(*) AS sumOfEventType
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
( SELECT "t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event")
|
||||
ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
( SELECT "t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15)
|
||||
)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15))
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
GROUP BY types
|
||||
ORDER BY types;
|
||||
|
@ -280,60 +298,71 @@ FROM
|
|||
FROM
|
||||
( SELECT "t1"."user_id"
|
||||
FROM (
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15)
|
||||
)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15))
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
) AS t) "q" ORDER BY 1 LIMIT 5;
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
) AS t) "q"
|
||||
ORDER BY 1
|
||||
LIMIT 5;
|
||||
|
||||
-- a very similar query UNION ALL
|
||||
SELECT ("q"."event_types") as types, count(*) AS sumOfEventType
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
( SELECT "t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event")
|
||||
ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
( SELECT "t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT "events"."user_id",
|
||||
"events"."time",
|
||||
0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15)
|
||||
)
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION ALL
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION ALL
|
||||
|
||||
(SELECT "events"."user_id", "events"."time", 3 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 3 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (26, 27, 28, 29, 30, 13))) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
GROUP BY types
|
||||
ORDER BY types;
|
||||
|
@ -405,13 +434,13 @@ FROM
|
|||
(SELECT value_3, user_id FROM events_table where event_type IN (1, 2, 3, 4, 5))
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (6, 7, 8, 9, 10))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (16, 17, 18, 19, 20))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (21, 22, 23, 24, 25))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (26, 27, 28, 29, 30))
|
||||
) b
|
||||
ORDER BY 1 DESC, 2 DESC
|
||||
|
@ -425,13 +454,13 @@ FROM
|
|||
(SELECT value_3, user_id FROM events_table where event_type IN (1, 2, 3, 4, 5))
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (6, 7, 8, 9, 10))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (16, 17, 18, 19, 20))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (21, 22, 23, 24, 25))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (26, 27, 28, 29, 30))
|
||||
) b
|
||||
GROUP BY user_id
|
||||
|
@ -458,9 +487,9 @@ FROM (
|
|||
SELECT user_id, sum(value_2) AS counter FROM users_table where value_1 < 40 and value_1 < 60 GROUP BY user_id HAVING sum(value_2) > 500
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table where value_1 < 60 and value_1 < 80 GROUP BY user_id HAVING sum(value_2) > 500
|
||||
UNION
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table where value_1 < 80 and value_1 < 100 GROUP BY user_id HAVING sum(value_2) > 500
|
||||
UNION
|
||||
UNION
|
||||
SELECT 2 * user_id, sum(value_2) AS counter FROM users_table where value_1 < 100 and value_1 < 120 GROUP BY user_id HAVING sum(value_2) > 500
|
||||
) user_id
|
||||
GROUP BY user_id ORDER BY 1 DESC LIMIT 5;
|
||||
|
@ -472,7 +501,7 @@ SELECT * FROM
|
|||
SELECT user_id, sum(counter)
|
||||
FROM (
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table GROUP BY user_id
|
||||
UNION
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter FROM events_table GROUP BY user_id
|
||||
) user_id_1
|
||||
GROUP BY user_id
|
||||
|
@ -492,7 +521,7 @@ UNION
|
|||
SELECT user_id, sum(counter)
|
||||
FROM (
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table GROUP BY user_id
|
||||
UNION
|
||||
UNION
|
||||
SELECT events_table.user_id, sum(events_table.value_2) AS counter FROM events_table, users_table WHERE users_table.user_id > events_table.user_id GROUP BY 1
|
||||
) user_id
|
||||
GROUP BY user_id;
|
||||
|
@ -504,7 +533,7 @@ SELECT * FROM
|
|||
SELECT user_id, sum(counter)
|
||||
FROM (
|
||||
SELECT user_id, sum(value_2) AS counter FROM users_table GROUP BY user_id
|
||||
UNION
|
||||
UNION
|
||||
SELECT user_id, sum(value_2) AS counter FROM events_table GROUP BY user_id
|
||||
) user_id_1
|
||||
GROUP BY user_id
|
||||
|
@ -535,34 +564,41 @@ FROM (
|
|||
( SELECT user_id,
|
||||
sum(counter)
|
||||
FROM
|
||||
( SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM users_table
|
||||
GROUP BY user_id
|
||||
|
||||
(SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
users_table
|
||||
GROUP BY
|
||||
user_id
|
||||
UNION
|
||||
|
||||
SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM events_table
|
||||
GROUP BY user_id ) user_id_1
|
||||
GROUP BY user_id)
|
||||
SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
events_table
|
||||
GROUP BY
|
||||
user_id) user_id_1
|
||||
GROUP BY
|
||||
user_id)
|
||||
UNION
|
||||
( SELECT user_id,
|
||||
sum(counter)
|
||||
(SELECT
|
||||
user_id, sum(counter)
|
||||
FROM
|
||||
( SELECT sum(value_2) AS counter,
|
||||
user_id
|
||||
FROM users_table
|
||||
GROUP BY user_id
|
||||
|
||||
(SELECT
|
||||
sum(value_2) AS counter, user_id
|
||||
FROM
|
||||
users_table
|
||||
GROUP BY
|
||||
user_id
|
||||
UNION
|
||||
SELECT
|
||||
user_id, sum(value_2) AS counter
|
||||
FROM
|
||||
events_table
|
||||
GROUP BY
|
||||
user_id) user_id_2
|
||||
GROUP BY
|
||||
user_id)) AS ftop;
|
||||
|
||||
SELECT user_id,
|
||||
sum(value_2) AS counter
|
||||
FROM events_table
|
||||
GROUP BY user_id) user_id_2
|
||||
GROUP BY user_id)) AS ftop;
|
||||
|
||||
-- some UNION all queries that are going to be pulled up
|
||||
SELECT
|
||||
|
@ -582,13 +618,13 @@ FROM
|
|||
(SELECT value_3, user_id FROM events_table where event_type IN (1, 2, 3, 4, 5))
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (6, 7, 8, 9, 10))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (16, 17, 18, 19, 20))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (21, 22, 23, 24, 25))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, value_2 FROM events_table where event_type IN (26, 27, 28, 29, 30))
|
||||
) b
|
||||
ORDER BY 1 DESC, 2 DESC
|
||||
|
@ -632,43 +668,58 @@ FROM
|
|||
(SELECT value_3, user_id FROM events_table where event_type IN (1, 2, 3, 4, 5))
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (6, 7, 8, 9, 10))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (11, 12, 13, 14, 15))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (16, 17, 18, 19, 20))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT value_3, user_id FROM events_table where event_type IN (21, 22, 23, 24, 25))
|
||||
UNION ALL
|
||||
UNION ALL
|
||||
(SELECT 1, 2)
|
||||
) b
|
||||
ORDER BY 1 DESC, 2 DESC
|
||||
LIMIT 5;
|
||||
|
||||
SELECT ("q"."event_types") as types, count(*) AS sumOfEventType
|
||||
SELECT ("final_query"."event_types") as types, count(*) AS sumOfEventType
|
||||
FROM
|
||||
( SELECT "t"."user_id",
|
||||
"t"."time",
|
||||
unnest("t"."collected_events") AS "event_types"
|
||||
( SELECT *, random()
|
||||
FROM
|
||||
( SELECT "t"."user_id", "t"."time", unnest("t"."collected_events") AS "event_types"
|
||||
FROM
|
||||
( SELECT "t1"."user_id",
|
||||
min("t1"."time") AS "time",
|
||||
array_agg(("t1"."event") ORDER BY time ASC, event DESC) AS collected_events
|
||||
( SELECT "t1"."user_id", min("t1"."time") AS "time", array_agg(("t1"."event") ORDER BY TIME ASC, event DESC) AS collected_events
|
||||
FROM (
|
||||
(SELECT "events"."user_id", "events"."time", 0 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (10, 11, 12, 13, 14, 15)
|
||||
)
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 1 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (15, 16, 17, 18, 19) )
|
||||
UNION
|
||||
(SELECT "events"."user_id", "events"."time", 2 AS event
|
||||
FROM events_table as "events"
|
||||
WHERE event_type IN (20, 21, 22, 23, 24, 25) )
|
||||
UNION
|
||||
(SELECT 1, now(), 3 AS event)) t1
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 0 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (10, 11, 12, 13, 14, 15)) events_subquery_1)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 1 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (15, 16, 17, 18, 19) ) events_subquery_2)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT
|
||||
"events"."user_id", "events"."time", 2 AS event
|
||||
FROM
|
||||
events_table as "events"
|
||||
WHERE
|
||||
event_type IN (20, 21, 22, 23, 24, 25) ) events_subquery_3)
|
||||
UNION
|
||||
(SELECT *
|
||||
FROM
|
||||
(SELECT 1, now(), 3 AS event) events_subquery_4)) t1
|
||||
GROUP BY "t1"."user_id") AS t) "q"
|
||||
) as final_query
|
||||
GROUP BY types
|
||||
ORDER BY types;
|
||||
|
||||
|
|
Loading…
Reference in New Issue