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

Reply via email to