MonetDB Jun2010-SP2 release

Release "Jun2010-SP2" consists of the following updated components. If you're using the Mercurial clone, use the Jun2010 branch and the Jun2010_5 tag.

Name VersionSubdirectoryNote/Comment
MonetDB Common 1.38.5 MonetDB
MonetDB Clients 1.38.5 clients
MonetDB4 Server 4.38.5 MonetDB4
MonetDB4/XQuery 0.38.5 pathfinder
MonetDB5 Server 5.20.5 MonetDB5
MonetDB5/SQL 2.38.5 sql
MonetDB5/SQL/GIS0.18.5 geom
MonetDB Java 1.38.5 java
MonetDB Testing 1.38.5 testing (developers only)

NOTE:
Before upgrading to the latest "Jun2010" release from a release of MonetDB older than the Nov2008 release, please make a dump (SQL, XQuery) of your database, and rename/move/backup the database directories (dbfarm, sql_logs, xquery_logs). After the upgrade, restore (SQL, XQuery) your database, again. Once you have checked and confirmed the correctness of the restore, you can delete the above renamed/moved/backed-up old database directories.

When upgrading from a release of MonetDB older than the May2009 release, you need to move your write-ahead log following the "recommended" instructions for SQL and/or XQuery.

Contents

Jun 2010 SP2 bug-fix release

This is the second bug fix release of the Jun2010 version. This version can be installed "on top of" the Jun2010 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is always a good idea to make backups.)

Some of the bugs that were fixed:

Client Packages

  • mclient now complains about NULL bytes in the input when in interactive mode.
  • Slight rendering improvements to mclient's tabular output when rendering results larger than the available screen width, headers were previously unnecessarily squeezed.
  • Fix bug #2650, a too small buffer caused the active database as reported by mclient's welcome message to be truncated
  • Add --version option to mclient.
  • In case of an incomplete line from the server, add a newline. This fixes bug 2619.
  • Avoid using SQLROWSETSIZE and SQLROWOFFSET. This fixes bug 2558.

MonetDB Common

  • Fixed a bug where some internal reference counting was done incorrectly, causing an infinite loop when exiting the server due to it being killed. This bug probably only manifested itself in MonetDB/XQuery. Bug 2658.

MonetDB Server 4

  • Fixed a crash when calculating certain aggregates on platforms where non-aligned data access is not allowed (e.g. Sparc).
  • Slight change to Fedora, Debian, Ubuntu installers: the database directory now has the group setuid bit set so that new databases inherit the group ownership (monetdb).

MonetDB Server 5

  • Fixed a crash when calculating certain aggregates on platforms where non-aligned data access is not allowed (e.g. Sparc).
  • A bug was fixed where on 32 bit systems (or 64 bit systems using 32 bit OIDs), values were sometimes written as 32 bits but read as 64 bits. This fixes bugs 2644 and 2654.
  • If extensions such as SQL and GEOM are properly installed, they are loaded automatically when mserver5 starts. This fixes bug 2522.
  • Fixed bug 2557. There was a bug in the mergetable optimizer which was triggered by multi column (at least 32 columns).
  • Added missing multiplex version of MAL str.stringlength(). This improves performance of SQL length().
  • Protect dataflow against multi-assignments. This fixes bugs 2626 & 2614.
  • Slight change to Fedora, Debian, Ubuntu installers: the database directory now has the group setuid bit set so that new databases inherit the group ownership (monetdb).
  • Restored genuine original mitosis logic by disabling incorrect octopus dominance (even when octopus was not enabled); basically a selective back-port of changesets http://dev.monetdb.org/hg/MonetDB/rev/2a358751a4b6 http://dev.monetdb.org/hg/MonetDB/rev/692eff15bea0 from the default branch. This fixes bug 2596.

SQL

  • Fixed a case where the optimizer incorrectly removed an expression. This fixes bug 2602.
  • Fix a crash in prepared statements when a parameter is on the left-hand side of a binary operator. This fixes bug 2599.
  • Fixed reporting of a violated foreign key constraint. This fixes bug 2598.
  • Certain schema altering queries didn't report success, even though they did succeed. This fixes bug 2589.
  • Fixed a crash when a non-existing table was used in an IN clause. Fixes bug 2604.
  • Fixed bug 2633. Adding a LIMIT clause could, in certain conditions, cause a crash.
  • A bug was fixed where updates were missing in large transaction. This fixes bug 2543.
  • A memory leak was fixed which caused the server to grow when loading and emptying a table. This was bug 2539.
  • Fixed bug 2643 added more defensive code, when an aggregation function doesn't exist
  • Fixed bug 2651 properly handle dead code elimination with op_semi/op_anti and references
  • Fixed bug 2652. Correctly list all columns of a 'IN' query with 'EXCEPT'
  • Fixed bug 2353. The relational optimizer didn't handle range join expressions properly.
  • fixed bug 2354. Improved function resolution.
  • Fixed bug 2645: mat.pack+algebra.slice should be replaced by mat.slice for 'limit 1' (when the default_pipe is used)
  • Fixed bug #2641, The SQL server now handles Unicode BOM sequences occurring in any place. Previously an "unexpected character (U+FEFF)" error would be returned.
  • Fix Bug 2611. Fixed check for multiple functions without parameters.
  • Fixed bug 2569 (except/union/intersect right after insert/delete/update. We now correctly fallback to the more general subquery case (not only simple selects (SQL_SELECT)).
  • Fixed bug in handling 'WITH' and row_number() (Bug 2631). The cardinality of the row_number expression was incorrect.
  • Fixed ORDER BY over UNION etc. (bug 2606) by automatically adding select * around select x union select y order by z.
  • On installs with (very) long prefixes, the UNIX domain sockets could get truncated, causing merovingian to become unavailable to monetdb and mclient. Similarly, a fall back to a regular TCP socket for mapi connections is used for forked mservers in this case.
  • Really shutdown when an argument to merovingian was given, instead of ending up in some inconsistent state. This solves all weird behaviour observed in bug #2628.
  • Report MonetDB release on --version flags and in the logs.
  • Fixed bug 2624: function returning decimal returned result that was scaled incorrectly.
  • fixed bug 2622 "LIMIT & OFFSET ignored on 64-bit big-endian when combined with GROUP BY"
  • Remove references to master/slave settings, since replication isn't yet fully implemented in Jun2010 branch.

The following bug tracker items were fixed since the Jun2010-SP1 release:

  • 2265: SQL: concurrent tracelog()
  • 2319: SQL: got assertion for type-mismatch
  • 2333: SQL: crash on where in query
  • 2341: load_idxcolumn: Assertion `kc->c' failed
  • 2342: bat_storage.mx:822: dup_delta: Assertion `bat->ibid' failed.
  • 2352: SQL: in (test + 1)
  • 2353: SQL: exp_bin: Assertion `0'
  • 2354: SQL: concatination length is based on last column
  • 2529: main BAT fallback creates collision
  • 2548: Connect to default segfault
  • 2557: SQLException:assert:INSERT INTO: FOREIGN KEY constraint violated on 64-bits
  • 2558: unixODBC-2.3.0 removed SQLROWOFFSET and SQLROWSETSIZE
  • 2574: msqldump does not export GRANT information upon export
  • 2576: copy into resulted in HEAPsave_intern: Assertion `0' failed.
  • 2577: not in (... union ...) differs from: except (... union ...)
  • 2589: CREATE TABLE & ALTER TABLE no longer produce "Operation successful"
  • 2591: missing/not-found file: "could not read createdb.sql"
  • 2592: test sql/src/test/BugTracker-2009/Tests/dumping_tables.SF-2776908--optimizers.sql produces different output
  • 2596: some TPCH tests fail with assertion in opt_mergetable on Windows
  • 2597: test sql/src/test/Tests/rank.sql produces varying (wrong?) output on various platforms
  • 2598: Wrong constraint in error message when delete prohibited due to foreign key
  • 2599: server crashes when prepare statement has expression like "a>?+1"
  • 2602: WHERE clause with AND NOT is broken
  • 2604: segfault having non existing table IN (...)
  • 2606: ORDER BY over UNION / EXCEPT / INTERSECT is ignored
  • 2611: creating second function with existing signature succeeds
  • 2613: SQL creates wrong MAL code a.o. with GDK_nr_threads=1
  • 2614: Update statement in function ignored
  • 2619: io.printf without newline hangs
  • 2621: Some *.py tests produce "strange(ly formatted)" stderr output on Windows
  • 2622: LIMIT & OFFSET ignored on 64-bit big-endian when combined with GROUP BY
  • 2624: function returning decimal with fraction returns too large integer
  • 2626: Incorrect NULL function results with multi-thread execution
  • 2627: java/merovingian fails to compile on Debian 4.0
  • 2628: Cannot reconnect to same database twice
  • 2631: Combination of WITH and numbering function crashes Mserver
  • 2633: crash in rel2bin with complex query and LIMIT
  • 2641: Unicode BOM upsets the scanner
  • 2643: sum over a column type date
  • 2644: multi-threaded execution instable on 32-bit systems & 64-bit systems with 32-bit OIDs
  • 2645: SQL: mat.pack+algebra.slice should be replaced by mat.slice for 'limit 1'
  • 2650: Name of database is truncated
  • 2651: rel_bin.mx:1571: rel2bin_project: Assertion `0' failed.
  • 2652: Select * from aliased subquery join doesn't return all columns
  • 2653: segfault sql_mvc.mx:847
  • 2654: extremely slow query
  • 2657: test sql/src/test/Skyserver/Tests/Skyserver_v6.SQL.py: sql/src/common/sql_mem.mx:53: sql_ref_dec: Assertion `r->refcnt > 0' failed.
  • 2658: Mserver busy in BBPExit() for more than 1 minute upon Mserver kill

Jun 2010 SP1 bug-fix release

This is a bug fix release of the Jun2010 version. This version can be installed "on top of" the Jun2010 release. The database format is fully compatible, so there is no need to do a dump and restore. (Although it is always a good idea to make backups.)

Most importantly, the bug that was the immediate reason for retracting the Jun2010 release has been fixed.

Upgrading from the Jun2010 Release

Upgrading directly to the Jun2010-SP1 release from the Feb2010 release or one of the Feb2010 bug fix releases should go smoothly. No problems are known at this time. If, however, you had upgraded to the retracted Jun2010 release, you will need to take some extra steps on each database that the Jun2010 version was used on. Note that this is only relevant for MonetDB/SQL. MonetDB/XQuery was not affected by the bug.

  1. In case still running, stop any MonetDB server.
  2. It is always a good idea to make sure you have an up-to-date filesystem backup (using your favorite filesystem backup software) of your database(s) (i.e., your dbfarm('s)).
  3. Upgrade MonetDB to the Jun2010-SP1 release.
  4. For each database, execute the following steps (once):
    1. Start a Jun2010-SP1 MonetDB/SQL server
    2. Execute the following 4 SQL commands via an mclient session:
      update _tables set schema_id=(select id from sys.schemas where name='sys')
          where schema_id not in (select id from sys.schemas) and schema_id <> 0;
      update functions set schema_id=(select id from sys.schemas where name='sys')
          where schema_id not in (select id from sys.schemas) and schema_id <> 0;
      update types set schema_id=(select id from sys.schemas where name='sys')
          where schema_id not in (select id from sys.schemas) and schema_id <> 0;
      update sequences set schema_id=(select id from sys.schemas where name='sys')
          where schema_id not in (select id from sys.schemas) and schema_id <> 0;
      
    3. Stop the MonetDB/SQL server

Now your databases should be upgraded and consistent, and you can continue working as usual.

In case you did upgrade your Feb2010(|-SP(1|2))-generated SQL databases with the retracted Jun2010 release, and then, after restarting the MonetDB/SQL server, experience problems like missing tables or alike, please follow the same instructions as given above.

In case you tried to upgrade your Feb2010(|-SP(1|2))-generated SQL databases with the retracted Jun2010 release, but that failed with a server crash (segfault), please contact us via one of our public mailing lists or via info@monetdb.org.

Other Changes in Jun2010-SP1

Some of the other bugs that were fixed:

Client Packages

  • Implemented dumping of GRANT statements. This fixes bug 2574.
  • Fix implementation of mapi_mapiuri to deal with UNIX socket urls properly. This fixes one part of Bug #2567.

MonetDB Server 5

  • Fixed bug 2597: This bug manifested itself in rank queries in SQL but was a bug in the mergetable optimizer.
  • Return a correct URI for local connection from Sabaoth when the connection is a UNIX domain socket. Partial fix for bug #2567.
  • Various performance fixes in grouping and grouped aggregation code (MonetDB5/src/modules/kernel/group.mx, MonetDB5/src/modules/kernel/aggr*.mx) to reduce the execution time of the following query that mimics a two-column primary key check over the ~5 billion tuple "neighbors" table of the Skyserver database from 26 hours to 1.5 hours (on a 64 GB machine): SELECT count(c), sum(c), min(c), max(c) FROM (SELECT count(*) AS c FROM "neighbors" GROUP BY "objID","NeighborObjID") AS t;

SQL

  • Make queries like (SELECT ...) UNION ALL (SELECT ...) ORDER BY ...; work, again, that were broken since Jun 22 2010 triggering errors like "ORDER BY: missing select operator"
  • Removed false connection warning about missing SQL script ("could not read createdb.sql") received by the client upon first connect on a newly created database. Bug #2591
  • Improved error message for certain type-related problems by including the affected column name.
  • Make TEXT a separate keyword, separating it from CLOB, such that we can sloppily allow TEXT to appear as a column name, since it seems not to be in the standard as reserved keyword.
  • Fixed bug 2581. Completed the implementation of handling Boolean types in prepare statements.
  • Fix bug 2582. Statements with 'constant in ( )' are now handled properly.
  • Fixed bug 2583 + added test. The assert was incorrect.
  • Fixed bug in zero_or_one
  • Fixed bug in dead code elimination for projections with distinct
  • Fixed bug handling join with constant values on both sides (like group results and constants)
  • fixed bug in UPDATE TABLE when updating multiple rows
  • fixed bug 2564: in case group by column is not found as alias in projection list, fall back to check plain input columns in order to find the underlying BAT and check its sortedness

Jun 2010 feature release

The Jun2010 release has been retracted. There is a serious bug in the code that deals with databases that were created with older releases. See the bug report for details. After an upgrade and a restart of the database, the SQL catalog is no longer usable, and so it looks like all tables in the sys schema have disappeared. Note however that not all is lost. The database can be repaired without loss of data once we have issued the Jun2010-SP1 bug fix release. Also, as long as you don't make any schema changes (i.e., no new tables, functions, etc.) you can repair the database using the following queries and a restart of the server:

select id from schemas where name = 'sys';

Note the result of this query and use it in the next queries in place of RESULT:

update _tables set schema_id = RESULT where schema_id not in
       (select id from schemas) and schema_id <> 0;
update functions set schema_id = RESULT where schema_id not in
       (select id from schemas) and schema_id <> 0;
update types set schema_id = RESULT where schema_id not in
       (select id from schemas) and schema_id <> 0;
update sequences set schema_id = RESULT where schema_id not in
       (select id from schemas) and schema_id <> 0;

Packaging

Linux

We now package for Fedora 11, 12, and 13, for Debian 5.0 (Lenny), and for Ubuntu 9.10 (Karmic Koala) and 10.04 (Lucid Lynx).

MonetDB Common

  • Updated Vendor information.
  • Made compilation of "testing" (and "java") independent of MonetDB. This is mainly for Windows, but also on other systems, "testing" can now be built independently of (and hence before) "MonetDB". Files that mimic configure functionality on Windows were moved from "MonetDB" to "buildtools"; hence, this affects all packages on Windows, requiring a complete rebuild from scratch on Windows. getopt() support in testing has changed; hence, (most probably) requiring a rebuild from scratch of testing on other systems.
  • Implemented build directory support for Windows, i.e., like on Unix/Linux also on Windows we can now build in a separate build directory as alternative to ...<package>NT, and thus keep the latter clean from files generated during the build. On Windows, the build directory must be a sibling of ...<package>NT .

MonetDB Server 4

  • Updated Vendor information.
  • Made compilation of "testing" (and "java") independent of MonetDB. This is mainly for Windows, but also on other systems, "testing" can now be built independently of (and hence before) "MonetDB". Files that mimic configure functionality on Windows were moved from "MonetDB" to "buildtools"; hence, this affects all packages on Windows, requiring a complete rebuild from scratch on Windows. getopt() support in testing has changed; hence, (most probably) requiring a rebuild from scratch of testing on other systems.
  • Implemented build directory support for Windows, i.e., like on Unix/Linux also on Windows we can now build in a separate build directory as alternative to ...<package>NT, and thus keep the latter clean from files generated during the build. On Windows, the build directory must be a sibling of ...<package>NT .

MonetDB Server 5

  • When libxml2 is available, the XML module is automatically loaded.
  • Updated Vendor information.
  • Created a new RPM MonetDB5-server-rdf for the optional MonetDB/RDF module.
  • Added the Z-order module to simplify future manipulation of arrays.
  • fixed BUG #2994521 "mat.slice unable to cope with only empty BAT arguments" by making MATpackSliceInternal() handle empty input BATs correctly
  • Select <col> from <t> limit <n> has been improved by introducing mat.slice().
  • Made compilation of "testing" (and "java") independent of MonetDB. This is mainly for Windows, but also on other systems, "testing" can now be built independently of (and hence before) "MonetDB". Files that mimic configure functionality on Windows were moved from "MonetDB" to "buildtools"; hence, this affects all packages on Windows, requiring a complete rebuild from scratch on Windows. getopt() support in testing has changed; hence, (most probably) requiring a rebuild from scratch of testing on other systems.
  • Implemented build directory support for Windows, i.e., like on Unix/Linux also on Windows we can now build in a separate build directory as alternative to ...<package>NT, and thus keep the latter clean from files generated during the build. On Windows, the build directory must be a sibling of ...<package>NT .
  • The MAL debugger list command has been extended with an optional hash '#', which produces line numbers for each of reference and analysis of variable span.
  • The dataflow scheduler has been revamped to allow for more parallelism to be exploited.
  • The garbage collection administration has been changed. Every variable record now comes with an end-of-life field (eolife), which denotes the instruction after which the BAT variable reference counter can be decremented. The garbage collector is never called automagically on MAL functions, because there may be other pressing needs to retain them. This means that MAL functions defined and used in the context of SQL, and which are not inlined, may cause a leakage. The garbage collection has become part of each interpreter step. The new approach makes the SQL/MAL plans half the size as before.
  • Removed stethoscope from MonetDB5 sources. New location is in the clients repository.
  • Added the compression optimizer as an example of how to gain access to foreign file formats deep down in the kernel and transfer them just in time into a temporary BAT.
  • Renamed configure argument --with-console to --enable-console. Default remains console being enabled.
  • Fixed cleaning the user module context upon session end. Fixes bug #2956664
  • The config variable mapi_usock can now be used to instruct the server to listen for connections on a local UNIX domain socket on UNIX-like systems.
  • The MAL interpreter has been extended with an operation admission policy to control the memory claims of all concurrent running interpreters. Instructions are hold up unto there is sufficient resource or the query plan can not avoid its execution anymore.
  • The join path optimizer has been extended with searching for join*, semijoin*, and leftjoin* paths. Furthermore, it avoids duplicate work by factoring out all common simple join paths.

SQL

  • make it possible to use '?' in offset and limit
  • Added include and .lib files to Windows installers that are needed to compile client programs.
  • Updated Vendor information.
  • Made compilation of "testing" (and "java") independent of MonetDB. This is mainly for Windows, but also on other systems, "testing" can now be built independently of (and hence before) "MonetDB". Files that mimic configure functionality on Windows were moved from "MonetDB" to "buildtools"; hence, this affects all packages on Windows, requiring a complete rebuild from scratch on Windows. getopt() support in testing has changed; hence, (most probably) requiring a rebuild from scratch of testing on other systems.
  • Implemented build directory support for Windows, i.e., like on Unix/Linux also on Windows we can now build in a separate build directory as alternative to ...<package>NT, and thus keep the latter clean from files generated during the build. On Windows, the build directory must be a sibling of ...<package>NT .

XQuery

  • Updated Vendor information.
  • Made compilation of "testing" (and "java") independent of MonetDB. This is mainly for Windows, but also on other systems, "testing" can now be built independently of (and hence before) "MonetDB". Files that mimic configure functionality on Windows were moved from "MonetDB" to "buildtools"; hence, this affects all packages on Windows, requiring a complete rebuild from scratch on Windows. getopt() support in testing has changed; hence, (most probably) requiring a rebuild from scratch of testing on other systems.
  • Implemented build directory support for Windows, i.e., like on Unix/Linux also on Windows we can now build in a separate build directory as alternative to ...<package>NT, and thus keep the latter clean from files generated during the build. On Windows, the build directory must be a sibling of ...<package>NT .

Merovingian

  • Fixed an issue where Merovingian's strict umask was applied too early causing files to be inaccessible. Now the .merovingian_control socket file is accessible to both user and group of the merovingian process, and the .mapi_socket file is accessible to everyone like a TCP socket is. Fixes bug #2550.
  • Properly clean up .merovingian_control file in dbfarm.
  • Removed database pre-starting (mis-)feature, any argument to merovingian now yields in a version message followed by a server exit.
  • Sort output returned by discover, status and get commands based on url or dbname.
  • Implemented UNIX domain socket listener for Merovingian, found as mapi_socket in the dbfarm. Client connections can be made over it like normal TCP connections.
  • When a proxy connection is made to a local UNIX domain socket, pass on the filedescriptor instead of proxying.
  • Use mserver5's UNIX domain socket support when Merovingian is supposed to proxy the connection to the database.
  • Enlarged buffer to avoid incomplete output being sent to monetdb(1), causing commands like status and get to fail on certain configurations.
  • Avoid running over the allocated buffer space resulting in crashes when a client connects which IP address cannot be resolved into a hostname, bug #2964247.

Client Packages

  • Updated Vendor information.
  • The MonetDB ODBC driver now no longer depends on its own copy of the standard ODBC include files but instead depends on system include files (unixODBC on Linux and Microsoft SDK on Windows).
  • Made compilation of "testing" (and "java") independent of MonetDB. This is mainly for Windows, but also on other systems, "testing" can now be built independently of (and hence before) "MonetDB". Files that mimic configure functionality on Windows were moved from "MonetDB" to "buildtools"; hence, this affects all packages on Windows, requiring a complete rebuild from scratch on Windows. getopt() support in testing has changed; hence, (most probably) requiring a rebuild from scratch of testing on other systems.
  • Implemented build directory support for Windows, i.e., like on Unix/Linux also on Windows we can now build in a separate build directory as alternative to ...<package>NT, and thus keep the latter clean from files generated during the build. On Windows, the build directory must be a sibling of ...<package>NT .
  • Changed \d output of mclient to no longer list (internal use only) system tables. Administrator users who like to inspect these tables can use SELECT * FROM tables; instead
  • Implemented the changes required for properly running ODBC on a 64-bit platform.
  • Added stethoscope, an utility to profile MonetDB5 instances, originally from the MonetDB5 repository.

Geom Module

  • Updated Vendor information.
  • Made compilation of "testing" (and "java") independent of MonetDB. This is mainly for Windows, but also on other systems, "testing" can now be built independently of (and hence before) "MonetDB". Files that mimic configure functionality on Windows were moved from "MonetDB" to "buildtools"; hence, this affects all packages on Windows, requiring a complete rebuild from scratch on Windows. getopt() support in testing has changed; hence, (most probably) requiring a rebuild from scratch of testing on other systems.
  • Implemented build directory support for Windows, i.e., like on Unix/Linux also on Windows we can now build in a separate build directory as alternative to ...<package>NT, and thus keep the latter clean from files generated during the build. On Windows, the build directory must be a sibling of ...<package>NT .