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

Reply via email to