Oct2014 (11.19)

These release notes are replicated for historical purposes only. The release is not supported anymore.

Important consideration when upgrading to this release.

  • In this release we have fixed bug 3474Z. This bug made it possible that there were duplicates despite there being a unique or primary key constraint present. This could only happen for multi-column constraints. MonetDB maintains an internal column containing a hash for multi-column constraints, and there was a bug in the maintenance code of this column. During an upgrade, this column needs to be recreated. This is done by dropping and adding back the constraints. If there are no duplicates, adding back the constrains should work without problem, but if there are duplicates, adding the constraints will fail. There is unfortunately no easy way to tell the user, so after having made the first connection to the server (when the upgrade happens), check the merovingian log (if you use merovingian – also known as monetdbd) or the server output window (if you don’t use merovingian).

Jaql support is removed.

  • The experimental code for Jaql support has been removed. If you have RPM or DEB packages for Jaql installed from an earlier version (MonetDB-jaql and monetdb5_jaql respectively), you will need to uninstall them before the upgrade.

Upgrade code fixed.

  • The code to upgrade from previous releases still had some bugs. These have now been fixed. Upgrades directly from the Feb2013 release should work again. Also, upgrading to this version should fix some problems that were caused by the upgrade to the Oct2014 release.

Oct 2014-SP4 bugfix release

  • Due to a code conflict it is not possible to upgrade to this bug fix release from a release older than the Oct2014 release.  If you are running an older release, first upgrade to the Oct2014 release, and then to Oct2014-SP4.

Bug Fixes

  • 3705: Assertion failure in rel_bin.c:2274: rel2bin_project: Assertion `0’ failed.
  • 3707: var() possibly not working in debug builds
  • 3712: Concurrency issue on querying the SQL catalog
  • 3713: Long startup cost for simple session
  • 3715: Crash with two ALTER TABLE statements in a transaction
  • 3718: Adding and dropping a non existing tablename to/from a merge table is accepted without an error
  • 3719: Assertion failure in /MonetDB-11.19.11/gdk/gdk_bat.c:2841: BATassertHeadProps: Assertion `!b->H->key || cmp != 0’ failed.
  • 3720: Incorrect results on joining with same table
  • 3723: Assertion failure in rel_bin.c:2548: rel2bin_groupby: Assertion `0’ failed.
  • 3725: LEFT JOIN bug with CONST value
  • 3731: left shift for IP addresses not available to non-system users

Oct 2014-SP3 bugfix release

Build Environment

  • We now also create debug packages for Debian and Ubuntu.

MonetDB Common

  • Replaced the rangejoin implementation with one that uses imprints if it can.

Bug Fixes

  • 3466: UPDATE statements fails with “GDKerror: MT_mremap() failed”
  • 3602: Surprising overload resolution of generate_series
  • 3613: SQL data dictionary contains columns names which are also special keywords. This causes unexpected/unneeded SQL query errors
  • 3645: Network address operators such as « and «= do not work
  • 3647: missing BAT for a column leads to crash in gtr_update_delta
  • 3648: memory corruption on unclean connection shutdown with local temporary tables
  • 3650: Naming of persistent BATs is fragile
  • 3653: PREPARE crashes mserver if unbound variable is function parameter
  • 3655: SQL WHERE -1 in (-1) issue?
  • 3656: error message after calling fitsload()
  • 3660: Incorrect Results for Comparison Operators on inet Datatype
  • 3661: Ship debug symbols for pre-built binaries
  • 3662: UPDATE row with row value constructor crashes monetdb server
  • 3663: Incorrect result ROW_NUMBER in subquery
  • 3664: SQLstatementIntern missing parameter when using jsonstore
  • 3665: inter-session starvation issue, particularly affects sys.queue
  • 3666: casting text column to inet truncating text column and resulting inet for first occurrence only
  • 3667: insert of negative value for oid column aborts mserver5 process with assertion failure
  • 3669: ALTER TABLE <tbl_nm> ADD CONSTRAINT <tbl_uc1> UNIQUE (col1, col2, col3) causes Assertion failure and abort
  • 3671: ODBC-Access on Windows 2012 does not work - E_FAIL
  • 3672: libbat_la-gdk_utils.o: relocation R_X86_64_PC32 against `MT_global_exit’ can not be used when making a shared object
  • 3676: merovingian hangs trying to exit
  • 3677: Crash in BATgroup_internal (caused by 87379087770d?)
  • 3678: Ruby driver installation ignores prefix
  • 3680: Prepared statements fail on execution with message ‘Symbol type not found’
  • 3684: Wrong query result set WHERE “IS NULL” or “NOT IN” clauses uses in combination with ORDER, LIMIT and OFFSET
  • 3687: ‘bat.insert’ undefined
  • 3688: Crash at exit (overrun THRerrorcount?)
  • 3689: No more connections accepted if a single client misbehaves
  • 3690: find_fk: Assertion `t && i’ failed.
  • 3691: conversion of whitespaces string to double or float is accepted without an error during insert
  • 3693: algebra.join undefined (caused by non-existing variables in the plan)
  • 3696: Inconsistent behavior between dbl (SQL double) and flt (SQL real) data types and across platforms
  • 3697: mserver5[26946]: segfault at 0 ip 00007f3d0e1ab808 sp 00007f3cefbfcad0 error 4 in lib_sql.so[7f3d0e180000+16c000]
  • 3699: segfault again! (during last week I found 3 segfault bugs already)
  • 3703: INSERT INTO a MERGE TABLE crashes mserver5
  • 3704: Unknown identifier from subquery
  • 3705: Assertion failure in rel_bin.c:2274: rel2bin_project: Assertion `0’ failed.
  • 3706: Assertion failure in gdk_bat.c: BATassertHeadProps: Assertion `!b->H->sorted || cmp <= 0’ failed.
  • 3709: “BATproject: does not match always” on abusive use of ALTER TABLE SET READ ONLY

Oct 2014-SP2 bugfix release

Client Package

  • Changes to the Perl interface, thanks to Stefan O’Rear:
    • removes “use sigtrap”, because this has global effects and should not be used by modules, only by the application.
    • allows Perl 5.8.1+ Unicode strings to be passed to quote() and included in statements (UTF-8 encoded, as expected by Monet’s str module)
    • quote and unquote now use the same quoting rules as the MonetDB server, allowing for all characters except NUL to be round-tripped
    • several character loops have been reimplemented in regex for much greater performance
    • micro-optimizations to the result fetch loop
    • block boundaries are preserved in piggyback data so that Xclose is not appended or prepended to a SQL command
    • diagnostic messages #foo before a result header are ignored, this is necessary to use recycler_pipe
    • fail quickly and loudly if we receive a continuation prompt (or any other response that starts with a non-ASCII character)
    • header lines must start with %, not merely contain %, fixing a bug when querying a table where string values contain %
    • after closing a large resultset, account for the fact that a reply will come and do not lose sync
    • allow a MAPI_TRACE environment variable to dump wire protocol frames to standard output
    • fixes maximum MAPI block size to match the server limit of 16k. previously would crash on blocks larger than 16k


  • Fixed a typo in a column name of the sys.tablestoragemodel view (auxillary changed to auxiliary).

Bug Fixes

  • 3467: Field aliases with ‘#’ character excise field names in result set.
  • 3605: relational query without result
  • 3619: Missing dll on MonetDB Start
  • 3622: Type resolution error
  • 3624: insert of incomplete or invalid ip address values in inet column is silently accepted but the values are not stored (they become/show nil)
  • 3626: casting a type without alias results in program contains errors
  • 3628: mclient and ODBC driver report ’type mismatch’ when stddev_pop used in a select which returns 0 rows
  • 3629: IF THEN ELSEIF always evaluates the first test as true
  • 3630: segv on rel_order_by_column_exp
  • 3632: running make clean twice gives an error in clients/ruby/adapter
  • 3633: Wrong result for HAVING with floating-point constant
  • 3640: Missing implementation of scalar function: sql_sub(, )
  • 3641: SQL lexer fails to detect string end if it the last character is U+FEFF ZERO WIDTH NO-BREAK SPACE
  • 3642: Combined WHERE conditions less-than plus equals-to produce incorrect results
  • 3643: Missing implementations of scalar function: sql_sub(, arg2)
  • 3644: COPY INTO fails to import “inet” data type when value has prefix length in CIDR notation
  • 3646: ORDER BY clause does not produce proper results on ‘inet’ datatype
  • 3649: recycler crashes with concurrent transactions

Oct 2014 SP1 bugfix release

MonetDB5 Server

  • Fixed adding of 0 intervals to dates.

Build Environment

  • The libraries included in the Windows installers have been upgraded. We now use libxml2-2.9.2, openssl-1.0.1j, pcre-8.36, and zlib-1.2.8.

MonetDB Common

  • Implemented a change to the way in which string bats are appended. We now try harder to limit the growth of the string heap.
  • Fixed some problems with BATsample. It was possible for BATsample to return a value that was just beyond the end of the sampled BAT. Also, on some systems the range of the rand() function is rather limited (0..32767) and trying to get a sample larger than this range would result in an infinite loop.


  • Fixed sys.queue() implementation to report on other queries being executed.
  • A number of bugs were fixed in the code to upgrade a database from previous releases. This version should fix the upgrade of a database that had been upgraded to the Oct2014 release, but also properly upgrade directly from Jan2014 and Feb2013 releases.

Bug Fixes

  • 3580: cosmetic change (append newline)
  • 3609: Incorrect use of generate_series
  • 3611: quantile() and median() commands crash when used 2x on the same variable on a null table
  • 3612: assertion failure when deleting rows from table to which a FK constraint is defined
  • 3620: ORDER BY broken when using UNION ALL
  • 3621: Hexadecimal literal vs decimal literal

Known issue when upgrading old versions.


Oct 2014 feature release

MonetDB5 Server

  • Removed algebra.materialize.
  • Removed algebra.kunique and algebra.tunique. They were subsumed by algebra.subunique.
  • Remove algebra.antiuselect and algebra.thetauselect. They were subsumed by algebra.subselect.
  • Removed algebra.topN and its imlementation BATtopN. The function was not used.
  • Removed aggr.histogram and its implementation BAThistogram. The function was not used, and did not produce output in the “headless” (i.e. dense-headed) format. Histograms can be created as a by-product of group.subgroup.

Build Environment

  • Jacqueline, the MonetDB/JAQL frontend, has been removed. The frontend never grew beyond being experimental, and there is no interest anymore to maintain the code.


  • monetdb create: add -p flag to set monetdb user password on creation, and therefore allow creating the database in unlocked state


  • Changed mapi_timeout argument from seconds to milliseconds.


  • Changed mnstr_settimeout function so that the specified timeout is now in milliseconds (used to be seconds), and that it also needs an extra argument specifying a callback function (no arguments, int result) that should return TRUE if the timeout should cause the function to abort or continue what it was doing.

MonetDB Common

  • Added “multifarm” capability. It is now possible to separate persistent and transient BATs into different directories (presumably on different disks). This can be done by using the –dbextra option of mserver5 (see the man page).


  • Added PostgreSQL compatible string TRIM, LTRIM, RTRIM, LPAD and RPAD functions
  • Stop support for upgrading directly from a database created with a server from the Oct2012 release or older. You can upgrade via the Feb2013 or Jan2014 release.

Bug Fixes

  • 2945: evaluation of SQL “between SYMMETRIC” requires MAL iterator because there is no (bulk) MIN/MAX(a,b)
  • 3204: monetdb create: allow setting admin password during creation
  • 3390: Missing definition for pushSht in monetdb5/mal/mal_builder.h
  • 3402: We should have a C implementation of mal.multiplex.
  • 3422: Segmentation fault after large table insert
  • 3459: incomplete implementation of JDBC driver getNumericFunctions(), getStringFunctions(), getSystemFunctions(), getTimeDateFunctions(), getSQLKeywords() methods in MonetDatabaseM
  • 3471: JDBC driver: incorrect output result of SQL query: SELECT 1 ;
  • 3474: bulk and scalar versions of mkey.rotate_xor_hash differ
  • 3484: COPY INTO on a file works fine on Linux/OSX, but not on Windows
  • 3488: Slow SQL execution for correlated scalar subquery
  • 3489: SQL query with ORDER BY does not order its result as requested
  • 3490: SQL query kills the mserver5 (Segmentation fault)
  • 3491: SQL query kills the mserver5 (Segmentation fault)
  • 3493: Test monetdb5/modules/mal/Tests/pqueue.mal fails since recent checkins
  • 3494: Tests monetdb5/modules/mal/Tests/pqueue[23].mal lack correct/expected/intended output
  • 3495: Test sql/test/centipede/Tests/olap.sql lacks correct/expected/intended output
  • 3497: monetdb start reports crash in merovingian.log
  • 3498: SQL throws TypeException if aggregations and limit statements are both present
  • 3502: Database was killed by signal SIGBUS
  • 3504: COPY INTO does not allow OFFSET without specifying amount of records
  • 3505: expression with = NOT returns a syntax error but NOT = not
  • 3506: conversion to varchar terminates mserver
  • 3508: conversion of string ‘0 ’ to type smallint or integer fails
  • 3510: timestamp + month interval generates bogus MAL?
  • 3511: When having multiple selections combined with aliases not all of them seem to be evalauted.
  • 3512: auto-conversion of string to sht type no longer works
  • 3513: COPY BINARY INTO fails on 6gb file; works fine on 3gb
  • 3516: inserting ‘0’ into a column of datatype numeric fails
  • 3518: UNION with subqueries
  • 3521: large results of function exp() are not automatically returned as double
  • 3522: SQL catalog table sys.columns lists columns for table ids which do not exist in sys.tables
  • 3523: Window function over union gives no result
  • 3524: wrong error on missing aggregation column
  • 3527: select distinct - order by - limit 2 results in one single result
  • 3528: segfault at mal_session.c:521
  • 3532: several geom tests crash after manifold changes
  • 3534: missing table name with invalid column in join using (and problems after resolving it)
  • 3536: program contains error with join using integer and smallint
  • 3542: gdk/gdk_bat.c:2904: BATassertHeadProps: Assertion `!b->H->revsorted || cmp >= 0’ failed.
  • 3543: invalid behavior and incorrect data results for SQL data type: numeric(4,4)
  • 3544: sys.reuse() corrupts data
  • 3546: Division by zero in CASE statement that should avoid it
  • 3547: Empty query when selecting a field from a view made of UNION ALL
  • 3551: Wrong ticks in TRACE
  • 3552: incorrect data results for “WHERE int_col <> 0”
  • 3554: Issue with subselect and ORDER BY
  • 3555: Order of evaluation inside CASE WHEN
  • 3558: numeric values (as strings) are incorrectly parsed/converted and invalid strings are accepted without error
  • 3560: Error “BATproject: does not match always” with subselect/groupby/having
  • 3562: mserver5: gdk_bat.c:2855: BATassertHeadProps: Assertion `!b->H->revsorted || cmp >= 0’ failed.
  • 3563: incorrect results for scalar function locate(in_str, search_str, occurrence)
  • 3565: Wrong/confusing error message when trying to add a FK to a TEMP TABLE
  • 3572: Table names with escaped double quotes are rejected
  • 3573: alter table alter_not_null_test alter test set NOT NULL; is accepted when test contains null. This used to be restricted but isn’t anymore
  • 3575: segmentation fault in mserver5 process
  • 3576: Dropping default value definitions from a table does not work as expected
  • 3577: SIGSEGV in BATins_kdiff
  • 3579: segmentation fault in mserver5 process
  • 3581: mserver5: rel_bin.c:2504: rel2bin_groupby: Assertion `0’ failed.
  • 3582: mserver5: sql_mem.c:48: sql_ref_dec: Assertion `r->refcnt > 0’ failed.
  • 3583: Possible buffer overflow in max(varchar)
  • 3585: Incorrect query terminates connection
  • 3586: mserver5: sql/storage/store.c:3610: sys_drop_func: Assertion `rid_func != oid_nil’ failed.
  • 3592: SIGSEGV in MANIFOLDjob
  • 3593: delta_append_val: Assertion `!c || ((c)->S->count) == bat->ibase’ failed.
  • 3594: gdk/gdk_bat.c:2855: BATassertHeadProps: Assertion `!b->H->revsorted || cmp >= 0’ failed.
  • 3595: Race/heap corruption on thread exit
  • 3596: gdk_bat.c:2861: BATassertHeadProps: Assertion `!b->H->nonil || cmp != 0’ failed.
  • 3597: SQL to MAL listing looses types
  • 3598: SQL bulk load should ignore leading/trailing spaces also with type decimal (as with integers & real/double)
  • 3599: Double-free of imprints
  • 3601: Trivial typo in debian/monetdb5-sql.init.d
  • 3603: “monetdb create -p” hangs monetdbd
  • 3604: Sys.queue ignored upon errors