Changeset: b2dc738d2bb8 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b2dc738d2bb8 Modified Files: .hgtags sql/server/rel_optimizer.c Branch: mtest Log Message:
Merged with default diffs (truncated from 3376 to 300 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -789,3 +789,5 @@ cb4b3f021774b60ffd84c3004d341ec04de736f3 bd91504a03736565fb2dff13cd4c94c738e81aa0 Oct2020_5 cb4b3f021774b60ffd84c3004d341ec04de736f3 Oct2020_release bd91504a03736565fb2dff13cd4c94c738e81aa0 Oct2020_release +ac8254a47e87d0be9df2a623e2c2fcf67c0f982d Oct2020_7 +ac8254a47e87d0be9df2a623e2c2fcf67c0f982d Oct2020_SP1_release diff --git a/MonetDB.spec b/MonetDB.spec --- a/MonetDB.spec +++ b/MonetDB.spec @@ -97,7 +97,7 @@ Group: Applications/Databases License: MPLv2.0 URL: https://www.monetdb.org/ BugURL: https://bugs.monetdb.org/ -Source: https://www.monetdb.org/downloads/sources/Oct2020/%{name}-%{version}.tar.bz2 +Source: https://www.monetdb.org/downloads/sources/Oct2020-SP1/%{name}-%{version}.tar.bz2 # The Fedora packaging document says we need systemd-rpm-macros for # the _unitdir and _tmpfilesdir macros to exist; however on RHEL 7 @@ -153,6 +153,13 @@ BuildRequires: python3-numpy %endif %if %{with rintegration} BuildRequires: pkgconfig(libR) +%if (0%{?fedora} == 32) +# work around a packaging bug on Fedora 32 (18 Nov 2020) +# problem is things like: +# file /etc/texlive/web2c/updmap.cfg conflicts between attempted installs of texlive-tetex-7:20190410-12.fc32.noarch and texlive-texlive-scripts-7:20200327-16.fc32.noarch +# texlive-tetex is obsoleted by texlive-obsolete +BuildRequires: texlive-obsolete +%endif %endif # if we were to compile with cmocka support (-DWITH_CMOCKA=ON): # BuildRequires: pkgconfig(cmocka) @@ -866,6 +873,22 @@ fi %postun -p /sbin/ldconfig %changelog +* Wed Nov 18 2020 Sjoerd Mullender <sjo...@acm.org> - 11.39.7-20201118 +- Rebuilt. +- BZ#6890: Add support of xz/lzma (de)compression on MS Windows +- BZ#6891: Add support of lz4 (de)compression on MS Windows +- BZ#6971: Parsing table returning function on remote server fails +- BZ#6981: Oct2020: PREPARE DDL statement silently fails +- BZ#6983: monetdb allows to use non-existing optimizer pipe +- BZ#6998: MAL profiler buffer limitations +- BZ#7001: crossproduct generated for a simple (semi-)join +- BZ#7003: Segfault on large chain of constant decimal multiplication +- BZ#7005: Dropping a STREAM TABLE does not remove the associated column + info from sys._columns +- BZ#7010: deallocate <id> results in all prepared statements being + deallocated (not error-related) +- BZ#7011: uuid() called only once when used in projection list + * Tue Oct 13 2020 Sjoerd Mullender <sjo...@acm.org> - 11.39.5-20201013 - Rebuilt. diff --git a/clients/Tests/MAL-signatures.stable.out b/clients/Tests/MAL-signatures.stable.out --- a/clients/Tests/MAL-signatures.stable.out +++ b/clients/Tests/MAL-signatures.stable.out @@ -6064,6 +6064,8 @@ stdout of test 'MAL-signatures` in direc [ "batmmath", "radians", "pattern batmmath.radians(X_1:bat[:dbl], X_2:bat[:oid]):bat[:dbl] ", "CMDscience_bat_radians;", "" ] [ "batmmath", "radians", "pattern batmmath.radians(X_1:bat[:flt]):bat[:flt] ", "CMDscience_bat_radians;", "" ] [ "batmmath", "radians", "pattern batmmath.radians(X_1:bat[:flt], X_2:bat[:oid]):bat[:flt] ", "CMDscience_bat_radians;", "" ] +[ "batmmath", "rand", "unsafe pattern batmmath.rand(X_1:bat[:int]):bat[:int] ", "CMDscience_bat_randintarg;", "" ] +[ "batmmath", "rand", "unsafe pattern batmmath.rand(X_1:bat[:int], X_2:bat[:oid]):bat[:int] ", "CMDscience_bat_randintarg;", "" ] [ "batmmath", "sin", "pattern batmmath.sin(X_1:bat[:dbl]):bat[:dbl] ", "CMDscience_bat_sin;", "" ] [ "batmmath", "sin", "pattern batmmath.sin(X_1:bat[:dbl], X_2:bat[:oid]):bat[:dbl] ", "CMDscience_bat_sin;", "" ] [ "batmmath", "sin", "pattern batmmath.sin(X_1:bat[:flt]):bat[:flt] ", "CMDscience_bat_sin;", "" ] @@ -6639,6 +6641,7 @@ stdout of test 'MAL-signatures` in direc [ "batudf", "fuse", "command batudf.fuse(X_1:bat[:sht], X_2:bat[:sht]):bat[:int] ", "UDFBATfuse;", "" ] [ "batudf", "reverse", "command batudf.reverse(X_1:bat[:str]):bat[:str] ", "UDFBATreverse;", "" ] [ "batuuid", "isaUUID", "command batuuid.isaUUID(X_1:bat[:str]):bat[:bit] ", "UUIDisaUUID_bulk;", "" ] +[ "batuuid", "new", "unsafe command batuuid.new(X_1:bat[:int]):bat[:uuid] ", "UUIDgenerateUuidInt_bulk;", "" ] [ "batxml", "attribute", "command batxml.attribute(X_1:str, X_2:bat[:str]):bat[:xml] ", "BATXMLattribute;", "" ] [ "batxml", "comment", "command batxml.comment(X_1:bat[:str]):bat[:xml] ", "BATXMLcomment;", "" ] [ "batxml", "concat", "command batxml.concat(X_1:bat[:xml], X_2:bat[:xml]):bat[:xml] ", "BATXMLconcat;", "" ] diff --git a/clients/Tests/MAL-signatures.stable.out.int128 b/clients/Tests/MAL-signatures.stable.out.int128 --- a/clients/Tests/MAL-signatures.stable.out.int128 +++ b/clients/Tests/MAL-signatures.stable.out.int128 @@ -8594,6 +8594,8 @@ stdout of test 'MAL-signatures` in direc [ "batmmath", "radians", "pattern batmmath.radians(X_1:bat[:dbl], X_2:bat[:oid]):bat[:dbl] ", "CMDscience_bat_radians;", "" ] [ "batmmath", "radians", "pattern batmmath.radians(X_1:bat[:flt]):bat[:flt] ", "CMDscience_bat_radians;", "" ] [ "batmmath", "radians", "pattern batmmath.radians(X_1:bat[:flt], X_2:bat[:oid]):bat[:flt] ", "CMDscience_bat_radians;", "" ] +[ "batmmath", "rand", "unsafe pattern batmmath.rand(X_1:bat[:int]):bat[:int] ", "CMDscience_bat_randintarg;", "" ] +[ "batmmath", "rand", "unsafe pattern batmmath.rand(X_1:bat[:int], X_2:bat[:oid]):bat[:int] ", "CMDscience_bat_randintarg;", "" ] [ "batmmath", "sin", "pattern batmmath.sin(X_1:bat[:dbl]):bat[:dbl] ", "CMDscience_bat_sin;", "" ] [ "batmmath", "sin", "pattern batmmath.sin(X_1:bat[:dbl], X_2:bat[:oid]):bat[:dbl] ", "CMDscience_bat_sin;", "" ] [ "batmmath", "sin", "pattern batmmath.sin(X_1:bat[:flt]):bat[:flt] ", "CMDscience_bat_sin;", "" ] @@ -9199,6 +9201,7 @@ stdout of test 'MAL-signatures` in direc [ "batudf", "fuse", "command batudf.fuse(X_1:bat[:sht], X_2:bat[:sht]):bat[:int] ", "UDFBATfuse;", "" ] [ "batudf", "reverse", "command batudf.reverse(X_1:bat[:str]):bat[:str] ", "UDFBATreverse;", "" ] [ "batuuid", "isaUUID", "command batuuid.isaUUID(X_1:bat[:str]):bat[:bit] ", "UUIDisaUUID_bulk;", "" ] +[ "batuuid", "new", "unsafe command batuuid.new(X_1:bat[:int]):bat[:uuid] ", "UUIDgenerateUuidInt_bulk;", "" ] [ "batxml", "attribute", "command batxml.attribute(X_1:str, X_2:bat[:str]):bat[:xml] ", "BATXMLattribute;", "" ] [ "batxml", "comment", "command batxml.comment(X_1:bat[:str]):bat[:xml] ", "BATXMLcomment;", "" ] [ "batxml", "concat", "command batxml.concat(X_1:bat[:xml], X_2:bat[:xml]):bat[:xml] ", "BATXMLconcat;", "" ] diff --git a/clients/mapiclient/ReadlineTools.c b/clients/mapiclient/ReadlineTools.c --- a/clients/mapiclient/ReadlineTools.c +++ b/clients/mapiclient/ReadlineTools.c @@ -312,7 +312,7 @@ invoke_editor(int cnt, int key) { char editor_command[BUFFER_SIZE]; char *read_buff = NULL; char *editor = NULL; - FILE *fp; + FILE *fp = NULL; size_t content_len; size_t read_bytes, idx; #ifdef WIN32 diff --git a/cmake/monetdb-versions.cmake b/cmake/monetdb-versions.cmake --- a/cmake/monetdb-versions.cmake +++ b/cmake/monetdb-versions.cmake @@ -50,7 +50,7 @@ set(MONETDB_VERSION "${MONETDB_VERSION_M # version of the GDK library (subdirectory gdk; also includes # common/options and common/utils) set(GDK_VERSION_CURRENT "21") -set(GDK_VERSION_REVISION "2") +set(GDK_VERSION_REVISION "3") set(GDK_VERSION_AGE "0") math(EXPR GDK_VERSION_MAJOR "${GDK_VERSION_CURRENT} - ${GDK_VERSION_AGE}") set(GDK_VERSION "${GDK_VERSION_MAJOR}.${GDK_VERSION_AGE}.${GDK_VERSION_REVISION}") @@ -64,21 +64,21 @@ set(MAPI_VERSION "${MAPI_VERSION_MAJOR}. # version of the MONETDB5 library (subdirectory monetdb5, not including extras or sql) set(MONETDB5_VERSION_CURRENT "30") -set(MONETDB5_VERSION_REVISION "1") +set(MONETDB5_VERSION_REVISION "2") set(MONETDB5_VERSION_AGE "0") math(EXPR MONETDB5_VERSION_MAJOR "${MONETDB5_VERSION_CURRENT} - ${MONETDB5_VERSION_AGE}") set(MONETDB5_VERSION "${MONETDB5_VERSION_MAJOR}.${MONETDB5_VERSION_AGE}.${MONETDB5_VERSION_REVISION}") # version of the MONETDBE library (subdirectory tools/monetdbe) set(MONETDBE_VERSION_CURRENT "1") -set(MONETDBE_VERSION_REVISION "0") +set(MONETDBE_VERSION_REVISION "1") set(MONETDBE_VERSION_AGE "0") math(EXPR MONETDBE_VERSION_MAJOR "${MONETDBE_VERSION_CURRENT} - ${MONETDBE_VERSION_AGE}") set(MONETDBE_VERSION "${MONETDBE_VERSION_MAJOR}.${MONETDBE_VERSION_AGE}.${MONETDBE_VERSION_REVISION}") # version of the STREAM library (subdirectory common/stream) set(STREAM_VERSION_CURRENT "14") -set(STREAM_VERSION_REVISION "1") +set(STREAM_VERSION_REVISION "2") set(STREAM_VERSION_AGE "0") math(EXPR STREAM_VERSION_MAJOR "${STREAM_VERSION_CURRENT} - ${STREAM_VERSION_AGE}") set(STREAM_VERSION "${STREAM_VERSION_MAJOR}.${STREAM_VERSION_AGE}.${STREAM_VERSION_REVISION}") diff --git a/debian/changelog b/debian/changelog --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,22 @@ +monetdb (11.39.7) unstable; urgency=low + + * Rebuilt. + * BZ#6890: Add support of xz/lzma (de)compression on MS Windows + * BZ#6891: Add support of lz4 (de)compression on MS Windows + * BZ#6971: Parsing table returning function on remote server fails + * BZ#6981: Oct2020: PREPARE DDL statement silently fails + * BZ#6983: monetdb allows to use non-existing optimizer pipe + * BZ#6998: MAL profiler buffer limitations + * BZ#7001: crossproduct generated for a simple (semi-)join + * BZ#7003: Segfault on large chain of constant decimal multiplication + * BZ#7005: Dropping a STREAM TABLE does not remove the associated column + info from sys._columns + * BZ#7010: deallocate <id> results in all prepared statements being + deallocated (not error-related) + * BZ#7011: uuid() called only once when used in projection list + + -- Sjoerd Mullender <sjo...@acm.org> Wed, 18 Nov 2020 15:53:30 +0100 + monetdb (11.39.5) unstable; urgency=low * Rebuilt. diff --git a/gdk/gdk_align.c b/gdk/gdk_align.c --- a/gdk/gdk_align.c +++ b/gdk/gdk_align.c @@ -370,8 +370,10 @@ VIEWreset(BAT *b) b->batCapacity = cnt; /* insert all of v in b, and quit */ - if (BATappend2(b, v, NULL, false, false) != GDK_SUCCEED) + if (BATappend2(b, v, NULL, false, false) != GDK_SUCCEED) { + GDKerror("appending view failed"); goto bailout; + } BBPreclaim(v); } return GDK_SUCCEED; diff --git a/gdk/gdk_join.c b/gdk/gdk_join.c --- a/gdk/gdk_join.c +++ b/gdk/gdk_join.c @@ -2831,6 +2831,233 @@ hashjoin(BAT **r1p, BAT **r2p, BAT *l, B return GDK_FAIL; } +/* population count: count number of 1 bits in a value */ +static inline uint32_t __attribute__((__const__)) +pop(uint32_t x) +{ +#if defined(__GNUC__) + return (uint32_t) __builtin_popcount(x); +#elif defined(_MSC_VER) + return (uint32_t) __popcnt((unsigned int) (x)); +#else + /* divide and conquer implementation (the two versions are + * essentially equivalent, but the first version is written a + * bit smarter) */ +#if 1 + x -= (x >> 1) & ~0U/3 /* 0x55555555 */; /* 3-1=2; 2-1=1; 1-0=1; 0-0=0 */ + x = (x & ~0U/5) + ((x >> 2) & ~0U/5) /* 0x33333333 */; + x = (x + (x >> 4)) & ~0UL/0x11 /* 0x0F0F0F0F */; + x = (x + (x >> 8)) & ~0UL/0x101 /* 0x00FF00FF */; + x = (x + (x >> 16)) & 0xFFFF /* ~0UL/0x10001 */; +#else + x = (x & 0x55555555) + ((x >> 1) & 0x55555555); + x = (x & 0x33333333) + ((x >> 2) & 0x33333333); + x = (x & 0x0F0F0F0F) + ((x >> 4) & 0x0F0F0F0F); + x = (x & 0x00FF00FF) + ((x >> 8) & 0x00FF00FF); + x = (x & 0x0000FFFF) + ((x >> 16) & 0x0000FFFF); +#endif + return x; +#endif +} + +/* Count the number of unique values for the first half and the complete + * set (the sample s of b) and return the two values in *cnt1 and + * *cnt2. In case of error, both values are 0. */ +static void +count_unique(BAT *b, BAT *s, BUN *cnt1, BUN *cnt2) +{ + struct canditer ci; + BUN half; + BUN cnt = 0; + const void *v; + const char *bvals; + const char *bvars; + oid bval; + int bwidth; + oid i, o; + const char *nme; + BUN hb; + BATiter bi; + int (*cmp)(const void *, const void *); + const char *algomsg = ""; + lng t0 = 0; + + TRC_DEBUG_IF(ALGO) t0 = GDKusec(); + canditer_init(&ci, b, s); + half = ci.ncand / 2; + + if (b->tkey || ci.ncand <= 1 || BATtdense(b)) { + /* trivial: already unique */ + *cnt1 = half; + *cnt2 = ci.ncand; + return; + } + + if ((BATordered(b) && BATordered_rev(b)) || + (b->ttype == TYPE_void && is_oid_nil(b->tseqbase))) { + /* trivial: all values are the same */ + *cnt1 = *cnt2 = 1; + return; + } + + assert(b->ttype != TYPE_void); + + bvals = Tloc(b, 0); + if (b->tvarsized && b->ttype) + bvars = b->tvheap->base; + else + bvars = NULL; + bwidth = Tsize(b); + cmp = ATOMcompare(b->ttype); + bi = bat_iterator(b); + + *cnt1 = *cnt2 = 0; + + if (BATordered(b) || BATordered_rev(b)) { + const void *prev = NULL; + algomsg = "sorted"; + for (i = 0; i < ci.ncand; i++) { + if (i == half) + *cnt1 = cnt; + o = canditer_next(&ci); + v = VALUE(b, o - b->hseqbase); + if (prev == NULL || (*cmp)(v, prev) != 0) { + cnt++; + } + prev = v; + } + *cnt2 = cnt; + } else if (ATOMbasetype(b->ttype) == TYPE_bte) { + unsigned char val; + uint32_t seen[256 / 32]; + + algomsg = "byte-sized atoms"; + assert(bvars == NULL); + for (i = 0; i < ci.ncand; i++) { + if (i == ci.ncand/ 2) { + cnt = 0; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list