Announcement: New Dec2016 Feature release of MonetDB suite

Panagiotis Koutsourakis kutsurak at
Wed Dec 21 13:09:01 CET 2016

The MonetDB team at CWI/MonetDB BV is pleased to announce the
Dec2016 feature release of the MonetDB suite of programs.

More information about MonetDB can be found on our website at

For details on this release, please see the release notes at

As usual, the download location is <>.

Dec 2016 feature release

   MonetDB5 Server
     * Removed the zorder module with functions zorder.encode,
       zorder.decode_x and zorder.decode_y.
     * Removed command bbp.getHeat().
     * Removed bat.setColumn with two arguments and bat.setRole. Use
       bat.setColumn with one argument instead.
     * Removed function BKCappend_reverse_val_wrap: it was unused.
     * The "wrd" type has been removed from GDK and MAL. The type was
       defined to be a 32 bit integer on 32 bit architectures and a 64 bit
       integer on 64 bit architectures. We now generally use "lng" (always
       64 bits) where "wrd" was used.
     * Keep a collection of full traces. Each time the SQL user applies
       the TRACE option, the full json trace is retained within the

   Build Environment
     * New packages MonetDB-python2 (Fedora) and monetdb-python2
       (Debian/Ubuntu) have been created for Python 2 integration into
     * With OID size equal to ABI/word size, mserver5 does not need to
       print the OID size, anymore.
     * Removed obsolete code associated with long gone static linking
     * Removed configure option --enable-oid32 to compile with 32 bit OIDs
       on a 64 bit architecture.

     * The Perl, PHP, and Python clients, and the JDBC driver each now
       have their own repositories and release cycles. The Python client
       is maintained by Gijs Molenaar on Github
       (, the other clients are
       maintained by CWI/MonetDB on our own server

   MonetDB Common
     * The tnokey values must now be 0 if it is not known whether all
       values in a column are distinct.
     * The 2-bit tkey field in the bat descriptor has been split into two
       single bit fields: tkey and tunique. The old tkey&BOUND2BTRUE value
       is now stored in tunique.
     * Implemented conversion to str from any type (not just the internal
     * VALcopy and VALinit both return their first argument on success or
       (and that's new) NULL on (allocation) failure.
     * BATattach now can also create a str BAT from a file consisting of
       null-terminated strings. The input file must be encoded using
     * BATattach now copies the input file instead of "stealing" it.
     * Removed the lastused "timestamp" from the BBP.
     * Removed batStamp field from BAT descriptor, and removed the
       BBPcurstamp function.
     * Removed unused functions BBPhot and BBPcold.
     * Removed BATderiveTailProps and BATderiveProps. Just set the
       properties you know about, or use BATsettrivprop.
     * Removed the macro BUNfirst. It can be replaced by 0.
     * Changed BATroles by removing the argument to set the name of the
       head column.
     * The head column is now completely gone. MonetDB is completely
     * The format of the BBP.dir file was simplified. Since the head
       column is VOID, the only value that needs to be stored is the head
     * BATs now only have a single (logical) name.
     * The function BATmirror is gone. The HEAD column is always VOID
       (with a non-nil seqbase) and the TAIL column carries the data. All
       functions that deal with data work on the TAIL column.
     * BATkey now works on the TAIL column instead of the HEAD column.
     * Replaced BATseqbase with BAThseqbase and BATtseqbase, the former
       for setting the seqbase on the HEAD, the latter for setting the
       seqbase on the TAIL.
     * Replaced function BATnew with COLnew with slightly different
       arguments: the first argument of COLnew is the SEQBASE of the head
       column (which is always VOID).
     * The "wrd" type has been removed from GDK and MAL. The type was
       defined to be a 32 bit integer on 32 bit architectures and a 64 bit
       integer on 64 bit architectures. We now generally use "lng" (always
       64 bits) where "wrd" was used.

     * Removed functions sys.zorder_encode, sys.zorder_decode_x, and
     * The experimental recycler code is moved to the attic.
     * The syntax of,:any) has been changed by dropping the
       superflous :oid. All BATs are now binary associations between a
       void column and a materialized value column. (except for the
       internal :bat[:void,:void] representation of simple oid ranged

   Bug Fixes
     * 3357: Implement setQueryTimeout()
     * 3445: Add support for database name to dotmonetdb file
     * 3597: SQL to MAL listing looses types
     * 3973: JDBC hangs
     * 3976: Performance enhancement to LIKE without wildcards
     * 4005: Correlated update causes incorrect null constraint violation
     * 4016: merge table only optimises for point query
     * 4040: call can take a long time
     * 4047: Segfault when updating a dropped table
     * 4050: Database corruption when running low on inode
     * 4057: missing bulk operations between constant and bat
     * 4061: SIGSEGV in candscan_lng
     * 4066: Deadlocked monetdbd
     * 6068: Error message about incompatible BBP version should be
     * 6069: query with union all silently crashes
     * 6070: setting negative session query timeout should not be
     * 6071: where clause with cast and floor fails to sigsegv
     * 6072: Bind to UPD delta column does not get/show type information
       in EXPLAIN
     * 6073: Missing type information for constants in MAL explain
     * 6074: SET ROLE command does not work
     * 6075: gdk_calc.c:13113: BATcalcifthenelse_intern: Assertion `col2
       != NULL' failed.
     * 6076: rel_optimizer.c:5426: rel_push_project_up: Assertion `e'
     * 6077: mserver5: rel_optimizer.c:5444: rel_push_project_up:
       Assertion `e' failed.
     * 6078: rel_bin.c:2402: rel2bin_project: Assertion `0' failed.
     * 6084: Merge table point to wrong columns if columns in partition
       tables are deleted
     * 6108: monetdb5-sql sysv init script does not wait for shutdown
     * 6114: segfault raised in the query rewriter due to a null pointer
     * 6115: Assertion hit in the codegen
     * 6116: Codegen does not support certain kind of selects on scalar
     * 6117: Assertion hit in the query rewriting stage during the push
       down phase
     * 6118: SIGSEGV in strPut due to shared heap
     * 6119: Assertion hit in the MAL optimiser on a complex query
     * 6120: QUANTILE() treats NULL as if it is zero
     * 6121: SELECT a.col IN ( b.col FROM b ) FROM a statements with no
       error but no result
     * 6123: Assertion hit in the codegen #2
     * 6124: CASE <column> WHEN NULL THEN 0 ELSE 1 END returns wrong
     * 6125: Stack overflow in the query rewriter with a query having an
       OR condition and a nested SELECT subexpression
     * 6126: batcalc.== can't handle void BATs
     * 6139: Debian libmonetdb13 conflicts with libmonetdb5-server-geom

More information about the announce-list mailing list