<ul><li>The documentation no longer uses a frameset (except the Javadocs).
</li><li>When using DB_CLOSE_DELAY, sometimes a NullPointerException is thrown when
the database is opened almost at the same time as it is closed automatically.
...
...
@@ -487,87 +491,5 @@ Change Log
</li><li>Creating a table from GROUP_CONCAT didn't work if the data was longer than 255 characters
</li></ul>
<h2>Version 1.0.61 (2007-11-10)</h2>
<ul>
<li>The Lucene Fulltext implementation is now compiled and included in the h2.jar. Requires Lucene 2.2.
</li><li>Added more tests. The code coverage is now at 83%.
</li><li>ResultSetMetaData.getColumnDisplaySize was calculated as the longest display size for the given result set, but should be the maximum size that fits in the column. Fixed.
</li><li>The MODE used to be a global setting, now it is a database level setting.
</li><li>The database does now always round to the nearest number when converting a floating point to a integer: CAST(1.5 AS INT) will now result in 2, like in PostgreSQL and MySQL.
</li><li>Math operations using unknown data types (for example -? and ?+?) are now interpreted as decimal.
</li><li>INSTR, LOCATE: backward searching is not supported by using a negative start position.
</li><li>Can now open a database stored in a jar or zip file (for example, jdbc:h2:zip:c:/temp/h2.zip!/test).
</li><li>Files access now uses an API (FileSystem, FileObject), this will simplify adding other file systems and features (for example replication).
</li><li>Vlad Alexahin has translated H2 Console to Russian. Thanks a lot!
</li><li>Descending indexes are now supported. This is useful when sorting columns descending, for example by creation date.
</li><li>Solved a Java level deadlock in the DatabaseCloser.
</li><li>CREATE SEQUENCE: New option CACHE (number of pre-allocated numbers). New column CACHE in the sequence meta data table. The default cache size is still 32.
</li><li>MVCC: The system property h2.mvcc has been removed. A few bugs have been fixed, and new tests have been added.
</li></ul>
<h2>Version 1.0.60 (2007-10-20)</h2>
<ul>
<li>JdbcXAConnection: starting a transaction before getting the connection didn't switch off autocommit.
</li><li>User defined aggregate functions are not supported.
</li><li>Server.shutdownTcpServer was blocked when first called with force=false and then force=true. Now documentation is improved, and it is no longer blocked.
</li><li>Stack traces did not include the SQL statement in all cases where they could have. Also, stack traces with SQL statement are now shorter.
</li><li>Linked tables: now tables in non-default schemas are supported as well
</li><li>New Italian translation from PierPaolo Ucchino. Thanks a lot!
</li><li>CSV: New methods to set the escape character and field delimiter in the Csv tool and the CSVWRITE and CSVREAD methods.
</li><li>Prepared statements could not be used after data definition statements (creating tables and so on). Fixed.
</li><li>PreparedStatement.setMaxRows could not be changed to a higher value after the statement was executed.
</li><li>The H2 Console could not connect twice to the same H2 embedded database at the same time. Fixed.
</li><li>CSVREAD, RUNSCRIPT and so on now support URLs as well, using URL.openStream(). Example: select * from csvread('jar:file:///c:/temp/test.jar!/test.csv');
</li></ul>
<h2>Version 1.0.59 (2007-10-03)</h2>
<ul>
<li>When the data type was unknown in a subquery, sometimes the wrong exception (ArrayIndexOutOfBounds) was thrown. Fixed.
</li><li>If the process was killed while the database was running, sometimes the database could not be opened ('double allocation') except when the system property h2.check was set to false. Fixed.
</li><li>Multi-threaded kernel (MULTI_THREADED=1): A synchronization problem has been fixed.
</li><li>A PreparedStatement that was cancelled could not be reused. Fixed.
</li><li>H2 Console: Progress information when logging into a H2 embedded database (useful when opening a database is slow).
</li><li>When the database was closed while logging was disabled (LOG 0), re-opening the database was slow. Fixed.
</li><li>Fulltext search is now documented (in the Tutorial).
</li><li>The Console did not refresh the table list if the CREATE TABLE statement started with a comment. Fixed.
</li><li>When creating a table using CREATE TABLE .. AS SELECT, the precision for some data types (for example VARCHAR) was set to the default precision. Fixed.
</li><li>When using the (undocumented) in-memory file system (jdbc:h2:memFS:x or jdbc:h2:memLZF:x), and using multiple connections, a ConcurrentModificationException could occur. Fixed.
</li><li>REGEXP compatibility: So far String.matches was used, but for compatibility with MySQL, now Matcher.find is used.
</li><li>SCRIPT: the SQL statements in the result set now include the terminating semicolon as well. Simplifies copy and paste.
</li><li>When using a subquery with group by as a table, some columns could not be used in the where condition in the outer query. Example: SELECT * FROM (SELECT ID, COUNT(*) C FROM TEST) WHERE C > 100. Fixed.
</li><li>Views with subqueries as tables and queries with nested subqueries as tables did not always work. Fixed.
</li><li>Compatibility: comparing columns with constants that are out of range does not throw an exception.
</li></ul>
<h2>Version 1.0.58 (2007-09-15)</h2>
<ul>
<li>System.exit is no longer called by the WebServer, the Console and the Server tool (except to set the exit code if required). This is important when using OSGi.
</li><li>Optimization for independent subqueries. For example, this query can now an index: SELECT * FROM TEST WHERE ID = (SELECT MAX(ID) FROM TEST) This can be disabled by setting the system property h2.optimizeSubqueryCache to false.
</li><li>The explain plan now says: /* direct lookup query */ if the query can be processed directly without reading rows, for example when using MIN(indexed column), MAX(indexed column), or COUNT(*).
</li><li>When using IFNULL, NULLIF, COALESCE, LEAST, or GREATEST, and the first parameter was ?, an exception was thrown. Now the highest data type of all parameters is used.
</li><li>When comparing TINYINT or SMALLINT columns against constants, the index was not used. Fixed.
</li><li>Maven 2: new version are now automatically synced with the central repositories.
</li><li>The default value for MAX_MEMORY_UNDO is now 100000.
</li><li>The documentation indexer does no longer index Japanese pages. If somebody knows how to split Japanese into words please post it.
</li><li>Oracle compatibility: SYSDATE now returns a timestamp. CHR(..) is now an alias for CHAR(..).
</li><li>After deleting data, empty space in the database files was not efficiently reused (but it was reused when opening the database). This has been fixed.
</li><li>About 230 bytes per database was leaked. This is a problem for applications opening and closing many thousand databases. The main problem: a shutdown hook was added but never removed. Fixed.
In JDK 1.4, there is <ahref="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4197876">an additionally problem</a>.
A workaround has been implemented.
</li><li>Optimization for COLUMN IN(.., NULL) if the column does not allow NULL values.
</li><li>Using spaces in column and table aliases was not supported when used inside a view or temporary view.
</li><li>The version (build) number is now included in the manifest file.
</li><li>In some systems, SecureRandom.generateSeed is very slow (taking one minute or more). For those cases, an alternative method is used that takes less than one second.
</li><li>The database file sizes are now increased at most 32 MB at any time.
</li><li>New method DatabaseEventListener.opened that is called just after opening a database.
</li><li>When using the Console with Internet Explorer 6.0 or 7.0, a Javascript error was thrown after clearing the query.
</li><li>A database can now be opened even if class of a user defined function is not in the classpath. Trying to call the function will throws an exception.
</li><li>User defined functions and constants may not overload built-in functions and constants. This didn't work before, but now trying to create such an object will fail.
</li><li>Improved MultiDimension tool (for spatial queries): in the last few releases the tool was actually slower than using a regular query (because index lookup got faster, and because the tool didn't support prepared statements) Now the tool generates prepared statements, and the performance is better again (about 5 times faster for a reasonable amount of data).
</li><li>Adding a foreign key or when re-enabling referential integrity for a table failed when checking was enabled and the reference contained NULL.
</li><li>For PgServer, character encoding other than UTF-8 did not work correctly. Fixed.
</li><li>Using a function in a GROUP BY expression that is used in a view as a condition did not always work.