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