Announcement: New Jun2016 Feature release of MonetDB suite

Sjoerd Mullender sjoerd at
Thu Jun 23 10:20:40 CEST 2016

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

Jun 2016 feature release

   MonetDB5 Server
     * Extended the storage() table producing function to also accept
       storage([schemaname [, tablename [, columnname]]])
     * The :bat[:oid,:any] type descriptor has been turned into its
       columnar version :bat[:any]
     * Converted the *.mal scripts into *.malC versions to prepare for
       removal of the mserver console.
     * Removed functions mat.hasMoreElements,, mat.mergepack,
       mat. newIterator, mat.project, mat.pack2, mat.sortReverse,
       mat.sort, and mat.slice.
     * Removed grouped aggregate functions from the aggr module in which
       the groups were indicated by the head column of the bat to be
       aggregated. Use the interface with a separate group bat instead.
     * The server now stops executing a query when the client disconnects.
     * Removed algebra.join. Use algebra.subjoin instead.
     * Removed algebra.antijoin. Use algebra.subantijoin or
       algebra.subthetajoin instead.
     * The MAL function 'leftfetchjoin' is renamed to its relational
       algebra version 'projection'
     * The generic property handling scheme has been removed. It was used
       in just a few places, for widely different purposes and contained
     * Removed functions str.iconv and str.codeset. Internally, strings
       are always in UTF-8 encoding, so we can't allow code set
     * Removed with a BAT argument. Use algebra.likesubselect
     * Removed algebra.leftjoin. Use algebra.subleftjoin or
       algebra.leftfetchjoin instead.
     * Removed algebra.tdiff and algebra.tinter.
     * Removed algebra.sample. Use sample.subuniform instead.
     * Removed Use algebra.subselect instead.
     * Removed algebra.revert.
     * Removed bat.order and bat.orderReverse functions.
     * Changed client.getUsers to return two bats, one with the user id
       and one with the user name.
     * Implemented algebra.subdiff and algebra.subinter.
     * Removed algebra.tdifference and algebra.tintersect.
     * Removed algebra.tunion.

   Build Environment
     * A new package MonetDB-lidar (Fedora) or libmonetdb5-server-lidar
       (Debian/Ubuntu) has been created to work with LiDAR data.
     * Implemented a systemd configuration file for a monetdbd.service on
       systems that support it (Fedora, newer Ubuntu).

   Client Package
     * The Ruby client is now in a separate repository
       ( and released

   Geom Module
     * The geom module has been completely overhauled. Types are now
       specified as GEOMETRY(POINT) instead of POINT, old functions have
       been removed, new ones introduced. However, even with all the
       changes, a database upgrade should still be possible (as always,
       make a backup first).

   MonetDB Common
     * Removed BATconst. Use BATconstant instead.
     * Changed BATconstant. It now has a new first argument with the
       seqbase for the head column.
     * Removed BATmmap. It was no longer used.
     * BUNdelete and BATdel don't accept a foce argument and only allow
       deleting values that have not yet been committed. BUNdelete
       exchanges the deleted value with the last value (if the deleted
       value isn't the last value). BATdel compacts the BAT by shifting
       values after the deleted values up. The list of to-be-deleted
       values in BATdel must be sorted and unique.
     * Removed BUNreplace from list of exported functions. It wasn't used,
       and there is still BUNinplace and void_inplace that do more-or-less
       the same thing.
     * Changed BATderiveHeadProps to BATderiveTailProps (and it now works
       on the tail column).
     * Removed unused functions BATalpha, BATdelta, and BATprev.
     * Removed function VIEWcombine. Use BATdense instead.
     * Removed "left" parameter from BUNinplace. It wasn't used since the
       BAT it works on is dense headed.
     * Created function BATdense to easily create a [void,void] BAT with
       specified seqbases for head and tail and a count.
     * Removed function BATmark. When all head columns are dense, BATmark
       basically only created a new [void,void] BAT.
     * Renamed BATsubsort to BATsort.
     * Removed "sub" from the names of the function BATsubselect,
       BATthetasubselect, BATsubcross, BATsubleftjoin, BATsubouterjoin,
       BATsubthetajoin, BATsubsemijoin, BATsubdiff, BATsubjoin,
       BATsubbandjoin, BATsubrangejoin, and BATsubunique.
     * Removed BATsubleftfetchjoin: it was not used.
     * Removed BATcross1. Use BATsubcross instead.
     * Removed all versions of the SORTloop macro.
     * Removed Batkdiff. Use BATsubdiff instead.
     * Removed BATselect. Use BATsubselect instead.
     * Removed BATsemijoin. Use BATsubsemijoin instead.
     * Removed BATjoin. Use BATsubjoin instead.
     * Removed BATleftjoin. Use BATsubleftjoin or BATproject instead.
     * Removed BATleftfetchjoin. Use BATproject instead.
     * Removed BUNins from the list of exported functions.
     * Removed legacy functions BATuselect and BATuselect_.
     * Removed legacy functions BATantijoin, BATbandjoin, BATouterjoin,
       BATrangejoin, and BATthetajoin.
     * Removed function BATrevert.
     * BATordered now works on the TAIL column.
     * Removed obsolete functions BATorder() and BATorder_rev().
     * Implemented BATsubdiff which returns a list of OIDs (sorted, i.e.
       usable as candidate list) of tuples in the left input whose value
       does not occur in the right input.
     * Removed function BATkintersect. It wasn't used anymore. It's
       functionality can be obtained by using BATsubsemijoin.
     * Removed the function BATkunion.

   Java Module
     * Fixed problem in DatabaseMetaData.getUDTs() when it was called with
       types parameter filled. It used to throw SQException with message:
       SELECT: identifier 'DATA_TYPE' unknown. Now it returns the UDTs
       which match the provided array of data types.
     * Implemented MonetDatabaseMetaData.supportsConvert() and
       MonetDatabaseMetaData.supportsConvert(int fromType, int toType)
       methods. It used to always return false. Now it returns true for
       the supported conversions. This fixes Bug 3460.
     * ResultSet.setFetchSize(): added a dummy implementation to get rid
       of the SQLFeatureNotSupportedException. In MonetDB, it does not
       make sense to set the fetch size of a result set. If one really
       wants to set the fetch size, one should use
       Statement.setFetchSize() instead.
     * Fixed resource leak in ResultSetMetaData. It created and cached a
       ResultSet object for each column but never closed the ResultSet
     * Corrected DatabaseMetaData methods which accept a catalog filter
       argument. Those methods will now filter the results on the
       specified catalog name, whereas previously the catalog filter
       argument was ignored.
     * Corrected output of column KEY_SEQ of DatabaseMetaData methods:
       getPrimaryKeys(), getImportedKeys(), getExportedKeys() and
       getCrossReference(). It now starts at 1 instead of 0 previously.
     * Corrected DatabaseMetaData.getSchemas() by returning 2 instead of 3
     * Improved DatabaseMetaData.getColumns() by returning two additional
     * Improved DatabaseMetaData.getTypeInfo(). It now returns better
       types. Also the returned rows are now ordered by DATA_TYPE,
       TYPE_NAME, PRECISION as required by the specs. Also corrected
       output column names "searchable" into "SEARCHABLE" and "MAXIMUM
       SCALE" into "MAXIMUM_SCALE" to match the JDBC specification.
     * Corrected DatabaseMetaData.getPseudoColumns(). It used to return 12
       empty rows. Now it returns no rows as MonetDB does not have pseudo
     * Implemented method DatabaseMetaData.getClientProperties(). It used
       to always return a resultset with 4 completely empty rows. It now
       returns a resultset with the possible connection properties.
     * Implemented method DatabaseMetaData.getUDTs(). It used to return an
       empty resultset. Now it returns the User Defined Types such as
       inet, json, url and uuid.
     * Corrected the returned table types in
       DatabaseMetaData.getTableTypes(). It now returns all 10 table types
       (as stored in sys.table_types) instead of the previously 8
       hardcoded table types. For old MonetDB servers which do not have
       the sys.table_types table, the old behavior is retained.
     * Implemented methods DatabaseMetadata.getProcedures() and
       DatabaseMetadata.getProcedureColumns(). They used to return an
       empty resultset. Now they return the expected Procedures and
       ProcedureColumns. Also getProcedureColumns() now returns a
       resultset with all 20 columns instead of 13 columns previously.
     * Method getFunctionColumns() in DatabaseMetadata used to throw an
       SQLException: getFunctionColumns(String, String, String, String) is
       not implemented. This method is now implemented and returns a
     * Method getFunctions() in DatabaseMetadata used to throw an
       SQLException: SELECT: no such column 'functions.sql' This has been
       corrected. It now returns a resultset as requested.
     * The resultsets of DatabaseMetadata methods now no longer return a
       value for the *_CAT columns as MonetDB does not support Catalogs.
     * Fixed a memory leak in for a static
       cache which kept references to closed Connection objects.
     * Improved JdbcClient program when presenting query data to console.
       It used to send an SQL catalog query for each query result column
       which slowed down the interactive response considerably. These
       additional SQL catalog queries have been eliminated.
     * Corrected MonetResultSet.getObject(String columnName). It no longer
       throws a NullPointerException in cases where internally a
       MonetVirtualResultSet is used.
     * Fixed Connection.isValid(): this method should never attempt to
       close the connection, even if an error has occurred.

     * Disallow GRANT <some-user> TO <role-or-use>. Only explicitly
       created roles can be granted.
     * Extended grantable schema privileges: when a user is granted the
       "sysadmin" role, the user now hcan not only create schemas, but
       also drop schemas.
     * Introduced COPY INTO/ COPY FROM global privileges. These privileges
       allows other users than 'monetdb' to be granted the privileges to
       use the MonetDB bulk data loading/exporting features, i.e., COPY
       FROM <file> and COPY INTO <file>.

   Bug Fixes
     * 2407: Merovingian: allow binds to given ip/interface
     * 2815: No SRID support
     * 3361: constants as MAL function parameters prevent intermediate
     * 3374: UNIQUE constraint does not set tkey property on the
       corresponding BAT
     * 3460: incomplete implementation of JDBC driver supportsConvert(),
       supportsConvert(int fromType, int toType) methods in
     * 3711: JDBC connection using jdbcclient.jar is very slow
     * 3877: MonetDBLite should allow close then re-open databases?
       without restarting R
     * 3911: Invalid connect() call in 'redirect' mode
     * 3920: query with DISTINCT and correlated scalar subquery in SELECT
       list causes Assertion failure and crash of mserver5
     * 3927: COUNT( distinct my_clob ) , QUANTILE( my_double , number )
       fails in dev build
     * 3956: MonetDBLite unable to execute LIMIT 1 statement
     * 3972: Drastic Memory leak of 600GBs while generating plan for Query
       with 25 joins
     * 3974: Prepared statement rel_bin.c:2378: rel2bin_project: Assertion
       `0' failed.
     * 3975: Suspicious code in store_manager() on exit path
     * 3978: SQL returns TypeException 'aggr.subcorr' undefined for
       sys.corr function
     * 3980: JOIN with references on both sides crashes mserver
     * 3981: Incorrect LEFT JOIN when FROM clause contains nested
     * 3983: Creation of a Foreign Key which partially maps to a primary
       key is accepted without a warning
     * 3984: Multiple paths in the .profile
     * 3985: ruby-monetdb-sql gem fails for negative timezone offset (USA,
     * 3987: Segfault on malformed csv import
     * 3991: MonetDBLite feature request: default monetdb.sequential to
       FALSE on windows
     * 3994: MonetDBLite dbDisconnect with shutdown=TRUE freezes the
       console on windows
     * 3995: NullPointerException when calling getObject()
     * 3997: calling scalar functions sys.isaUUID(str) or
       sys.isaUUID(uuid) fail
     * 3999: length() returns wrong length for strings which have spaces
       at the end of the string
     * 4010: RELEASE SAVEPOINT after ALTER TABLE crashes mserver5
     * 4011: sys.sessions.user column always shows 'monetdb'
     * 4013: GDKextendf does not free up memory when it fails due to
       insufficient resources
     * 4015: Daemon crashes on database release command

More information about the developers-list mailing list