Skip to main content

MonetDB Jun2016 Release

Jun 2016-SP1 bugfix release

  • Lots of memory leaks have been plugged across the whole system.

Java Module
  • Corrected PROCEDURE_TYPE output value of method DatabaseMetaData.getProcedures(). It used to return procedureReturnsResult. Now it returns procedureNoResult. Corrected ORDINAL_POSITION output value of method DatabaseMetaData.getProcedureColumns(). It used to start with 0, but as procedures do not return a result value it now starts with 1 for all the procedure arguments, as defined by the JDBC API.

  • Improved output of method DatabaseMetaData.getProcedures(). The REMARKS column now contains the procedure definition as stored in sys.functions.func. The SPECIFIC_NAME column now contains the procedure unique identifier as stored in This allows the caller to retrieve the specific overloaded procedure which has the same name, but different arguments. Also improved output of method DatabaseMetaData.getProcedureColumns(). The SPECIFIC_NAME column now contains the procedure unique identifier as stored in This allows the caller to retrieve the proper arguments of the specific overloaded procedure by matching the SPECIFIC_NAME value.

  • Improved output of method DatabaseMetaData.getFunctions(). The REMARKS column now contains the function definition as stored in sys.functions.func. The SPECIFIC_NAME column now contains the function unique identifier as stored in This allows the caller to retrieve the specific overloaded function which has the same name, but different arguments. Also improved output of method DatabaseMetaData.getFunctionColumns(). The SPECIFIC_NAME column now contains the function unique identifier as stored in This allows the caller to retrieve the proper arguments of the specific overloaded function by matching the SPECIFIC_NAME value.

Bug Fixes
  • 4014: KILL signal
  • 4021: Analyze query does not escape input [security]
  • 4026: JDBC driver incorrectly converts TINYINT fields to String instead of an integer type.
  • 4028: inputs not the same size
  • 4031: mclient doesn't accept - argument to refer to stdin
  • 4032: no decimal places after update. ODBC driver
  • 4035: SQL Function call bug
  • 4036: Possible sql_catalog corruption due to unclean backuped tail

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 cruft.

  • Removed functions str.iconv and str.codeset. Internally, strings are always in UTF-8 encoding, so we can't allow code set conversions.

  • Removed with a BAT argument. Use algebra.likesubselect instead.

  • 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
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 objects.

  • 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 columns.

  • Improved DatabaseMetaData.getColumns() by returning two additional columns: IS_AUTOINCREMENT and IS_GENERATEDCOLUMN.

  • Improved DatabaseMetaData.getTypeInfo(). It now returns better information on LITERAL_PREFIX, LITERAL_SUFFIX, CREATE_PARAMS, CASE_SENSITIVE, FIXED_PREC_SCALE and MAXIMUM_SCALE for some data 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 columns.

  • 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 resultset.

  • 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 reuse
  • 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 subqueries
  • 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, etc.)
  • 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