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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list