<ul><li>The documentation no longer uses a frameset (except the Javadocs).
<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
</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.
the database is opened almost at the same time as it is closed automatically.
...
@@ -487,87 +491,5 @@ Change Log
...
@@ -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><li>Creating a table from GROUP_CONCAT didn't work if the data was longer than 255 characters
</li></ul>
</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.