Changeset: 1897d55de6c6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=1897d55de6c6
Modified Files:
sql/backends/monet5/rel_bin.c
sql/backends/monet5/sql_statement.c
sql/test/BugTracker-2018/Tests/multi-column-hash-wrongly-NIL.Bug-6638.stable.out
sql/test/Tests/All
sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
testing/Mtest.py.in
Branch: default
Log Message:
Merge with Aug2018 branch.
diffs (truncated from 9464 to 300 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
@@ -1607,6 +1607,7 @@ rel2bin_hash_lookup(backend *be, sql_rel
sql_exp *l = e->l;
stmt *idx = bin_find_column(be, left, l->l, sa_strconcat(sql->sa, "%",
i->base.name));
int swap_exp = 0, swap_rel = 0;
+ comp_type comp = cmp_equal;
if (!idx) {
swap_exp = 1;
@@ -1647,6 +1648,7 @@ rel2bin_hash_lookup(backend *be, sql_rel
h = stmt_Nop(be, stmt_list(be, list_append( list_append(
list_append(sa_list(sql->sa), h), bits), s)),
xor);
+ comp = cmp_equal_nil;
} else {
sql_subfunc *hf = sql_bind_func_result(sql->sa,
sql->session->schema, "hash", tail_type(s), NULL, lng);
@@ -1655,12 +1657,12 @@ rel2bin_hash_lookup(backend *be, sql_rel
}
if (h && h->nrcols) {
if (!swap_rel) {
- return stmt_join(be, idx, h, 0, cmp_equal);
+ return stmt_join(be, idx, h, 0, comp);
} else {
- return stmt_join(be, h, idx, 0, cmp_equal);
+ return stmt_join(be, h, idx, 0, comp);
}
} else {
- return stmt_uselect(be, idx, h, cmp_equal, NULL, 0);
+ return stmt_uselect(be, idx, h, comp, NULL, 0);
}
}
@@ -1714,7 +1716,7 @@ releqjoin( backend *be, list *l1, list *
} else { /* need hash */
l = join_hash_key(be, l1);
r = join_hash_key(be, l2);
- res = stmt_join(be, l, r, 0, cmp_op);
+ res = stmt_join(be, l, r, 0, cmp_op == cmp_equal ?
cmp_equal_nil : cmp_op);
}
if (need_left)
res->flag = cmp_left;
@@ -3117,7 +3119,7 @@ insert_check_ukey(backend *be, list *ins
if (s->key && s->nrcols == 0) {
s = NULL;
if (k->idx && hash_index(k->idx->type))
- s = stmt_uselect(be, stmt_idx(be, k->idx,
dels), idx_inserts, cmp_equal, s, 0);
+ s = stmt_uselect(be, stmt_idx(be, k->idx,
dels), idx_inserts, cmp_equal_nil, s, 0);
for (m = k->columns->h; m; m = m->next) {
sql_kc *c = m->data;
stmt *cs = list_fetch(inserts, c->c->colnr);
diff --git a/sql/backends/monet5/sql_statement.c
b/sql/backends/monet5/sql_statement.c
--- a/sql/backends/monet5/sql_statement.c
+++ b/sql/backends/monet5/sql_statement.c
@@ -1404,6 +1404,7 @@ stmt_uselect(backend *be, stmt *op1, stm
switch (cmptype) {
case cmp_equal:
+ case cmp_equal_nil:
op = "=";
break;
case cmp_notequal:
@@ -1443,35 +1444,47 @@ stmt_uselect(backend *be, stmt *op1, stm
k = getDestVar(q);
} else {
assert (cmptype != cmp_filter);
- q = newStmt(mb, algebraRef, thetaselectRef);
- q = pushArgument(mb, q, l);
- if (sub)
- q = pushArgument(mb, q, sub->nr);
- q = pushArgument(mb, q, r);
- switch (cmptype) {
- case cmp_equal:
- q = pushStr(mb, q, anti?"!=":"==");
- break;
- case cmp_notequal:
- q = pushStr(mb, q, anti?"==":"!=");
- break;
- case cmp_lt:
- q = pushStr(mb, q, anti?">=":"<");
- break;
- case cmp_lte:
- q = pushStr(mb, q, anti?">":"<=");
- break;
- case cmp_gt:
- q = pushStr(mb, q, anti?"<=":">");
- break;
- case cmp_gte:
- q = pushStr(mb, q, anti?"<":">=");
- break;
- default:
- showException(GDKout, SQL, "sql", "SQL2MAL: error
impossible select compare\n");
- if (q)
- freeInstruction(q);
- q = NULL;
+ if (cmptype == cmp_equal_nil) {
+ q = newStmt(mb, algebraRef, selectRef);
+ q = pushArgument(mb, q, l);
+ if (sub)
+ q = pushArgument(mb, q, sub->nr);
+ q = pushArgument(mb, q, r);
+ q = pushArgument(mb, q, r);
+ q = pushBit(mb, q, TRUE);
+ q = pushBit(mb, q, TRUE);
+ q = pushBit(mb, q, anti);
+ } else {
+ q = newStmt(mb, algebraRef, thetaselectRef);
+ q = pushArgument(mb, q, l);
+ if (sub)
+ q = pushArgument(mb, q, sub->nr);
+ q = pushArgument(mb, q, r);
+ switch (cmptype) {
+ case cmp_equal:
+ q = pushStr(mb, q, anti?"!=":"==");
+ break;
+ case cmp_notequal:
+ q = pushStr(mb, q, anti?"==":"!=");
+ break;
+ case cmp_lt:
+ q = pushStr(mb, q, anti?">=":"<");
+ break;
+ case cmp_lte:
+ q = pushStr(mb, q, anti?">":"<=");
+ break;
+ case cmp_gt:
+ q = pushStr(mb, q, anti?"<=":">");
+ break;
+ case cmp_gte:
+ q = pushStr(mb, q, anti?"<":">=");
+ break;
+ default:
+ showException(GDKout, SQL, "sql", "SQL2MAL:
error impossible select compare\n");
+ if (q)
+ freeInstruction(q);
+ q = NULL;
+ }
}
if (q == NULL)
return NULL;
diff --git
a/sql/test/BugTracker-2018/Tests/multi-column-hash-wrongly-NIL.Bug-6638.stable.out
b/sql/test/BugTracker-2018/Tests/multi-column-hash-wrongly-NIL.Bug-6638.stable.out
---
a/sql/test/BugTracker-2018/Tests/multi-column-hash-wrongly-NIL.Bug-6638.stable.out
+++
b/sql/test/BugTracker-2018/Tests/multi-column-hash-wrongly-NIL.Bug-6638.stable.out
@@ -16,9 +16,6 @@ stdout of test 'multi-column-hash-wrongl
# Listening for connection requests on mapi:monetdb://earth.da.cwi.nl:34059/
# Listening for UNIX domain connection requests on
mapi:monetdb:///var/tmp/mtest-9105/.s.monetdb.34059
# MonetDB/GIS module loaded
-# MonetDB/SQL module loaded
-
-Ready.
# SQL catalog created, loading sql scripts once
# loading sql script: 09_like.sql
# loading sql script: 10_math.sql
@@ -60,6 +57,9 @@ Ready.
# loading sql script: 90_generator.sql
# loading sql script: 90_generator_hge.sql
# loading sql script: 99_system.sql
+# MonetDB/SQL module loaded
+
+Ready.
# 16:21:04 >
# 16:21:04 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-9105" "--port=34059"
@@ -110,7 +110,7 @@ Ready.
% sys.L1, sys.L1, sys.r2, sys.s2 # table_name
% a, b, x, y # name
% bigint, bigint, bigint, bigint # type
-% 20, 13, 2, 3 # length
+% 20, 20, 2, 3 # length
[ 11, 21, 1, -1 ]
[ 12, 22, 2, -2 ]
[ 13, 23, 3, -3 ]
@@ -128,7 +128,7 @@ Ready.
% sys.L1, sys.L1, sys.s2, sys.r2 # table_name
% a, b, y, x # name
% bigint, bigint, bigint, bigint # type
-% 20, 13, 3, 2 # length
+% 20, 20, 3, 2 # length
[ 11, 21, -1, 1 ]
[ 12, 22, -2, 2 ]
[ 13, 23, -3, 3 ]
@@ -178,7 +178,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.r3, sys.s3 # table_name
% a, b, c, x, y # name
% bigint, bigint, bigint, bigint, bigint # type
-% 15, 10, 15, 1, 2 # length
+% 15, 15, 15, 1, 2 # length
[ 11, 21, 31, 1, -1 ]
[ 12, 22, 32, 2, -2 ]
[ 13, 23, 33, 3, -3 ]
@@ -192,7 +192,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.s3, sys.r3 # table_name
% a, b, c, y, x # name
% bigint, bigint, bigint, bigint, bigint # type
-% 15, 10, 15, 2, 1 # length
+% 15, 15, 15, 2, 1 # length
[ 11, 21, 31, -1, 1 ]
[ 12, 22, 32, -2, 2 ]
[ 13, 23, 33, -3, 3 ]
@@ -242,11 +242,11 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.r4, sys.s4 # table_name
% a, b, c, d, x, y # name
% bigint, bigint, bigint, bigint, bigint, bigint # type
-% 16, 16, 8, 16, 2, 3 # length
+% 16, 16, 16, 16, 2, 3 # length
[ 11, 21, 31, 41, 1, -1 ]
[ 12, 22, 32, 42, 2, -2 ]
[ 13, 23, 33, 43, 3, -3 ]
-[16777216, 0, 0, 0, 4, -4 ]
+[ 16777216, 0, 0, 0, 4, -4 ]
[ 0, 16777216, 0, 0, 5, -5 ]
[ 0, 0, 16777216, 0, 6, -6 ]
[ 0, 0, 0, 16777216, 7, -7 ]
@@ -258,11 +258,11 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.s4, sys.r4 # table_name
% a, b, c, d, y, x # name
% bigint, bigint, bigint, bigint, bigint, bigint # type
-% 16, 16, 8, 16, 3, 2 # length
+% 16, 16, 16, 16, 3, 2 # length
[ 11, 21, 31, 41, -1, 1 ]
[ 12, 22, 32, 42, -2, 2 ]
[ 13, 23, 33, 43, -3, 3 ]
-[16777216, 0, 0, 0, -4, 4 ]
+[ 16777216, 0, 0, 0, -4, 4 ]
[ 0, 16777216, 0, 0, -5, 5 ]
[ 0, 0, 16777216, 0, -6, 6 ]
[ 0, 0, 0, 16777216, -7, 7 ]
@@ -314,7 +314,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.r5, sys.s5 # table_name
% a, b, c, d, e, x, y # name
% bigint, bigint, bigint, bigint, bigint, bigint, bigint # type
-% 16, 16, 16, 6, 16, 2, 3 # length
+% 16, 16, 16, 16, 16, 2, 3 # length
[ 11, 21, 31, 41, 51, 1, -1 ]
[ 12, 22, 32, 42, 52, 2, -2 ]
[ 13, 23, 33, 43, 53, 3, -3 ]
@@ -332,7 +332,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.s5, sys.r5 # table_name
% a, b, c, d, e, y, x # name
% bigint, bigint, bigint, bigint, bigint, bigint, bigint # type
-% 16, 16, 16, 6, 16, 3, 2 # length
+% 16, 16, 16, 16, 16, 3, 2 # length
[ 11, 21, 31, 41, 51, -1, 1 ]
[ 12, 22, 32, 42, 52, -2, 2 ]
[ 13, 23, 33, 43, 53, -3, 3 ]
@@ -394,7 +394,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.r6, sys.s6 #
table_name
% a, b, c, d, e, f, x, y # name
% bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint # type
-% 16, 16, 16, 16, 4, 16, 2, 3 # length
+% 16, 16, 16, 16, 16, 16, 2, 3 # length
[ 11, 21, 31, 41, 51, 61, 1, -1 ]
[ 12, 22, 32, 42, 52, 62, 2, -2 ]
[ 13, 23, 33, 43, 53, 63, 3, -3 ]
@@ -414,7 +414,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.s6, sys.r6 #
table_name
% a, b, c, d, e, f, y, x # name
% bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint # type
-% 16, 16, 16, 16, 4, 16, 3, 2 # length
+% 16, 16, 16, 16, 16, 16, 3, 2 # length
[ 11, 21, 31, 41, 51, 61, -1, 1 ]
[ 12, 22, 32, 42, 52, 62, -2, 2 ]
[ 13, 23, 33, 43, 53, 63, -3, 3 ]
@@ -482,7 +482,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.r7, sys.s7
# table_name
% a, b, c, d, e, f, g, x, y # name
% bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint
# type
-% 17, 17, 17, 17, 17, 5, 17, 2, 3 # length
+% 17, 17, 17, 17, 17, 17, 17, 2, 3 # length
[ 11, 21, 31, 41, 51, 61, 71, 1, -1 ]
[ 12, 22, 32, 42, 52, 62, 72, 2, -2 ]
[ 13, 23, 33, 43, 53, 63, 73, 3, -3 ]
@@ -504,7 +504,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.s7, sys.r7
# table_name
% a, b, c, d, e, f, g, y, x # name
% bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint
# type
-% 17, 17, 17, 17, 17, 5, 17, 3, 2 # length
+% 17, 17, 17, 17, 17, 17, 17, 3, 2 # length
[ 11, 21, 31, 41, 51, 61, 71, -1, 1 ]
[ 12, 22, 32, 42, 52, 62, 72, -2, 2 ]
[ 13, 23, 33, 43, 53, 63, 73, -3, 3 ]
@@ -578,7 +578,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.r8,
sys.s8 # table_name
% a, b, c, d, e, f, g, h, x, y # name
% bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint,
bigint # type
-% 17, 17, 17, 17, 17, 17, 3, 17, 2, 3 #
length
+% 17, 17, 17, 17, 17, 17, 17, 17, 2, 3 #
length
[ 11, 21, 31, 41, 51, 61, 71, 81, 1, -1
]
[ 12, 22, 32, 42, 52, 62, 72, 82, 2, -2
]
[ 13, 23, 33, 43, 53, 63, 73, 83, 3, -3
]
@@ -602,7 +602,7 @@ Ready.
% sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.L1, sys.s8,
sys.r8 # table_name
% a, b, c, d, e, f, g, h, y, x # name
% bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint, bigint,
bigint # type
-% 17, 17, 17, 17, 17, 17, 3, 17, 3, 2 #
length
+% 17, 17, 17, 17, 17, 17, 17, 17, 3, 2 #
length
[ 11, 21, 31, 41, 51, 61, 71, 81, -1, 1
]
[ 12, 22, 32, 42, 52, 62, 72, 82, -2, 2
]
[ 13, 23, 33, 43, 53, 63, 73, 83, -3, 3
]
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list