From aa1ff2f3d3c72dd0232c2a64cdde37c10562addb Mon Sep 17 00:00:00 2001 From: Hadi Moshayedi Date: Wed, 11 Dec 2019 19:54:15 -0800 Subject: [PATCH] Tests for multi-statement transactions with subqueries or ctes --- ...licate_reference_tables_to_coordinator.out | 22 +++++++++++++++++++ ...licate_reference_tables_to_coordinator.sql | 22 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/test/regress/expected/replicate_reference_tables_to_coordinator.out b/src/test/regress/expected/replicate_reference_tables_to_coordinator.out index 482cce75e..c574678cf 100644 --- a/src/test/regress/expected/replicate_reference_tables_to_coordinator.out +++ b/src/test/regress/expected/replicate_reference_tables_to_coordinator.out @@ -131,6 +131,28 @@ BEGIN; 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 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; NOTICE: drop cascades to 2 other objects DETAIL: drop cascades to table s1.ref diff --git a/src/test/regress/sql/replicate_reference_tables_to_coordinator.sql b/src/test/regress/sql/replicate_reference_tables_to_coordinator.sql index 7eb011705..1557233f7 100644 --- a/src/test/regress/sql/replicate_reference_tables_to_coordinator.sql +++ b/src/test/regress/sql/replicate_reference_tables_to_coordinator.sql @@ -62,6 +62,28 @@ BEGIN; SELECT local_table.a, r.a FROM local_table NATURAL JOIN s1.ref r ORDER BY 1; 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; -- shouldn't plan locally if modifications happen in CTEs, ...