Tests for multi-statement transactions with subqueries or ctes

pull/3280/head
Hadi Moshayedi 2019-12-11 19:54:15 -08:00
parent 939d3c955b
commit 383d34f51b
2 changed files with 44 additions and 0 deletions

View File

@ -190,6 +190,28 @@ BEGIN;
SELECT local_table.a, r.a FROM local_table NATURAL JOIN s1.ref r ORDER BY 1; SELECT local_table.a, r.a FROM local_table NATURAL JOIN s1.ref r ORDER BY 1;
ERROR: cannot join local tables and reference tables in a transaction block, udf block, or distributed CTE subquery ERROR: cannot join local tables and reference tables in a transaction block, udf block, or distributed CTE subquery
ROLLBACK; ROLLBACK;
BEGIN;
WITH t1 AS (
SELECT random() r, a FROM local_table
) SELECT count(*) FROM t1, numbers WHERE t1.a = numbers.a AND r < 0.5;
ERROR: cannot join local tables and reference tables in a transaction block, udf block, or distributed CTE subquery
END;
BEGIN;
WITH t1 AS (
SELECT random() r, a FROM numbers
) SELECT count(*) FROM t1, local_table WHERE t1.a = local_table.a AND r < 0.5;
ERROR: cannot join local tables and reference tables in a transaction block, udf block, or distributed CTE subquery
END;
BEGIN;
SELECT count(*) FROM local_table
WHERE EXISTS(SELECT random() FROM numbers WHERE local_table.a = numbers.a);
ERROR: cannot join local tables and reference tables in a transaction block, udf block, or distributed CTE subquery
END;
BEGIN;
SELECT count(*) FROM numbers
WHERE EXISTS(SELECT random() FROM local_table WHERE local_table.a = numbers.a);
ERROR: cannot join local tables and reference tables in a transaction block, udf block, or distributed CTE subquery
END;
DROP SCHEMA s1 CASCADE; DROP SCHEMA s1 CASCADE;
NOTICE: drop cascades to 2 other objects NOTICE: drop cascades to 2 other objects
DETAIL: drop cascades to table s1.ref DETAIL: drop cascades to table s1.ref

View File

@ -96,6 +96,28 @@ BEGIN;
SELECT local_table.a, r.a FROM local_table NATURAL JOIN s1.ref r ORDER BY 1; SELECT local_table.a, r.a FROM local_table NATURAL JOIN s1.ref r ORDER BY 1;
ROLLBACK; ROLLBACK;
BEGIN;
WITH t1 AS (
SELECT random() r, a FROM local_table
) SELECT count(*) FROM t1, numbers WHERE t1.a = numbers.a AND r < 0.5;
END;
BEGIN;
WITH t1 AS (
SELECT random() r, a FROM numbers
) SELECT count(*) FROM t1, local_table WHERE t1.a = local_table.a AND r < 0.5;
END;
BEGIN;
SELECT count(*) FROM local_table
WHERE EXISTS(SELECT random() FROM numbers WHERE local_table.a = numbers.a);
END;
BEGIN;
SELECT count(*) FROM numbers
WHERE EXISTS(SELECT random() FROM local_table WHERE local_table.a = numbers.a);
END;
DROP SCHEMA s1 CASCADE; DROP SCHEMA s1 CASCADE;
-- error if inside a SQL UDF call -- error if inside a SQL UDF call