Skip to main content

MonetDB Oct2014 Release

Important consideration when upgrading to this release. In this release we have fixed bug 3474. 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-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(<date>, <month interval>)
  • 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(<timetz>, 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. We have noticed that upgrading directly from a version older than the Jan2014 release gave an error. Upgrading to Jan2014 first and then on to Oct2014 should work.

Backup. As always, make a backup of your databases before upgrading.

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 <boolean> = NOT <boolean> returns a syntax error but NOT <boolean> = <boolean> 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