citus/src/test/regress/sql/with_where.sql

162 lines
2.4 KiB
SQL

-- More complex CTEs in WHERE
SET citus.enable_repartition_joins TO on;
-- CTE in WHERE basic
WITH events AS (
SELECT
event_type
FROM
events_table
WHERE
user_id < 5
GROUP BY
event_type
ORDER BY
event_type
LIMIT 10
)
SELECT
count(*)
FROM
events_table
WHERE
event_type
IN
(SELECT
event_type
FROM
events);
WITH users AS (
SELECT
events_table.user_id
FROM
events_table, users_table
WHERE
events_table.user_id = users_table.user_id
GROUP BY
1
ORDER BY
1
LIMIT 10
)
SELECT
count(*)
FROM
events_table
WHERE
user_id IN
(
SELECT
*
FROM
users
);
WITH users AS (
SELECT
events_table.user_id
FROM
events_table, users_table
WHERE
events_table.user_id = users_table.user_id
GROUP BY
1
ORDER BY
1
LIMIT 10
)
SELECT
count(*)
FROM
events_table
WHERE
user_id IN
(
SELECT
*
FROM
users
);
-- CTE with non-colocated join in WHERE
WITH users AS (
SELECT
events_table.user_id
FROM
events_table, users_table
WHERE
events_table.value_2 = users_table.value_2
GROUP BY
1
ORDER BY
1
LIMIT 10
)
SELECT
count(*)
FROM
events_table
WHERE
user_id IN
(
SELECT
*
FROM
users
);
-- CTE in WHERE basic
-- this is a tricky query that hits an aggresive
-- check in subquery puwhdown after the recursive planning
-- where LIMIT should be allowed
-- if the query contains only intermediate results
SELECT
count(*)
FROM
events_table
WHERE
event_type
IN
(WITH events AS (
SELECT
event_type
FROM
events_table
WHERE user_id < 5
GROUP BY
1
ORDER BY
1)
SELECT * FROM events LIMIT 10
);
-- CTE with non-colocated join in WHERE
-- this is a tricky query that hits an aggresive
-- check in subquery puwhdown after the recursive planning
-- where LIMIT should be allowed
-- if the query contains only intermediate results
SELECT
count(*)
FROM
events_table
WHERE
user_id IN
(WITH users AS
(SELECT
events_table.user_id
FROM
events_table, users_table
WHERE
events_table.value_2 = users_table.value_2
GROUP BY
1
ORDER BY
1
)
SELECT * FROM users LIMIT 10
);