Changeset: 02beaa1eb309 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/02beaa1eb309
Modified Files:
sql/backends/monet5/rel_bin.c
sql/test/SQLancer/Tests/sqlancer15.test
Branch: Jul2021
Log Message:
My mistake, while generating MAL code for semi(anti) join subexpressions the
reduce flag must not be set. Instead set depth
diffs (85 lines):
diff --git a/sql/backends/monet5/rel_bin.c b/sql/backends/monet5/rel_bin.c
--- a/sql/backends/monet5/rel_bin.c
+++ b/sql/backends/monet5/rel_bin.c
@@ -2778,11 +2778,11 @@ rel2bin_antijoin(backend *be, sql_rel *r
assert(list_length(mexps) == 1);
for( en = mexps->h; en; en = en->next ) {
sql_exp *e = en->data;
- stmt *ls = exp_bin(be, e->l, left, right, NULL, NULL,
NULL, NULL, 0, 1, 0), *rs;
+ stmt *ls = exp_bin(be, e->l, left, right, NULL, NULL,
NULL, NULL, 1, 0, 0), *rs;
if (!ls)
return NULL;
- if (!(rs = exp_bin(be, e->r, left, right, NULL, NULL,
NULL, NULL, 0, 1, 0)))
+ if (!(rs = exp_bin(be, e->r, left, right, NULL, NULL,
NULL, NULL, 1, 0, 0)))
return NULL;
if (ls->nrcols == 0)
@@ -2881,14 +2881,14 @@ rel2bin_semijoin(backend *be, sql_rel *r
if (equality_only) {
int oldvtop = be->mb->vtop, oldstop =
be->mb->stop, oldvid = be->mb->vid, swap = 0;
- stmt *r, *l = exp_bin(be, e->l, left,
NULL, NULL, NULL, NULL, NULL, 0, 1, 0);
+ stmt *r, *l = exp_bin(be, e->l, left,
NULL, NULL, NULL, NULL, NULL, 1, 0, 0);
if (!l) {
swap = 1;
clean_mal_statements(be,
oldstop, oldvtop, oldvid);
- l = exp_bin(be, e->l, right,
NULL, NULL, NULL, NULL, NULL, 0, 1, 0);
+ l = exp_bin(be, e->l, right,
NULL, NULL, NULL, NULL, NULL, 1, 0, 0);
}
- r = exp_bin(be, e->r, left, right,
NULL, NULL, NULL, NULL, 0, 1, 0);
+ r = exp_bin(be, e->r, left, right,
NULL, NULL, NULL, NULL, 1, 0, 0);
if (swap) {
stmt *t = l;
diff --git a/sql/test/SQLancer/Tests/sqlancer15.test
b/sql/test/SQLancer/Tests/sqlancer15.test
--- a/sql/test/SQLancer/Tests/sqlancer15.test
+++ b/sql/test/SQLancer/Tests/sqlancer15.test
@@ -162,6 +162,46 @@ INSERT INTO "t2" VALUES (false, DATE '19
(true, DATE '1970-01-01', NULL),(false, DATE '1970-01-01', 0.2627602),(true,
DATE '1970-01-01', NULL),(true, DATE '1970-01-01', NULL),(true, DATE
'1969-12-13', NULL)
query I rowsort
+SELECT 1 FROM t2 WHERE (TIME '01:00:00') NOT IN (TIME '01:00:00', TIME
'01:00:00') NOT IN ((VALUES (TRUE)));
+----
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+
+query I rowsort
+SELECT 1 FROM t0, t2 WHERE t0.c2 = CASE WHEN t2.c2 THEN 1 WHEN t2.c6 =
ANY(SELECT t2.c6 FROM t2) THEN 5 END
+----
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+1
+
+query I rowsort
SELECT 1 FROM t0, t2 WHERE t0.c2 BETWEEN 0 AND CASE WHEN t2.c2 THEN 1 WHEN
t2.c4 = ANY(SELECT t2.c4 FROM t2) THEN 2 END
----
1
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list