Announcement: New Jul2017 Feature release of MonetDB suite

Sjoerd Mullender sjoerd at
Mon Jul 17 16:37:23 CEST 2017

The MonetDB team at CWI/MonetDB BV is pleased to announce the
Jul2017 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 <>.

Jul 2017 feature release

   MonetDB5 Server
     * The "sub" prefix of many functions, both at the MAL and the C
       level, has been removed.
     * Changed the interfaces of the AUTH* functions: pass values, not
       pointers to values.
     * Removed calc.setoid().
     * group.subgroup is now called if it is not refining a
       group. Both and group.subgroup now also have variants
       with a candidate list.
     * The allocation schemes for MAL blocks and Variables has been turned
       into block-based. This reduces the number of malloc()/free() calls.

     * Added a new server-side protocol implementation. The new protocol
       is backwards compatible with the old protocol. Clients can choose
       whether they want to use the old or the new protocol during the
       initial handshake with the server. The new protocol is a binary
       column-based protocol that is significantly faster than the old
       protocol when transferring large result sets. In addition, the new
       protocol supports compression using Snappy or LZ4.
     * Moved the sphinx extension module to its own repository. See
     * Removed GSL module: it's now a separate (extension) package. See
     * The PCRE library is now optional for systems that support POSIX
       regular expressions.
     * Added 5 new sys schema tables: function_languages, function_types,
       key_types, index_types and privilege_codes. They are pre-loaded
       with static content and contain descriptive names for the various
       integer type and code values. See also

     * Added handling of a dbextra property per database at the daemon
       level. The user can set the dbextra property for a database using
       the command: $ monetdb set dbextra=<path> <database> and the daemon
       will make sure to start the new server using the correct --dbextra

   Client Package
     * The mclient and msqldump programs lost compatibility with old
       mserver5 versions (pre 2014) which didn't have a "system" column in
       the sys.schemas table.
     * The mclient and msqldump programs lost compatibility with ancient
       mserver5 versions (pre 2011) which didn't have the
       sys.systemfunctions table.
     * Removed the "array" and "quick" functions from the mapi library. To
       be precise, the removed functions are: mapi_execute_array,
       mapi_fetch_field_array, mapi_prepare_array, mapi_query_array,
       mapi_quick_query, mapi_quick_query_array, and mapi_quick_response.
     * Added a more elaborate \help command for SQL expressions.

   MonetDB Common
     * Improved error checking in the logger code (dealing with the
       write-ahead log); changed return types a several functions from int
       to gdk_return (i.e., they now return GDK_SUCCEED or GDK_FAIL). The
       logger no longer calls GDKfatal on error. Instead the caller is
       responsible for dealing with errors.
     * BATsort may now create an order index as a by product.
     * Quantile calculations now use the order index if available (and use
       BATsort otherwise, producing an order index).
     * Quantiles calculate a position in the sorted column. If this
       position is not an integer, we now choose the nearest position,
       favoring the lower if the distance to the two adjacent positions is
       equal (round down to nearest integer).
     * Removed function BATprintf. Use BATprint or BATprintcolumns
     * Removed BATsave from the list of exported functions.
     * Replaced BBPincref/BBPdecref with BBPfix/BBPunfix for physical
       reference count and BBPretain/BBPrelease for logical reference
       count maintenance.
     * Removed automatic conversion of 32-bit OIDs to 64 bits on 64-bit
     * Removed functions OIDbase() and OIDnew().
     * Removed talign field from BAT descriptor.
     * BATappend now takes an optional (NULL if not used) candidate list
       for the to-be-appended BAT.
     * New function BATkeyed(BAT *b) that determines (possibly using a
       hash table) whether all values in b are distinct.

     * Made the operator precedence of % equal to those of * and /. All
       three are evaluated from left to right.
     * Removed table sys.connections. It was a remnant of an experimental
       change that had already been removed in 2012.
     * Protect against runaway profiler events If you hit a barrier block
       during profiling, the JSON event log may quickly become unwieldy.
       Event production is protected using a high water mark, which
       ensures that never within the single execution of MAL block the
       instruction causes excessive event records.

   Bug Fixes
     * 3465: Request: add support for CREATE VIEW with ORDER BY clause
     * 3545: monetdb commands don't work with -h -P -p options (locally
       and remotely)
     * 3996: select * from sys.connections always returns 0 rows. Expected
       to see at least one row for the active connection.
     * 6187: Nested WITH queries not supported
     * 6225: Order of evaluation of the modulo operator
     * 6289: Crashes and hangs with remote tables
     * 6292: Runaway SQL optimizer in too many nested operators
     * 6310: Name resolution error (sqlsmith)
     * 6312: Object not found in LIMIT clause (sqlsmith)
     * 6313: Null type resolution in disjunction fails (sqlsmith)
     * 6319: Server crash on LATERAL (sqlsmith)
     * 6322: Crash on disjunction with LIMIT (sqlsmith)
     * 6323: Deadlock calling sys.bbp()
     * 6324: Sqlitelogictest crash in a IN query (8th)
     * 6327: The daemon does not respect the actual name of the mserver5
     * 6330: Sqlitelogictest crash on a complex SELECT query
     * 6331: sys.statistics column "nils" always contains 0. Expected a
       positive value for columns that have one or more nils/NULLs
     * 6332: Sqlitelogictest crash related to an undefined MAL function

More information about the developers-list mailing list