Skip to main content

MonetDB Jul2017 Release

Jul 2017-SP1 bugfix release (11.27.5)

Debian and Ubuntu uses may want to reimport the MonetDB GPG public key as per the instructions on the download page.  See bug 6383 for more information.

Build Environment
  • The Debian and Ubuntu installers have been fixed: there was a file missing in the Jul2017 release.
  • Added a new RPM called MonetDB-selinux which provides the SELinux policy required to run MonetDB under systemd, especially on Fedora 26.
  • The Windows installers (*.msi files) are now created using the WiX Toolset.
  • The Windows binaries are now built using Visual Studio 2015. Because of this, you may need to install the Visual C++ Redistributable for Visual Studio 2015 before being able to run MonetDB.
  • monetdbd was leaking open file descriptors to the mserver5 process it started. This has been fixed.
MonetDB Common
  • Many functions in GDK are now annotated with the GCC attribute __warn_unused_result__ meaning that the compiler will issue a warning if the result of the function (usually an indication of an error) is not used.
Bug Fixes
  • 6325: Merge table unusable in other connections
  • 6328: Transactional/multi-connection issues with merge tables
  • 6336: VALUES multiple inserts error
  • 6339: Mserver5 crashes on nested SELECT
  • 6340: sample operator takes effect after the execution of the query, expected before
  • 6341: MERGE TABLE issue: Cannot register
  • 6342: MERGE TABLE issue: hang
  • 6344: Spurious errors and assertions (SQLsmith)
  • 6375: MAL profiler truncates JSON objects larger than 8192 characters

Jul 2017 feature release (11.27.1)

On Fedora 26 there is a known issue with this release.  When you use MonetDB under systemd (if you have enabled the system service with systemctl enable monetdbd.service), and you have SELinux (Security-Enhanced Linux) enabled, the database server processes will not start when you try to connect.

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 sql/scripts/51_sys_schema_extension.sql
  • 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 parameter.
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 instead.
  • 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 architectures.
  • 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 executable
  • 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