mirror of https://github.com/citusdata/citus.git
90 lines
2.7 KiB
SQL
90 lines
2.7 KiB
SQL
-- ===================================================================
|
|
-- test recursive planning functionality on prepared statements
|
|
-- ===================================================================
|
|
CREATE SCHEMA subquery_prepared_statements;
|
|
SET search_path TO subquery_prepared_statements, public;
|
|
|
|
CREATE TYPE xy AS (x int, y int);
|
|
|
|
SELECT run_command_on_workers('CREATE SCHEMA subquery_prepared_statements');
|
|
SELECT run_command_on_workers('CREATE TYPE subquery_prepared_statements.xy AS (x int, y int)');
|
|
|
|
SET client_min_messages TO DEBUG1;
|
|
|
|
PREPARE subquery_prepare_without_param AS
|
|
SELECT
|
|
DISTINCT values_of_subquery
|
|
FROM
|
|
(SELECT
|
|
DISTINCT (users_table.user_id, events_table.event_type)::xy as values_of_subquery
|
|
FROM
|
|
users_table, events_table
|
|
WHERE
|
|
users_table.user_id = events_table.user_id AND
|
|
event_type IN (1,2,3,4)
|
|
ORDER BY 1 DESC LIMIT 5
|
|
) as foo
|
|
ORDER BY 1 DESC;
|
|
|
|
PREPARE subquery_prepare_param_on_partkey(int) AS
|
|
SELECT
|
|
DISTINCT values_of_subquery
|
|
FROM
|
|
(SELECT
|
|
DISTINCT (users_table.user_id, events_table.event_type)::xy as values_of_subquery
|
|
FROM
|
|
users_table, events_table
|
|
WHERE
|
|
users_table.user_id = events_table.user_id AND
|
|
(users_table.user_id = $1 OR users_table.user_id = 2) AND
|
|
event_type IN (1,2,3,4)
|
|
ORDER BY 1 DESC LIMIT 5
|
|
) as foo
|
|
ORDER BY 1 DESC;
|
|
|
|
PREPARE subquery_prepare_param_non_partkey(int) AS
|
|
SELECT
|
|
DISTINCT values_of_subquery
|
|
FROM
|
|
(SELECT
|
|
DISTINCT (users_table.user_id, events_table.event_type)::xy as values_of_subquery
|
|
FROM
|
|
users_table, events_table
|
|
WHERE
|
|
users_table.user_id = events_table.user_id AND
|
|
event_type = $1
|
|
ORDER BY 1 DESC LIMIT 5
|
|
) as foo
|
|
ORDER BY 1 DESC;
|
|
|
|
-- execute each test with 6 times
|
|
|
|
EXECUTE subquery_prepare_without_param;
|
|
EXECUTE subquery_prepare_without_param;
|
|
EXECUTE subquery_prepare_without_param;
|
|
EXECUTE subquery_prepare_without_param;
|
|
EXECUTE subquery_prepare_without_param;
|
|
EXECUTE subquery_prepare_without_param;
|
|
EXECUTE subquery_prepare_without_param;
|
|
|
|
|
|
EXECUTE subquery_prepare_param_on_partkey(1);
|
|
EXECUTE subquery_prepare_param_on_partkey(1);
|
|
EXECUTE subquery_prepare_param_on_partkey(1);
|
|
EXECUTE subquery_prepare_param_on_partkey(1);
|
|
EXECUTE subquery_prepare_param_on_partkey(1);
|
|
EXECUTE subquery_prepare_param_on_partkey(1);
|
|
|
|
EXECUTE subquery_prepare_param_non_partkey(1);
|
|
EXECUTE subquery_prepare_param_non_partkey(1);
|
|
EXECUTE subquery_prepare_param_non_partkey(1);
|
|
EXECUTE subquery_prepare_param_non_partkey(1);
|
|
EXECUTE subquery_prepare_param_non_partkey(1);
|
|
EXECUTE subquery_prepare_param_non_partkey(1);
|
|
|
|
|
|
SET client_min_messages TO DEFAULT;
|
|
|
|
DROP SCHEMA subquery_prepared_statements CASCADE;
|
|
SET search_path TO public;
|