Changeset: ecaa32759900 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ecaa32759900
Added Files:
sql/test/rel-optimizers/Tests/join-merge-remote-replica.test
Modified Files:
sql/test/rel-optimizers/Tests/All
Branch: default
Log Message:
Adds test for the rel plan of a join between merge with remote and replica table
diffs (83 lines):
diff --git a/sql/test/rel-optimizers/Tests/All
b/sql/test/rel-optimizers/Tests/All
--- a/sql/test/rel-optimizers/Tests/All
+++ b/sql/test/rel-optimizers/Tests/All
@@ -1,3 +1,4 @@
split-select
groupby-cse
groupjoin
+join-merge-remote-replica
diff --git a/sql/test/rel-optimizers/Tests/join-merge-remote-replica.test
b/sql/test/rel-optimizers/Tests/join-merge-remote-replica.test
new file mode 100644
--- /dev/null
+++ b/sql/test/rel-optimizers/Tests/join-merge-remote-replica.test
@@ -0,0 +1,70 @@
+statement ok
+create table foo_p1 (n int, m text)
+
+statement ok
+insert into foo_p1 values (1, 'hello'), (2, 'world'), (3, '!!')
+
+statement ok
+create remote table foo_p2 (n int, m text) on
'mapi:monetdb://localhost:50001/node2'
+
+statement ok
+create merge table foo_merge (n int, m text)
+
+statement ok
+alter table foo_merge add table foo_p1
+
+statement ok
+alter table foo_merge add table foo_p2
+
+# create members_rpl with members LOCAL and members_rmt REMOTE
+
+statement ok
+create table members (n int, m text)
+
+statement ok
+insert into members values (1, 'alice'), (2, 'bob')
+
+statement ok
+create remote table members_rmt (n int, m text) on
'mapi:monetdb://localhost:50001/node2'
+
+statement ok
+create replica table members_rpl (n int, m text)
+
+statement ok
+alter table members_rpl add table members
+
+statement ok
+alter table members_rpl add table members_rmt
+
+# this statement is so to have the UNIQUE property for the foo_p1 plan
+# of the merge. It is not there the first time we execute the plan so
+# the next query-test will fail without this statement
+
+statement ok
+select * from foo_p1
+
+# check that the plan is executing the join of the remote part of the
+# merge table with the remote part of the replica and then transfers the
+# result in the master node (hint: the remote plan is wrapped around a
+# 'table' returning relational operator)
+
+query T nosort
+plan select * from foo_merge, members_rpl
+----
+union (
+| project (
+| | crossproduct (
+| | | table("sys"."foo_p1") [ "foo_p1"."n" UNIQUE as "foo_merge"."n",
"foo_p1"."m" as "foo_merge"."m" ],
+| | | table("sys"."members") [ "members"."n" UNIQUE as "members_rpl"."n",
"members"."m" UNIQUE as "members_rpl"."m", "members"."%TID%" NOT NULL UNIQUE as
"members_rpl"."%TID%" ]
+| | ) [ ]
+| ) [ "foo_merge"."n", "foo_merge"."m", "members_rpl"."n", "members_rpl"."m" ],
+| table (
+| | project (
+| | | crossproduct (
+| | | | REMOTE("sys"."foo_p2") [ "foo_p2"."n" as "foo_merge"."n", "foo_p2"."m"
as "foo_merge"."m" ],
+| | | | REMOTE("sys"."members_rmt") [ "members_rmt"."n" as "members_rpl"."n",
"members_rmt"."m" as "members_rpl"."m", "members_rmt"."%TID%" NOT NULL UNIQUE
as "members_rpl"."%TID%" ]
+| | | ) [ ]
+| | ) [ "foo_merge"."n", "foo_merge"."m", "members_rpl"."n", "members_rpl"."m"
] REMOTE mapi:monetdb://localhost:50001/node2
+| ) [ "foo_merge"."n", "foo_merge"."m", "members_rpl"."n", "members_rpl"."m" ]
+) [ "foo_merge"."n", "foo_merge"."m", "members_rpl"."n", "members_rpl"."m" ]
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]