Changeset: 85bbd04c51b0 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=85bbd04c51b0
Added Files:
        sql/test/BugTracker-2014/Tests/case-sqrt.Bug-3627.sql
        sql/test/BugTracker-2014/Tests/case-sqrt.Bug-3627.stable.err
        sql/test/BugTracker-2014/Tests/case-sqrt.Bug-3627.stable.out
        sql/test/BugTracker-2014/Tests/column-with-comma.Bug-3616.sql
        sql/test/BugTracker-2014/Tests/column-with-comma.Bug-3616.stable.err
        sql/test/BugTracker-2014/Tests/column-with-comma.Bug-3616.stable.out
Modified Files:
        .hgtags
        MonetDB.spec
        NT/installer32/MonetDB-ODBC-Installer.vdproj
        NT/installer32/MonetDB5-Geom-Module.vdproj
        NT/installer32/MonetDB5-SQL-Installer.vdproj
        NT/installer64/MonetDB-ODBC-Installer.vdproj
        NT/installer64/MonetDB5-Geom-Module.vdproj
        NT/installer64/MonetDB5-SQL-Installer.vdproj
        NT/monetdb_config.h.in
        NT/rules.msc
        clients/Tests/exports.stable.out
        clients/mapilib/mapi.rc
        clients/odbc/driver/driver.rc
        clients/odbc/winsetup/setup.rc
        clients/python2/setup.py
        clients/python3/setup.py
        configure.ag
        debian/changelog
        gdk/gdk.h
        gdk/gdk_atoms.h
        gdk/gdk_bat.c
        gdk/gdk_batop.c
        gdk/gdk_bbp.c
        gdk/gdk_private.h
        gdk/libbat.rc
        libversions
        monetdb5/modules/atoms/mtime.c
        monetdb5/modules/atoms/mtime.h
        monetdb5/modules/mal/sysmon.c
        monetdb5/tools/libmonetdb5.rc
        sql/backends/monet5/bam/bam_lib.c
        sql/backends/monet5/sql_result.c
        sql/jdbc/tests/Tests/Test_PSsqldata.stable.out
        sql/test/BugTracker-2014/Tests/All
        sql/test/pg_regress/Tests/alter_table.stable.err
        sql/test/pg_regress/Tests/arrays.stable.err
        sql/test/pg_regress/Tests/boolean.stable.err
        sql/test/pg_regress/Tests/case.stable.err
        sql/test/pg_regress/Tests/char.stable.err
        sql/test/pg_regress/Tests/comments.stable.err
        sql/test/pg_regress/Tests/create_aggregate.stable.err
        sql/test/pg_regress/Tests/create_misc.stable.err
        sql/test/pg_regress/Tests/create_operator.stable.err
        sql/test/pg_regress/Tests/date.stable.err
        sql/test/pg_regress/Tests/date.stable.out
        sql/test/pg_regress/Tests/drop.stable.err
        sql/test/pg_regress/Tests/float4.stable.err
        sql/test/pg_regress/Tests/float8.stable.err
        sql/test/pg_regress/Tests/inet.stable.err
        sql/test/pg_regress/Tests/inet.stable.out
        sql/test/pg_regress/Tests/insert.stable.err
        sql/test/pg_regress/Tests/int2.stable.err
        sql/test/pg_regress/Tests/int4.stable.err
        sql/test/pg_regress/Tests/int8.stable.err
        sql/test/pg_regress/Tests/interval.stable.err
        sql/test/pg_regress/Tests/limit.stable.err
        sql/test/pg_regress/Tests/numeric.stable.err
        sql/test/pg_regress/Tests/numeric_big.stable.err
        sql/test/pg_regress/Tests/numerology.stable.err
        sql/test/pg_regress/Tests/oid.stable.err
        sql/test/pg_regress/Tests/select_into.stable.err
        sql/test/pg_regress/Tests/strings.stable.err
        sql/test/pg_regress/Tests/strings_cast.stable.err
        sql/test/pg_regress/Tests/strings_concat.stable.err
        sql/test/pg_regress/Tests/timestamp.stable.err
        sql/test/pg_regress/Tests/timestamptz.stable.err
        sql/test/pg_regress/Tests/varchar.stable.err
        sql/test/pg_regress/Tests/without_oid.stable.err
        vertoo.data
Branch: bamloader
Log Message:

Merge with default


diffs (truncated from 7109 to 300 lines):

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -583,3 +583,6 @@ 4f894ebf1a93ae895ec23d54ce2112bf21a6427e
 88a29a5a2bef5c6cef6b3bfa5ab7c4d3b855a2c8 Oct2014_release
 eb2967c408350131b63f5393704fd697c701fc49 Oct2014_5
 2da8cbcb65ed56690bad29f089d996eac347b48d Oct2014_SP1_release
+ee3d8e3af6aae6be6cfaa876a379a0751f164e97 Oct2014_7
+2da8cbcb65ed56690bad29f089d996eac347b48d Oct2014_SP1_release
+6607367487d91eb02c5eb7dfb9d96606f8f7c6f0 Oct2014_SP1_release
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -960,6 +960,9 @@ mv $RPM_BUILD_ROOT%{_datadir}/doc/MonetD
 rm -fr $RPM_BUILD_ROOT
 
 %changelog
+* Fri Nov 21 2014 Sjoerd Mullender <sjo...@acm.org> - 11.19.7-20141121
+- Rebuilt.
+
 * Thu Nov 20 2014 Sjoerd Mullender <sjo...@acm.org> - 11.19.5-20141120
 - Rebuilt.
 - BZ#3580: cosmetic change (append newline)
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -1658,7 +1658,7 @@ str MTIMEtime_add_msec_interval_wrap(day
 str MTIMEtime_sub_msec_interval_wrap(daytime *ret, const daytime *t, const lng 
*msec);
 str MTIMEtimestamp(timestamp *ret, const int *sec);
 str MTIMEtimestamp2timestamp(timestamp *ret, const timestamp *src);
-str MTIMEtimestamp_add(timestamp *ret, const timestamp *v, const lng *msecs);
+str MTIMEtimestamp_add(timestamp *ret, const timestamp *v, const lng *msec);
 str MTIMEtimestamp_add_month_interval_lng_wrap(timestamp *ret, const timestamp 
*t, const lng *months);
 str MTIMEtimestamp_add_month_interval_wrap(timestamp *ret, const timestamp *t, 
const int *months);
 str MTIMEtimestamp_bulk(bat *ret, bat *bid);
@@ -1678,7 +1678,7 @@ str MTIMEtimestamp_extract_daytime_defau
 str MTIMEtimestamp_fromstr(timestamp *ret, const char *const *d);
 str MTIMEtimestamp_hours(int *ret, const timestamp *t);
 str MTIMEtimestamp_inside_dst(bit *ret, const timestamp *p, const tzone *z);
-str MTIMEtimestamp_lng(timestamp *ret, const lng *msecs);
+str MTIMEtimestamp_lng(timestamp *ret, const lng *msec);
 str MTIMEtimestamp_lng_bulk(bat *ret, bat *bid);
 str MTIMEtimestamp_milliseconds(int *ret, const timestamp *t);
 str MTIMEtimestamp_minutes(int *ret, const timestamp *t);
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+monetdb (11.19.7-20141121) unstable; urgency=low
+
+  * Rebuilt.
+
+ -- Sjoerd Mullender <sjo...@acm.org>  Fri, 21 Nov 2014 10:14:18 +0100
+
 monetdb (11.19.5-20141120) unstable; urgency=low
 
   * Rebuilt.
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -1253,7 +1253,7 @@ gdk_export bte ATOMelmshift(int sz);
                                break;                                  \
                        }                                               \
                } else {                                                \
-                       ATOMputFIX((b)->HT->type, (b)->HT->vheap, (p), v); \
+                       ATOMputFIX((b)->HT->type, (p), v);              \
                }                                                       \
        } while (0)
 #define Hputvalue(b, p, v, copyall)    HTputvalue(b, p, v, copyall, H)
@@ -1301,7 +1301,7 @@ gdk_export bte ATOMelmshift(int sz);
                                break;                                  \
                        }                                               \
                } else {                                                \
-                       ATOMreplaceFIX((b)->HT->type, (b)->HT->vheap, (p), v); \
+                       ATOMreplaceFIX((b)->HT->type, (p), v);          \
                }                                                       \
        } while (0)
 #define Hreplacevalue(b, p, v)         HTreplacevalue(b, p, v, H)
diff --git a/gdk/gdk_atoms.h b/gdk/gdk_atoms.h
--- a/gdk/gdk_atoms.h
+++ b/gdk/gdk_atoms.h
@@ -244,7 +244,7 @@ gdk_export const ptr ptr_nil;
                if ((*BATatoms[type].atomPut)(heap, dst, src) == 0)     \
                        goto bunins_failed;                             \
        } while (0)
-#define ATOMputFIX(type, heap, dst, src)                               \
+#define ATOMputFIX(type, dst, src)                                     \
        do {                                                            \
                int t_ = (type);                                        \
                void *d_ = (dst);                                       \
@@ -290,7 +290,7 @@ gdk_export const ptr ptr_nil;
                *d_ = loc_;                                             \
                ATOMfix(t_, s_);                                        \
        } while (0)
-#define ATOMreplaceFIX(type, heap, dst, src)                           \
+#define ATOMreplaceFIX(type, dst, src)                                 \
        do {                                                            \
                int t_ = (type);                                        \
                void *d_ = (dst);                                       \
diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c
--- a/gdk/gdk_bat.c
+++ b/gdk/gdk_bat.c
@@ -1214,6 +1214,11 @@ BUNins(BAT *b, const void *h, const void
                        return NULL;
                }
 
+               if (unshare_string_heap(b) == GDK_FAIL) {
+                       GDKerror("BUNins: failed to unshare string heap\n");
+                       return NULL;
+               }
+
                ALIGNins(b, "BUNins", force);
                b->batDirty = 1;
                if (b->H->hash && b->H->vheap)
@@ -1320,6 +1325,11 @@ BUNappend(BAT *b, const void *t, bit for
        }
        void_materialize(b, t);
 
+       if (unshare_string_heap(b) == GDK_FAIL) {
+               GDKerror("BUNappend: failed to unshare string heap\n");
+               return NULL;
+       }
+
        setcolprops(b, b->H, h);
        setcolprops(b, b->T, t);
 
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
--- a/gdk/gdk_batop.c
+++ b/gdk/gdk_batop.c
@@ -41,13 +41,42 @@
                }                                                       \
        } while (0)
 
+gdk_return
+unshare_string_heap(BAT *b)
+{
+       if (b->ttype == TYPE_str &&
+           b->T->vheap->parentid != abs(b->batCacheid)) {
+               Heap *h = GDKzalloc(sizeof(Heap));
+               if (h == NULL)
+                       return GDK_FAIL;
+               h->parentid = abs(b->batCacheid);
+               h->farmid = BBPselectfarm(b->batRole, TYPE_str, varheap);
+               if (b->T->vheap->filename) {
+                       char *nme = BBP_physical(b->batCacheid);
+                       h->filename = GDKfilepath(NOFARM, NULL, nme, "theap");
+                       if (h->filename == NULL) {
+                               GDKfree(h);
+                               return GDK_FAIL;
+                       }
+               }
+               if (HEAPcopy(h, b->T->vheap) < 0) {
+                       HEAPfree(h, 1);
+                       GDKfree(h);
+                       return GDK_FAIL;
+               }
+               BBPunshare(b->T->vheap->parentid);
+               b->T->vheap = h;
+       }
+       return GDK_SUCCEED;
+}
+
 /* We try to be clever when appending one string bat to another.
  * First of all, we try to actually share the string heap so that we
  * don't need an extra copy, and if that can't be done, we see whether
  * it makes sense to just quickly copy the whole string heap instead
  * of inserting individual strings.  See the comments in the code for
  * more information. */
-static BAT *
+static gdk_return
 insert_string_bat(BAT *b, BAT *n, int append, int force)
 {
        BATiter ni;             /* iterator */
@@ -66,7 +95,7 @@ insert_string_bat(BAT *b, BAT *n, int ap
 
        assert(b->htype == TYPE_void || b->htype == TYPE_oid);
        if (n->batCount == 0)
-               return b;
+               return GDK_SUCCEED;
        ni = bat_iterator(n);
        hp = NULL;
        tp = NULL;
@@ -108,27 +137,9 @@ insert_string_bat(BAT *b, BAT *n, int ap
                                toff = 0;
                        } else if (b->T->vheap->parentid == 
n->T->vheap->parentid) {
                                toff = 0;
-                       } else if (b->T->vheap->parentid != bid) {
-                               Heap *h = GDKzalloc(sizeof(Heap));
-                               if (h == NULL)
-                                       return NULL;
-                               h->parentid = bid;
-                               h->farmid = BBPselectfarm(b->batRole, TYPE_str, 
varheap);
-                               if (b->T->vheap->filename) {
-                                       char *nme = BBP_physical(b->batCacheid);
-                                       h->filename = GDKfilepath(NOFARM, NULL, 
nme, "theap");
-                                       if (h->filename == NULL) {
-                                               GDKfree(h);
-                                               return NULL;
-                                       }
-                               }
-                               if (HEAPcopy(h, b->T->vheap) < 0) {
-                                       HEAPfree(h, 1);
-                                       GDKfree(h);
-                                       return NULL;
-                               }
-                               BBPunshare(b->T->vheap->parentid);
-                               b->T->vheap = h;
+                       } else if (b->T->vheap->parentid != bid &&
+                                  unshare_string_heap(b) == GDK_FAIL) {
+                               return GDK_FAIL;
                        }
                }
                if (toff == ~(size_t) 0 && n->batCount > 1024) {
@@ -368,13 +379,13 @@ insert_string_bat(BAT *b, BAT *n, int ap
                b->tvarsized = 1;
                b->ttype = TYPE_str;
        }
-       return b;
+       return GDK_SUCCEED;
       bunins_failed:
        if (toff != ~(size_t) 0) {
                b->tvarsized = 1;
                b->ttype = TYPE_str;
        }
-       return NULL;
+       return GDK_FAIL;
 }
 
 /*
@@ -547,7 +558,8 @@ BATins(BAT *b, BAT *n, bit force)
                           !GDK_ELIMDOUBLES(n->T->vheap) &&
                           b->T->vheap->hashash == n->T->vheap->hashash &&
                           VIEWtparent(n) == 0) {
-                       b = insert_string_bat(b, n, 0, force);
+                       if (insert_string_bat(b, n, 0, force) == GDK_FAIL)
+                               return NULL;
                } else if (b->htype == TYPE_void) {
                        if (!ATOMvarsized(b->ttype) &&
                            BATatoms[b->ttype].atomFix == NULL &&
@@ -755,8 +767,7 @@ BATappend(BAT *b, BAT *n, bit force)
                    (b->batCount == 0 || !GDK_ELIMDOUBLES(b->T->vheap)) &&
                    !GDK_ELIMDOUBLES(n->T->vheap) &&
                    b->T->vheap->hashash == n->T->vheap->hashash) {
-                       b = insert_string_bat(b, n, 1, force);
-                       if (b == NULL)
+                       if (insert_string_bat(b, n, 1, force) == GDK_FAIL)
                                return NULL;
                } else if (b->htype == TYPE_void) {
                        if (!ATOMvarsized(b->ttype) &&
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2118,17 +2118,18 @@ incref(bat i, int logical, int lock)
                        MT_lock_unset(&GDKswapLock(i), "BBPincref");
                return 0;
        }
-       /* parent BATs are not relevant for logical refs */
-       hp = logical ? 0 : bs->B.H->heap.parentid;
-       tp = logical ? 0 : bs->B.T->heap.parentid;
-       hvp = logical || bs->B.H->vheap == 0 || bs->B.H->vheap->parentid == i ? 
0 : bs->B.H->vheap->parentid;
-       tvp = logical || bs->B.T->vheap == 0 || bs->B.T->vheap->parentid == i ? 
0 : bs->B.T->vheap->parentid;
 
        assert(BBP_refs(i) + BBP_lrefs(i) ||
               BBP_status(i) & (BBPDELETED | BBPSWAPPED));
-       if (logical)
+       if (logical) {
+               /* parent BATs are not relevant for logical refs */
+               hp = tp = hvp = tvp = 0;
                refs = ++BBP_lrefs(i);
-       else {
+       } else {
+               hp = bs->B.H->heap.parentid;
+               tp = bs->B.T->heap.parentid;
+               hvp = bs->B.H->vheap == 0 || bs->B.H->vheap->parentid == i ? 0 
: bs->B.H->vheap->parentid;
+               tvp = bs->B.T->vheap == 0 || bs->B.T->vheap->parentid == i ? 0 
: bs->B.T->vheap->parentid;
                refs = ++BBP_refs(i);
                if (refs == 1 && (hp || tp || hvp || tvp)) {
                        /* If this is a view, we must load the parent
diff --git a/gdk/gdk_private.h b/gdk/gdk_private.h
--- a/gdk/gdk_private.h
+++ b/gdk/gdk_private.h
@@ -170,6 +170,8 @@ int IMPSgetbin(int tpe, bte bits, const 
 void IMPSprint(BAT *b)
        __attribute__((__visibility__("hidden")));
 #endif
+gdk_return unshare_string_heap(BAT *b)
+       __attribute__((__visibility__("hidden")));
 oid MAXoid(BAT *i)
        __attribute__((__visibility__("hidden")));
 void MT_global_exit(int status)
diff --git a/libversions b/libversions
--- a/libversions
+++ b/libversions
@@ -36,7 +36,7 @@
 
 # version of the GDK library (subdirectory gdk; also includes
 # common/options and common/utils)
-GDK_VERSION=11:2:0
+GDK_VERSION=11:3:0
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to