Skip to content

Commit

Permalink
Adding test case
Browse files Browse the repository at this point in the history
  • Loading branch information
codeforall authored and Muhammad Usama committed Dec 25, 2024
1 parent 5d148b7 commit a89ab7e
Show file tree
Hide file tree
Showing 3 changed files with 155 additions and 1 deletion.
88 changes: 88 additions & 0 deletions src/test/regress/expected/issue_7698_7697.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
-- Issue #7698: An incorrect query result, where the distributed query plan seems wrong
-- https://github.com/citusdata/citus/issues/7698
CREATE TABLE t1 (vkey int4 ,c10 int4);
CREATE TABLE t3 (vkey int4);
INSERT INTO t3 (vkey) values (1);
INSERT INTO t1 (vkey,c10) values (4, -70);
SELECT t3.vkey
FROM (t1 RIGHT OUTER JOIN t3
ON (t1.c10 = t3.vkey ))
WHERE EXISTS (SELECT * FROM t3);
vkey
---------------------------------------------------------------------
1
(1 row)

-- Make t1 a distributed table
SELECT create_distributed_table('t1', 'vkey');
NOTICE: Copying data from local table...
NOTICE: copying the data has completed
DETAIL: The local data in the table is no longer visible, but is still on disk.
HINT: To remove the local data, run: SELECT truncate_local_data_after_distributing_table($$public.t1$$)
create_distributed_table
---------------------------------------------------------------------

(1 row)

-- Result should remain the same after making t1 a distributed table
SELECT t3.vkey
FROM (t1 RIGHT OUTER JOIN t3
ON (t1.c10 = t3.vkey ))
WHERE EXISTS (SELECT * FROM t3);
vkey
---------------------------------------------------------------------
1
(1 row)

--- cleanup
DROP TABLE t1;
DROP TABLE t3;
-- Issue #7697: Incorrect result from a distributed table full outer join an undistributed table.
-- https://github.com/citusdata/citus/issues/7697
CREATE TABLE t0 (vkey int4 ,c3 timestamp);
CREATE TABLE t3 (vkey int4 ,c26 timestamp);
CREATE TABLE t4 (vkey int4);
INSERT INTO t0 (vkey, c3) VALUES
(13,make_timestamp(2019, 10, 23, 15, 34, 50));
INSERT INTO t3 (vkey,c26) VALUES
(1, make_timestamp(2024, 3, 26, 17, 36, 53));
INSERT INTO t4 (vkey) VALUES
(1);
SELECT * FROM
(t0 FULL OUTER JOIN t3 ON (t0.c3 = t3.c26 ))
WHERE (
EXISTS (SELECT * FROM t4)
);
vkey | c3 | vkey | c26
---------------------------------------------------------------------
13 | Wed Oct 23 15:34:50 2019 | |
| | 1 | Tue Mar 26 17:36:53 2024
(2 rows)

-- change t0 to distributed table
SELECT create_distributed_table('t0', 'vkey');
NOTICE: Copying data from local table...
NOTICE: copying the data has completed
DETAIL: The local data in the table is no longer visible, but is still on disk.
HINT: To remove the local data, run: SELECT truncate_local_data_after_distributing_table($$public.t0$$)
create_distributed_table
---------------------------------------------------------------------

(1 row)

-- Result should remain the same after making t0 a distributed table
SELECT * FROM
(t0 FULL OUTER JOIN t3 ON (t0.c3 = t3.c26 ))
WHERE (
EXISTS (SELECT * FROM t4)
);
vkey | c3 | vkey | c26
---------------------------------------------------------------------
| | 1 | Tue Mar 26 17:36:53 2024
13 | Wed Oct 23 15:34:50 2019 | |
(2 rows)

--- cleanup
DROP TABLE t0;
DROP TABLE t3;
DROP TABLE t4;
2 changes: 1 addition & 1 deletion src/test/regress/multi_schedule
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ test: multi_dropped_column_aliases foreign_key_restriction_enforcement
test: binary_protocol
test: alter_table_set_access_method
test: alter_distributed_table
test: issue_5248 issue_5099 issue_5763 issue_6543 issue_6758 issue_7477 issue_7705
test: issue_5248 issue_5099 issue_5763 issue_6543 issue_6758 issue_7477 issue_7705 issue_7698_7697
test: object_propagation_debug
test: undistribute_table
test: run_command_on_all_nodes
Expand Down
66 changes: 66 additions & 0 deletions src/test/regress/sql/issue_7698_7697.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@

-- Issue #7698: An incorrect query result, where the distributed query plan seems wrong
-- https://github.com/citusdata/citus/issues/7698

CREATE TABLE t1 (vkey int4 ,c10 int4);
CREATE TABLE t3 (vkey int4);
INSERT INTO t3 (vkey) values (1);
INSERT INTO t1 (vkey,c10) values (4, -70);

SELECT t3.vkey
FROM (t1 RIGHT OUTER JOIN t3
ON (t1.c10 = t3.vkey ))
WHERE EXISTS (SELECT * FROM t3);

-- Make t1 a distributed table
SELECT create_distributed_table('t1', 'vkey');

-- Result should remain the same after making t1 a distributed table

SELECT t3.vkey
FROM (t1 RIGHT OUTER JOIN t3
ON (t1.c10 = t3.vkey ))
WHERE EXISTS (SELECT * FROM t3);

--- cleanup
DROP TABLE t1;
DROP TABLE t3;

-- Issue #7697: Incorrect result from a distributed table full outer join an undistributed table.
-- https://github.com/citusdata/citus/issues/7697

CREATE TABLE t0 (vkey int4 ,c3 timestamp);
CREATE TABLE t3 (vkey int4 ,c26 timestamp);
CREATE TABLE t4 (vkey int4);


INSERT INTO t0 (vkey, c3) VALUES
(13,make_timestamp(2019, 10, 23, 15, 34, 50));

INSERT INTO t3 (vkey,c26) VALUES
(1, make_timestamp(2024, 3, 26, 17, 36, 53));

INSERT INTO t4 (vkey) VALUES
(1);

SELECT * FROM
(t0 FULL OUTER JOIN t3 ON (t0.c3 = t3.c26 ))
WHERE (
EXISTS (SELECT * FROM t4)
);

-- change t0 to distributed table
SELECT create_distributed_table('t0', 'vkey');

-- Result should remain the same after making t0 a distributed table

SELECT * FROM
(t0 FULL OUTER JOIN t3 ON (t0.c3 = t3.c26 ))
WHERE (
EXISTS (SELECT * FROM t4)
);

--- cleanup
DROP TABLE t0;
DROP TABLE t3;
DROP TABLE t4;

0 comments on commit a89ab7e

Please sign in to comment.