Changeset: 3c00303c49b2 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=3c00303c49b2
Added Files:
        sql/test/BugTracker-2015/Tests/epoch_now.Bug-3740.sql
        sql/test/BugTracker-2015/Tests/epoch_now.Bug-3740.stable.err
        sql/test/BugTracker-2015/Tests/epoch_now.Bug-3740.stable.out
        sql/test/BugTracker-2015/Tests/mergejoin_NULL.Bug-3747.sql
        sql/test/BugTracker-2015/Tests/mergejoin_NULL.Bug-3747.stable.err
        sql/test/BugTracker-2015/Tests/mergejoin_NULL.Bug-3747.stable.out
        sql/test/BugTracker-2015/Tests/null_is_null.Bug-3739.sql
        sql/test/BugTracker-2015/Tests/null_is_null.Bug-3739.stable.err
        sql/test/BugTracker-2015/Tests/null_is_null.Bug-3739.stable.out
        sql/test/BugTracker-2015/Tests/savepoint.Bug-3738-1.sql
        sql/test/BugTracker-2015/Tests/savepoint.Bug-3738-1.stable.err
        sql/test/BugTracker-2015/Tests/savepoint.Bug-3738-1.stable.out
        sql/test/BugTracker-2015/Tests/savepoint.Bug-3738-2.sql
        sql/test/BugTracker-2015/Tests/savepoint.Bug-3738-2.stable.err
        sql/test/BugTracker-2015/Tests/savepoint.Bug-3738-2.stable.out
Modified Files:
        clients/Tests/SQL-dump.stable.out.int128
        gdk/gdk_join.c
        gdk/gdk_search.c
        gdk/gdk_select.c
        geom/monetdb5/geom.c
        monetdb5/modules/kernel/algebra.c
        monetdb5/tests/gdkTests/Tests/selecttst.stable.out
        sql/backends/monet5/generator/generator.c
        sql/backends/monet5/rel_bin.c
        sql/backends/monet5/sql_gencode.c
        sql/backends/monet5/sql_upgrades.c
        sql/benchmarks/ssbm/Tests/01-explain.stable.out
        sql/benchmarks/ssbm/Tests/01-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/02-explain.stable.out
        sql/benchmarks/ssbm/Tests/02-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/03-explain.stable.out
        sql/benchmarks/ssbm/Tests/03-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/04-explain.stable.out
        sql/benchmarks/ssbm/Tests/04-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/05-explain.stable.out
        sql/benchmarks/ssbm/Tests/05-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/06-explain.stable.out
        sql/benchmarks/ssbm/Tests/06-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/07-explain.stable.out
        sql/benchmarks/ssbm/Tests/07-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/08-explain.stable.out
        sql/benchmarks/ssbm/Tests/08-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/09-explain.stable.out
        sql/benchmarks/ssbm/Tests/09-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/10-explain.stable.out
        sql/benchmarks/ssbm/Tests/10-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/11-explain.stable.out
        sql/benchmarks/ssbm/Tests/11-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/12-explain.stable.out
        sql/benchmarks/ssbm/Tests/12-explain.stable.out.int128
        sql/benchmarks/ssbm/Tests/13-explain.stable.out
        sql/benchmarks/ssbm/Tests/13-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/02-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out
        sql/benchmarks/tpch/Tests/03-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/05-explain.stable.out
        sql/benchmarks/tpch/Tests/05-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/05-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/07-explain.stable.out
        sql/benchmarks/tpch/Tests/07-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/08-explain.stable.out
        sql/benchmarks/tpch/Tests/08-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/10-explain.stable.out
        sql/benchmarks/tpch/Tests/10-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/11-explain.stable.out
        sql/benchmarks/tpch/Tests/11-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/12-explain.stable.out
        sql/benchmarks/tpch/Tests/12-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/16-explain.stable.out
        sql/benchmarks/tpch/Tests/16-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/17-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/19-explain.stable.out
        sql/benchmarks/tpch/Tests/19-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/20-explain.stable.out
        sql/benchmarks/tpch/Tests/20-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/20-explain.stable.out.int128
        sql/benchmarks/tpch/Tests/21-explain.stable.out
        sql/benchmarks/tpch/Tests/21-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/22-explain.stable.out
        sql/benchmarks/tpch/Tests/22-explain.stable.out.32bit
        sql/benchmarks/tpch/Tests/22-explain.stable.out.int128
        sql/scripts/17_temporal.sql
        sql/server/rel_optimizer.c
        sql/server/rel_select.c
        sql/server/sql_mvc.c
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_table.c
        sql/storage/bat/bat_utils.c
        sql/storage/store.c
        sql/test/BugDay_2005-10-06_2.9.3/Tests/max_min_sum_null.SF-1123132.sql
        sql/test/BugTracker-2009/Tests/explain_gives_crash.SF-2741829.stable.out
        
sql/test/BugTracker-2012/Tests/rewrite_like_into_likesubselect.Bug-3179.stable.out
        sql/test/BugTracker-2013/Tests/swapped_likejoin.Bug-3375.stable.out
        sql/test/BugTracker-2014/Tests/too_general_errmsg.Bug-3605.stable.err
        sql/test/BugTracker-2015/Tests/All
        sql/test/BugTracker/Tests/explain.SF-1739353.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out.32bit
        sql/test/Dependencies/Tests/Dependencies.stable.out
        sql/test/Dependencies/Tests/Dependencies.stable.out.int128
        sql/test/Tests/systemfunctions.stable.out
        sql/test/Tests/systemfunctions.stable.out.int128
        sql/test/leaks/Tests/check1.stable.out.int128
        sql/test/leaks/Tests/check2.stable.out.int128
        sql/test/leaks/Tests/check3.stable.out.int128
        sql/test/leaks/Tests/check4.stable.out.int128
        sql/test/leaks/Tests/check5.stable.out.int128
        tools/merovingian/client/monetdb.c
Branch: default
Log Message:

merged with Jul2015


diffs (truncated from 6405 to 300 lines):

diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c
--- a/gdk/gdk_join.c
+++ b/gdk/gdk_join.c
@@ -1195,6 +1195,8 @@ mergejoin(BAT *r1, BAT *r2, BAT *l, BAT 
                 * going to match: ready for the next iteration. */
                if (!nil_matches && cmp(v, nil) == 0) {
                        /* v is nil and nils don't match anything */
+                       r1->tdense = 0;
+                       r2->tdense = 0;
                        if (must_match) {
                                GDKerror("mergejoin(%s,%s) does not hit always 
=> can't use fetchjoin.\n", BATgetId(l), BATgetId(r));
                                goto bailout;
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -1270,13 +1270,14 @@ BATsubselect(BAT *b, BAT *s, const void 
        equi = th == NULL || (lval && ATOMcmp(t, tl, th) == 0); /* point 
select? */
        if (equi) {
                assert(lval);
-               if (th == NULL)
-                       hi = li;
+               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
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -69,9 +69,7 @@ geom_export str wkbgetcoordX(dbl *out, w
 geom_export str wkbgetcoordY(dbl *out, wkb **geom);
 geom_export str wkbcreatepoint(wkb **out, const dbl *x, const dbl *y);
 geom_export str wkbcreatepoint_bat(bat *out, const bat *x, const bat *y);
-geom_export str pnpoly_(int *out, int nvert, dbl *vx, dbl *vy, int *point_x, 
int *point_y);
 geom_export double isLeft( double P0x, double P0y, double P1x, double P1y, 
double P2x, double P2y);
-geom_export str pnpolyWithHoles_(int *out, int nvert, dbl *vx, dbl *vy, int 
nholes, dbl **hx, dbl **hy, int *hn, bat *point_x, bat *point_y);
 geom_export str wkbContains_point_bat(bat *out, wkb **a, bat *point_x, bat 
*point_y);
 geom_export str wkbContains_point(bit *out, wkb **a, dbl *point_x, dbl 
*point_y);
 geom_export str mbroverlaps(bit *out, mbr **b1, mbr **b2);
@@ -819,14 +817,14 @@ isLeft( double P0x, double P0y, double P
                        - (P2x -  P0x) * (P1y - P0y) );
 }
 
-str
+static str
 pnpoly_(int *out, int nvert, dbl *vx, dbl *vy, int *point_x, int *point_y)
 {
        BAT *bo = NULL, *bpx = NULL, *bpy;
        dbl *px = NULL, *py = NULL;
        BUN i = 0, cnt;
        int j = 0, nv;
-       bte *cs = NULL;
+       bit *cs = NULL;
 
        /*Get the BATs*/
        if ((bpx = BATdescriptor(*point_x)) == NULL) {
@@ -849,7 +847,7 @@ pnpoly_(int *out, int nvert, dbl *vx, db
        }
 
        /*Create output BAT*/
-       if ((bo = BATnew(TYPE_void, ATOMindex("bte"), BATcount(bpx), 
TRANSIENT)) == NULL) {
+       if ((bo = BATnew(TYPE_void, ATOMindex("bit"), BATcount(bpx), 
TRANSIENT)) == NULL) {
                BBPunfix(bpx->batCacheid);
                BBPunfix(bpy->batCacheid);
                throw(MAL, "geom.point", MAL_MALLOC_FAIL);
@@ -862,7 +860,7 @@ pnpoly_(int *out, int nvert, dbl *vx, db
 
        nv = nvert -1;
        cnt = BATcount(bpx);
-       cs = (bte*) Tloc(bo,BUNfirst(bo));
+       cs = (bit*) Tloc(bo,BUNfirst(bo));
        for (i = 0; i < cnt; i++) {
                int wn = 0;
                for (j = 0; j < nv; j++) {
@@ -888,14 +886,14 @@ pnpoly_(int *out, int nvert, dbl *vx, db
        return MAL_SUCCEED;
 }
 
-str
+static str
 pnpolyWithHoles_(bat *out, int nvert, dbl *vx, dbl *vy, int nholes, dbl **hx, 
dbl **hy, int *hn, bat *point_x, bat *point_y)
 {
        BAT *bo = NULL, *bpx = NULL, *bpy;
        dbl *px = NULL, *py = NULL;
        BUN i = 0, cnt = 0;
        int j = 0, h = 0;
-       bte *cs = NULL;
+       bit *cs = NULL;
 
        /*Get the BATs*/
        if ((bpx = BATdescriptor(*point_x)) == NULL) {
@@ -917,7 +915,7 @@ pnpolyWithHoles_(bat *out, int nvert, db
        }
 
        /*Create output BAT*/
-       if ((bo = BATnew(TYPE_void, ATOMindex("bte"), BATcount(bpx), 
TRANSIENT)) == NULL) {
+       if ((bo = BATnew(TYPE_void, ATOMindex("bit"), BATcount(bpx), 
TRANSIENT)) == NULL) {
                BBPunfix(bpx->batCacheid);
                BBPunfix(bpy->batCacheid);
                throw(MAL, "geom.point", MAL_MALLOC_FAIL);
@@ -928,7 +926,7 @@ pnpolyWithHoles_(bat *out, int nvert, db
        px = (dbl *) Tloc(bpx, BUNfirst(bpx));
        py = (dbl *) Tloc(bpy, BUNfirst(bpx));
        cnt = BATcount(bpx);
-       cs = (bte*) Tloc(bo,BUNfirst(bo));
+       cs = (bit*) Tloc(bo,BUNfirst(bo));
        for (i = 0; i < cnt; i++) {
                int wn = 0;
 
@@ -985,7 +983,8 @@ pnpolyWithHoles_(bat *out, int nvert, db
 #define POLY_NUM_HOLE 10
 
 str
-wkbContains_point_bat(bat *out, wkb **a, bat *point_x, bat *point_y) {
+wkbContains_point_bat(bat *out, wkb **a, bat *point_x, bat *point_y) 
+{
        double *vert_x, *vert_y, **holes_x = NULL, **holes_y= NULL;
        int *holes_n= NULL, j;
        wkb *geom = NULL;
diff --git a/monetdb5/modules/kernel/algebra.c 
b/monetdb5/modules/kernel/algebra.c
--- a/monetdb5/modules/kernel/algebra.c
+++ b/monetdb5/modules/kernel/algebra.c
@@ -26,16 +26,16 @@
  * and we have to de-reference them before entering the gdk library.
  * This calls for knowlegde on the underlying BAT typs`s
  */
-#define derefStr(b, s, v)                                                      
\
-               do {                                                            
                \
-                       int _tpe= ATOMstorage((b)->s##type);    \
-                       if (_tpe >= TYPE_str) {                                 
\
-                               if ((v) == 0 || *(str*) (v) == 0)       \
-                                       (v) = (str) str_nil;                    
\
-                               else                                            
                \
-                                       (v) = *(str *) (v);                     
        \
-                       }                                                       
                        \
-               } while (0)
+#define derefStr(b, s, v)                                      \
+       do {                                                    \
+               int _tpe= ATOMstorage((b)->s##type);            \
+               if (_tpe >= TYPE_str) {                         \
+                       if ((v) == 0 || *(str*) (v) == 0)       \
+                               (v) = (str) str_nil;            \
+                       else                                    \
+                               (v) = *(str *) (v);             \
+               }                                               \
+       } while (0)
 
 #include "monetdb_config.h"
 #include "algebra.h"
@@ -433,23 +433,26 @@ str
 ALGselectNotNil(bat *result, const bat *bid)
 {
        BAT *b, *bn = NULL;
-       ptr low,high;
-       bit bound=FALSE;
 
        if ((b = BATdescriptor(*bid)) == NULL)
                throw(MAL, "algebra.selectNotNil", RUNTIME_OBJECT_MISSING);
 
        if( BATcount_no_nil(b) != BATcount(b) ){
-               low=high= ATOMnilptr(b->ttype);
-               CMDselect_(&bn, b, low, high, &bound, &bound);
+               BAT *s = NULL;
+               ptr low = ATOMnilptr(b->ttype);
+
+               s = BATsubselect(b, s, low, NULL, TRUE, TRUE, TRUE);
+               if (s) {
+                       bn = BATproject(s, b);
+                       BBPunfix(s->batCacheid);
+               }
+               BBPunfix(b->batCacheid);
                if (bn) {
                        if (!(bn->batDirty&2)) BATsetaccess(bn, BAT_READ);
                        *result = bn->batCacheid;
                        BBPkeepref(*result);
-                       BBPunfix(b->batCacheid);
                        return MAL_SUCCEED;
                }
-               BBPunfix(b->batCacheid);
                throw(MAL, "algebra.selectNotNil", GDK_EXCEPTION);
        }
        /* just pass on the result */
@@ -1677,6 +1680,11 @@ ALGslice_oid(bat *ret, const bat *bid, c
 {
        BAT *b, *bv;
 
+       if (*start == oid_nil && end && *end == oid_nil) {
+               *ret = *bid;
+               BBPincref(*ret, TRUE);
+               return MAL_SUCCEED;
+       }
        if ((b = BATdescriptor(*bid)) == NULL)
                throw(MAL, "algebra.slice", RUNTIME_OBJECT_MISSING);
 
diff --git a/monetdb5/tests/gdkTests/Tests/selecttst.stable.out 
b/monetdb5/tests/gdkTests/Tests/selecttst.stable.out
--- a/monetdb5/tests/gdkTests/Tests/selecttst.stable.out
+++ b/monetdb5/tests/gdkTests/Tests/selecttst.stable.out
@@ -501,7 +501,8 @@ end user.main;
 #-----------------#
 # h    t         # name
 # void int       # type
-#-----------------#
+#--------------------------#
+[ 0@0, 4  ]
 [ "low=4 high=4 li=false hi=true anti=false" ]
 #-----------------#
 # h    t         # name
@@ -535,10 +536,9 @@ end user.main;
 [ 1@0,   1       ]
 [ 2@0,   2       ]
 [ 3@0,   3       ]
-[ 4@0,   4       ]
-[ 5@0,   5       ]
-[ 6@0,   6       ]
-[ 7@0,   7       ]
+[ 4@0, 5  ]
+[ 5@0, 6  ]
+[ 6@0, 7  ]
 [ "low=4 high=4 li=false hi=true anti=true" ]
 #-----------------#
 # h    t         # name
@@ -568,7 +568,28 @@ end user.main;
 #-----------------#
 # h    t         # name
 # void int       # type
-#-----------------#
+#--------------------------#
+[ "low=nil high=nil li=true hi=false anti=false" ]
+#--------------------------#
+# h    t  # name
+# void int  # type
+#--------------------------#
+[ "low=nil high=nil li=false hi=true anti=false" ]
+#--------------------------#
+# h    t  # name
+# void int  # type
+#--------------------------#
+[ "low=nil high=nil li=true hi=true anti=false" ]
+#--------------------------#
+# h    t  # name
+# void int  # type
+#--------------------------#
+[ 0@0, nil  ]
+[ "low=nil high=nil li=false hi=false anti=true" ]
+#--------------------------#
+# h    t  # name
+# void int  # type
+#--------------------------#
 [ 0@0,   0       ]
 [ 1@0,   1       ]
 [ 2@0,   2       ]
@@ -577,8 +598,8 @@ end user.main;
 [ 5@0,   5       ]
 [ 6@0,   6       ]
 [ 7@0,   7       ]
-[ "low=nil high=nil li=true hi=false anti=false" ]
-#-----------------#
+[ "low=nil high=nil li=true hi=false anti=true" ]
+#--------------------------#
 # h    t         # name
 # void int       # type
 #-----------------#
@@ -590,8 +611,8 @@ end user.main;
 [ 5@0,   5       ]
 [ 6@0,   6       ]
 [ 7@0,   7       ]
-[ "low=nil high=nil li=false hi=true anti=false" ]
-#-----------------#
+[ "low=nil high=nil li=false hi=true anti=true" ]
+#--------------------------#
 # h    t         # name
 # void int       # type
 #-----------------#
@@ -603,27 +624,6 @@ end user.main;
 [ 5@0,   5       ]
 [ 6@0,   6       ]
 [ 7@0,   7       ]
-[ "low=nil high=nil li=true hi=true anti=false" ]
-#-----------------#
-# h    t         # name
-# void int       # type
-#-----------------#
-[ 0@0,   nil     ]
-[ "low=nil high=nil li=false hi=false anti=true" ]
-#-----------------#
-# h    t         # name
-# void int       # type
-#-----------------#
-[ "low=nil high=nil li=true hi=false anti=true" ]
-#-----------------#
-# h    t         # name
-# void int       # type
-#-----------------#
-[ "low=nil high=nil li=false hi=true anti=true" ]
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to