Changeset: b8dae0073c58 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b8dae0073c58
Branch: literal_features
Log Message:

Merge with default


diffs (202 lines):

diff --git a/documentation/index.rst b/documentation/index.rst
--- a/documentation/index.rst
+++ b/documentation/index.rst
@@ -31,6 +31,7 @@ Welcome to MonetDB's documentation!
    source/cmake
    source/release
    source/developers_handbook
+   source/binary-resultset
 
 Indices and tables
 ==================
diff --git a/monetdb5/mal/Tests/All b/monetdb5/mal/Tests/All
--- a/monetdb5/mal/Tests/All
+++ b/monetdb5/mal/Tests/All
@@ -46,7 +46,7 @@ tst045
 tst046
 tst047
 tst048
-tst049
+HAVE_LIBPCRE?tst049
 tst050
 tst051
 tst052
diff --git a/sql/server/rel_optimize_proj.c b/sql/server/rel_optimize_proj.c
--- a/sql/server/rel_optimize_proj.c
+++ b/sql/server/rel_optimize_proj.c
@@ -3069,6 +3069,20 @@ rel_push_join_down_union(visitor *v, sql
                list *exps = rel->exps, *attr = rel->attr;
                sql_exp *je = NULL;
 
+               /* we would like to optimize in place reference rels which point
+                * to replica tables and let the replica optimizer handle those
+                * later. otherwise we miss the push join down optimization due
+                * to the rel_is_ref bailout
+                */
+               if (rel_is_ref(l) && is_basetable(l->op) && l->l && 
isReplicaTable((sql_table*)l->l)) {
+                       rel->l = rel_copy(v->sql, l, true);
+                       rel_destroy(l);
+               }
+               if (rel_is_ref(r) && is_basetable(r->op) && r->l && 
isReplicaTable((sql_table*)r->l)) {
+                       rel->r = rel_copy(v->sql, r, true);
+                       rel_destroy(r);
+               }
+
                if (!l || !r || need_distinct(l) || need_distinct(r) || 
rel_is_ref(l) || rel_is_ref(r))
                        return rel;
                if (l->op == op_project)
diff --git a/sql/test/BugTracker-2008/Tests/All 
b/sql/test/BugTracker-2008/Tests/All
--- a/sql/test/BugTracker-2008/Tests/All
+++ b/sql/test/BugTracker-2008/Tests/All
@@ -35,7 +35,7 @@ col_from_another_inside_function_body.SF
 is_distinct_broken.SF-2430201
 blob_insert_crash.SF-2388542
 subselect_with_or.SF-2466725
-OOM_query.SF-2457195
+HAVE_LIBPCRE?OOM_query.SF-2457195
 copy-format.SF-2468513
 copy-count.SF-2485215
 About_CHAR.SF-2075268
diff --git a/sql/test/BugTracker-2013/Tests/All 
b/sql/test/BugTracker-2013/Tests/All
--- a/sql/test/BugTracker-2013/Tests/All
+++ b/sql/test/BugTracker-2013/Tests/All
@@ -40,7 +40,7 @@ sort_void_crash.Bug-3341
 bogus_aggregation_casts.Bug-3342
 recursion      # remind us that it should work
 nestedcalls
-like_pcre_or.Bug-3348
+HAVE_LIBPCRE?like_pcre_or.Bug-3348
 duplicate_column_name.Bug-3349
 binary_copy_into.Bug-3345
 copy-into-compressed.Bug-3351
diff --git a/sql/test/BugTracker-2019/Tests/All 
b/sql/test/BugTracker-2019/Tests/All
--- a/sql/test/BugTracker-2019/Tests/All
+++ b/sql/test/BugTracker-2019/Tests/All
@@ -6,7 +6,7 @@ subselect-contradiction.Bug-6683
 insert-replica-table.Bug-6684
 subselect-count.Bug-6686
 subselect.Bug-6688
-duplicates-not-eliminated-long-CASE-stmt.Bug-6697
+HAVE_LIBPCRE?duplicates-not-eliminated-long-CASE-stmt.Bug-6697
 subselect.Bug-6700
 alter_table_set_schema.Bug-6701
 crash-in-rel_dependencies.Bug-6703
diff --git a/sql/test/Tests/All b/sql/test/Tests/All
--- a/sql/test/Tests/All
+++ b/sql/test/Tests/All
@@ -55,7 +55,7 @@ joins
 default
 HAVE_GEOM?keys
 
-like_tests
+HAVE_LIBPCRE?like_tests
 more_like_tests
 
 news
diff --git a/sql/test/VOC/Tests/All b/sql/test/VOC/Tests/All
--- a/sql/test/VOC/Tests/All
+++ b/sql/test/VOC/Tests/All
@@ -1,8 +1,8 @@
 VOCcreate_user
 USER=voc&PASSWD=voc?VOCschema
 USER=voc&PASSWD=voc?VOCinsert
-USER=voc&PASSWD=voc?VOCquery
-USER=voc&PASSWD=voc?VOCmanual_examples
+USER=voc&PASSWD=voc&HAVE_LIBPCRE?VOCquery
+USER=voc&PASSWD=voc&HAVE_LIBPCRE?VOCmanual_examples
 USER=voc&PASSWD=voc?VOCdrop
 VOCdrop_user
 median.Bug-3096
diff --git a/sql/test/rel-optimizers/Tests/join-merge-remote-replica.test 
b/sql/test/rel-optimizers/Tests/join-merge-remote-replica.test
--- a/sql/test/rel-optimizers/Tests/join-merge-remote-replica.test
+++ b/sql/test/rel-optimizers/Tests/join-merge-remote-replica.test
@@ -5,7 +5,10 @@ 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'
+create remote table foo_p2 (n int, m text) on 
'mapi:monetdb://localhost:50002/node2'
+
+statement ok
+create remote table foo_p3 (n int, m text) on 
'mapi:monetdb://localhost:50003/node3'
 
 statement ok
 create merge table foo_merge (n int, m text)
@@ -16,25 +19,34 @@ alter table foo_merge add table foo_p1
 statement ok
 alter table foo_merge add table foo_p2
 
+statement ok
+alter table foo_merge add table foo_p3
+
 # create members_rpl with members LOCAL and members_rmt REMOTE
 
 statement ok
-create table members (n int, m text)
+create table members_n1 (n int, m text)
 
 statement ok
-insert into members values (1, 'alice'), (2, 'bob')
+insert into members_n1 values (1, 'alice'), (2, 'bob')
 
 statement ok
-create remote table members_rmt (n int, m text) on 
'mapi:monetdb://localhost:50001/node2'
+create remote table members_n2 (n int, m text) on 
'mapi:monetdb://localhost:50002/node2'
+
+statement ok
+create remote table members_n3 (n int, m text) on 
'mapi:monetdb://localhost:50003/node3'
 
 statement ok
 create replica table members_rpl (n int, m text)
 
 statement ok
-alter table members_rpl add table members
+alter table members_rpl add table members_n1
 
 statement ok
-alter table members_rpl add table members_rmt
+alter table members_rpl add table members_n2
+
+statement ok
+alter table members_rpl add table members_n3
 
 # 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
@@ -52,19 +64,29 @@ 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%" ]
-| | ) [  ]
+| 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_n1") [ "members_n1"."n" UNIQUE as 
"members_rpl"."n", "members_n1"."m" UNIQUE as "members_rpl"."m", 
"members_n1"."%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_n2") [ "members_n2"."n" as "members_rpl"."n", 
"members_n2"."m" as "members_rpl"."m", "members_n2"."%TID%" NOT NULL UNIQUE as 
"members_rpl"."%TID%" ]
+| | | | ) [  ]
+| | | ) [ "foo_merge"."n", "foo_merge"."m", "members_rpl"."n", 
"members_rpl"."m" ] REMOTE mapi:monetdb://localhost:50002/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" ],
 | 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%" ]
+| | | | REMOTE("sys"."foo_p3") [ "foo_p3"."n" as "foo_merge"."n", "foo_p3"."m" 
as "foo_merge"."m" ],
+| | | | REMOTE("sys"."members_n3") [ "members_n3"."n" as "members_rpl"."n", 
"members_n3"."m" as "members_rpl"."m", "members_n3"."%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" 
] REMOTE mapi:monetdb://localhost:50003/node3
 | ) [ "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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to