Changeset: 9c8d67da017d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9c8d67da017d
Added Files:
        monetdb5/modules/kernel/Tests/select.malC
        monetdb5/modules/kernel/Tests/select.stable.err
        monetdb5/modules/kernel/Tests/select.stable.out
Modified Files:
        gdk/gdk_logger.c
        gdk/gdk_select.c
        monetdb5/modules/kernel/Tests/All
        monetdb5/modules/mal/Tests/orderidx01.malC
        monetdb5/modules/mal/Tests/orderidx02.malC
        sql/backends/monet5/UDF/pyapi/convert_loops.h
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_statement.c
        sql/backends/monet5/vaults/netcdf/netcdf.c
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_utils.c
        sql/storage/bat/res_table.c
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2015/Tests/useless_casts.Bug-3756.stable.out
        sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
Branch: default
Log Message:

Merge with Dec2016 branch.


diffs (truncated from 3631 to 300 lines):

diff --git a/gdk/gdk_logger.c b/gdk/gdk_logger.c
--- a/gdk/gdk_logger.c
+++ b/gdk/gdk_logger.c
@@ -1598,6 +1598,8 @@ logger_load(int debug, const char *fn, c
                                logger_fatal("Logger_new: inconsistent 
database, snapshots_tid does not exist", 0, 0, 0);
                } else {
                        lg->dsnapshots = logbat_new(TYPE_oid, 1, PERSISTENT);
+                       if (lg->dsnapshots == NULL)
+                               logger_fatal("Logger_new: cannot create 
dsnapshot bat", 0, 0, 0);
                        snprintf(bak, sizeof(bak), "%s_dsnapshots", fn);
                        if (BBPrename(lg->dsnapshots->batCacheid, bak) < 0)
                                logger_fatal("Logger_new: BBPrename to %s 
failed", bak, 0, 0);
@@ -2513,6 +2515,9 @@ bm_commit(logger *lg)
        BAT *n = logbat_new(TYPE_str, BATcount(lg->freed), TRANSIENT);
        gdk_return res;
 
+       if (n == NULL)
+               return LOG_ERR;
+
        /* subcommit the freed bats */
        if (BATcount(lg->freed)) {
 
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1275,14 +1275,13 @@ BATselect(BAT *b, BAT *s, const void *tl
        equi = th == NULL || (lval && ATOMcmp(t, tl, th) == 0); /* point 
select? */
        if (equi) {
                assert(lval);
-               hi = li;
+               if (th == NULL)
+                       hi = li;
                th = tl;
                hval = 1;
        } else {
                hval = ATOMcmp(t, th, nil) != 0;
        }
-       if (!equi && !lval && !hval && lnil) 
-               anti = !anti;
        if (anti) {
                if (lval != hval) {
                        /* one of the end points is nil and the other
@@ -1857,7 +1856,7 @@ BATthetaselect(BAT *b, BAT *s, const voi
        nil = ATOMnilptr(b->ttype);
        if (ATOMcmp(b->ttype, val, nil) == 0)
                return newempty();
-       if (op[0] == '=' && ((op[1] == '=' && op[2] == 0) || op[2] == 0)) {
+       if (op[0] == '=' && ((op[1] == '=' && op[2] == 0) || op[1] == 0)) {
                /* "=" or "==" */
                return BATselect(b, s, val, NULL, 1, 1, 0);
        }
diff --git a/monetdb5/modules/kernel/Tests/All 
b/monetdb5/modules/kernel/Tests/All
--- a/monetdb5/modules/kernel/Tests/All
+++ b/monetdb5/modules/kernel/Tests/All
@@ -2,3 +2,4 @@ time01
 TriBool
 batstr
 math
+select
diff --git a/monetdb5/modules/kernel/Tests/select.malC 
b/monetdb5/modules/kernel/Tests/select.malC
new file mode 100644
--- /dev/null
+++ b/monetdb5/modules/kernel/Tests/select.malC
@@ -0,0 +1,1010 @@
+b := bat.new(:int);
+bat.append(b, 7);
+bat.append(b, 6);
+bat.append(b, 8);
+bat.append(b, nil:int);
+bat.append(b, 9);
+bat.append(b, 5);
+bat.append(b, 0);
+bat.append(b, 3);
+bat.append(b, 2);
+bat.append(b, 1);
+bat.append(b, 4);
+s := algebra.sort(b, false, true);
+r := algebra.sort(b, true, true);
+bat.setAccess(b, "r");
+bat.setAccess(s, "r");
+bat.setAccess(r, "r");
+
+# if tl and th are both nil, and li and hi are both true,
+# algebra.select translates th to NULL
+
+x := algebra.select(b, nil:int, nil:int, true, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nil
+io.print("nil");
+x := algebra.select(b, nil:int, nil:int, true, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4,5,6,7,8,9
+io.print("0,1,2,3,4,5,6,7,8,9");
+x := algebra.select(b, nil:int, nil:int, false, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4,5,6,7,8,9
+io.print("0,1,2,3,4,5,6,7,8,9");
+x := algebra.select(b, nil:int, nil:int, false, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4,5,6,7,8,9
+io.print("0,1,2,3,4,5,6,7,8,9");
+x := algebra.select(b, nil:int, nil:int, true, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4,5,6,7,8,9
+io.print("0,1,2,3,4,5,6,7,8,9");
+x := algebra.select(b, nil:int, nil:int, true, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nothing
+io.print("nothing");
+x := algebra.select(b, nil:int, nil:int, false, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nothing
+io.print("nothing");
+x := algebra.select(b, nil:int, nil:int, false, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nothing
+io.print("nothing");
+
+x := algebra.select(b, 4, nil:int, true, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 4,5,6,7,8,9
+io.print("4,5,6,7,8,9");
+x := algebra.select(b, 4, nil:int, true, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 4,5,6,7,8,9
+io.print("4,5,6,7,8,9");
+x := algebra.select(b, 4, nil:int, false, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 5,6,7,8,9
+io.print("5,6,7,8,9");
+x := algebra.select(b, 4, nil:int, false, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 5,6,7,8,9
+io.print("5,6,7,8,9");
+x := algebra.select(b, 4, nil:int, true, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3
+io.print("0,1,2,3");
+x := algebra.select(b, 4, nil:int, true, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3
+io.print("0,1,2,3");
+x := algebra.select(b, 4, nil:int, false, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4
+io.print("0,1,2,3,4");
+x := algebra.select(b, 4, nil:int, false, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4
+io.print("0,1,2,3,4");
+
+x := algebra.select(b, nil:int, 4, true, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4
+io.print("0,1,2,3,4");
+x := algebra.select(b, nil:int, 4, true, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3
+io.print("0,1,2,3");
+x := algebra.select(b, nil:int, 4, false, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4
+io.print("0,1,2,3,4");
+x := algebra.select(b, nil:int, 4, false, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3
+io.print("0,1,2,3");
+x := algebra.select(b, nil:int, 4, true, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 5,6,7,8,9
+io.print("5,6,7,8,9");
+x := algebra.select(b, nil:int, 4, true, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 4,5,6,7,8,9
+io.print("4,5,6,7,8,9");
+x := algebra.select(b, nil:int, 4, false, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 5,6,7,8,9
+io.print("5,6,7,8,9");
+x := algebra.select(b, nil:int, 4, false, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 4,5,6,7,8,9
+io.print("4,5,6,7,8,9");
+
+x := algebra.select(b, 4, 4, true, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 4
+io.print("4");
+x := algebra.select(b, 4, 4, true, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nothing
+io.print("nothing");
+x := algebra.select(b, 4, 4, false, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nothing
+io.print("nothing");
+x := algebra.select(b, 4, 4, false, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nothing
+io.print("nothing");
+x := algebra.select(b, 4, 4, true, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,5,6,7,8,9
+io.print("0,1,2,3,5,6,7,8,9");
+x := algebra.select(b, 4, 4, true, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4,5,6,7,8,9
+io.print("0,1,2,3,4,5,6,7,8,9");
+x := algebra.select(b, 4, 4, false, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4,5,6,7,8,9
+io.print("0,1,2,3,4,5,6,7,8,9");
+x := algebra.select(b, 4, 4, false, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,4,5,6,7,8,9
+io.print("0,1,2,3,4,5,6,7,8,9");
+
+x := algebra.select(b, 3, 7, true, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 3,4,5,6,7
+io.print("3,4,5,6,7");
+x := algebra.select(b, 3, 7, true, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 3,4,5,6
+io.print("3,4,5,6");
+x := algebra.select(b, 3, 7, false, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 4,5,6,7
+io.print("4,5,6,7");
+x := algebra.select(b, 3, 7, false, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 4,5,6
+io.print("4,5,6");
+x := algebra.select(b, 3, 7, true, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,8,9
+io.print("0,1,2,8,9");
+x := algebra.select(b, 3, 7, true, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,7,8,9
+io.print("0,1,2,7,8,9");
+x := algebra.select(b, 3, 7, false, true, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,8,9
+io.print("0,1,2,3,8,9");
+x := algebra.select(b, 3, 7, false, false, true);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # 0,1,2,3,7,8,9
+io.print("0,1,2,3,7,8,9");
+
+x := algebra.select(b, 7, 3, true, true, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nothing
+io.print("nothing");
+x := algebra.select(b, 7, 3, true, false, false);
+z := algebra.projection(x, b);
+z := algebra.sort(z, false, true);
+io.print(z);                    # nothing
+io.print("nothing");
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to