February 2008

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

Release “Feb2008” consists of the following updated components MonetDB Common 1.22, MonetDB Clients 1.22, MonetDB4 Server 4.22, MonetDB4/XQuery 0.22, MonetDB5 Server 5.4, MonetDB5/SQL 2.22, and the jars for JDBC and XRPC.

IMPORTANT NOTE: The database format of this release is not compatible with that of any previous release. Before installing this release, make a dump of your database, and do a restore afterwards.

MonetDB Server This release marks the roll forward of the binary storage layout to a single column storage layout. This involved a major overhaul of the MonetDB Server code. Memory leaks have been addressed.

JDBC & XRPCwrapper The Java code (JDBC & XRPCwrapper) has been moved from the clients and pathfinder source trees to a dedicated java source tree in CVS, which can simply be compiled using “ant”. Pre-compiled “’.jar’” are available for Download.

SQL The functional extensions to SQL are limited. The mostly concern minor bugs and some of the optimizers have been improved to better exploit re-occurring joins. The core cracker code has been cleaned up for better inspection and sharing in the community.

XQuery Next to the original Pathfinder compiler (nick-named “milprint_summer” or simply “MPS”), the development of the new improved and enhanced Algebra-based Pathfinder compiler ("ALG") is progressing quickly. While the original MPS version remains the default in this release of MonetDB/XQuery, a preview of the new ALG version is now available without recompilation. For the stand-alone XQuery compiler, the MonetDB/XQuery server, and/or the MonetDB/XQuery client, simply use the following command line options to select the Algebra version as default:

  • ‘pf -A
  • ‘Mserver –dbinit=‘module(pathfinder);’ –set xquery_backend=algebra
  • ‘mclient –language=xquery –algebra
  • ‘mclient -lxquery -G

In an interactive `

mclient -lxquery session, commands \G " / " \g " enable / disable the Algebra -based compiler in the MonetDB/XQuery server.

The Algebra -based version of Pathfinder will become the default in the next release of MonetDB/XQuery.

Additionally, the following features have been added:

Algebra & MPS:

  • New Feature: (Restricted) optimistic type checking for functions. For every function argument whose type is not promotable to the type in the function definition we check whether the type would be promotable if we would apply fn:zero-or-one to the function argument. If that makes the types compatible we introduce an fn:zero-or-one function call for the argument. The effect is that a query writer now can quite often ignore adding fn:zero-or-one function calls (just to make the compiler happy :)).


  • XML import/export for logical algebra plans (‘pf -I’ / ‘pf -X’). There is however no official description of the used dialect.

  • New Feature: (Restricted) support for recursive functions in the algebra. If at query compile time the recursion depth is known the query can be extended with the following option:

    ‘declare option pf:recursion-depth “”;’

    which triggers the compiler to unfold recursive functions ‘’ times – thus supporting recursive functions until depth ‘’. If the recursion is deeper than ‘’ invocations a runtime error is triggered.

  • Implementations of the following functions have been added: ‘op:to’ (e.g., “‘1 to 10’”), ‘fn:concat’, ‘fn:string-join’, ‘fn:substring’, ‘fn:string-length’, ‘fn:normalize-space’, ‘fn:upper-case’, ‘fn:lower-case’, ‘fn:translate’, ‘fn:contains’, ‘fn:starts-with’, ‘fn:ends-with’, ‘fn:substring-before’, ‘fn:substring-after’, ‘fn:matches’, ‘fn:replace’, ‘fn:name’, ‘fn:local-name’, ‘fn:namespace-uri’, ‘fn:error’, ‘pf:add-doc’, ‘pf:del-doc’.

Bug fixes

A summary with the highlights is given below. A detailed list of closed bug reports can be found in the MonetDB Bug Tracker at SourceForge. The detailed list of changes can be found in the source code CVS change logs.


  • 1884382 table dependency inside union…
  • 1865953 local temp table
  • 1855673 bug in xml attribute parsing
  • 1850809 create the same temp table after its drop…
  • 1850789 add and then drop the same constraint…
  • 1850781 alter column to set the same constraint
  • 1850187 length function is not working properly
  • 1848541 select sign…
  • 1848511 select insert….
  • 1848500 octet_length…
  • 1848499 difference function crashes
  • 1842550 Better error reports on bulk load (include line num)…
  • 1841759 insert text with repeat…
  • 1841754 select with full join…
  • 1841749 creation of exception for select crash…
  • 1841734 select with coalesce
  • 1841727 pkey in temp table
  • 1838816 SQL: can’t use variable name staring with _digit in SQL func
  • 1838813 SQL: select 5 % 3 crashes
  • 1838785 column with date type
  • 1765919 API:Incomplete block read from stream (Mserver still alive?)


  • 1883569 XQ: Algebra
  • 1881018 PF: value clash in compiler/include/algebra.h
  • 1877300 XQ: reduce: Assertion `rule’ failed
  • 1872806 PF: weird results of fn:id()
  • 1871790 XQ: uncompilable comparison
  • 1871789 XQ: substitution fails
  • 1866944 Failed to compile current pathfinder

MonetDB Server

  • 1856038 Memory leaks when querying
  • 1856034 Memory leaks when bulk loading
  • 1852518 GDK/M4/PF: GDK assertion in PF/XQ tests since
  • 1842019 BULK load failing for NUMERIC columns


  • 1845266 Python converters don’t quote Unicode strings…