提交 8825c9ce authored 作者: Thomas Mueller's avatar Thomas Mueller

Documentation.

上级 9e771b50
......@@ -725,7 +725,7 @@ FileDescriptor.sync()
FileChannel.force()
@advanced_1242_li
(since JDK 1.4). This method is supposed to force any updates to this channel's file to be written to the storage device that contains it.
. This method is supposed to force any updates to this channel's file to be written to the storage device that contains it.
@advanced_1243_p
By default, MySQL calls <code>fsync</code> for each commit. When using one of those methods, only around 60 write operations per second can be achieved, which is consistent with the RPM rate of the hard drive used. Unfortunately, even when calling <code>FileDescriptor.sync()</code> or <code>FileChannel.force()</code>, data is not always persisted to the hard drive, because most hard drives do not obey <code>fsync()</code>: see <a href="http://hardware.slashdot.org/article.pl?sid=05/05/13/0529252">Your Hard Drive Lies to You</a>. In Mac OS X, <code>fsync</code> does not flush hard drive buffers. See <a href="http://lists.apple.com/archives/darwin-dev/2005/Feb/msg00072.html">Bad fsync?</a>. So the situation is confusing, and tests prove there is a problem.
......@@ -1340,22 +1340,22 @@ Portability
Environment
@build_1015_p
To run this database, a Java Runtime Environment (JRE) version 1.5 or higher is required.
To run this database, a Java Runtime Environment (JRE) version 1.6 or higher is required.
@build_1016_p
To create the database executables, the following software stack was used. To use this database, it is not required to install this software however.
@build_1017_li
Mac OS X and Windows XP
Mac OS X and Windows
@build_1018_a
Sun JDK Version 1.5 and 1.6
Sun JDK Version 1.6 and 1.7
@build_1019_a
Eclipse Version 3.4
Eclipse
@build_1020_li
Eclipse Plugins: <a href="http://subclipse.tigris.org">Subclipse</a>, <a href="http://eclipse-cs.sourceforge.net">Eclipse Checkstyle Plug-in</a>, <a href="http://www.eclemma.org">EclEmma Java Code Coverage 1.3.0</a>
Eclipse Plugins: <a href="http://subclipse.tigris.org">Subclipse</a>, <a href="http://eclipse-cs.sourceforge.net">Eclipse Checkstyle Plug-in</a>, <a href="http://www.eclemma.org">EclEmma Java Code Coverage</a>
@build_1021_a
Emma Java Code Coverage
......@@ -1367,7 +1367,7 @@ Mozilla Firefox
OpenOffice
@build_1024_a
NSIS 2.38
NSIS
@build_1025_li
(Nullsoft Scriptable Install System)
......@@ -1379,7 +1379,7 @@ Maven
Building the Software
@build_1028_p
You need to install a JDK, for example the Sun JDK version 1.5 or 1.6. Ensure that Java binary directory is included in the <code>PATH</code> environment variable, and that the environment variable <code>JAVA_HOME</code> points to your Java installation. On the command line, go to the directory <code>h2</code> and execute the following command:
You need to install a JDK, for example the Sun JDK version 1.6 or 1.7. Ensure that Java binary directory is included in the <code>PATH</code> environment variable, and that the environment variable <code>JAVA_HOME</code> points to your Java installation. On the command line, go to the directory <code>h2</code> and execute the following command:
@build_1029_p
For Linux and OS X, use <code>./build.sh</code> instead of <code>build</code>.
......@@ -1394,7 +1394,7 @@ Building the Software
Switching the Source Code
@build_1033_p
By default the source code uses Java 1.6 features, however Java 1.5 is supported as well. To switch the source code to the installed version of Java, run:
The source code uses Java 1.6 features. To switch the source code to the installed version of Java, run:
@build_1034_h2
Build Targets
......@@ -1517,7 +1517,7 @@ Providing Patches
If you like to provide patches, please consider the following guidelines to simplify merging them:
@build_1074_li
Only use Java 1.5 features (do not use Java 1.6) (see <a href="#environment">Environment</a>).
Only use Java 6 features (do not use Java 7) (see <a href="#environment">Environment</a>).
@build_1075_li
Follow the coding style used in the project, and use Checkstyle (see above) to verify. For example, do not use tabs (use spaces instead). The checkstyle configuration is in <code>src/installer/checkstyle.xml</code>.
......@@ -1640,552 +1640,561 @@ Change Log
Next Version (unreleased)
@changelog_1002_li
Issue 434: H2 Console didn't work in the Chrome browser due to a wrong viewport argument.
H2 Console: the session timeout can now be configured using the system property "h2.consoleTimeout".
@changelog_1003_li
There was a possibility that the .lock.db file was not deleted when the database was closed, which could slow down opening the database.
Issue 431: Improved compatibility with MySQL: support for "ENGINE=InnoDB charset=UTF8" when creating a table.
@changelog_1004_li
The SQL script generated by the "script" command contained inconsistent newlines on Windows.
Issue 249: Improved compatibility with MySQL in the MySQL mode: now the methods DatabaseMetaData methods stores*Case*Identifiers return the same as MySQL when using the MySQL mode.
@changelog_1005_li
When using trace level 4 (SLF4J) in the server mode, a directory "trace.db" and an empty file was created on the client side. This is no longer made.
Issue 434: H2 Console didn't work in the Chrome browser due to a wrong viewport argument.
@changelog_1006_li
Optimize IN(...) queries: there was a bug in version 1.3.170 if the type of the left hand side didn't match the type of the right hand side. Fixed.
There was a possibility that the .lock.db file was not deleted when the database was closed, which could slow down opening the database.
@changelog_1007_li
Optimize IN(...) queries: there was a bug in version 1.3.170 for comparison of the type "X IN(NULL, NULL)". Fixed.
The SQL script generated by the "script" command contained inconsistent newlines on Windows.
@changelog_1008_li
Timestamps with timezone that were passed as a string were not always converted correctly. For example "2012-11-06T23:00:00.000Z" was converted to "2012-11-06" instead of to "2012-11-07" in the timezone CET. Thanks a lot to Steve Hruda for reporting the problem!
When using trace level 4 (SLF4J) in the server mode, a directory "trace.db" and an empty file was created on the client side. This is no longer made.
@changelog_1009_li
New table engine "org.h2.mvstore.db.MVTableEngine" that internally uses the MVStore to persist data. To try it out, append ";DEFAULT_TABLE_ENGINE=org.h2.mvstore.db.MVTableEngine" to the database URL. This is still very experimental, and many features are not supported yet. The data is stored in a file with the suffix ".mv.db".
Optimize IN(...) queries: there was a bug in version 1.3.170 if the type of the left hand side didn't match the type of the right hand side. Fixed.
@changelog_1010_li
New connection setting "DEFAULT_TABLE_ENGINE" to use a specific table engine if none is set explicitly. This is to simplify testing the MVStore table engine.
Optimize IN(...) queries: there was a bug in version 1.3.170 for comparison of the type "X IN(NULL, NULL)". Fixed.
@changelog_1011_li
MVStore: encrypted stores are now supported. Only standardized algorithms are used: PBKDF2, SHA-256, XTS-AES, AES-128.
Timestamps with timezone that were passed as a string were not always converted correctly. For example "2012-11-06T23:00:00.000Z" was converted to "2012-11-06" instead of to "2012-11-07" in the timezone CET. Thanks a lot to Steve Hruda for reporting the problem!
@changelog_1012_li
MVStore: improved API thanks to Simo Tripodi.
New table engine "org.h2.mvstore.db.MVTableEngine" that internally uses the MVStore to persist data. To try it out, append ";DEFAULT_TABLE_ENGINE=org.h2.mvstore.db.MVTableEngine" to the database URL. This is still very experimental, and many features are not supported yet. The data is stored in a file with the suffix ".mv.db".
@changelog_1013_li
MVStore: maps can now be renamed.
New connection setting "DEFAULT_TABLE_ENGINE" to use a specific table engine if none is set explicitly. This is to simplify testing the MVStore table engine.
@changelog_1014_li
MVStore: store the file header also at the end of each chunk, which results in a further reduced number of write operations.
MVStore: encrypted stores are now supported. Only standardized algorithms are used: PBKDF2, SHA-256, XTS-AES, AES-128.
@changelog_1015_li
MVStore: a map implementation that supports concurrent operations.
MVStore: improved API thanks to Simo Tripodi.
@changelog_1016_li
MVStore: unified exception handling; the version is included in the messages.
MVStore: maps can now be renamed.
@changelog_1017_li
MVStore: old data is now retained for 45 seconds by default.
MVStore: store the file header also at the end of each chunk, which results in a further reduced number of write operations.
@changelog_1018_li
MVStore: compress is now disabled by default, and can be enabled on request.
MVStore: a map implementation that supports concurrent operations.
@changelog_1019_li
Support ALTER TABLE ADD ... AFTER. Patch from Andrew Gaul (argaul at gmail.com). Fixes issue 401.
MVStore: unified exception handling; the version is included in the messages.
@changelog_1020_li
Improved OSGi support. H2 now registers itself as a DataSourceFactory service. Fixes issue 365.
MVStore: old data is now retained for 45 seconds by default.
@changelog_1021_li
Add a DISK_SPACE_USED system function. Fixes issue 270.
MVStore: compress is now disabled by default, and can be enabled on request.
@changelog_1022_li
Fix a compile-time ambiguity when compiling with JDK7, thanks to a patch from Lukas Eder.
Support ALTER TABLE ADD ... AFTER. Patch from Andrew Gaul (argaul at gmail.com). Fixes issue 401.
@changelog_1023_li
Supporting dropping an index for Lucene full-text indexes.
Improved OSGi support. H2 now registers itself as a DataSourceFactory service. Fixes issue 365.
@changelog_1024_li
Optimized performance for SELECT ... ORDER BY X LIMIT Y OFFSET Z queries for in-memory databases using partial sort (by Sergi Vladykin).
Add a DISK_SPACE_USED system function. Fixes issue 270.
@changelog_1025_li
Experimental off-heap memory storage engine "nioMemFS:" and "nioMemLZF:", suggestion from Mark Addleman.
Fix a compile-time ambiguity when compiling with JDK7, thanks to a patch from Lukas Eder.
@changelog_1026_li
Issue 438: JdbcDatabaseMetaData.getSchemas() is no longer supported as of 1.3.169.
Supporting dropping an index for Lucene full-text indexes.
@changelog_1027_li
MySQL compatibility: support for ALTER TABLE tableName MODIFY [COLUMN] columnName columnDef. Patch from Ville Koskela.
Optimized performance for SELECT ... ORDER BY X LIMIT Y OFFSET Z queries for in-memory databases using partial sort (by Sergi Vladykin).
@changelog_1028_li
Issue 404: SHOW COLUMNS FROM tableName does not work with ALLOW_LITERALS=NUMBERS.
Experimental off-heap memory storage engine "nioMemFS:" and "nioMemLZF:", suggestion from Mark Addleman.
@changelog_1029_li
Throw an explicit error to make it clear we don't support the TRIGGER combination of SELECT and FOR EACH ROW.
Issue 438: JdbcDatabaseMetaData.getSchemas() is no longer supported as of 1.3.169.
@changelog_1030_li
MySQL compatibility: support for ALTER TABLE tableName MODIFY [COLUMN] columnName columnDef. Patch from Ville Koskela.
@changelog_1031_li
Issue 404: SHOW COLUMNS FROM tableName does not work with ALLOW_LITERALS=NUMBERS.
@changelog_1032_li
Throw an explicit error to make it clear we don't support the TRIGGER combination of SELECT and FOR EACH ROW.
@changelog_1033_li
Issue 439: Utils.sortTopN does not handle single-element arrays.
@changelog_1031_h2
@changelog_1034_h2
Version 1.3.170 (2012-11-30)
@changelog_1032_li
@changelog_1035_li
Issue 407: The TriggerAdapter didn't work with CLOB and BLOB columns.
@changelog_1033_li
@changelog_1036_li
PostgreSQL compatibility: support for data types BIGSERIAL and SERIAL as an alias for AUTO_INCREMENT.
@changelog_1034_li
@changelog_1037_li
Issue 417: H2 Console: the web session timeout didn't work, resulting in a memory leak. This was only a problem if the H2 Console was run for a long time and many sessions were opened.
@changelog_1035_li
@changelog_1038_li
Issue 412: Running the Server tool with just the option "-browser" will now log a warning.
@changelog_1036_li
@changelog_1039_li
Issue 411: CloseWatcher registration was not concurrency-safe.
@changelog_1037_li
@changelog_1040_li
MySQL compatibility: support for CONCAT_WS. Thanks a lot to litailang for the patch!
@changelog_1038_li
@changelog_1041_li
PostgreSQL compatibility: support for EXTRACT(WEEK FROM dateColumn). Thanks to Prashant Bhat for the patch!
@changelog_1039_li
@changelog_1042_li
Fix for a bug where we would sometimes use the wrong unique constraint to validate foreign key constraints.
@changelog_1040_li
@changelog_1043_li
Support BOM at the beginning of files for the RUNSCRIPT command
@changelog_1041_li
@changelog_1044_li
Fix in calling SET @X = IDENTITY() where it would return NULL incorrectly
@changelog_1042_li
@changelog_1045_li
Fix ABBA deadlock between adding a constraint and the H2-Log-Writer thread.
@changelog_1043_li
@changelog_1046_li
Optimize IN(...) queries where the values are constant and of the same type.
@changelog_1044_li
@changelog_1047_li
Restore tool: the parameter "quiet" was not used and is now removed.
@changelog_1045_li
@changelog_1048_li
Fix ConcurrentModificationException when creating tables and executing SHOW TABLES in parallel. Reported by Viktor Voytovych.
@changelog_1046_li
@changelog_1049_li
Serialization is now pluggable using the system property "h2.javaObjectSerializer". Thanks to Sergi Vladykin for the patch!
@changelog_1047_h2
@changelog_1050_h2
Version 1.3.169 (2012-09-09)
@changelog_1048_li
@changelog_1051_li
The default jar file is now compiled for Java 6.
@changelog_1049_li
@changelog_1052_li
The new jar file will probably not end up in the central Maven repository in the next few weeks because Sonatype has disabled automatic synchronization from SourceForge (which they call 'legacy sync' now). It will probably take some time until this is sorted out. The H2 jar files are deployed to http://h2database.com/m2-repo/com/h2database/h2/maven-metadata.xml and http://hsql.sourceforge.net/m2-repo/com/h2database/h2/maven-metadata.xml as usual.
@changelog_1050_li
@changelog_1053_li
A part of the documentation and the H2 Console has been changed to support the Apple retina display.
@changelog_1051_li
@changelog_1054_li
The CreateCluster tool could not be used if the source database contained a CLOB or BLOB. The root cause was that the TCP server did not synchronize on the session, which caused a problem when using the exclusive mode.
@changelog_1052_li
@changelog_1055_li
Statement.getQueryTimeout(): only the first call to this method will query the database. If the query timeout was changed in another way than calling setQueryTimeout, this method will always return the last value. This was changed because Hibernate calls getQueryTimeout() a lot.
@changelog_1053_li
@changelog_1056_li
Issue 416: PreparedStatement.setNString throws AbstractMethodError. All implemented JDBC 4 methods that don't break compatibility with Java 5 are now included in the default jar file.
@changelog_1054_li
@changelog_1057_li
Issue 414: for some functions, the parameters were evaluated twice (for example "char(nextval(..))" ran "nextval(..)" twice).
@changelog_1055_li
@changelog_1058_li
The ResultSetMetaData methods getSchemaName and getTableName could return null instead of "" (an empty string) as specified in the JDBC API.
@changelog_1056_li
@changelog_1059_li
Added compatibility for "SET NAMES" query in MySQL compatibility mode.
@changelog_1057_h2
@changelog_1060_h2
Version 1.3.168 (2012-07-13)
@changelog_1058_li
@changelog_1061_li
The message "Transaction log could not be truncated" was sometimes written to the .trace.db file even if there was no problem truncating the transaction log.
@changelog_1059_li
@changelog_1062_li
New system property "h2.serializeJavaObject" (default: true) that allows to disable serializing Java objects, so that the objects compareTo and toString methods can be used.
@changelog_1060_li
@changelog_1063_li
Dylan has translated the H2 Console tool to Korean. Thanks a lot!
@changelog_1061_li
@changelog_1064_li
Executing the statement CREATE INDEX IF ALREADY EXISTS if the index already exists no longer fails for a read only database.
@changelog_1062_li
@changelog_1065_li
MVCC: concurrently updating a row could result in the row to appear deleted in the second connection, if there are multiple unique indexes (or a primary key and at least one unique index). Thanks a lot to Teruo for the patch!
@changelog_1063_li
@changelog_1066_li
Fulltext search: in-memory Lucene indexes are now supported.
@changelog_1064_li
@changelog_1067_li
Fulltext search: UUID primary keys are now supported.
@changelog_1065_li
@changelog_1068_li
Apache Tomcat 7.x will now longer log a warning when unloading the web application, if using a connection pool.
@changelog_1066_li
@changelog_1069_li
H2 Console: support the Midori browser (for Debian / Raspberry Pi)
@changelog_1067_li
@changelog_1070_li
When opening a remote session, don't open a temporary file if the trace level is set to zero
@changelog_1068_li
@changelog_1071_li
Use HMAC for authenticating remote LOB id's, removing the need for maintaining a cache, and removing the limit on the number of LOBs per result set.
@changelog_1069_li
@changelog_1072_li
H2 Console: HTML and XML documents can now be edited in an updatable result set. There is (limited) support for editing multi-line documents.
@changelog_1070_h2
@changelog_1073_h2
Version 1.3.167 (2012-05-23)
@changelog_1071_li
@changelog_1074_li
H2 Console: when editing a row, an empty varchar column was replaced with a single space.
@changelog_1072_li
@changelog_1075_li
Lukas Eder has updated the jOOQ documentation.
@changelog_1073_li
@changelog_1076_li
Some nested joins could not be executed, for example: select * from (select * from (select * from a) a right join b b) c;
@changelog_1074_li
@changelog_1077_li
MS SQL Server compatibility: ISNULL is now an alias for IFNULL.
@changelog_1075_li
@changelog_1078_li
Terrence Huang has completed the translation of the H2 Console tool to Chinese. Thanks a lot!
@changelog_1076_li
@changelog_1079_li
Server mode: the number of CLOB / BLOB values that were cached on the server is now the maximum of: 5 times the SERVER_RESULT_SET_FETCH_SIZE (which is 100 by default), and SysProperties.SERVER_CACHED_OBJECTS.
@changelog_1077_li
@changelog_1080_li
In the trace file, the query execution time was incorrect in some cases, specially for the statement SET TRACE_LEVEL_FILE 2.
@changelog_1078_li
@changelog_1081_li
The feature LOG_SIZE_LIMIT that was introduced in version 1.3.165 did not always work correctly (specially with regards to multithreading) and has been removed. The message "Transaction log could not be truncated" is still written to the .trace.db file if required.
@changelog_1079_li
@changelog_1082_li
Then reading from a resource using the prefix "classpath:", the ContextClassLoader is now used if the resource can't be read otherwise.
@changelog_1080_li
@changelog_1083_li
DatabaseEventListener now calls setProgress whenever a statement starts and ends.
@changelog_1081_li
@changelog_1084_li
DatabaseEventListener now calls setProgress periodically while a statement is running.
@changelog_1082_li
@changelog_1085_li
The table INFORMATION_SCHEMA.FUNCTION_ALIASES now includes a column TYPE_NAME.
@changelog_1083_li
@changelog_1086_li
Issue 378: when using views, the wrong values were bound to a parameter in some cases.
@changelog_1084_li
@changelog_1087_li
Terrence Huang has translated the error messages to Chinese. Thanks a lot!
@changelog_1085_li
@changelog_1088_li
TRUNC was added as an alias for TRUNCATE.
@changelog_1086_li
@changelog_1089_li
Small optimisation for accessing result values by column name.
@changelog_1087_li
@changelog_1090_li
Fix for bug in Statement.getMoreResults(int)
@changelog_1088_li
@changelog_1091_li
The SCRIPT statements now supports filtering by schema and table. Thanks a lot to Jacob Qvortrup for providing the patch!
@changelog_1089_h2
@changelog_1092_h2
Version 1.3.166 (2012-04-08)
@changelog_1090_li
@changelog_1093_li
Indexes on column that are larger than half the page size (wide indexes) could sometimes get corrupt, resulting in an ArrayIndexOutOfBoundsException in PageBtree.getRow or "Row not found" in PageBtreeLeaf. Also, such indexes used too much disk space.
@changelog_1091_li
@changelog_1094_li
Server mode: when retrieving more than 64 rows each containing a CLOB or BLOB, the error message "The object is already closed" was thrown.
@changelog_1092_li
@changelog_1095_li
ConvertTraceFile: the time in the trace file is now parsed as a long.
@changelog_1093_li
@changelog_1096_li
Invalid connection settings are now detected.
@changelog_1094_li
@changelog_1097_li
Issue 387: WHERE condition getting pushed into sub-query with LIMIT.
@changelog_1095_h2
@changelog_1098_h2
Version 1.3.165 (2012-03-18)
@changelog_1096_li
@changelog_1099_li
Better string representation for decimal values (for example 0.00000000 instead of 0E-26).
@changelog_1097_li
@changelog_1100_li
Prepared statements could only be re-used if the same data types were used the second time they were executed.
@changelog_1098_li
@changelog_1101_li
In error messages about referential constraint violation, the values are now included.
@changelog_1099_li
@changelog_1102_li
SCRIPT and RUNSCRIPT: the password can now be set using a prepared statement. Previously, it was required to be a literal in the SQL statement.
@changelog_1100_li
@changelog_1103_li
MySQL compatibility: SUBSTR with a negative start index now works like MySQL.
@changelog_1101_li
@changelog_1104_li
When enabling autocommit, the transaction is now committed (as required by the JDBC API).
@changelog_1102_li
@changelog_1105_li
The shell script <code>h2.sh</code> did not work with spaces in the path. It also works now with quoted spaces in the argument list. Thanks a lot to Shimizu Fumiyuki for the patch!
@changelog_1103_li
@changelog_1106_li
If the transaction log could not be truncated because of an uncommitted transaction, now "Transaction log could not be truncated" is written to the .trace.db file. Before, the database file was growing and it was hard to find out what the root cause was. To avoid the database file from growing, a new feature to automatically rollback the oldest transaction is available now. To enable it, append ;LOG_SIZE_LIMIT=32 to the database URL (in that case, the oldest session is rolled back if the transaction log is 32 MB).
@changelog_1104_li
@changelog_1107_li
ALTER TABLE ADD can now add more than one column at a time.
@changelog_1105_li
@changelog_1108_li
Issue 380: ALTER TABLE ADD FOREIGN KEY with an explicit index didn't verify the index can be used, which would lead to a NullPointerException later on.
@changelog_1106_li
@changelog_1109_li
Issue 384: the wrong kind of exception (NullPointerException) was thrown in a UNION query with an incorrect ORDER BY expression.
@changelog_1107_li
@changelog_1110_li
Issue 362: support LIMIT in UPDATE statements.
@changelog_1108_li
@changelog_1111_li
Browser: if no default browser is set, Google Chrome is now used if available. If not available, then Konqueror, Netscape, or Opera is used if available (as before).
@changelog_1109_li
@changelog_1112_li
CSV tool: new feature to disable writing the column header (option writeColumnHeader).
@changelog_1110_li
@changelog_1113_li
CSV tool: new feature to preserve the case sensitivity of column names (option caseSensitiveColumnNames).
@changelog_1111_li
@changelog_1114_li
PostgreSQL compatibility: LOG(x) is base 10 in the PostgreSQL mode.
@changelog_1112_h2
@changelog_1115_h2
Version 1.3.164 (2012-02-03)
@changelog_1113_li
@changelog_1116_li
New built-in function ARRAY_CONTAINS.
@changelog_1114_li
@changelog_1117_li
Some DatabaseMetaData methods didn't work when using ALLOW_LITERALS NONE.
@changelog_1115_li
@changelog_1118_li
Trying to convert a VARCHAR to UUID will now fail if the text contains a character that is not a hex digit, '-', or not a whitespace.
@changelog_1116_li
@changelog_1119_li
TriggerAdapter: in "before" triggers, values can be changed using the ResultSet.updateX methods.
@changelog_1117_li
@changelog_1120_li
Creating a table with column data type NULL now works (even if not very useful).
@changelog_1118_li
@changelog_1121_li
ALTER TABLE ALTER COLUMN no longer copies the data for widening conversions (for example if only the precision was increased) unless necessary.
@changelog_1119_li
@changelog_1122_li
Multi-threaded kernel: concurrently running an online backup and updating the database resulted in a broken (transactionally incorrect) backup file in some cases.
@changelog_1120_li
@changelog_1123_li
The script created by SCRIPT DROP did not always work if multiple views existed that depend on each other.
@changelog_1121_li
@changelog_1124_li
MathUtils.getSecureRandom could log a warning to System.err in case the /dev/random is very slow, and the System.getProperties().toString() returned a string larger than 64 KB.
@changelog_1122_li
@changelog_1125_li
The database file locking mechanism "FS" (;FILE_LOCK=FS) did not work on Linux since version 1.3.161.
@changelog_1123_li
@changelog_1126_li
Sequences: the functions NEXTVAL and CURRVAL did not work as expected when using quoted, mixed case sequence names.
@changelog_1124_li
@changelog_1127_li
The constructor for Csv objects is now public, and Csv.getInstance() is now deprecated.
@changelog_1125_li
@changelog_1128_li
SimpleResultSet: updating a result set is now supported.
@changelog_1126_li
@changelog_1129_li
Database URL: extra semicolons are not supported.
@changelog_1127_h2
@changelog_1130_h2
Version 1.3.163 (2011-12-30)
@changelog_1128_li
@changelog_1131_li
On out of disk space, the database could get corrupt sometimes, if later write operations succeeded. The same problem happened on other kinds of I/O exceptions (where one or some of the writes fail, but subsequent writes succeed). Now the file is closed on the first unsuccessful write operation, so that later requests fail consistently.
@changelog_1129_li
@changelog_1132_li
DatabaseEventListener.diskSpaceIsLow() is no longer supported because it can't be guaranteed that it always works correctly.
@changelog_1130_li
@changelog_1133_li
XMLTEXT now supports an optional parameter to escape newlines.
@changelog_1131_li
@changelog_1134_li
XMLNODE now support an optional parameter to disable indentation.
@changelog_1132_li
@changelog_1135_li
Csv.write now formats date, time, and timestamp values using java.sql.Date / Time / Timestamp.toString(). Previously, ResultSet.getString() was used, which didn't work well for Oracle.
@changelog_1133_li
@changelog_1136_li
The shell script <code>h2.sh</code> can now be run from within a different directory. Thanks a lot to Daniel Serodio for the patch!
@changelog_1134_li
@changelog_1137_li
The page size of a persistent database can now be queries using: select * from information_schema.settings where name = 'info.PAGE_SIZE'
@changelog_1135_li
@changelog_1138_li
In the server mode, BLOB and CLOB objects are no longer closed when the result set is closed (as required by the JDBC spec).
@changelog_1136_h2
@changelog_1139_h2
Version 1.3.162 (2011-11-26)
@changelog_1137_li
@changelog_1140_li
The following system properties are no longer supported: <code>h2.allowBigDecimalExtensions</code>, <code>h2.emptyPassword</code>, <code>h2.minColumnNameMap</code>, <code>h2.returnLobObjects</code>, <code>h2.webMaxValueLength</code>.
@changelog_1138_li
@changelog_1141_li
When using a VPN, starting a H2 server did not work (for some VPN software).
@changelog_1139_li
@changelog_1142_li
Oracle compatibility: support for DECODE(...).
@changelog_1140_li
@changelog_1143_li
Lucene fulltext search: creating an index is now faster if the table already contains data. Thanks a lot to Angel Leon from the FrostWire Team for the patch!
@changelog_1141_li
@changelog_1144_li
Update statements with a column list in brackets did not work if the list only contains one column. Example: update test set (id)=(id).
@changelog_1142_li
@changelog_1145_li
Read-only databases in a zip file did not work when using the -baseDir option.
@changelog_1143_li
@changelog_1146_li
Issue 334: SimpleResultSet.getString now also works for Clob columns.
@changelog_1144_li
@changelog_1147_li
Subqueries with an aggregate did not always work. Example: select (select count(*) from test where a = t.a and b = 0) from test t group by a
@changelog_1145_li
@changelog_1148_li
Server: in some (theoretical) cases, exceptions while closing the connection were ignored.
@changelog_1146_li
@changelog_1149_li
Server.createTcpServer, createPgServer, createWebServer: invalid arguments are now detected.
@changelog_1147_li
@changelog_1150_li
The selectivity of LOB columns is no longer calculated because indexes on LOB columns are not supported (however this should have little effect on performance, as the selectivity is calculated from the hash code and not the data).
@changelog_1148_li
@changelog_1151_li
New experimental system property "h2.modifyOnWrite": when enabled, the database file is only modified when writing to the database. When enabled, the serialized file lock is much faster for read-only operations.
@changelog_1149_li
@changelog_1152_li
A NullPointerException could occur in TableView.isDeterministic for invalid views.
@changelog_1150_li
@changelog_1153_li
Issue 180: when deserializing objects, the context class loader is used instead of the default class loader if the system property "h2.useThreadContextClassLoader" is set. Thanks a lot to Noah Fontes for the patch!
@changelog_1151_li
@changelog_1154_li
When using the exclusive mode, LOB operations could cause the thread to block. This also affected the CreateCluster tool (when using BLOB or CLOB data).
@changelog_1152_li
@changelog_1155_li
The optimization for "group by" was not working correctly if the group by column was aliased in the select list.
@changelog_1153_li
@changelog_1156_li
Issue 326: improved support for case sensitive (mixed case) identifiers without quotes when using DATABASE_TO_UPPER=FALSE.
@changelog_1154_h2
@changelog_1157_h2
Version 1.3.161 (2011-10-28)
@changelog_1155_li
@changelog_1158_li
Issue 351: MySQL mode: can not create a table with the column "KEY", and can not open databases where such a table already exists.
@changelog_1156_li
@changelog_1159_li
TCP server: when using the trace option ("-trace"), the trace output contained unnecessary stack traces when stopping the server.
@changelog_1157_li
@changelog_1160_li
Issue 354: when using the multi-threaded kernel option, and multiple threads concurrently prepared SQL statements that use the same view or the same index of a view, then in some cases an infinite loop could occur.
@changelog_1158_li
@changelog_1161_li
Issue 350: when using instead of triggers, executeUpdate for delete operations always returned 0.
@changelog_1159_li
@changelog_1162_li
Some timestamps with timezone were not converted correctly. For example, in the PST timezone, the timestamp 2011-10-26 08:00:00Z was converted to 2011-10-25 25:00:00 instead of 2011-10-26 01:00:00. Depending on the database operation, this caused subsequent error.
@changelog_1160_li
@changelog_1163_li
Sequences with cache size smaller than 0 did not work correctly.
@changelog_1161_li
@changelog_1164_li
Issue 356: for Blob objects, InputStream.skip() returned 0, causing EOFException in Blob.getBytes(.., ..).
@changelog_1162_li
@changelog_1165_li
Updatable result sets: if the value is not set when inserting a new row, the default value is now used (the same behavior as MySQL, PostgreSQL, and Apache Derby) instead of NULL.
@changelog_1163_li
@changelog_1166_li
Conditions of the form IN(SELECT ...) where slow and increased the database size if the subquery result size was larger then the configured MAX_MEMORY_ROWS.
@changelog_1164_li
@changelog_1167_li
Issue 347: the RunScript and Shell tools now ignore empty statements.
@changelog_1165_li
@changelog_1168_li
Issue 246: improved error message for data conversion problems.
@changelog_1166_li
@changelog_1169_li
Issue 344: the build now supports a custom Maven repository location.
@changelog_1167_li
@changelog_1170_li
Issue 334: Java functions that return CLOB or BLOB objects could not be used as tables.
@changelog_1168_li
@changelog_1171_li
SimpleResultSet now supports getColumnTypeName and getColumnClassName.
@changelog_1169_li
@changelog_1172_li
SimpleResultSet now has minimal BLOB and CLOB support.
@changelog_1170_li
@changelog_1173_li
Improved performance for large databases (many GB), and databases with a small page size.
@changelog_1171_li
@changelog_1174_li
The Polish translation has been improved by Jaros&#322;aw Kokoci&#324;ski.
@changelog_1172_li
@changelog_1175_li
When using the built-in connection pool, after calling the "shutdown" SQL statement, a warning was written to the .trace.db file about an unclosed connection.
@changelog_1173_li
@changelog_1176_li
Improved compatibility for "fetch first / next row(s)". Thanks a lot to litailang for the patch!
@changelog_1174_li
@changelog_1177_li
Improved compatibility with the Java 7 FileSystem abstraction.
@changelog_1175_h2
@changelog_1178_h2
Version 1.3.160 (2011-09-11)
@changelog_1176_li
@changelog_1179_li
Computed columns could not refer to itself.
@changelog_1177_li
@changelog_1180_li
Issue 340: Comparison with "x = all(select ...)" or similar in a view or subquery that was used as a table returned the wrong result.
@changelog_1178_li
@changelog_1181_li
Comparison with "x = all(select ...)" or similar returned the wrong result for some cases (for example if the subquery returned no rows, or multiple rows with the same value, or null, or if x was null).
@changelog_1179_li
@changelog_1182_li
Issue 335: Could not run DROP ALL OBJECTS DELETE FILES on older databases with CLOB or BLOB data. The problem was that the metadata table was not locked in some cases, so that a rollback could result in a corrupt database in a database if the lob storage was upgraded.
@changelog_1180_li
@changelog_1183_li
Source code switching using //## has been simplified. The Java 1.5 tag has been removed because is no longer needed.
@changelog_1181_li
@changelog_1184_li
The JDBC methods PreparedStatement.setTimestamp, setTime, and setDate with a calendar, and the methods ResultSet.getTimestamp, getTime, and getDate with a calendar converted the value in the wrong way, so that for some timestamps the converted value was wrong (where summertime starts, one hour per year).
@changelog_1182_li
@changelog_1185_li
Invalid tables names in 'order by' columns were not detected in some cases. Example: select x from dual order by y.x
@changelog_1183_li
@changelog_1186_li
Issue 329: CASE expression: data type problem is not detected.
@changelog_1184_li
@changelog_1187_li
Issue 311: File lock mode serialized: selecting the next value from a sequence didn't work after a pause, because the database thought this is a read-only operation.
@cheatSheet_1000_h1
......@@ -2564,7 +2573,7 @@ Disabling referential integrity using <code>SET REFERENTIAL_INTEGRITY FALSE</cod
This database is well tested using automated test cases. The tests run every night and run for more than one hour. But not all areas of this database are equally well tested. When using one of the following features for production, please ensure your use case is well tested (if possible with automated test cases). The areas that are not well tested are:
@faq_1048_li
Platforms other than Windows XP, Linux, Mac OS X, or JVMs other than Sun 1.5 or 1.6
Platforms other than Windows XP, Linux, Mac OS X, or JVMs other than Sun 1.6 or 1.7
@faq_1049_li
The features <code>AUTO_SERVER</code> and <code>AUTO_RECONNECT</code>.
......@@ -4901,7 +4910,7 @@ Database Engine
Windows XP or Vista, Mac OS X, or Linux
@installation_1009_li
Sun JDK 1.5 or newer (using Retroweaver to convert to JDK 1.4 should work, but is not regularly tested)
Sun Java 6 or newer
@installation_1010_li
Recommended Windows file system: NTFS (FAT32 only supports files up to 4 GB)
......@@ -4916,7 +4925,7 @@ Mozilla Firefox
Supported Platforms
@installation_1014_p
As this database is written in Java, it can run on many different platforms. It is tested with Java 1.5 and 1.6 but can also be compiled to native code using GCJ. The source code does not use features of Java 1.6. Currently, the database is developed and tested on Windows XP and Mac OS X using the Sun JDK 1.6, but it also works in many other operating systems and using other Java runtime environments. All major operating systems (Windows XP, Windows Vista, Windows 7, Mac OS, Ubuntu,...) are supported.
As this database is written in Java, it can run on many different platforms. It is tested with Java 6 and 7. Currently, the database is developed and tested on Windows 8 and Mac OS X using Java 6, but it also works in many other operating systems and using other Java runtime environments. All major operating systems (Windows XP, Windows Vista, Windows 7, Mac OS, Ubuntu,...) are supported.
@installation_1015_h2
Installing the Software
......@@ -5105,7 +5114,7 @@ Building the JaQu Library
Requirements
@jaqu_1032_p
JaQu requires Java 1.5. Annotations are not need. Currently, JaQu is only tested with the H2 database engine, however in theory it should work with any database that supports the JDBC API.
JaQu requires Java 6. Annotations are not need. Currently, JaQu is only tested with the H2 database engine, however in theory it should work with any database that supports the JDBC API.
@jaqu_1033_h2
Example Code
......@@ -6872,7 +6881,7 @@ It is intended to be fast, simple to use, and small.
Old versions of the data can be read concurrently with all other operations.
@mvstore_1029_li
Transaction are supported.
Transaction are supported (including concurrent transactions and 2-phase commit).
@mvstore_1030_li
The tool is very modular. It supports pluggable data types / serialization, pluggable map implementations (B-tree, R-tree, concurrent B-tree currently), BLOB storage, and a file system abstraction to support encrypted files and zip files.
......@@ -6956,7 +6965,7 @@ Transactions
The multi-version support is the basis for the transaction support. In the simple case, when only one transaction is open at a time, rolling back the transaction only requires to revert to an old version.
@mvstore_1057_p
To support multiple concurrent open transactions, a transaction utility is included, the <code>TransactionStore</code>. This utility stores the changed entries in a separate map, similar to a transaction log (except that only the key of a changed row is stored, and the entries of a transaction are removed when the transaction is committed). The storage overhead of this utility is very small compared to the overhead of a regular transaction log. The tool supports PostgreSQL style "read committed" transaction isolation. There is no limit on the size of a transaction (the log is not kept in memory).
To support multiple concurrent open transactions, a transaction utility is included, the <code>TransactionStore</code>. This utility stores the changed entries in a separate map, similar to a transaction log (except that only the key of a changed row is stored, and the entries of a transaction are removed when the transaction is committed). The storage overhead of this utility is very small compared to the overhead of a regular transaction log. The tool supports PostgreSQL style "read committed" transaction isolation. There is no limit on the size of a transaction (the log is not kept in memory). The tool supports savepoints, two-phase commit, and other features typically available in a database.
@mvstore_1058_h3
In-Memory Performance and Usage
......@@ -7952,7 +7961,7 @@ Comparing Embedded with Server Databases
Test Platform
@performance_1269_p
This test is run on Mac OS X 10.6. No virus scanner was used, and disk indexing was disabled. The VM used is Sun JDK 1.6.
This test is run on Mac OS X 10.6. No virus scanner was used, and disk indexing was disabled. The JVM used is Sun JDK 1.6.
@performance_1270_h4
Multiple Runs
......@@ -9275,7 +9284,7 @@ Clustering: adding a node should be very fast and without interrupting clients (
Compatibility: # is the start of a single line comment (MySQL) but date quote (Access). Mode specific
@roadmap_1153_li
Run benchmarks with JDK 1.5, JDK 1.6, java -server
Run benchmarks with Android, Java 7, java -server
@roadmap_1154_li
Optimizations: faster hash function for strings.
......@@ -9350,1032 +9359,1029 @@ Support indexes for views (probably requires materialized views)
Document SET SEARCH_PATH, BEGIN, EXECUTE, parameters
@roadmap_1178_li
Browser: use Desktop.isDesktopSupported and browse when using JDK 1.6
Server: use one listener (detect if the request comes from an PG or TCP client)
@roadmap_1179_li
Server: use one listener (detect if the request comes from an PG or TCP client)
Optimize SELECT MIN(ID), MAX(ID), COUNT(*) FROM TEST WHERE ID BETWEEN 100 AND 200
@roadmap_1180_li
Optimize SELECT MIN(ID), MAX(ID), COUNT(*) FROM TEST WHERE ID BETWEEN 100 AND 200
Sequence: PostgreSQL compatibility (rename, create) http://www.postgresql.org/docs/8.2/static/sql-altersequence.html
@roadmap_1181_li
Sequence: PostgreSQL compatibility (rename, create) http://www.postgresql.org/docs/8.2/static/sql-altersequence.html
DISTINCT: support large result sets by sorting on all columns (additionally) and then removing duplicates.
@roadmap_1182_li
DISTINCT: support large result sets by sorting on all columns (additionally) and then removing duplicates.
Support a special trigger on all tables to allow building a transaction log reader.
@roadmap_1183_li
Support a special trigger on all tables to allow building a transaction log reader.
File system with a background writer thread; test if this is faster
@roadmap_1184_li
File system with a background writer thread; test if this is faster
Better document the source code (high level documentation).
@roadmap_1185_li
Better document the source code (high level documentation).
Support select * from dual a left join dual b on b.x=(select max(x) from dual)
@roadmap_1186_li
Support select * from dual a left join dual b on b.x=(select max(x) from dual)
Optimization: don't lock when the database is read-only
@roadmap_1187_li
Optimization: don't lock when the database is read-only
Issue 146: Support merge join.
@roadmap_1188_li
Issue 146: Support merge join.
Integrate spatial functions from http://geosysin.iict.ch/irstv-trac/wiki/H2spatial/Download
@roadmap_1189_li
Integrate spatial functions from http://geosysin.iict.ch/irstv-trac/wiki/H2spatial/Download
Cluster: hot deploy (adding a node at runtime).
@roadmap_1190_li
Cluster: hot deploy (adding a node at runtime).
Support DatabaseMetaData.insertsAreDetected: updatable result sets should detect inserts.
@roadmap_1191_li
Support DatabaseMetaData.insertsAreDetected: updatable result sets should detect inserts.
Oracle: support DECODE method (convert to CASE WHEN).
@roadmap_1192_li
Oracle: support DECODE method (convert to CASE WHEN).
Native search: support "phrase search", wildcard search (* and ?), case-insensitive search, boolean operators, and grouping
@roadmap_1193_li
Native search: support "phrase search", wildcard search (* and ?), case-insensitive search, boolean operators, and grouping
Improve documentation of access rights.
@roadmap_1194_li
Improve documentation of access rights.
Support opening a database that is in the classpath, maybe using a new file system. Workaround: detect jar file using getClass().getProtectionDomain().getCodeSource().getLocation().
@roadmap_1195_li
Support opening a database that is in the classpath, maybe using a new file system. Workaround: detect jar file using getClass().getProtectionDomain().getCodeSource().getLocation().
Support ENUM data type (see MySQL, PostgreSQL, MS SQL Server, maybe others).
@roadmap_1196_li
Support ENUM data type (see MySQL, PostgreSQL, MS SQL Server, maybe others).
Remember the user defined data type (domain) of a column.
@roadmap_1197_li
Remember the user defined data type (domain) of a column.
MVCC: support multi-threaded kernel with multi-version concurrency.
@roadmap_1198_li
MVCC: support multi-threaded kernel with multi-version concurrency.
Auto-server: add option to define the port range or list.
@roadmap_1199_li
Auto-server: add option to define the port range or list.
Support Jackcess (MS Access databases)
@roadmap_1200_li
Support Jackcess (MS Access databases)
Built-in methods to write large objects (BLOB and CLOB): FILE_WRITE('test.txt', 'Hello World')
@roadmap_1201_li
Built-in methods to write large objects (BLOB and CLOB): FILE_WRITE('test.txt', 'Hello World')
Improve time to open large databases (see mail 'init time for distributed setup')
@roadmap_1202_li
Improve time to open large databases (see mail 'init time for distributed setup')
Move Maven 2 repository from hsql.sf.net to h2database.sf.net
@roadmap_1203_li
Move Maven 2 repository from hsql.sf.net to h2database.sf.net
Java 1.5 tool: JdbcUtils.closeSilently(s1, s2,...)
@roadmap_1204_li
Java 1.5 tool: JdbcUtils.closeSilently(s1, s2,...)
Optimize A=? OR B=? to UNION if the cost is lower.
@roadmap_1205_li
Optimize A=? OR B=? to UNION if the cost is lower.
Javadoc: document design patterns used
@roadmap_1206_li
Javadoc: document design patterns used
Support custom collators, for example for natural sort (for text that contains numbers).
@roadmap_1207_li
Support custom collators, for example for natural sort (for text that contains numbers).
Write an article about SQLInjection (h2/src/docsrc/html/images/SQLInjection.txt)
@roadmap_1208_li
Write an article about SQLInjection (h2/src/docsrc/html/images/SQLInjection.txt)
Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
@roadmap_1209_li
Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
Support OUT parameters in user-defined procedures.
@roadmap_1210_li
Support OUT parameters in user-defined procedures.
Web site design: http://www.igniterealtime.org/projects/openfire/index.jsp
@roadmap_1211_li
Web site design: http://www.igniterealtime.org/projects/openfire/index.jsp
HSQLDB compatibility: Openfire server uses: CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
@roadmap_1212_li
HSQLDB compatibility: Openfire server uses: CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
Translation: use ?? in help.csv
@roadmap_1213_li
Translation: use ?? in help.csv
Translated .pdf
@roadmap_1214_li
Translated .pdf
Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
@roadmap_1215_li
Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
Issue 357: support getGeneratedKeys to return multiple rows when used with batch updates. This is supported by MySQL, but not Derby. Both PostgreSQL and HSQLDB don't support getGeneratedKeys. Also support it when using INSERT ... SELECT.
@roadmap_1216_li
Issue 357: support getGeneratedKeys to return multiple rows when used with batch updates. This is supported by MySQL, but not Derby. Both PostgreSQL and HSQLDB don't support getGeneratedKeys. Also support it when using INSERT ... SELECT.
RECOVER=2 to backup the database, run recovery, open the database
@roadmap_1217_li
RECOVER=2 to backup the database, run recovery, open the database
Recovery should work with encrypted databases
@roadmap_1218_li
Recovery should work with encrypted databases
Corruption: new error code, add help
@roadmap_1219_li
Corruption: new error code, add help
Space reuse: after init, scan all storages and free those that don't belong to a live database object
@roadmap_1220_li
Space reuse: after init, scan all storages and free those that don't belong to a live database object
Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
@roadmap_1221_li
Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
Support NOCACHE table option (Oracle).
@roadmap_1222_li
Support NOCACHE table option (Oracle).
Support table partitioning.
@roadmap_1223_li
Support table partitioning.
Add regular javadocs (using the default doclet, but another css) to the homepage.
@roadmap_1224_li
Add regular javadocs (using the default doclet, but another css) to the homepage.
The database should be kept open for a longer time when using the server mode.
@roadmap_1225_li
The database should be kept open for a longer time when using the server mode.
Javadocs: for each tool, add a copy &amp; paste sample in the class level.
@roadmap_1226_li
Javadocs: for each tool, add a copy &amp; paste sample in the class level.
Javadocs: add @author tags.
@roadmap_1227_li
Javadocs: add @author tags.
Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
@roadmap_1228_li
Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
MySQL compatibility: real SQL statement for DESCRIBE TEST
@roadmap_1229_li
MySQL compatibility: real SQL statement for DESCRIBE TEST
Use a default delay of 1 second before closing a database.
@roadmap_1230_li
Use a default delay of 1 second before closing a database.
Write (log) to system table before adding to internal data structures.
@roadmap_1231_li
Write (log) to system table before adding to internal data structures.
Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
@roadmap_1232_li
Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object) (with test case).
@roadmap_1233_li
Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object) (with test case).
MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular b-tree index solves the problem).
@roadmap_1234_li
MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular b-tree index solves the problem).
Oracle compatibility: support NLS_DATE_FORMAT.
@roadmap_1235_li
Oracle compatibility: support NLS_DATE_FORMAT.
Support for Thread.interrupt to cancel running statements.
@roadmap_1236_li
Support for Thread.interrupt to cancel running statements.
Cluster: add feature to make sure cluster nodes can not get out of sync (for example by stopping one process).
@roadmap_1237_li
Cluster: add feature to make sure cluster nodes can not get out of sync (for example by stopping one process).
H2 Console: support CLOB/BLOB download using a link.
@roadmap_1238_li
H2 Console: support CLOB/BLOB download using a link.
Support flashback queries as in Oracle.
@roadmap_1239_li
Support flashback queries as in Oracle.
Import / Export of fixed with text files.
@roadmap_1240_li
Import / Export of fixed with text files.
HSQLDB compatibility: automatic data type for SUM if value is the value is too big (by default use the same type as the data).
@roadmap_1241_li
HSQLDB compatibility: automatic data type for SUM if value is the value is too big (by default use the same type as the data).
Improve the optimizer to select the right index for special cases: where id between 2 and 4 and booleanColumn
@roadmap_1242_li
Improve the optimizer to select the right index for special cases: where id between 2 and 4 and booleanColumn
Linked tables: make hidden columns available (Oracle: rowid and ora_rowscn columns).
@roadmap_1243_li
Linked tables: make hidden columns available (Oracle: rowid and ora_rowscn columns).
H2 Console: in-place autocomplete.
@roadmap_1244_li
H2 Console: in-place autocomplete.
Support large databases: split database files to multiple directories / disks (similar to tablespaces).
@roadmap_1245_li
Support large databases: split database files to multiple directories / disks (similar to tablespaces).
H2 Console: support configuration option for fixed width (monospace) font.
@roadmap_1246_li
H2 Console: support configuration option for fixed width (monospace) font.
Native fulltext search: support analyzers (specially for Chinese, Japanese).
@roadmap_1247_li
Native fulltext search: support analyzers (specially for Chinese, Japanese).
Automatically compact databases from time to time (as a background process).
@roadmap_1248_li
Automatically compact databases from time to time (as a background process).
Test Eclipse DTP.
@roadmap_1249_li
Test Eclipse DTP.
H2 Console: autocomplete: keep the previous setting
@roadmap_1250_li
H2 Console: autocomplete: keep the previous setting
executeBatch: option to stop at the first failed statement.
@roadmap_1251_li
executeBatch: option to stop at the first failed statement.
Implement OLAP features as described here: http://www.devx.com/getHelpOn/10MinuteSolution/16573/0/page/5
@roadmap_1252_li
Implement OLAP features as described here: http://www.devx.com/getHelpOn/10MinuteSolution/16573/0/page/5
Support Oracle ROWID (unique identifier for each row).
@roadmap_1253_li
Support Oracle ROWID (unique identifier for each row).
MySQL compatibility: alter table add index i(c), add constraint c foreign key(c) references t(c);
@roadmap_1254_li
MySQL compatibility: alter table add index i(c), add constraint c foreign key(c) references t(c);
Server mode: improve performance for batch updates.
@roadmap_1255_li
Server mode: improve performance for batch updates.
Applets: support read-only databases in a zip file (accessed as a resource).
@roadmap_1256_li
Applets: support read-only databases in a zip file (accessed as a resource).
Long running queries / errors / trace system table.
@roadmap_1257_li
Long running queries / errors / trace system table.
H2 Console should support JaQu directly.
@roadmap_1258_li
H2 Console should support JaQu directly.
Better document FTL_SEARCH, FTL_SEARCH_DATA.
@roadmap_1259_li
Better document FTL_SEARCH, FTL_SEARCH_DATA.
Sequences: CURRVAL should be session specific. Compatibility with PostgreSQL.
@roadmap_1260_li
Sequences: CURRVAL should be session specific. Compatibility with PostgreSQL.
Index creation using deterministic functions.
@roadmap_1261_li
Index creation using deterministic functions.
ANALYZE: for unique indexes that allow null, count the number of null.
@roadmap_1262_li
ANALYZE: for unique indexes that allow null, count the number of null.
MySQL compatibility: multi-table delete: DELETE .. FROM .. [,...] USING - See http://dev.mysql.com/doc/refman/5.0/en/delete.html
@roadmap_1263_li
MySQL compatibility: multi-table delete: DELETE .. FROM .. [,...] USING - See http://dev.mysql.com/doc/refman/5.0/en/delete.html
AUTO_SERVER: support changing IP addresses (disable a network while the database is open).
@roadmap_1264_li
AUTO_SERVER: support changing IP addresses (disable a network while the database is open).
Avoid using java.util.Calendar internally because it's slow, complicated, and buggy.
@roadmap_1265_li
Avoid using java.util.Calendar internally because it's slow, complicated, and buggy.
Support TRUNCATE .. CASCADE like PostgreSQL.
@roadmap_1266_li
Support TRUNCATE .. CASCADE like PostgreSQL.
Fulltext search: lazy result generation using SimpleRowSource.
@roadmap_1267_li
Fulltext search: lazy result generation using SimpleRowSource.
Fulltext search: support alternative syntax: WHERE FTL_CONTAINS(name, 'hello').
@roadmap_1268_li
Fulltext search: support alternative syntax: WHERE FTL_CONTAINS(name, 'hello').
MySQL compatibility: support REPLACE, see http://dev.mysql.com/doc/refman/6.0/en/replace.html and issue 73.
@roadmap_1269_li
MySQL compatibility: support REPLACE, see http://dev.mysql.com/doc/refman/6.0/en/replace.html and issue 73.
MySQL compatibility: support INSERT INTO table SET column1 = value1, column2 = value2
@roadmap_1270_li
MySQL compatibility: support INSERT INTO table SET column1 = value1, column2 = value2
Docs: add a one line description for each functions and SQL statements at the top (in the link section).
@roadmap_1271_li
Docs: add a one line description for each functions and SQL statements at the top (in the link section).
Javadoc search: weight for titles should be higher ('random' should list Functions as the best match).
@roadmap_1272_li
Javadoc search: weight for titles should be higher ('random' should list Functions as the best match).
Replace information_schema tables with regular tables that are automatically re-built when needed. Use indexes.
@roadmap_1273_li
Replace information_schema tables with regular tables that are automatically re-built when needed. Use indexes.
@roadmap_1274_li
Issue 50: Oracle compatibility: support calling 0-parameters functions without parenthesis. Make constants obsolete.
@roadmap_1275_li
@roadmap_1274_li
MySQL, HSQLDB compatibility: support where 'a'=1 (not supported by Derby, PostgreSQL)
@roadmap_1276_li
@roadmap_1275_li
Support a data type "timestamp with timezone" using java.util.Calendar.
@roadmap_1277_li
@roadmap_1276_li
Finer granularity for SLF4J trace - See http://code.google.com/p/h2database/issues/detail?id=62
@roadmap_1278_li
@roadmap_1277_li
Add database creation date and time to the database.
@roadmap_1279_li
@roadmap_1278_li
Support ASSERTION.
@roadmap_1280_li
@roadmap_1279_li
MySQL compatibility: support comparing 1='a'
@roadmap_1281_li
@roadmap_1280_li
Support PostgreSQL lock modes: http://www.postgresql.org/docs/8.3/static/explicit-locking.html
@roadmap_1282_li
@roadmap_1281_li
PostgreSQL compatibility: test DbVisualizer and Squirrel SQL using a new PostgreSQL JDBC driver.
@roadmap_1283_li
@roadmap_1282_li
RunScript should be able to read from system in (or quite mode for Shell).
@roadmap_1284_li
@roadmap_1283_li
Natural join: support select x from dual natural join dual.
@roadmap_1285_li
@roadmap_1284_li
Support using system properties in database URLs (may be a security problem).
@roadmap_1286_li
@roadmap_1285_li
Natural join: somehow support this: select a.x, b.x, x from dual a natural join dual b
@roadmap_1287_li
@roadmap_1286_li
Use the Java service provider mechanism to register file systems and function libraries.
@roadmap_1288_li
@roadmap_1287_li
MySQL compatibility: for auto_increment columns, convert 0 to next value (as when inserting NULL).
@roadmap_1289_li
@roadmap_1288_li
Optimization for multi-column IN: use an index if possible. Example: (A, B) IN((1, 2), (2, 3)).
@roadmap_1290_li
@roadmap_1289_li
Optimization for EXISTS: convert to inner join or IN(..) if possible.
@roadmap_1291_li
@roadmap_1290_li
Functions: support hashcode(value); cryptographic and fast
@roadmap_1292_li
@roadmap_1291_li
Serialized file lock: support long running queries.
@roadmap_1293_li
@roadmap_1292_li
Network: use 127.0.0.1 if other addresses don't work.
@roadmap_1294_li
@roadmap_1293_li
Pluggable network protocol (currently Socket/ServerSocket over TCP/IP) - see also TransportServer with master slave replication.
@roadmap_1295_li
@roadmap_1294_li
Support reading JCR data: one table per node type; query table; cache option
@roadmap_1296_li
@roadmap_1295_li
OSGi: create a sample application, test, document.
@roadmap_1297_li
@roadmap_1296_li
help.csv: use complete examples for functions; run as test case.
@roadmap_1298_li
@roadmap_1297_li
Functions to calculate the memory and disk space usage of a table, a row, or a value.
@roadmap_1299_li
@roadmap_1298_li
Re-implement PooledConnection; use a lightweight connection object.
@roadmap_1300_li
@roadmap_1299_li
Doclet: convert tests in javadocs to a java class.
@roadmap_1301_li
@roadmap_1300_li
Doclet: format fields like methods, but support sorting by name and value.
@roadmap_1302_li
@roadmap_1301_li
Doclet: shrink the html files.
@roadmap_1303_li
@roadmap_1302_li
MySQL compatibility: support SET NAMES 'latin1' - See also http://code.google.com/p/h2database/issues/detail?id=56
@roadmap_1304_li
@roadmap_1303_li
Allow to scan index backwards starting with a value (to better support ORDER BY DESC).
@roadmap_1305_li
@roadmap_1304_li
Java Service Wrapper: try http://yajsw.sourceforge.net/
@roadmap_1306_li
@roadmap_1305_li
Batch parameter for INSERT, UPDATE, and DELETE, and commit after each batch. See also MySQL DELETE.
@roadmap_1307_li
@roadmap_1306_li
MySQL compatibility: support ALTER TABLE .. MODIFY COLUMN.
@roadmap_1308_li
@roadmap_1307_li
Use a lazy and auto-close input stream (open resource when reading, close on eof).
@roadmap_1309_li
@roadmap_1308_li
PostgreSQL compatibility: generate_series.
@roadmap_1310_li
@roadmap_1309_li
Connection pool: 'reset session' command (delete temp tables, rollback, auto-commit true).
@roadmap_1311_li
@roadmap_1310_li
Improve SQL documentation, see http://www.w3schools.com/sql/
@roadmap_1312_li
@roadmap_1311_li
MySQL compatibility: DatabaseMetaData.stores*() methods should return the same values. Test with SquirrelSQL.
@roadmap_1313_li
@roadmap_1312_li
MS SQL Server compatibility: support DATEPART syntax.
@roadmap_1314_li
@roadmap_1313_li
Sybase/DB2/Oracle compatibility: support out parameters in stored procedures - See http://code.google.com/p/h2database/issues/detail?id=83
@roadmap_1315_li
@roadmap_1314_li
Support INTERVAL data type (see Oracle and others).
@roadmap_1316_li
@roadmap_1315_li
Combine Server and Console tool (only keep Server).
@roadmap_1317_li
@roadmap_1316_li
Store the Lucene index in the database itself.
@roadmap_1318_li
@roadmap_1317_li
Support standard MERGE statement: http://en.wikipedia.org/wiki/Merge_%28SQL%29
@roadmap_1319_li
@roadmap_1318_li
Oracle compatibility: support DECODE(x, ...).
@roadmap_1320_li
@roadmap_1319_li
MVCC: compare concurrent update behavior with PostgreSQL and Oracle.
@roadmap_1321_li
@roadmap_1320_li
HSQLDB compatibility: CREATE FUNCTION (maybe using a Function interface).
@roadmap_1322_li
@roadmap_1321_li
HSQLDB compatibility: support CALL "java.lang.Math.sqrt"(2.0)
@roadmap_1323_li
@roadmap_1322_li
Support comma as the decimal separator in the CSV tool.
@roadmap_1324_li
@roadmap_1323_li
Compatibility: Java functions with SQLJ Part1 http://www.acm.org/sigmod/record/issues/9912/standards.pdf.gz
@roadmap_1325_li
@roadmap_1324_li
Compatibility: Java functions with SQL/PSM (Persistent Stored Modules) - need to find the documentation.
@roadmap_1326_li
@roadmap_1325_li
CACHE_SIZE: automatically use a fraction of Runtime.maxMemory - maybe automatically the second level cache.
@roadmap_1327_li
@roadmap_1326_li
Support date/time/timestamp as documented in http://en.wikipedia.org/wiki/ISO_8601
@roadmap_1328_li
@roadmap_1327_li
PostgreSQL compatibility: when in PG mode, treat BYTEA data like PG.
@roadmap_1329_li
@roadmap_1328_li
Support =ANY(array) as in PostgreSQL. See also http://www.postgresql.org/docs/8.0/interactive/arrays.html
@roadmap_1330_li
@roadmap_1329_li
IBM DB2 compatibility: support PREVIOUS VALUE FOR sequence.
@roadmap_1331_li
@roadmap_1330_li
Compatibility: use different LIKE ESCAPE characters depending on the mode (disable for Derby, HSQLDB, DB2, Oracle, MSSQLServer).
@roadmap_1332_li
@roadmap_1331_li
Oracle compatibility: support CREATE SYNONYM table FOR schema.table.
@roadmap_1333_li
@roadmap_1332_li
FTP: document the server, including -ftpTask option to execute / kill remote processes
@roadmap_1334_li
@roadmap_1333_li
FTP: problems with multithreading?
@roadmap_1335_li
@roadmap_1334_li
FTP: implement SFTP / FTPS
@roadmap_1336_li
@roadmap_1335_li
FTP: access to a database (.csv for a table, a directory for a schema, a file for a lob, a script.sql file).
@roadmap_1337_li
@roadmap_1336_li
More secure default configuration if remote access is enabled.
@roadmap_1338_li
@roadmap_1337_li
Improve database file locking (maybe use native file locking). The current approach seems to be problematic if the file system is on a remote share (see Google Group 'Lock file modification time is in the future').
@roadmap_1339_li
@roadmap_1338_li
Document internal features such as BELONGS_TO_TABLE, NULL_TO_DEFAULT, SEQUENCE.
@roadmap_1340_li
@roadmap_1339_li
Issue 107: Prefer using the ORDER BY index if LIMIT is used.
@roadmap_1341_li
@roadmap_1340_li
An index on (id, name) should be used for a query: select * from t where s=? order by i
@roadmap_1342_li
@roadmap_1341_li
Support reading sequences using DatabaseMetaData.getTables(null, null, null, new String[]{"SEQUENCE"}). See PostgreSQL.
@roadmap_1343_li
@roadmap_1342_li
Add option to enable TCP_NODELAY using Socket.setTcpNoDelay(true).
@roadmap_1344_li
@roadmap_1343_li
Maybe disallow = within database names (jdbc:h2:mem:MODE=DB2 means database name MODE=DB2).
@roadmap_1345_li
@roadmap_1344_li
Fast alter table add column.
@roadmap_1346_li
@roadmap_1345_li
Improve concurrency for in-memory database operations.
@roadmap_1347_li
@roadmap_1346_li
Issue 122: Support for connection aliases for remote tcp connections.
@roadmap_1348_li
@roadmap_1347_li
Fast scrambling (strong encryption doesn't help if the password is included in the application).
@roadmap_1349_li
@roadmap_1348_li
H2 Console: support -webPassword to require a password to access preferences or shutdown.
@roadmap_1350_li
@roadmap_1349_li
Issue 126: The index name should be "IDX_" plus the constraint name unless there is a conflict, in which case append a number.
@roadmap_1351_li
@roadmap_1350_li
Issue 127: Support activation/deactivation of triggers
@roadmap_1352_li
@roadmap_1351_li
Issue 130: Custom log event listeners
@roadmap_1353_li
@roadmap_1352_li
Issue 131: IBM DB2 compatibility: sysibm.sysdummy1
@roadmap_1354_li
@roadmap_1353_li
Issue 132: Use Java enum trigger type.
@roadmap_1355_li
@roadmap_1354_li
Issue 134: IBM DB2 compatibility: session global variables.
@roadmap_1356_li
@roadmap_1355_li
Cluster: support load balance with values for each server / auto detect.
@roadmap_1357_li
@roadmap_1356_li
FTL_SET_OPTION(keyString, valueString) with key stopWords at first.
@roadmap_1358_li
@roadmap_1357_li
Pluggable access control mechanism.
@roadmap_1359_li
@roadmap_1358_li
Fulltext search (Lucene): support streaming CLOB data.
@roadmap_1360_li
@roadmap_1359_li
Document/example how to create and read an encrypted script file.
@roadmap_1361_li
@roadmap_1360_li
Check state of https://issues.apache.org/jira/browse/OPENJPA-1367 (H2 does support cross joins).
@roadmap_1362_li
@roadmap_1361_li
Fulltext search (Lucene): only prefix column names with _ if they already start with _. Instead of DATA / QUERY / modified use _DATA, _QUERY, _MODIFIED if possible.
@roadmap_1363_li
@roadmap_1362_li
Support a way to create or read compressed encrypted script files using an API.
@roadmap_1364_li
@roadmap_1363_li
Scripting language support (Javascript).
@roadmap_1365_li
@roadmap_1364_li
The network client should better detect if the server is not an H2 server and fail early.
@roadmap_1366_li
@roadmap_1365_li
H2 Console: support CLOB/BLOB upload.
@roadmap_1367_li
@roadmap_1366_li
Database file lock: detect hibernate / standby / very slow threads (compare system time).
@roadmap_1368_li
@roadmap_1367_li
Automatic detection of redundant indexes.
@roadmap_1369_li
@roadmap_1368_li
Maybe reject join without "on" (except natural join).
@roadmap_1370_li
@roadmap_1369_li
Implement GiST (Generalized Search Tree for Secondary Storage).
@roadmap_1371_li
@roadmap_1370_li
Function to read a number of bytes/characters from an BLOB or CLOB.
@roadmap_1372_li
@roadmap_1371_li
Issue 156: Support SELECT ? UNION SELECT ?.
@roadmap_1373_li
@roadmap_1372_li
Automatic mixed mode: support a port range list (to avoid firewall problems).
@roadmap_1374_li
@roadmap_1373_li
Support the pseudo column rowid, oid, _rowid_.
@roadmap_1375_li
@roadmap_1374_li
H2 Console / large result sets: stream early instead of keeping a whole result in-memory
@roadmap_1376_li
@roadmap_1375_li
Support TRUNCATE for linked tables.
@roadmap_1377_li
@roadmap_1376_li
UNION: evaluate INTERSECT before UNION (like most other database except Oracle).
@roadmap_1378_li
@roadmap_1377_li
Delay creating the information schema, and share metadata columns.
@roadmap_1379_li
@roadmap_1378_li
TCP Server: use a nonce (number used once) to protect unencrypted channels against replay attacks.
@roadmap_1380_li
@roadmap_1379_li
Simplify running scripts and recovery: CREATE FORCE USER (overwrites an existing user).
@roadmap_1381_li
@roadmap_1380_li
Support CREATE DATABASE LINK (a custom JDBC driver is already supported).
@roadmap_1382_li
@roadmap_1381_li
Support large GROUP BY operations. Issue 216.
@roadmap_1383_li
@roadmap_1382_li
Issue 163: Allow to create foreign keys on metadata types.
@roadmap_1384_li
@roadmap_1383_li
Logback: write a native DBAppender.
@roadmap_1385_li
@roadmap_1384_li
Cache size: don't use more cache than what is available.
@roadmap_1386_li
@roadmap_1385_li
Allow to defragment at runtime (similar to SHUTDOWN DEFRAG) in a background thread.
@roadmap_1387_li
@roadmap_1386_li
Tree index: Instead of an AVL tree, use a general balanced trees or a scapegoat tree.
@roadmap_1388_li
@roadmap_1387_li
User defined functions: allow to store the bytecode (of just the class, or the jar file of the extension) in the database.
@roadmap_1389_li
@roadmap_1388_li
Compatibility: ResultSet.getObject() on a CLOB (TEXT) should return String for PostgreSQL and MySQL.
@roadmap_1390_li
@roadmap_1389_li
Optimizer: WHERE X=? AND Y IN(?), it always uses the index on Y. Should be cost based.
@roadmap_1391_li
@roadmap_1390_li
Common Table Expression (CTE) / recursive queries: support parameters. Issue 314.
@roadmap_1392_li
@roadmap_1391_li
Oracle compatibility: support INSERT ALL.
@roadmap_1393_li
@roadmap_1392_li
Issue 178: Optimizer: index usage when both ascending and descending indexes are available.
@roadmap_1394_li
@roadmap_1393_li
Issue 179: Related subqueries in HAVING clause.
@roadmap_1395_li
@roadmap_1394_li
IBM DB2 compatibility: NOT NULL WITH DEFAULT. Similar to MySQL Mode.convertInsertNullToZero.
@roadmap_1396_li
@roadmap_1395_li
Creating primary key: always create a constraint.
@roadmap_1397_li
@roadmap_1396_li
Maybe use a different page layout: keep the data at the head of the page, and ignore the tail (don't store / read it). This may increase write / read performance depending on the file system.
@roadmap_1398_li
@roadmap_1397_li
Indexes of temporary tables are currently kept in-memory. Is this how it should be?
@roadmap_1399_li
@roadmap_1398_li
The Shell tool should support the same built-in commands as the H2 Console.
@roadmap_1400_li
@roadmap_1399_li
Maybe use PhantomReference instead of finalize.
@roadmap_1401_li
@roadmap_1400_li
Database file name suffix: should only have one dot by default. Example: .h2db
@roadmap_1402_li
@roadmap_1401_li
Issue 196: Function based indexes
@roadmap_1403_li
@roadmap_1402_li
ALTER TABLE ... ADD COLUMN IF NOT EXISTS columnName.
@roadmap_1404_li
@roadmap_1403_li
Fix the disk space leak (killing the process at the exact right moment will increase the disk space usage; this space is not re-used). See TestDiskSpaceLeak.java
@roadmap_1405_li
@roadmap_1404_li
ROWNUM: Oracle compatibility when used within a subquery. Issue 198.
@roadmap_1406_li
@roadmap_1405_li
Allow to access the database over HTTP (possibly using port 80) and a servlet in a REST way.
@roadmap_1407_li
@roadmap_1406_li
ODBC: encrypted databases are not supported because the ;CIPHER= can not be set.
@roadmap_1408_li
@roadmap_1407_li
Support CLOB and BLOB update, specially conn.createBlob().setBinaryStream(1);
@roadmap_1409_li
@roadmap_1408_li
Optimizer: index usage when both ascending and descending indexes are available. Issue 178.
@roadmap_1410_li
@roadmap_1409_li
Issue 306: Support schema specific domains.
@roadmap_1411_li
@roadmap_1410_li
Triggers: support user defined execution order. Oracle: CREATE OR REPLACE TRIGGER TEST_2 BEFORE INSERT ON TEST FOR EACH ROW FOLLOWS TEST_1. SQL specifies that multiple triggers should be fired in time-of-creation order. PostgreSQL uses name order, which was judged to be more convenient. Derby: triggers are fired in the order in which they were created.
@roadmap_1412_li
@roadmap_1411_li
PostgreSQL compatibility: combine "users" and "roles". See: http://www.postgresql.org/docs/8.1/interactive/user-manag.html
@roadmap_1413_li
@roadmap_1412_li
Improve documentation of system properties: only list the property names, default values, and description.
@roadmap_1414_li
@roadmap_1413_li
Support running totals / cumulative sum using SUM(..) OVER(..).
@roadmap_1415_li
@roadmap_1414_li
Improve object memory size calculation. Use constants for known VMs, or use reflection to call java.lang.instrument.Instrumentation.getObjectSize(Object objectToSize)
@roadmap_1416_li
@roadmap_1415_li
Triggers: NOT NULL checks should be done after running triggers (Oracle behavior, maybe others).
@roadmap_1417_li
@roadmap_1416_li
Common Table Expression (CTE) / recursive queries: support INSERT INTO ... SELECT ... Issue 219.
@roadmap_1418_li
@roadmap_1417_li
Common Table Expression (CTE) / recursive queries: support non-recursive queries. Issue 217.
@roadmap_1419_li
@roadmap_1418_li
Common Table Expression (CTE) / recursive queries: avoid endless loop. Issue 218.
@roadmap_1420_li
@roadmap_1419_li
Common Table Expression (CTE) / recursive queries: support multiple named queries. Issue 220.
@roadmap_1421_li
@roadmap_1420_li
Common Table Expression (CTE) / recursive queries: identifier scope may be incorrect. Issue 222.
@roadmap_1422_li
@roadmap_1421_li
Log long running transactions (similar to long running statements).
@roadmap_1423_li
@roadmap_1422_li
Parameter data type is data type of other operand. Issue 205.
@roadmap_1424_li
@roadmap_1423_li
Some combinations of nested join with right outer join are not supported.
@roadmap_1425_li
@roadmap_1424_li
DatabaseEventListener.openConnection(id) and closeConnection(id).
@roadmap_1426_li
@roadmap_1425_li
Listener or authentication module for new connections, or a way to restrict the number of different connections to a tcp server, or to prevent to login with the same username and password from different IPs. Possibly using the DatabaseEventListener API, or a new API.
@roadmap_1427_li
@roadmap_1426_li
Compatibility for data type CHAR (Derby, HSQLDB). Issue 212.
@roadmap_1428_li
@roadmap_1427_li
Compatibility with MySQL TIMESTAMPDIFF. Issue 209.
@roadmap_1429_li
@roadmap_1428_li
Optimizer: use a histogram of the data, specially for non-normal distributions.
@roadmap_1430_li
@roadmap_1429_li
Trigger: allow declaring as source code (like functions).
@roadmap_1431_li
@roadmap_1430_li
User defined aggregate: allow declaring as source code (like functions).
@roadmap_1432_li
@roadmap_1431_li
The error "table not found" is sometimes caused by using the wrong database. Add "(this database is empty)" to the exception message if applicable.
@roadmap_1433_li
@roadmap_1432_li
MySQL + PostgreSQL compatibility: support string literal escape with \n.
@roadmap_1434_li
@roadmap_1433_li
PostgreSQL compatibility: support string literal escape with double \\.
@roadmap_1435_li
@roadmap_1434_li
Document the TCP server "management_db". Maybe include the IP address of the client.
@roadmap_1436_li
@roadmap_1435_li
Use javax.tools.JavaCompilerTool instead of com.sun.tools.javac.Main
@roadmap_1437_li
@roadmap_1436_li
If a database object was not found in the current schema, but one with the same name existed in another schema, included that in the error message.
@roadmap_1438_li
@roadmap_1437_li
Optimization to use an index for OR when using multiple keys: where (key1 = ? and key2 = ?) OR (key1 = ? and key2 = ?)
@roadmap_1439_li
@roadmap_1438_li
Issue 302: Support optimizing queries with both inner and outer joins, as in: select * from test a inner join test b on a.id=b.id inner join o on o.id=a.id where b.x=1 (the optimizer should swap a and b here). See also TestNestedJoins, tag "swapInnerJoinTables".
@roadmap_1440_li
@roadmap_1439_li
JaQu should support a DataSource and a way to create a Db object using a Connection (for multi-threaded usage with a connection pool).
@roadmap_1441_li
@roadmap_1440_li
Move table to a different schema (rename table to a different schema), possibly using ALTER TABLE ... SET SCHEMA ...;
@roadmap_1442_li
@roadmap_1441_li
nioMapped file system: automatically fall back to regular (non mapped) IO if there is a problem (out of memory exception for example).
@roadmap_1443_li
@roadmap_1442_li
Column as parameter of function table. Issue 228.
@roadmap_1444_li
@roadmap_1443_li
Connection pool: detect ;AUTOCOMMIT=FALSE in the database URL, and if set, disable autocommit for all connections.
@roadmap_1445_li
@roadmap_1444_li
Compatibility with MS Access: support "&amp;" to concatenate text.
@roadmap_1446_li
@roadmap_1445_li
The BACKUP statement should not synchronize on the database, and therefore should not block other users.
@roadmap_1447_li
@roadmap_1446_li
Document the database file format.
@roadmap_1448_li
@roadmap_1447_li
Support reading LOBs.
@roadmap_1449_li
@roadmap_1448_li
Require appending DANGEROUS=TRUE when using certain dangerous settings such as LOG=0, LOG=1, LOCK_MODE=0, disabling FILE_LOCK,...
@roadmap_1450_li
@roadmap_1449_li
Support UDT (user defined types) similar to how Apache Derby supports it: check constraint, allow to use it in Java functions as parameters (return values already seem to work).
@roadmap_1451_li
@roadmap_1450_li
Encrypted file system (use cipher text stealing so file length doesn't need to decrypt; 4 KB header per file, optional compatibility with current encrypted database files).
@roadmap_1452_li
@roadmap_1451_li
Issue 229: SELECT with simple OR tests uses tableScan when it could use indexes.
@roadmap_1453_li
@roadmap_1452_li
GROUP BY queries should use a temporary table if there are too many rows.
@roadmap_1454_li
@roadmap_1453_li
BLOB: support random access when reading.
@roadmap_1455_li
@roadmap_1454_li
CLOB: support random access when reading (this is harder than for BLOB as data is stored in UTF-8 form).
@roadmap_1456_li
@roadmap_1455_li
Compatibility: support SELECT INTO (as an alias for CREATE TABLE ... AS SELECT ...).
@roadmap_1457_li
@roadmap_1456_li
Compatibility with MySQL: support SELECT INTO OUTFILE (cannot be an existing file) as an alias for CSVWRITE(...).
@roadmap_1458_li
@roadmap_1457_li
Compatibility with MySQL: support non-strict mode (sql_mode = "") any data that is too large for the column will just be truncated or set to the default value.
@roadmap_1459_li
@roadmap_1458_li
The full condition should be sent to the linked table, not just the indexed condition. Example: TestLinkedTableFullCondition
@roadmap_1460_li
@roadmap_1459_li
Compatibility with IBM DB2: CREATE PROCEDURE.
@roadmap_1461_li
@roadmap_1460_li
Compatibility with IBM DB2: SQL cursors.
@roadmap_1462_li
@roadmap_1461_li
Single-column primary key values are always stored explicitly. This is not required.
@roadmap_1463_li
@roadmap_1462_li
Compatibility with MySQL: support CREATE TABLE TEST(NAME VARCHAR(255) CHARACTER SET UTF8).
@roadmap_1464_li
@roadmap_1463_li
CALL is incompatible with other databases because it returns a result set, so that CallableStatement.execute() returns true.
@roadmap_1465_li
@roadmap_1464_li
Optimization for large lists for column IN(1, 2, 3, 4,...) - currently an list is used, could potentially use a hash set (maybe only for a part of the values - the ones that can be evaluated).
@roadmap_1466_li
@roadmap_1465_li
Compatibility for ARRAY data type (Oracle: VARRAY(n) of VARCHAR(m); HSQLDB: VARCHAR(n) ARRAY; Postgres: VARCHAR(n)[]).
@roadmap_1467_li
@roadmap_1466_li
PostgreSQL compatible array literal syntax: ARRAY[['a', 'b'], ['c', 'd']]
@roadmap_1468_li
@roadmap_1467_li
PostgreSQL compatibility: UPDATE with FROM.
@roadmap_1469_li
@roadmap_1468_li
Issue 297: Oracle compatibility for "at time zone".
@roadmap_1470_li
@roadmap_1469_li
IBM DB2 compatibility: IDENTITY_VAL_LOCAL().
@roadmap_1471_li
@roadmap_1470_li
Support SQL/XML.
@roadmap_1472_li
@roadmap_1471_li
Support concurrent opening of databases.
@roadmap_1473_li
@roadmap_1472_li
Improved error message and diagnostics in case of network configuration problems.
@roadmap_1474_li
@roadmap_1473_li
TRUNCATE should reset the identity columns as in MySQL and MS SQL Server (and possibly other databases).
@roadmap_1475_li
@roadmap_1474_li
Adding a primary key should make the columns 'not null' unless if there is a row with null (compatibility with MySQL, PostgreSQL, HSQLDB; not Derby).
@roadmap_1476_li
@roadmap_1475_li
ARRAY data type: support Integer[] and so on in Java functions (currently only Object[] is supported).
@roadmap_1477_li
@roadmap_1476_li
MySQL compatibility: LOCK TABLES a READ, b READ - see also http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html
@roadmap_1478_li
@roadmap_1477_li
Oracle compatibility: convert empty strings to null. Also convert an empty byte array to null, but not empty varray.
@roadmap_1479_li
@roadmap_1478_li
The HTML to PDF converter should use http://code.google.com/p/wkhtmltopdf/
@roadmap_1480_li
@roadmap_1479_li
Issue 303: automatically convert "X NOT IN(SELECT...)" to "NOT EXISTS(...)".
@roadmap_1481_li
@roadmap_1480_li
MySQL compatibility: update test1 t1, test2 t2 set t1.name=t2.name where t1.id=t2.id.
@roadmap_1482_li
@roadmap_1481_li
Issue 283: Improve performance of H2 on Android.
@roadmap_1483_li
@roadmap_1482_li
Support INSERT INTO / UPDATE / MERGE ... RETURNING to retrieve the generated key(s).
@roadmap_1484_li
@roadmap_1483_li
Column compression option - see http://groups.google.com/group/h2-database/browse_thread/thread/3e223504e52671fa/243da82244343f5d
@roadmap_1485_li
@roadmap_1484_li
PostgreSQL compatibility: ALTER TABLE ADD combined with adding a foreign key constraint, as in ALTER TABLE FOO ADD COLUMN PARENT BIGINT REFERENCES FOO(ID).
@roadmap_1486_li
@roadmap_1485_li
MS SQL Server compatibility: support @@ROWCOUNT.
@roadmap_1487_li
@roadmap_1486_li
PostgreSQL compatibility: LOG(x) is LOG10(x) and not LN(x).
@roadmap_1488_li
@roadmap_1487_li
Issue 311: Serialized lock mode: executeQuery of write operations fails.
@roadmap_1489_li
@roadmap_1488_li
PostgreSQL compatibility: support PgAdmin III (specially the function current_setting).
@roadmap_1490_li
@roadmap_1489_li
MySQL compatibility: support TIMESTAMPADD.
@roadmap_1491_li
@roadmap_1490_li
Support SELECT ... FOR UPDATE with joins (supported by PostgreSQL, MySQL, and HSQLDB; but not Derby).
@roadmap_1492_li
@roadmap_1491_li
Support SELECT ... FOR UPDATE OF [field-list] (supported by PostgreSQL, MySQL, and HSQLDB; but not Derby).
@roadmap_1493_li
@roadmap_1492_li
Support SELECT ... FOR UPDATE OF [table-list] (supported by PostgreSQL, HSQLDB, Sybase).
@roadmap_1494_li
@roadmap_1493_li
TRANSACTION_ID() for in-memory databases.
@roadmap_1495_li
@roadmap_1494_li
TRANSACTION_ID() should be long (same as HSQLDB and PostgreSQL).
@roadmap_1496_li
@roadmap_1495_li
Support [INNER | OUTER] JOIN USING(column [,...]).
@roadmap_1497_li
@roadmap_1496_li
Support NATURAL [ { LEFT | RIGHT } [ OUTER ] | INNER ] JOIN (Derby, Oracle)
@roadmap_1498_li
@roadmap_1497_li
GROUP BY columnNumber (similar to ORDER BY columnNumber) (MySQL, PostgreSQL, SQLite; not by HSQLDB and Derby).
@roadmap_1499_li
@roadmap_1498_li
Sybase / MS SQL Server compatibility: CONVERT(..) parameters are swapped.
@roadmap_1500_li
@roadmap_1499_li
Index conditions: WHERE AGE>1 should not scan through all rows with AGE=1.
@roadmap_1501_li
@roadmap_1500_li
PHP support: H2 should support PDO, or test with PostgreSQL PDO.
@roadmap_1502_li
@roadmap_1501_li
Outer joins: if no column of the outer join table is referenced, the outer join table could be removed from the query.
@roadmap_1503_li
@roadmap_1502_li
Cluster: allow using auto-increment and identity columns by ensuring executed in lock-step.
@roadmap_1504_li
@roadmap_1503_li
MySQL compatibility: index names only need to be unique for the given table.
@roadmap_1505_li
@roadmap_1504_li
Issue 352: constraints: distinguish between 'no action' and 'restrict'. Currently, only restrict is supported, and 'no action' is internally mapped to 'restrict'. The database meta data returns 'restrict' in all cases.
@roadmap_1506_li
@roadmap_1505_li
Oracle compatibility: support MEDIAN aggregate function.
@roadmap_1507_li
@roadmap_1506_li
Issue 348: Oracle compatibility: division should return a decimal result.
@roadmap_1508_li
@roadmap_1507_li
Read rows on demand: instead of reading the whole row, only read up to that column that is requested. Keep an pointer to the data area and the column id that is already read.
@roadmap_1509_li
@roadmap_1508_li
Long running transactions: log session id when detected.
@roadmap_1510_li
@roadmap_1509_li
Optimization: "select id from test" should use the index on id even without "order by".
@roadmap_1511_li
@roadmap_1510_li
Issue 362: LIMIT support for UPDATE statements (MySQL compatibility).
@roadmap_1512_li
@roadmap_1511_li
Sybase SQL Anywhere compatibility: SELECT TOP ... START AT ...
@roadmap_1513_li
@roadmap_1512_li
Use Java 6 SQLException subclasses.
@roadmap_1514_li
@roadmap_1513_li
Issue 390: RUNSCRIPT FROM '...' CONTINUE_ON_ERROR
@roadmap_1515_li
@roadmap_1514_li
Use Java 6 exceptions: SQLDataException, SQLSyntaxErrorException, SQLTimeoutException,..
@roadmap_1516_li
@roadmap_1515_li
MySQL compatibility: support REPLACE INTO as an alias for MERGE INTO.
@roadmap_1517_h2
@roadmap_1516_h2
Not Planned
@roadmap_1518_li
@roadmap_1517_li
HSQLDB (did) support this: select id i from test where i&lt;0 (other databases don't). Supporting it may break compatibility.
@roadmap_1519_li
@roadmap_1518_li
String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
@roadmap_1520_li
@roadmap_1519_li
In prepared statements, identifier names (table names and so on) can not be parameterized. Adding such a feature would complicate the source code without providing reasonable speedup, and would slow down regular prepared statements.
@sourceError_1000_h1
......@@ -10526,7 +10532,7 @@ Windows
Click [Start], [All Programs], [H2], and [H2 Console (Command Line)]
@tutorial_1036_td
When using the Sun JDK 1.5, a window with the title 'H2 Console ' should appear. When using the Sun JDK 1.6, an icon will be added to the system tray:
An icon will be added to the system tray:
@tutorial_1037_td
If you don't get the window and the system tray icon, then maybe Java is not installed correctly (in this case, try another way to start the application). A browser window should open and point to the login page at <code>http://localhost:8082</code>.
......
......@@ -725,7 +725,7 @@ Durability (永続性)
#FileChannel.force()
@advanced_1242_li
# (since JDK 1.4). This method is supposed to force any updates to this channel's file to be written to the storage device that contains it.
#. This method is supposed to force any updates to this channel's file to be written to the storage device that contains it.
@advanced_1243_p
# By default, MySQL calls <code>fsync</code> for each commit. When using one of those methods, only around 60 write operations per second can be achieved, which is consistent with the RPM rate of the hard drive used. Unfortunately, even when calling <code>FileDescriptor.sync()</code> or <code>FileChannel.force()</code>, data is not always persisted to the hard drive, because most hard drives do not obey <code>fsync()</code>: see <a href="http://hardware.slashdot.org/article.pl?sid=05/05/13/0529252">Your Hard Drive Lies to You</a>. In Mac OS X, <code>fsync</code> does not flush hard drive buffers. See <a href="http://lists.apple.com/archives/darwin-dev/2005/Feb/msg00072.html">Bad fsync?</a>. So the situation is confusing, and tests prove there is a problem.
......@@ -1340,22 +1340,22 @@ XTEA
環境
@build_1015_p
# To run this database, a Java Runtime Environment (JRE) version 1.5 or higher is required.
# To run this database, a Java Runtime Environment (JRE) version 1.6 or higher is required.
@build_1016_p
# To create the database executables, the following software stack was used. To use this database, it is not required to install this software however.
@build_1017_li
#Mac OS X and Windows XP
#Mac OS X and Windows
@build_1018_a
#Sun JDK Version 1.5 and 1.6
#Sun JDK Version 1.6 and 1.7
@build_1019_a
#Eclipse Version 3.4
#Eclipse
@build_1020_li
#Eclipse Plugins: <a href="http://subclipse.tigris.org">Subclipse</a>, <a href="http://eclipse-cs.sourceforge.net">Eclipse Checkstyle Plug-in</a>, <a href="http://www.eclemma.org">EclEmma Java Code Coverage 1.3.0</a>
#Eclipse Plugins: <a href="http://subclipse.tigris.org">Subclipse</a>, <a href="http://eclipse-cs.sourceforge.net">Eclipse Checkstyle Plug-in</a>, <a href="http://www.eclemma.org">EclEmma Java Code Coverage</a>
@build_1021_a
#Emma Java Code Coverage
......@@ -1367,7 +1367,7 @@ XTEA
#OpenOffice
@build_1024_a
#NSIS 2.38
#NSIS
@build_1025_li
# (Nullsoft Scriptable Install System)
......@@ -1379,7 +1379,7 @@ XTEA
ソフトウェアのビルド
@build_1028_p
# You need to install a JDK, for example the Sun JDK version 1.5 or 1.6. Ensure that Java binary directory is included in the <code>PATH</code> environment variable, and that the environment variable <code>JAVA_HOME</code> points to your Java installation. On the command line, go to the directory <code>h2</code> and execute the following command:
# You need to install a JDK, for example the Sun JDK version 1.6 or 1.7. Ensure that Java binary directory is included in the <code>PATH</code> environment variable, and that the environment variable <code>JAVA_HOME</code> points to your Java installation. On the command line, go to the directory <code>h2</code> and execute the following command:
@build_1029_p
# For Linux and OS X, use <code>./build.sh</code> instead of <code>build</code>.
......@@ -1394,7 +1394,7 @@ XTEA
#Switching the Source Code
@build_1033_p
# By default the source code uses Java 1.6 features, however Java 1.5 is supported as well. To switch the source code to the installed version of Java, run:
# The source code uses Java 1.6 features. To switch the source code to the installed version of Java, run:
@build_1034_h2
#Build Targets
......@@ -1517,7 +1517,7 @@ Centralリポジトリの利用
# If you like to provide patches, please consider the following guidelines to simplify merging them:
@build_1074_li
#Only use Java 1.5 features (do not use Java 1.6) (see <a href="#environment">Environment</a>).
#Only use Java 6 features (do not use Java 7) (see <a href="#environment">Environment</a>).
@build_1075_li
#Follow the coding style used in the project, and use Checkstyle (see above) to verify. For example, do not use tabs (use spaces instead). The checkstyle configuration is in <code>src/installer/checkstyle.xml</code>.
......@@ -1640,552 +1640,561 @@ Centralリポジトリの利用
#Next Version (unreleased)
@changelog_1002_li
#Issue 434: H2 Console didn't work in the Chrome browser due to a wrong viewport argument.
#H2 Console: the session timeout can now be configured using the system property "h2.consoleTimeout".
@changelog_1003_li
#There was a possibility that the .lock.db file was not deleted when the database was closed, which could slow down opening the database.
#Issue 431: Improved compatibility with MySQL: support for "ENGINE=InnoDB charset=UTF8" when creating a table.
@changelog_1004_li
#The SQL script generated by the "script" command contained inconsistent newlines on Windows.
#Issue 249: Improved compatibility with MySQL in the MySQL mode: now the methods DatabaseMetaData methods stores*Case*Identifiers return the same as MySQL when using the MySQL mode.
@changelog_1005_li
#When using trace level 4 (SLF4J) in the server mode, a directory "trace.db" and an empty file was created on the client side. This is no longer made.
#Issue 434: H2 Console didn't work in the Chrome browser due to a wrong viewport argument.
@changelog_1006_li
#Optimize IN(...) queries: there was a bug in version 1.3.170 if the type of the left hand side didn't match the type of the right hand side. Fixed.
#There was a possibility that the .lock.db file was not deleted when the database was closed, which could slow down opening the database.
@changelog_1007_li
#Optimize IN(...) queries: there was a bug in version 1.3.170 for comparison of the type "X IN(NULL, NULL)". Fixed.
#The SQL script generated by the "script" command contained inconsistent newlines on Windows.
@changelog_1008_li
#Timestamps with timezone that were passed as a string were not always converted correctly. For example "2012-11-06T23:00:00.000Z" was converted to "2012-11-06" instead of to "2012-11-07" in the timezone CET. Thanks a lot to Steve Hruda for reporting the problem!
#When using trace level 4 (SLF4J) in the server mode, a directory "trace.db" and an empty file was created on the client side. This is no longer made.
@changelog_1009_li
#New table engine "org.h2.mvstore.db.MVTableEngine" that internally uses the MVStore to persist data. To try it out, append ";DEFAULT_TABLE_ENGINE=org.h2.mvstore.db.MVTableEngine" to the database URL. This is still very experimental, and many features are not supported yet. The data is stored in a file with the suffix ".mv.db".
#Optimize IN(...) queries: there was a bug in version 1.3.170 if the type of the left hand side didn't match the type of the right hand side. Fixed.
@changelog_1010_li
#New connection setting "DEFAULT_TABLE_ENGINE" to use a specific table engine if none is set explicitly. This is to simplify testing the MVStore table engine.
#Optimize IN(...) queries: there was a bug in version 1.3.170 for comparison of the type "X IN(NULL, NULL)". Fixed.
@changelog_1011_li
#MVStore: encrypted stores are now supported. Only standardized algorithms are used: PBKDF2, SHA-256, XTS-AES, AES-128.
#Timestamps with timezone that were passed as a string were not always converted correctly. For example "2012-11-06T23:00:00.000Z" was converted to "2012-11-06" instead of to "2012-11-07" in the timezone CET. Thanks a lot to Steve Hruda for reporting the problem!
@changelog_1012_li
#MVStore: improved API thanks to Simo Tripodi.
#New table engine "org.h2.mvstore.db.MVTableEngine" that internally uses the MVStore to persist data. To try it out, append ";DEFAULT_TABLE_ENGINE=org.h2.mvstore.db.MVTableEngine" to the database URL. This is still very experimental, and many features are not supported yet. The data is stored in a file with the suffix ".mv.db".
@changelog_1013_li
#MVStore: maps can now be renamed.
#New connection setting "DEFAULT_TABLE_ENGINE" to use a specific table engine if none is set explicitly. This is to simplify testing the MVStore table engine.
@changelog_1014_li
#MVStore: store the file header also at the end of each chunk, which results in a further reduced number of write operations.
#MVStore: encrypted stores are now supported. Only standardized algorithms are used: PBKDF2, SHA-256, XTS-AES, AES-128.
@changelog_1015_li
#MVStore: a map implementation that supports concurrent operations.
#MVStore: improved API thanks to Simo Tripodi.
@changelog_1016_li
#MVStore: unified exception handling; the version is included in the messages.
#MVStore: maps can now be renamed.
@changelog_1017_li
#MVStore: old data is now retained for 45 seconds by default.
#MVStore: store the file header also at the end of each chunk, which results in a further reduced number of write operations.
@changelog_1018_li
#MVStore: compress is now disabled by default, and can be enabled on request.
#MVStore: a map implementation that supports concurrent operations.
@changelog_1019_li
#Support ALTER TABLE ADD ... AFTER. Patch from Andrew Gaul (argaul at gmail.com). Fixes issue 401.
#MVStore: unified exception handling; the version is included in the messages.
@changelog_1020_li
#Improved OSGi support. H2 now registers itself as a DataSourceFactory service. Fixes issue 365.
#MVStore: old data is now retained for 45 seconds by default.
@changelog_1021_li
#Add a DISK_SPACE_USED system function. Fixes issue 270.
#MVStore: compress is now disabled by default, and can be enabled on request.
@changelog_1022_li
#Fix a compile-time ambiguity when compiling with JDK7, thanks to a patch from Lukas Eder.
#Support ALTER TABLE ADD ... AFTER. Patch from Andrew Gaul (argaul at gmail.com). Fixes issue 401.
@changelog_1023_li
#Supporting dropping an index for Lucene full-text indexes.
#Improved OSGi support. H2 now registers itself as a DataSourceFactory service. Fixes issue 365.
@changelog_1024_li
#Optimized performance for SELECT ... ORDER BY X LIMIT Y OFFSET Z queries for in-memory databases using partial sort (by Sergi Vladykin).
#Add a DISK_SPACE_USED system function. Fixes issue 270.
@changelog_1025_li
#Experimental off-heap memory storage engine "nioMemFS:" and "nioMemLZF:", suggestion from Mark Addleman.
#Fix a compile-time ambiguity when compiling with JDK7, thanks to a patch from Lukas Eder.
@changelog_1026_li
#Issue 438: JdbcDatabaseMetaData.getSchemas() is no longer supported as of 1.3.169.
#Supporting dropping an index for Lucene full-text indexes.
@changelog_1027_li
#MySQL compatibility: support for ALTER TABLE tableName MODIFY [COLUMN] columnName columnDef. Patch from Ville Koskela.
#Optimized performance for SELECT ... ORDER BY X LIMIT Y OFFSET Z queries for in-memory databases using partial sort (by Sergi Vladykin).
@changelog_1028_li
#Issue 404: SHOW COLUMNS FROM tableName does not work with ALLOW_LITERALS=NUMBERS.
#Experimental off-heap memory storage engine "nioMemFS:" and "nioMemLZF:", suggestion from Mark Addleman.
@changelog_1029_li
#Throw an explicit error to make it clear we don't support the TRIGGER combination of SELECT and FOR EACH ROW.
#Issue 438: JdbcDatabaseMetaData.getSchemas() is no longer supported as of 1.3.169.
@changelog_1030_li
#MySQL compatibility: support for ALTER TABLE tableName MODIFY [COLUMN] columnName columnDef. Patch from Ville Koskela.
@changelog_1031_li
#Issue 404: SHOW COLUMNS FROM tableName does not work with ALLOW_LITERALS=NUMBERS.
@changelog_1032_li
#Throw an explicit error to make it clear we don't support the TRIGGER combination of SELECT and FOR EACH ROW.
@changelog_1033_li
#Issue 439: Utils.sortTopN does not handle single-element arrays.
@changelog_1031_h2
@changelog_1034_h2
#Version 1.3.170 (2012-11-30)
@changelog_1032_li
@changelog_1035_li
#Issue 407: The TriggerAdapter didn't work with CLOB and BLOB columns.
@changelog_1033_li
@changelog_1036_li
#PostgreSQL compatibility: support for data types BIGSERIAL and SERIAL as an alias for AUTO_INCREMENT.
@changelog_1034_li
@changelog_1037_li
#Issue 417: H2 Console: the web session timeout didn't work, resulting in a memory leak. This was only a problem if the H2 Console was run for a long time and many sessions were opened.
@changelog_1035_li
@changelog_1038_li
#Issue 412: Running the Server tool with just the option "-browser" will now log a warning.
@changelog_1036_li
@changelog_1039_li
#Issue 411: CloseWatcher registration was not concurrency-safe.
@changelog_1037_li
@changelog_1040_li
#MySQL compatibility: support for CONCAT_WS. Thanks a lot to litailang for the patch!
@changelog_1038_li
@changelog_1041_li
#PostgreSQL compatibility: support for EXTRACT(WEEK FROM dateColumn). Thanks to Prashant Bhat for the patch!
@changelog_1039_li
@changelog_1042_li
#Fix for a bug where we would sometimes use the wrong unique constraint to validate foreign key constraints.
@changelog_1040_li
@changelog_1043_li
#Support BOM at the beginning of files for the RUNSCRIPT command
@changelog_1041_li
@changelog_1044_li
#Fix in calling SET @X = IDENTITY() where it would return NULL incorrectly
@changelog_1042_li
@changelog_1045_li
#Fix ABBA deadlock between adding a constraint and the H2-Log-Writer thread.
@changelog_1043_li
@changelog_1046_li
#Optimize IN(...) queries where the values are constant and of the same type.
@changelog_1044_li
@changelog_1047_li
#Restore tool: the parameter "quiet" was not used and is now removed.
@changelog_1045_li
@changelog_1048_li
#Fix ConcurrentModificationException when creating tables and executing SHOW TABLES in parallel. Reported by Viktor Voytovych.
@changelog_1046_li
@changelog_1049_li
#Serialization is now pluggable using the system property "h2.javaObjectSerializer". Thanks to Sergi Vladykin for the patch!
@changelog_1047_h2
@changelog_1050_h2
#Version 1.3.169 (2012-09-09)
@changelog_1048_li
@changelog_1051_li
#The default jar file is now compiled for Java 6.
@changelog_1049_li
@changelog_1052_li
#The new jar file will probably not end up in the central Maven repository in the next few weeks because Sonatype has disabled automatic synchronization from SourceForge (which they call 'legacy sync' now). It will probably take some time until this is sorted out. The H2 jar files are deployed to http://h2database.com/m2-repo/com/h2database/h2/maven-metadata.xml and http://hsql.sourceforge.net/m2-repo/com/h2database/h2/maven-metadata.xml as usual.
@changelog_1050_li
@changelog_1053_li
#A part of the documentation and the H2 Console has been changed to support the Apple retina display.
@changelog_1051_li
@changelog_1054_li
#The CreateCluster tool could not be used if the source database contained a CLOB or BLOB. The root cause was that the TCP server did not synchronize on the session, which caused a problem when using the exclusive mode.
@changelog_1052_li
@changelog_1055_li
#Statement.getQueryTimeout(): only the first call to this method will query the database. If the query timeout was changed in another way than calling setQueryTimeout, this method will always return the last value. This was changed because Hibernate calls getQueryTimeout() a lot.
@changelog_1053_li
@changelog_1056_li
#Issue 416: PreparedStatement.setNString throws AbstractMethodError. All implemented JDBC 4 methods that don't break compatibility with Java 5 are now included in the default jar file.
@changelog_1054_li
@changelog_1057_li
#Issue 414: for some functions, the parameters were evaluated twice (for example "char(nextval(..))" ran "nextval(..)" twice).
@changelog_1055_li
@changelog_1058_li
#The ResultSetMetaData methods getSchemaName and getTableName could return null instead of "" (an empty string) as specified in the JDBC API.
@changelog_1056_li
@changelog_1059_li
#Added compatibility for "SET NAMES" query in MySQL compatibility mode.
@changelog_1057_h2
@changelog_1060_h2
#Version 1.3.168 (2012-07-13)
@changelog_1058_li
@changelog_1061_li
#The message "Transaction log could not be truncated" was sometimes written to the .trace.db file even if there was no problem truncating the transaction log.
@changelog_1059_li
@changelog_1062_li
#New system property "h2.serializeJavaObject" (default: true) that allows to disable serializing Java objects, so that the objects compareTo and toString methods can be used.
@changelog_1060_li
@changelog_1063_li
#Dylan has translated the H2 Console tool to Korean. Thanks a lot!
@changelog_1061_li
@changelog_1064_li
#Executing the statement CREATE INDEX IF ALREADY EXISTS if the index already exists no longer fails for a read only database.
@changelog_1062_li
@changelog_1065_li
#MVCC: concurrently updating a row could result in the row to appear deleted in the second connection, if there are multiple unique indexes (or a primary key and at least one unique index). Thanks a lot to Teruo for the patch!
@changelog_1063_li
@changelog_1066_li
#Fulltext search: in-memory Lucene indexes are now supported.
@changelog_1064_li
@changelog_1067_li
#Fulltext search: UUID primary keys are now supported.
@changelog_1065_li
@changelog_1068_li
#Apache Tomcat 7.x will now longer log a warning when unloading the web application, if using a connection pool.
@changelog_1066_li
@changelog_1069_li
#H2 Console: support the Midori browser (for Debian / Raspberry Pi)
@changelog_1067_li
@changelog_1070_li
#When opening a remote session, don't open a temporary file if the trace level is set to zero
@changelog_1068_li
@changelog_1071_li
#Use HMAC for authenticating remote LOB id's, removing the need for maintaining a cache, and removing the limit on the number of LOBs per result set.
@changelog_1069_li
@changelog_1072_li
#H2 Console: HTML and XML documents can now be edited in an updatable result set. There is (limited) support for editing multi-line documents.
@changelog_1070_h2
@changelog_1073_h2
#Version 1.3.167 (2012-05-23)
@changelog_1071_li
@changelog_1074_li
#H2 Console: when editing a row, an empty varchar column was replaced with a single space.
@changelog_1072_li
@changelog_1075_li
#Lukas Eder has updated the jOOQ documentation.
@changelog_1073_li
@changelog_1076_li
#Some nested joins could not be executed, for example: select * from (select * from (select * from a) a right join b b) c;
@changelog_1074_li
@changelog_1077_li
#MS SQL Server compatibility: ISNULL is now an alias for IFNULL.
@changelog_1075_li
@changelog_1078_li
#Terrence Huang has completed the translation of the H2 Console tool to Chinese. Thanks a lot!
@changelog_1076_li
@changelog_1079_li
#Server mode: the number of CLOB / BLOB values that were cached on the server is now the maximum of: 5 times the SERVER_RESULT_SET_FETCH_SIZE (which is 100 by default), and SysProperties.SERVER_CACHED_OBJECTS.
@changelog_1077_li
@changelog_1080_li
#In the trace file, the query execution time was incorrect in some cases, specially for the statement SET TRACE_LEVEL_FILE 2.
@changelog_1078_li
@changelog_1081_li
#The feature LOG_SIZE_LIMIT that was introduced in version 1.3.165 did not always work correctly (specially with regards to multithreading) and has been removed. The message "Transaction log could not be truncated" is still written to the .trace.db file if required.
@changelog_1079_li
@changelog_1082_li
#Then reading from a resource using the prefix "classpath:", the ContextClassLoader is now used if the resource can't be read otherwise.
@changelog_1080_li
@changelog_1083_li
#DatabaseEventListener now calls setProgress whenever a statement starts and ends.
@changelog_1081_li
@changelog_1084_li
#DatabaseEventListener now calls setProgress periodically while a statement is running.
@changelog_1082_li
@changelog_1085_li
#The table INFORMATION_SCHEMA.FUNCTION_ALIASES now includes a column TYPE_NAME.
@changelog_1083_li
@changelog_1086_li
#Issue 378: when using views, the wrong values were bound to a parameter in some cases.
@changelog_1084_li
@changelog_1087_li
#Terrence Huang has translated the error messages to Chinese. Thanks a lot!
@changelog_1085_li
@changelog_1088_li
#TRUNC was added as an alias for TRUNCATE.
@changelog_1086_li
@changelog_1089_li
#Small optimisation for accessing result values by column name.
@changelog_1087_li
@changelog_1090_li
#Fix for bug in Statement.getMoreResults(int)
@changelog_1088_li
@changelog_1091_li
#The SCRIPT statements now supports filtering by schema and table. Thanks a lot to Jacob Qvortrup for providing the patch!
@changelog_1089_h2
@changelog_1092_h2
#Version 1.3.166 (2012-04-08)
@changelog_1090_li
@changelog_1093_li
#Indexes on column that are larger than half the page size (wide indexes) could sometimes get corrupt, resulting in an ArrayIndexOutOfBoundsException in PageBtree.getRow or "Row not found" in PageBtreeLeaf. Also, such indexes used too much disk space.
@changelog_1091_li
@changelog_1094_li
#Server mode: when retrieving more than 64 rows each containing a CLOB or BLOB, the error message "The object is already closed" was thrown.
@changelog_1092_li
@changelog_1095_li
#ConvertTraceFile: the time in the trace file is now parsed as a long.
@changelog_1093_li
@changelog_1096_li
#Invalid connection settings are now detected.
@changelog_1094_li
@changelog_1097_li
#Issue 387: WHERE condition getting pushed into sub-query with LIMIT.
@changelog_1095_h2
@changelog_1098_h2
#Version 1.3.165 (2012-03-18)
@changelog_1096_li
@changelog_1099_li
#Better string representation for decimal values (for example 0.00000000 instead of 0E-26).
@changelog_1097_li
@changelog_1100_li
#Prepared statements could only be re-used if the same data types were used the second time they were executed.
@changelog_1098_li
@changelog_1101_li
#In error messages about referential constraint violation, the values are now included.
@changelog_1099_li
@changelog_1102_li
#SCRIPT and RUNSCRIPT: the password can now be set using a prepared statement. Previously, it was required to be a literal in the SQL statement.
@changelog_1100_li
@changelog_1103_li
#MySQL compatibility: SUBSTR with a negative start index now works like MySQL.
@changelog_1101_li
@changelog_1104_li
#When enabling autocommit, the transaction is now committed (as required by the JDBC API).
@changelog_1102_li
@changelog_1105_li
#The shell script <code>h2.sh</code> did not work with spaces in the path. It also works now with quoted spaces in the argument list. Thanks a lot to Shimizu Fumiyuki for the patch!
@changelog_1103_li
@changelog_1106_li
#If the transaction log could not be truncated because of an uncommitted transaction, now "Transaction log could not be truncated" is written to the .trace.db file. Before, the database file was growing and it was hard to find out what the root cause was. To avoid the database file from growing, a new feature to automatically rollback the oldest transaction is available now. To enable it, append ;LOG_SIZE_LIMIT=32 to the database URL (in that case, the oldest session is rolled back if the transaction log is 32 MB).
@changelog_1104_li
@changelog_1107_li
#ALTER TABLE ADD can now add more than one column at a time.
@changelog_1105_li
@changelog_1108_li
#Issue 380: ALTER TABLE ADD FOREIGN KEY with an explicit index didn't verify the index can be used, which would lead to a NullPointerException later on.
@changelog_1106_li
@changelog_1109_li
#Issue 384: the wrong kind of exception (NullPointerException) was thrown in a UNION query with an incorrect ORDER BY expression.
@changelog_1107_li
@changelog_1110_li
#Issue 362: support LIMIT in UPDATE statements.
@changelog_1108_li
@changelog_1111_li
#Browser: if no default browser is set, Google Chrome is now used if available. If not available, then Konqueror, Netscape, or Opera is used if available (as before).
@changelog_1109_li
@changelog_1112_li
#CSV tool: new feature to disable writing the column header (option writeColumnHeader).
@changelog_1110_li
@changelog_1113_li
#CSV tool: new feature to preserve the case sensitivity of column names (option caseSensitiveColumnNames).
@changelog_1111_li
@changelog_1114_li
#PostgreSQL compatibility: LOG(x) is base 10 in the PostgreSQL mode.
@changelog_1112_h2
@changelog_1115_h2
#Version 1.3.164 (2012-02-03)
@changelog_1113_li
@changelog_1116_li
#New built-in function ARRAY_CONTAINS.
@changelog_1114_li
@changelog_1117_li
#Some DatabaseMetaData methods didn't work when using ALLOW_LITERALS NONE.
@changelog_1115_li
@changelog_1118_li
#Trying to convert a VARCHAR to UUID will now fail if the text contains a character that is not a hex digit, '-', or not a whitespace.
@changelog_1116_li
@changelog_1119_li
#TriggerAdapter: in "before" triggers, values can be changed using the ResultSet.updateX methods.
@changelog_1117_li
@changelog_1120_li
#Creating a table with column data type NULL now works (even if not very useful).
@changelog_1118_li
@changelog_1121_li
#ALTER TABLE ALTER COLUMN no longer copies the data for widening conversions (for example if only the precision was increased) unless necessary.
@changelog_1119_li
@changelog_1122_li
#Multi-threaded kernel: concurrently running an online backup and updating the database resulted in a broken (transactionally incorrect) backup file in some cases.
@changelog_1120_li
@changelog_1123_li
#The script created by SCRIPT DROP did not always work if multiple views existed that depend on each other.
@changelog_1121_li
@changelog_1124_li
#MathUtils.getSecureRandom could log a warning to System.err in case the /dev/random is very slow, and the System.getProperties().toString() returned a string larger than 64 KB.
@changelog_1122_li
@changelog_1125_li
#The database file locking mechanism "FS" (;FILE_LOCK=FS) did not work on Linux since version 1.3.161.
@changelog_1123_li
@changelog_1126_li
#Sequences: the functions NEXTVAL and CURRVAL did not work as expected when using quoted, mixed case sequence names.
@changelog_1124_li
@changelog_1127_li
#The constructor for Csv objects is now public, and Csv.getInstance() is now deprecated.
@changelog_1125_li
@changelog_1128_li
#SimpleResultSet: updating a result set is now supported.
@changelog_1126_li
@changelog_1129_li
#Database URL: extra semicolons are not supported.
@changelog_1127_h2
@changelog_1130_h2
#Version 1.3.163 (2011-12-30)
@changelog_1128_li
@changelog_1131_li
#On out of disk space, the database could get corrupt sometimes, if later write operations succeeded. The same problem happened on other kinds of I/O exceptions (where one or some of the writes fail, but subsequent writes succeed). Now the file is closed on the first unsuccessful write operation, so that later requests fail consistently.
@changelog_1129_li
@changelog_1132_li
#DatabaseEventListener.diskSpaceIsLow() is no longer supported because it can't be guaranteed that it always works correctly.
@changelog_1130_li
@changelog_1133_li
#XMLTEXT now supports an optional parameter to escape newlines.
@changelog_1131_li
@changelog_1134_li
#XMLNODE now support an optional parameter to disable indentation.
@changelog_1132_li
@changelog_1135_li
#Csv.write now formats date, time, and timestamp values using java.sql.Date / Time / Timestamp.toString(). Previously, ResultSet.getString() was used, which didn't work well for Oracle.
@changelog_1133_li
@changelog_1136_li
#The shell script <code>h2.sh</code> can now be run from within a different directory. Thanks a lot to Daniel Serodio for the patch!
@changelog_1134_li
@changelog_1137_li
#The page size of a persistent database can now be queries using: select * from information_schema.settings where name = 'info.PAGE_SIZE'
@changelog_1135_li
@changelog_1138_li
#In the server mode, BLOB and CLOB objects are no longer closed when the result set is closed (as required by the JDBC spec).
@changelog_1136_h2
@changelog_1139_h2
#Version 1.3.162 (2011-11-26)
@changelog_1137_li
@changelog_1140_li
#The following system properties are no longer supported: <code>h2.allowBigDecimalExtensions</code>, <code>h2.emptyPassword</code>, <code>h2.minColumnNameMap</code>, <code>h2.returnLobObjects</code>, <code>h2.webMaxValueLength</code>.
@changelog_1138_li
@changelog_1141_li
#When using a VPN, starting a H2 server did not work (for some VPN software).
@changelog_1139_li
@changelog_1142_li
#Oracle compatibility: support for DECODE(...).
@changelog_1140_li
@changelog_1143_li
#Lucene fulltext search: creating an index is now faster if the table already contains data. Thanks a lot to Angel Leon from the FrostWire Team for the patch!
@changelog_1141_li
@changelog_1144_li
#Update statements with a column list in brackets did not work if the list only contains one column. Example: update test set (id)=(id).
@changelog_1142_li
@changelog_1145_li
#Read-only databases in a zip file did not work when using the -baseDir option.
@changelog_1143_li
@changelog_1146_li
#Issue 334: SimpleResultSet.getString now also works for Clob columns.
@changelog_1144_li
@changelog_1147_li
#Subqueries with an aggregate did not always work. Example: select (select count(*) from test where a = t.a and b = 0) from test t group by a
@changelog_1145_li
@changelog_1148_li
#Server: in some (theoretical) cases, exceptions while closing the connection were ignored.
@changelog_1146_li
@changelog_1149_li
#Server.createTcpServer, createPgServer, createWebServer: invalid arguments are now detected.
@changelog_1147_li
@changelog_1150_li
#The selectivity of LOB columns is no longer calculated because indexes on LOB columns are not supported (however this should have little effect on performance, as the selectivity is calculated from the hash code and not the data).
@changelog_1148_li
@changelog_1151_li
#New experimental system property "h2.modifyOnWrite": when enabled, the database file is only modified when writing to the database. When enabled, the serialized file lock is much faster for read-only operations.
@changelog_1149_li
@changelog_1152_li
#A NullPointerException could occur in TableView.isDeterministic for invalid views.
@changelog_1150_li
@changelog_1153_li
#Issue 180: when deserializing objects, the context class loader is used instead of the default class loader if the system property "h2.useThreadContextClassLoader" is set. Thanks a lot to Noah Fontes for the patch!
@changelog_1151_li
@changelog_1154_li
#When using the exclusive mode, LOB operations could cause the thread to block. This also affected the CreateCluster tool (when using BLOB or CLOB data).
@changelog_1152_li
@changelog_1155_li
#The optimization for "group by" was not working correctly if the group by column was aliased in the select list.
@changelog_1153_li
@changelog_1156_li
#Issue 326: improved support for case sensitive (mixed case) identifiers without quotes when using DATABASE_TO_UPPER=FALSE.
@changelog_1154_h2
@changelog_1157_h2
#Version 1.3.161 (2011-10-28)
@changelog_1155_li
@changelog_1158_li
#Issue 351: MySQL mode: can not create a table with the column "KEY", and can not open databases where such a table already exists.
@changelog_1156_li
@changelog_1159_li
#TCP server: when using the trace option ("-trace"), the trace output contained unnecessary stack traces when stopping the server.
@changelog_1157_li
@changelog_1160_li
#Issue 354: when using the multi-threaded kernel option, and multiple threads concurrently prepared SQL statements that use the same view or the same index of a view, then in some cases an infinite loop could occur.
@changelog_1158_li
@changelog_1161_li
#Issue 350: when using instead of triggers, executeUpdate for delete operations always returned 0.
@changelog_1159_li
@changelog_1162_li
#Some timestamps with timezone were not converted correctly. For example, in the PST timezone, the timestamp 2011-10-26 08:00:00Z was converted to 2011-10-25 25:00:00 instead of 2011-10-26 01:00:00. Depending on the database operation, this caused subsequent error.
@changelog_1160_li
@changelog_1163_li
#Sequences with cache size smaller than 0 did not work correctly.
@changelog_1161_li
@changelog_1164_li
#Issue 356: for Blob objects, InputStream.skip() returned 0, causing EOFException in Blob.getBytes(.., ..).
@changelog_1162_li
@changelog_1165_li
#Updatable result sets: if the value is not set when inserting a new row, the default value is now used (the same behavior as MySQL, PostgreSQL, and Apache Derby) instead of NULL.
@changelog_1163_li
@changelog_1166_li
#Conditions of the form IN(SELECT ...) where slow and increased the database size if the subquery result size was larger then the configured MAX_MEMORY_ROWS.
@changelog_1164_li
@changelog_1167_li
#Issue 347: the RunScript and Shell tools now ignore empty statements.
@changelog_1165_li
@changelog_1168_li
#Issue 246: improved error message for data conversion problems.
@changelog_1166_li
@changelog_1169_li
#Issue 344: the build now supports a custom Maven repository location.
@changelog_1167_li
@changelog_1170_li
#Issue 334: Java functions that return CLOB or BLOB objects could not be used as tables.
@changelog_1168_li
@changelog_1171_li
#SimpleResultSet now supports getColumnTypeName and getColumnClassName.
@changelog_1169_li
@changelog_1172_li
#SimpleResultSet now has minimal BLOB and CLOB support.
@changelog_1170_li
@changelog_1173_li
#Improved performance for large databases (many GB), and databases with a small page size.
@changelog_1171_li
@changelog_1174_li
#The Polish translation has been improved by Jaros&#322;aw Kokoci&#324;ski.
@changelog_1172_li
@changelog_1175_li
#When using the built-in connection pool, after calling the "shutdown" SQL statement, a warning was written to the .trace.db file about an unclosed connection.
@changelog_1173_li
@changelog_1176_li
#Improved compatibility for "fetch first / next row(s)". Thanks a lot to litailang for the patch!
@changelog_1174_li
@changelog_1177_li
#Improved compatibility with the Java 7 FileSystem abstraction.
@changelog_1175_h2
@changelog_1178_h2
#Version 1.3.160 (2011-09-11)
@changelog_1176_li
@changelog_1179_li
#Computed columns could not refer to itself.
@changelog_1177_li
@changelog_1180_li
#Issue 340: Comparison with "x = all(select ...)" or similar in a view or subquery that was used as a table returned the wrong result.
@changelog_1178_li
@changelog_1181_li
#Comparison with "x = all(select ...)" or similar returned the wrong result for some cases (for example if the subquery returned no rows, or multiple rows with the same value, or null, or if x was null).
@changelog_1179_li
@changelog_1182_li
#Issue 335: Could not run DROP ALL OBJECTS DELETE FILES on older databases with CLOB or BLOB data. The problem was that the metadata table was not locked in some cases, so that a rollback could result in a corrupt database in a database if the lob storage was upgraded.
@changelog_1180_li
@changelog_1183_li
#Source code switching using //## has been simplified. The Java 1.5 tag has been removed because is no longer needed.
@changelog_1181_li
@changelog_1184_li
#The JDBC methods PreparedStatement.setTimestamp, setTime, and setDate with a calendar, and the methods ResultSet.getTimestamp, getTime, and getDate with a calendar converted the value in the wrong way, so that for some timestamps the converted value was wrong (where summertime starts, one hour per year).
@changelog_1182_li
@changelog_1185_li
#Invalid tables names in 'order by' columns were not detected in some cases. Example: select x from dual order by y.x
@changelog_1183_li
@changelog_1186_li
#Issue 329: CASE expression: data type problem is not detected.
@changelog_1184_li
@changelog_1187_li
#Issue 311: File lock mode serialized: selecting the next value from a sequence didn't work after a pause, because the database thought this is a read-only operation.
@cheatSheet_1000_h1
......@@ -2564,7 +2573,7 @@ F A Q
# This database is well tested using automated test cases. The tests run every night and run for more than one hour. But not all areas of this database are equally well tested. When using one of the following features for production, please ensure your use case is well tested (if possible with automated test cases). The areas that are not well tested are:
@faq_1048_li
#Platforms other than Windows XP, Linux, Mac OS X, or JVMs other than Sun 1.5 or 1.6
#Platforms other than Windows XP, Linux, Mac OS X, or JVMs other than Sun 1.6 or 1.7
@faq_1049_li
#The features <code>AUTO_SERVER</code> and <code>AUTO_RECONNECT</code>.
......@@ -4901,7 +4910,7 @@ H2 データベース エンジン
#Windows XP or Vista, Mac OS X, or Linux
@installation_1009_li
#Sun JDK 1.5 or newer (using Retroweaver to convert to JDK 1.4 should work, but is not regularly tested)
#Sun Java 6 or newer
@installation_1010_li
#Recommended Windows file system: NTFS (FAT32 only supports files up to 4 GB)
......@@ -4916,7 +4925,7 @@ H2 データベース エンジン
サポートされているプラットフォーム
@installation_1014_p
# As this database is written in Java, it can run on many different platforms. It is tested with Java 1.5 and 1.6 but can also be compiled to native code using GCJ. The source code does not use features of Java 1.6. Currently, the database is developed and tested on Windows XP and Mac OS X using the Sun JDK 1.6, but it also works in many other operating systems and using other Java runtime environments. All major operating systems (Windows XP, Windows Vista, Windows 7, Mac OS, Ubuntu,...) are supported.
# As this database is written in Java, it can run on many different platforms. It is tested with Java 6 and 7. Currently, the database is developed and tested on Windows 8 and Mac OS X using Java 6, but it also works in many other operating systems and using other Java runtime environments. All major operating systems (Windows XP, Windows Vista, Windows 7, Mac OS, Ubuntu,...) are supported.
@installation_1015_h2
ソフトウェアのインストール
......@@ -5105,7 +5114,7 @@ Sourceファイル
必要条件
@jaqu_1032_p
# JaQu requires Java 1.5. Annotations are not need. Currently, JaQu is only tested with the H2 database engine, however in theory it should work with any database that supports the JDBC API.
# JaQu requires Java 6. Annotations are not need. Currently, JaQu is only tested with the H2 database engine, however in theory it should work with any database that supports the JDBC API.
@jaqu_1033_h2
#Example Code
......@@ -6872,7 +6881,7 @@ H2 データベース エンジン
#Old versions of the data can be read concurrently with all other operations.
@mvstore_1029_li
#Transaction are supported.
#Transaction are supported (including concurrent transactions and 2-phase commit).
@mvstore_1030_li
#The tool is very modular. It supports pluggable data types / serialization, pluggable map implementations (B-tree, R-tree, concurrent B-tree currently), BLOB storage, and a file system abstraction to support encrypted files and zip files.
......@@ -6956,7 +6965,7 @@ H2 データベース エンジン
# The multi-version support is the basis for the transaction support. In the simple case, when only one transaction is open at a time, rolling back the transaction only requires to revert to an old version.
@mvstore_1057_p
# To support multiple concurrent open transactions, a transaction utility is included, the <code>TransactionStore</code>. This utility stores the changed entries in a separate map, similar to a transaction log (except that only the key of a changed row is stored, and the entries of a transaction are removed when the transaction is committed). The storage overhead of this utility is very small compared to the overhead of a regular transaction log. The tool supports PostgreSQL style "read committed" transaction isolation. There is no limit on the size of a transaction (the log is not kept in memory).
# To support multiple concurrent open transactions, a transaction utility is included, the <code>TransactionStore</code>. This utility stores the changed entries in a separate map, similar to a transaction log (except that only the key of a changed row is stored, and the entries of a transaction are removed when the transaction is committed). The storage overhead of this utility is very small compared to the overhead of a regular transaction log. The tool supports PostgreSQL style "read committed" transaction isolation. There is no limit on the size of a transaction (the log is not kept in memory). The tool supports savepoints, two-phase commit, and other features typically available in a database.
@mvstore_1058_h3
#In-Memory Performance and Usage
......@@ -7952,7 +7961,7 @@ MySQL
#Test Platform
@performance_1269_p
# This test is run on Mac OS X 10.6. No virus scanner was used, and disk indexing was disabled. The VM used is Sun JDK 1.6.
# This test is run on Mac OS X 10.6. No virus scanner was used, and disk indexing was disabled. The JVM used is Sun JDK 1.6.
@performance_1270_h4
#Multiple Runs
......@@ -9275,7 +9284,7 @@ H2 コンソール アプリケーション
#Compatibility: # is the start of a single line comment (MySQL) but date quote (Access). Mode specific
@roadmap_1153_li
#Run benchmarks with JDK 1.5, JDK 1.6, java -server
#Run benchmarks with Android, Java 7, java -server
@roadmap_1154_li
#Optimizations: faster hash function for strings.
......@@ -9350,1032 +9359,1029 @@ H2 コンソール アプリケーション
#Document SET SEARCH_PATH, BEGIN, EXECUTE, parameters
@roadmap_1178_li
#Browser: use Desktop.isDesktopSupported and browse when using JDK 1.6
#Server: use one listener (detect if the request comes from an PG or TCP client)
@roadmap_1179_li
#Server: use one listener (detect if the request comes from an PG or TCP client)
#Optimize SELECT MIN(ID), MAX(ID), COUNT(*) FROM TEST WHERE ID BETWEEN 100 AND 200
@roadmap_1180_li
#Optimize SELECT MIN(ID), MAX(ID), COUNT(*) FROM TEST WHERE ID BETWEEN 100 AND 200
#Sequence: PostgreSQL compatibility (rename, create) http://www.postgresql.org/docs/8.2/static/sql-altersequence.html
@roadmap_1181_li
#Sequence: PostgreSQL compatibility (rename, create) http://www.postgresql.org/docs/8.2/static/sql-altersequence.html
#DISTINCT: support large result sets by sorting on all columns (additionally) and then removing duplicates.
@roadmap_1182_li
#DISTINCT: support large result sets by sorting on all columns (additionally) and then removing duplicates.
#Support a special trigger on all tables to allow building a transaction log reader.
@roadmap_1183_li
#Support a special trigger on all tables to allow building a transaction log reader.
#File system with a background writer thread; test if this is faster
@roadmap_1184_li
#File system with a background writer thread; test if this is faster
#Better document the source code (high level documentation).
@roadmap_1185_li
#Better document the source code (high level documentation).
#Support select * from dual a left join dual b on b.x=(select max(x) from dual)
@roadmap_1186_li
#Support select * from dual a left join dual b on b.x=(select max(x) from dual)
#Optimization: don't lock when the database is read-only
@roadmap_1187_li
#Optimization: don't lock when the database is read-only
#Issue 146: Support merge join.
@roadmap_1188_li
#Issue 146: Support merge join.
#Integrate spatial functions from http://geosysin.iict.ch/irstv-trac/wiki/H2spatial/Download
@roadmap_1189_li
#Integrate spatial functions from http://geosysin.iict.ch/irstv-trac/wiki/H2spatial/Download
#Cluster: hot deploy (adding a node at runtime).
@roadmap_1190_li
#Cluster: hot deploy (adding a node at runtime).
#Support DatabaseMetaData.insertsAreDetected: updatable result sets should detect inserts.
@roadmap_1191_li
#Support DatabaseMetaData.insertsAreDetected: updatable result sets should detect inserts.
#Oracle: support DECODE method (convert to CASE WHEN).
@roadmap_1192_li
#Oracle: support DECODE method (convert to CASE WHEN).
#Native search: support "phrase search", wildcard search (* and ?), case-insensitive search, boolean operators, and grouping
@roadmap_1193_li
#Native search: support "phrase search", wildcard search (* and ?), case-insensitive search, boolean operators, and grouping
#Improve documentation of access rights.
@roadmap_1194_li
#Improve documentation of access rights.
#Support opening a database that is in the classpath, maybe using a new file system. Workaround: detect jar file using getClass().getProtectionDomain().getCodeSource().getLocation().
@roadmap_1195_li
#Support opening a database that is in the classpath, maybe using a new file system. Workaround: detect jar file using getClass().getProtectionDomain().getCodeSource().getLocation().
#Support ENUM data type (see MySQL, PostgreSQL, MS SQL Server, maybe others).
@roadmap_1196_li
#Support ENUM data type (see MySQL, PostgreSQL, MS SQL Server, maybe others).
#Remember the user defined data type (domain) of a column.
@roadmap_1197_li
#Remember the user defined data type (domain) of a column.
#MVCC: support multi-threaded kernel with multi-version concurrency.
@roadmap_1198_li
#MVCC: support multi-threaded kernel with multi-version concurrency.
#Auto-server: add option to define the port range or list.
@roadmap_1199_li
#Auto-server: add option to define the port range or list.
#Support Jackcess (MS Access databases)
@roadmap_1200_li
#Support Jackcess (MS Access databases)
#Built-in methods to write large objects (BLOB and CLOB): FILE_WRITE('test.txt', 'Hello World')
@roadmap_1201_li
#Built-in methods to write large objects (BLOB and CLOB): FILE_WRITE('test.txt', 'Hello World')
#Improve time to open large databases (see mail 'init time for distributed setup')
@roadmap_1202_li
#Improve time to open large databases (see mail 'init time for distributed setup')
#Move Maven 2 repository from hsql.sf.net to h2database.sf.net
@roadmap_1203_li
#Move Maven 2 repository from hsql.sf.net to h2database.sf.net
#Java 1.5 tool: JdbcUtils.closeSilently(s1, s2,...)
@roadmap_1204_li
#Java 1.5 tool: JdbcUtils.closeSilently(s1, s2,...)
#Optimize A=? OR B=? to UNION if the cost is lower.
@roadmap_1205_li
#Optimize A=? OR B=? to UNION if the cost is lower.
#Javadoc: document design patterns used
@roadmap_1206_li
#Javadoc: document design patterns used
#Support custom collators, for example for natural sort (for text that contains numbers).
@roadmap_1207_li
#Support custom collators, for example for natural sort (for text that contains numbers).
#Write an article about SQLInjection (h2/src/docsrc/html/images/SQLInjection.txt)
@roadmap_1208_li
#Write an article about SQLInjection (h2/src/docsrc/html/images/SQLInjection.txt)
#Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
@roadmap_1209_li
#Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
#Support OUT parameters in user-defined procedures.
@roadmap_1210_li
#Support OUT parameters in user-defined procedures.
#Web site design: http://www.igniterealtime.org/projects/openfire/index.jsp
@roadmap_1211_li
#Web site design: http://www.igniterealtime.org/projects/openfire/index.jsp
#HSQLDB compatibility: Openfire server uses: CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
@roadmap_1212_li
#HSQLDB compatibility: Openfire server uses: CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
#Translation: use ?? in help.csv
@roadmap_1213_li
#Translation: use ?? in help.csv
#Translated .pdf
@roadmap_1214_li
#Translated .pdf
#Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
@roadmap_1215_li
#Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
#Issue 357: support getGeneratedKeys to return multiple rows when used with batch updates. This is supported by MySQL, but not Derby. Both PostgreSQL and HSQLDB don't support getGeneratedKeys. Also support it when using INSERT ... SELECT.
@roadmap_1216_li
#Issue 357: support getGeneratedKeys to return multiple rows when used with batch updates. This is supported by MySQL, but not Derby. Both PostgreSQL and HSQLDB don't support getGeneratedKeys. Also support it when using INSERT ... SELECT.
#RECOVER=2 to backup the database, run recovery, open the database
@roadmap_1217_li
#RECOVER=2 to backup the database, run recovery, open the database
#Recovery should work with encrypted databases
@roadmap_1218_li
#Recovery should work with encrypted databases
#Corruption: new error code, add help
@roadmap_1219_li
#Corruption: new error code, add help
#Space reuse: after init, scan all storages and free those that don't belong to a live database object
@roadmap_1220_li
#Space reuse: after init, scan all storages and free those that don't belong to a live database object
#Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
@roadmap_1221_li
#Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
#Support NOCACHE table option (Oracle).
@roadmap_1222_li
#Support NOCACHE table option (Oracle).
#Support table partitioning.
@roadmap_1223_li
#Support table partitioning.
#Add regular javadocs (using the default doclet, but another css) to the homepage.
@roadmap_1224_li
#Add regular javadocs (using the default doclet, but another css) to the homepage.
#The database should be kept open for a longer time when using the server mode.
@roadmap_1225_li
#The database should be kept open for a longer time when using the server mode.
#Javadocs: for each tool, add a copy &amp; paste sample in the class level.
@roadmap_1226_li
#Javadocs: for each tool, add a copy &amp; paste sample in the class level.
#Javadocs: add @author tags.
@roadmap_1227_li
#Javadocs: add @author tags.
#Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
@roadmap_1228_li
#Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
#MySQL compatibility: real SQL statement for DESCRIBE TEST
@roadmap_1229_li
#MySQL compatibility: real SQL statement for DESCRIBE TEST
#Use a default delay of 1 second before closing a database.
@roadmap_1230_li
#Use a default delay of 1 second before closing a database.
#Write (log) to system table before adding to internal data structures.
@roadmap_1231_li
#Write (log) to system table before adding to internal data structures.
#Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
@roadmap_1232_li
#Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
#Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object) (with test case).
@roadmap_1233_li
#Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object) (with test case).
#MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular b-tree index solves the problem).
@roadmap_1234_li
#MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular b-tree index solves the problem).
#Oracle compatibility: support NLS_DATE_FORMAT.
@roadmap_1235_li
#Oracle compatibility: support NLS_DATE_FORMAT.
#Support for Thread.interrupt to cancel running statements.
@roadmap_1236_li
#Support for Thread.interrupt to cancel running statements.
#Cluster: add feature to make sure cluster nodes can not get out of sync (for example by stopping one process).
@roadmap_1237_li
#Cluster: add feature to make sure cluster nodes can not get out of sync (for example by stopping one process).
#H2 Console: support CLOB/BLOB download using a link.
@roadmap_1238_li
#H2 Console: support CLOB/BLOB download using a link.
#Support flashback queries as in Oracle.
@roadmap_1239_li
#Support flashback queries as in Oracle.
#Import / Export of fixed with text files.
@roadmap_1240_li
#Import / Export of fixed with text files.
#HSQLDB compatibility: automatic data type for SUM if value is the value is too big (by default use the same type as the data).
@roadmap_1241_li
#HSQLDB compatibility: automatic data type for SUM if value is the value is too big (by default use the same type as the data).
#Improve the optimizer to select the right index for special cases: where id between 2 and 4 and booleanColumn
@roadmap_1242_li
#Improve the optimizer to select the right index for special cases: where id between 2 and 4 and booleanColumn
#Linked tables: make hidden columns available (Oracle: rowid and ora_rowscn columns).
@roadmap_1243_li
#Linked tables: make hidden columns available (Oracle: rowid and ora_rowscn columns).
#H2 Console: in-place autocomplete.
@roadmap_1244_li
#H2 Console: in-place autocomplete.
#Support large databases: split database files to multiple directories / disks (similar to tablespaces).
@roadmap_1245_li
#Support large databases: split database files to multiple directories / disks (similar to tablespaces).
#H2 Console: support configuration option for fixed width (monospace) font.
@roadmap_1246_li
#H2 Console: support configuration option for fixed width (monospace) font.
#Native fulltext search: support analyzers (specially for Chinese, Japanese).
@roadmap_1247_li
#Native fulltext search: support analyzers (specially for Chinese, Japanese).
#Automatically compact databases from time to time (as a background process).
@roadmap_1248_li
#Automatically compact databases from time to time (as a background process).
#Test Eclipse DTP.
@roadmap_1249_li
#Test Eclipse DTP.
#H2 Console: autocomplete: keep the previous setting
@roadmap_1250_li
#H2 Console: autocomplete: keep the previous setting
#executeBatch: option to stop at the first failed statement.
@roadmap_1251_li
#executeBatch: option to stop at the first failed statement.
#Implement OLAP features as described here: http://www.devx.com/getHelpOn/10MinuteSolution/16573/0/page/5
@roadmap_1252_li
#Implement OLAP features as described here: http://www.devx.com/getHelpOn/10MinuteSolution/16573/0/page/5
#Support Oracle ROWID (unique identifier for each row).
@roadmap_1253_li
#Support Oracle ROWID (unique identifier for each row).
#MySQL compatibility: alter table add index i(c), add constraint c foreign key(c) references t(c);
@roadmap_1254_li
#MySQL compatibility: alter table add index i(c), add constraint c foreign key(c) references t(c);
#Server mode: improve performance for batch updates.
@roadmap_1255_li
#Server mode: improve performance for batch updates.
#Applets: support read-only databases in a zip file (accessed as a resource).
@roadmap_1256_li
#Applets: support read-only databases in a zip file (accessed as a resource).
#Long running queries / errors / trace system table.
@roadmap_1257_li
#Long running queries / errors / trace system table.
#H2 Console should support JaQu directly.
@roadmap_1258_li
#H2 Console should support JaQu directly.
#Better document FTL_SEARCH, FTL_SEARCH_DATA.
@roadmap_1259_li
#Better document FTL_SEARCH, FTL_SEARCH_DATA.
#Sequences: CURRVAL should be session specific. Compatibility with PostgreSQL.
@roadmap_1260_li
#Sequences: CURRVAL should be session specific. Compatibility with PostgreSQL.
#Index creation using deterministic functions.
@roadmap_1261_li
#Index creation using deterministic functions.
#ANALYZE: for unique indexes that allow null, count the number of null.
@roadmap_1262_li
#ANALYZE: for unique indexes that allow null, count the number of null.
#MySQL compatibility: multi-table delete: DELETE .. FROM .. [,...] USING - See http://dev.mysql.com/doc/refman/5.0/en/delete.html
@roadmap_1263_li
#MySQL compatibility: multi-table delete: DELETE .. FROM .. [,...] USING - See http://dev.mysql.com/doc/refman/5.0/en/delete.html
#AUTO_SERVER: support changing IP addresses (disable a network while the database is open).
@roadmap_1264_li
#AUTO_SERVER: support changing IP addresses (disable a network while the database is open).
#Avoid using java.util.Calendar internally because it's slow, complicated, and buggy.
@roadmap_1265_li
#Avoid using java.util.Calendar internally because it's slow, complicated, and buggy.
#Support TRUNCATE .. CASCADE like PostgreSQL.
@roadmap_1266_li
#Support TRUNCATE .. CASCADE like PostgreSQL.
#Fulltext search: lazy result generation using SimpleRowSource.
@roadmap_1267_li
#Fulltext search: lazy result generation using SimpleRowSource.
#Fulltext search: support alternative syntax: WHERE FTL_CONTAINS(name, 'hello').
@roadmap_1268_li
#Fulltext search: support alternative syntax: WHERE FTL_CONTAINS(name, 'hello').
#MySQL compatibility: support REPLACE, see http://dev.mysql.com/doc/refman/6.0/en/replace.html and issue 73.
@roadmap_1269_li
#MySQL compatibility: support REPLACE, see http://dev.mysql.com/doc/refman/6.0/en/replace.html and issue 73.
#MySQL compatibility: support INSERT INTO table SET column1 = value1, column2 = value2
@roadmap_1270_li
#MySQL compatibility: support INSERT INTO table SET column1 = value1, column2 = value2
#Docs: add a one line description for each functions and SQL statements at the top (in the link section).
@roadmap_1271_li
#Docs: add a one line description for each functions and SQL statements at the top (in the link section).
#Javadoc search: weight for titles should be higher ('random' should list Functions as the best match).
@roadmap_1272_li
#Javadoc search: weight for titles should be higher ('random' should list Functions as the best match).
#Replace information_schema tables with regular tables that are automatically re-built when needed. Use indexes.
@roadmap_1273_li
#Replace information_schema tables with regular tables that are automatically re-built when needed. Use indexes.
@roadmap_1274_li
#Issue 50: Oracle compatibility: support calling 0-parameters functions without parenthesis. Make constants obsolete.
@roadmap_1275_li
@roadmap_1274_li
#MySQL, HSQLDB compatibility: support where 'a'=1 (not supported by Derby, PostgreSQL)
@roadmap_1276_li
@roadmap_1275_li
#Support a data type "timestamp with timezone" using java.util.Calendar.
@roadmap_1277_li
@roadmap_1276_li
#Finer granularity for SLF4J trace - See http://code.google.com/p/h2database/issues/detail?id=62
@roadmap_1278_li
@roadmap_1277_li
#Add database creation date and time to the database.
@roadmap_1279_li
@roadmap_1278_li
#Support ASSERTION.
@roadmap_1280_li
@roadmap_1279_li
#MySQL compatibility: support comparing 1='a'
@roadmap_1281_li
@roadmap_1280_li
#Support PostgreSQL lock modes: http://www.postgresql.org/docs/8.3/static/explicit-locking.html
@roadmap_1282_li
@roadmap_1281_li
#PostgreSQL compatibility: test DbVisualizer and Squirrel SQL using a new PostgreSQL JDBC driver.
@roadmap_1283_li
@roadmap_1282_li
#RunScript should be able to read from system in (or quite mode for Shell).
@roadmap_1284_li
@roadmap_1283_li
#Natural join: support select x from dual natural join dual.
@roadmap_1285_li
@roadmap_1284_li
#Support using system properties in database URLs (may be a security problem).
@roadmap_1286_li
@roadmap_1285_li
#Natural join: somehow support this: select a.x, b.x, x from dual a natural join dual b
@roadmap_1287_li
@roadmap_1286_li
#Use the Java service provider mechanism to register file systems and function libraries.
@roadmap_1288_li
@roadmap_1287_li
#MySQL compatibility: for auto_increment columns, convert 0 to next value (as when inserting NULL).
@roadmap_1289_li
@roadmap_1288_li
#Optimization for multi-column IN: use an index if possible. Example: (A, B) IN((1, 2), (2, 3)).
@roadmap_1290_li
@roadmap_1289_li
#Optimization for EXISTS: convert to inner join or IN(..) if possible.
@roadmap_1291_li
@roadmap_1290_li
#Functions: support hashcode(value); cryptographic and fast
@roadmap_1292_li
@roadmap_1291_li
#Serialized file lock: support long running queries.
@roadmap_1293_li
@roadmap_1292_li
#Network: use 127.0.0.1 if other addresses don't work.
@roadmap_1294_li
@roadmap_1293_li
#Pluggable network protocol (currently Socket/ServerSocket over TCP/IP) - see also TransportServer with master slave replication.
@roadmap_1295_li
@roadmap_1294_li
#Support reading JCR data: one table per node type; query table; cache option
@roadmap_1296_li
@roadmap_1295_li
#OSGi: create a sample application, test, document.
@roadmap_1297_li
@roadmap_1296_li
#help.csv: use complete examples for functions; run as test case.
@roadmap_1298_li
@roadmap_1297_li
#Functions to calculate the memory and disk space usage of a table, a row, or a value.
@roadmap_1299_li
@roadmap_1298_li
#Re-implement PooledConnection; use a lightweight connection object.
@roadmap_1300_li
@roadmap_1299_li
#Doclet: convert tests in javadocs to a java class.
@roadmap_1301_li
@roadmap_1300_li
#Doclet: format fields like methods, but support sorting by name and value.
@roadmap_1302_li
@roadmap_1301_li
#Doclet: shrink the html files.
@roadmap_1303_li
@roadmap_1302_li
#MySQL compatibility: support SET NAMES 'latin1' - See also http://code.google.com/p/h2database/issues/detail?id=56
@roadmap_1304_li
@roadmap_1303_li
#Allow to scan index backwards starting with a value (to better support ORDER BY DESC).
@roadmap_1305_li
@roadmap_1304_li
#Java Service Wrapper: try http://yajsw.sourceforge.net/
@roadmap_1306_li
@roadmap_1305_li
#Batch parameter for INSERT, UPDATE, and DELETE, and commit after each batch. See also MySQL DELETE.
@roadmap_1307_li
@roadmap_1306_li
#MySQL compatibility: support ALTER TABLE .. MODIFY COLUMN.
@roadmap_1308_li
@roadmap_1307_li
#Use a lazy and auto-close input stream (open resource when reading, close on eof).
@roadmap_1309_li
@roadmap_1308_li
#PostgreSQL compatibility: generate_series.
@roadmap_1310_li
@roadmap_1309_li
#Connection pool: 'reset session' command (delete temp tables, rollback, auto-commit true).
@roadmap_1311_li
@roadmap_1310_li
#Improve SQL documentation, see http://www.w3schools.com/sql/
@roadmap_1312_li
@roadmap_1311_li
#MySQL compatibility: DatabaseMetaData.stores*() methods should return the same values. Test with SquirrelSQL.
@roadmap_1313_li
@roadmap_1312_li
#MS SQL Server compatibility: support DATEPART syntax.
@roadmap_1314_li
@roadmap_1313_li
#Sybase/DB2/Oracle compatibility: support out parameters in stored procedures - See http://code.google.com/p/h2database/issues/detail?id=83
@roadmap_1315_li
@roadmap_1314_li
#Support INTERVAL data type (see Oracle and others).
@roadmap_1316_li
@roadmap_1315_li
#Combine Server and Console tool (only keep Server).
@roadmap_1317_li
@roadmap_1316_li
#Store the Lucene index in the database itself.
@roadmap_1318_li
@roadmap_1317_li
#Support standard MERGE statement: http://en.wikipedia.org/wiki/Merge_%28SQL%29
@roadmap_1319_li
@roadmap_1318_li
#Oracle compatibility: support DECODE(x, ...).
@roadmap_1320_li
@roadmap_1319_li
#MVCC: compare concurrent update behavior with PostgreSQL and Oracle.
@roadmap_1321_li
@roadmap_1320_li
#HSQLDB compatibility: CREATE FUNCTION (maybe using a Function interface).
@roadmap_1322_li
@roadmap_1321_li
#HSQLDB compatibility: support CALL "java.lang.Math.sqrt"(2.0)
@roadmap_1323_li
@roadmap_1322_li
#Support comma as the decimal separator in the CSV tool.
@roadmap_1324_li
@roadmap_1323_li
#Compatibility: Java functions with SQLJ Part1 http://www.acm.org/sigmod/record/issues/9912/standards.pdf.gz
@roadmap_1325_li
@roadmap_1324_li
#Compatibility: Java functions with SQL/PSM (Persistent Stored Modules) - need to find the documentation.
@roadmap_1326_li
@roadmap_1325_li
#CACHE_SIZE: automatically use a fraction of Runtime.maxMemory - maybe automatically the second level cache.
@roadmap_1327_li
@roadmap_1326_li
#Support date/time/timestamp as documented in http://en.wikipedia.org/wiki/ISO_8601
@roadmap_1328_li
@roadmap_1327_li
#PostgreSQL compatibility: when in PG mode, treat BYTEA data like PG.
@roadmap_1329_li
@roadmap_1328_li
#Support =ANY(array) as in PostgreSQL. See also http://www.postgresql.org/docs/8.0/interactive/arrays.html
@roadmap_1330_li
@roadmap_1329_li
#IBM DB2 compatibility: support PREVIOUS VALUE FOR sequence.
@roadmap_1331_li
@roadmap_1330_li
#Compatibility: use different LIKE ESCAPE characters depending on the mode (disable for Derby, HSQLDB, DB2, Oracle, MSSQLServer).
@roadmap_1332_li
@roadmap_1331_li
#Oracle compatibility: support CREATE SYNONYM table FOR schema.table.
@roadmap_1333_li
@roadmap_1332_li
#FTP: document the server, including -ftpTask option to execute / kill remote processes
@roadmap_1334_li
@roadmap_1333_li
#FTP: problems with multithreading?
@roadmap_1335_li
@roadmap_1334_li
#FTP: implement SFTP / FTPS
@roadmap_1336_li
@roadmap_1335_li
#FTP: access to a database (.csv for a table, a directory for a schema, a file for a lob, a script.sql file).
@roadmap_1337_li
@roadmap_1336_li
#More secure default configuration if remote access is enabled.
@roadmap_1338_li
@roadmap_1337_li
#Improve database file locking (maybe use native file locking). The current approach seems to be problematic if the file system is on a remote share (see Google Group 'Lock file modification time is in the future').
@roadmap_1339_li
@roadmap_1338_li
#Document internal features such as BELONGS_TO_TABLE, NULL_TO_DEFAULT, SEQUENCE.
@roadmap_1340_li
@roadmap_1339_li
#Issue 107: Prefer using the ORDER BY index if LIMIT is used.
@roadmap_1341_li
@roadmap_1340_li
#An index on (id, name) should be used for a query: select * from t where s=? order by i
@roadmap_1342_li
@roadmap_1341_li
#Support reading sequences using DatabaseMetaData.getTables(null, null, null, new String[]{"SEQUENCE"}). See PostgreSQL.
@roadmap_1343_li
@roadmap_1342_li
#Add option to enable TCP_NODELAY using Socket.setTcpNoDelay(true).
@roadmap_1344_li
@roadmap_1343_li
#Maybe disallow = within database names (jdbc:h2:mem:MODE=DB2 means database name MODE=DB2).
@roadmap_1345_li
@roadmap_1344_li
#Fast alter table add column.
@roadmap_1346_li
@roadmap_1345_li
#Improve concurrency for in-memory database operations.
@roadmap_1347_li
@roadmap_1346_li
#Issue 122: Support for connection aliases for remote tcp connections.
@roadmap_1348_li
@roadmap_1347_li
#Fast scrambling (strong encryption doesn't help if the password is included in the application).
@roadmap_1349_li
@roadmap_1348_li
#H2 Console: support -webPassword to require a password to access preferences or shutdown.
@roadmap_1350_li
@roadmap_1349_li
#Issue 126: The index name should be "IDX_" plus the constraint name unless there is a conflict, in which case append a number.
@roadmap_1351_li
@roadmap_1350_li
#Issue 127: Support activation/deactivation of triggers
@roadmap_1352_li
@roadmap_1351_li
#Issue 130: Custom log event listeners
@roadmap_1353_li
@roadmap_1352_li
#Issue 131: IBM DB2 compatibility: sysibm.sysdummy1
@roadmap_1354_li
@roadmap_1353_li
#Issue 132: Use Java enum trigger type.
@roadmap_1355_li
@roadmap_1354_li
#Issue 134: IBM DB2 compatibility: session global variables.
@roadmap_1356_li
@roadmap_1355_li
#Cluster: support load balance with values for each server / auto detect.
@roadmap_1357_li
@roadmap_1356_li
#FTL_SET_OPTION(keyString, valueString) with key stopWords at first.
@roadmap_1358_li
@roadmap_1357_li
#Pluggable access control mechanism.
@roadmap_1359_li
@roadmap_1358_li
#Fulltext search (Lucene): support streaming CLOB data.
@roadmap_1360_li
@roadmap_1359_li
#Document/example how to create and read an encrypted script file.
@roadmap_1361_li
@roadmap_1360_li
#Check state of https://issues.apache.org/jira/browse/OPENJPA-1367 (H2 does support cross joins).
@roadmap_1362_li
@roadmap_1361_li
#Fulltext search (Lucene): only prefix column names with _ if they already start with _. Instead of DATA / QUERY / modified use _DATA, _QUERY, _MODIFIED if possible.
@roadmap_1363_li
@roadmap_1362_li
#Support a way to create or read compressed encrypted script files using an API.
@roadmap_1364_li
@roadmap_1363_li
#Scripting language support (Javascript).
@roadmap_1365_li
@roadmap_1364_li
#The network client should better detect if the server is not an H2 server and fail early.
@roadmap_1366_li
@roadmap_1365_li
#H2 Console: support CLOB/BLOB upload.
@roadmap_1367_li
@roadmap_1366_li
#Database file lock: detect hibernate / standby / very slow threads (compare system time).
@roadmap_1368_li
@roadmap_1367_li
#Automatic detection of redundant indexes.
@roadmap_1369_li
@roadmap_1368_li
#Maybe reject join without "on" (except natural join).
@roadmap_1370_li
@roadmap_1369_li
#Implement GiST (Generalized Search Tree for Secondary Storage).
@roadmap_1371_li
@roadmap_1370_li
#Function to read a number of bytes/characters from an BLOB or CLOB.
@roadmap_1372_li
@roadmap_1371_li
#Issue 156: Support SELECT ? UNION SELECT ?.
@roadmap_1373_li
@roadmap_1372_li
#Automatic mixed mode: support a port range list (to avoid firewall problems).
@roadmap_1374_li
@roadmap_1373_li
#Support the pseudo column rowid, oid, _rowid_.
@roadmap_1375_li
@roadmap_1374_li
#H2 Console / large result sets: stream early instead of keeping a whole result in-memory
@roadmap_1376_li
@roadmap_1375_li
#Support TRUNCATE for linked tables.
@roadmap_1377_li
@roadmap_1376_li
#UNION: evaluate INTERSECT before UNION (like most other database except Oracle).
@roadmap_1378_li
@roadmap_1377_li
#Delay creating the information schema, and share metadata columns.
@roadmap_1379_li
@roadmap_1378_li
#TCP Server: use a nonce (number used once) to protect unencrypted channels against replay attacks.
@roadmap_1380_li
@roadmap_1379_li
#Simplify running scripts and recovery: CREATE FORCE USER (overwrites an existing user).
@roadmap_1381_li
@roadmap_1380_li
#Support CREATE DATABASE LINK (a custom JDBC driver is already supported).
@roadmap_1382_li
@roadmap_1381_li
#Support large GROUP BY operations. Issue 216.
@roadmap_1383_li
@roadmap_1382_li
#Issue 163: Allow to create foreign keys on metadata types.
@roadmap_1384_li
@roadmap_1383_li
#Logback: write a native DBAppender.
@roadmap_1385_li
@roadmap_1384_li
#Cache size: don't use more cache than what is available.
@roadmap_1386_li
@roadmap_1385_li
#Allow to defragment at runtime (similar to SHUTDOWN DEFRAG) in a background thread.
@roadmap_1387_li
@roadmap_1386_li
#Tree index: Instead of an AVL tree, use a general balanced trees or a scapegoat tree.
@roadmap_1388_li
@roadmap_1387_li
#User defined functions: allow to store the bytecode (of just the class, or the jar file of the extension) in the database.
@roadmap_1389_li
@roadmap_1388_li
#Compatibility: ResultSet.getObject() on a CLOB (TEXT) should return String for PostgreSQL and MySQL.
@roadmap_1390_li
@roadmap_1389_li
#Optimizer: WHERE X=? AND Y IN(?), it always uses the index on Y. Should be cost based.
@roadmap_1391_li
@roadmap_1390_li
#Common Table Expression (CTE) / recursive queries: support parameters. Issue 314.
@roadmap_1392_li
@roadmap_1391_li
#Oracle compatibility: support INSERT ALL.
@roadmap_1393_li
@roadmap_1392_li
#Issue 178: Optimizer: index usage when both ascending and descending indexes are available.
@roadmap_1394_li
@roadmap_1393_li
#Issue 179: Related subqueries in HAVING clause.
@roadmap_1395_li
@roadmap_1394_li
#IBM DB2 compatibility: NOT NULL WITH DEFAULT. Similar to MySQL Mode.convertInsertNullToZero.
@roadmap_1396_li
@roadmap_1395_li
#Creating primary key: always create a constraint.
@roadmap_1397_li
@roadmap_1396_li
#Maybe use a different page layout: keep the data at the head of the page, and ignore the tail (don't store / read it). This may increase write / read performance depending on the file system.
@roadmap_1398_li
@roadmap_1397_li
#Indexes of temporary tables are currently kept in-memory. Is this how it should be?
@roadmap_1399_li
@roadmap_1398_li
#The Shell tool should support the same built-in commands as the H2 Console.
@roadmap_1400_li
@roadmap_1399_li
#Maybe use PhantomReference instead of finalize.
@roadmap_1401_li
@roadmap_1400_li
#Database file name suffix: should only have one dot by default. Example: .h2db
@roadmap_1402_li
@roadmap_1401_li
#Issue 196: Function based indexes
@roadmap_1403_li
@roadmap_1402_li
#ALTER TABLE ... ADD COLUMN IF NOT EXISTS columnName.
@roadmap_1404_li
@roadmap_1403_li
#Fix the disk space leak (killing the process at the exact right moment will increase the disk space usage; this space is not re-used). See TestDiskSpaceLeak.java
@roadmap_1405_li
@roadmap_1404_li
#ROWNUM: Oracle compatibility when used within a subquery. Issue 198.
@roadmap_1406_li
@roadmap_1405_li
#Allow to access the database over HTTP (possibly using port 80) and a servlet in a REST way.
@roadmap_1407_li
@roadmap_1406_li
#ODBC: encrypted databases are not supported because the ;CIPHER= can not be set.
@roadmap_1408_li
@roadmap_1407_li
#Support CLOB and BLOB update, specially conn.createBlob().setBinaryStream(1);
@roadmap_1409_li
@roadmap_1408_li
#Optimizer: index usage when both ascending and descending indexes are available. Issue 178.
@roadmap_1410_li
@roadmap_1409_li
#Issue 306: Support schema specific domains.
@roadmap_1411_li
@roadmap_1410_li
#Triggers: support user defined execution order. Oracle: CREATE OR REPLACE TRIGGER TEST_2 BEFORE INSERT ON TEST FOR EACH ROW FOLLOWS TEST_1. SQL specifies that multiple triggers should be fired in time-of-creation order. PostgreSQL uses name order, which was judged to be more convenient. Derby: triggers are fired in the order in which they were created.
@roadmap_1412_li
@roadmap_1411_li
#PostgreSQL compatibility: combine "users" and "roles". See: http://www.postgresql.org/docs/8.1/interactive/user-manag.html
@roadmap_1413_li
@roadmap_1412_li
#Improve documentation of system properties: only list the property names, default values, and description.
@roadmap_1414_li
@roadmap_1413_li
#Support running totals / cumulative sum using SUM(..) OVER(..).
@roadmap_1415_li
@roadmap_1414_li
#Improve object memory size calculation. Use constants for known VMs, or use reflection to call java.lang.instrument.Instrumentation.getObjectSize(Object objectToSize)
@roadmap_1416_li
@roadmap_1415_li
#Triggers: NOT NULL checks should be done after running triggers (Oracle behavior, maybe others).
@roadmap_1417_li
@roadmap_1416_li
#Common Table Expression (CTE) / recursive queries: support INSERT INTO ... SELECT ... Issue 219.
@roadmap_1418_li
@roadmap_1417_li
#Common Table Expression (CTE) / recursive queries: support non-recursive queries. Issue 217.
@roadmap_1419_li
@roadmap_1418_li
#Common Table Expression (CTE) / recursive queries: avoid endless loop. Issue 218.
@roadmap_1420_li
@roadmap_1419_li
#Common Table Expression (CTE) / recursive queries: support multiple named queries. Issue 220.
@roadmap_1421_li
@roadmap_1420_li
#Common Table Expression (CTE) / recursive queries: identifier scope may be incorrect. Issue 222.
@roadmap_1422_li
@roadmap_1421_li
#Log long running transactions (similar to long running statements).
@roadmap_1423_li
@roadmap_1422_li
#Parameter data type is data type of other operand. Issue 205.
@roadmap_1424_li
@roadmap_1423_li
#Some combinations of nested join with right outer join are not supported.
@roadmap_1425_li
@roadmap_1424_li
#DatabaseEventListener.openConnection(id) and closeConnection(id).
@roadmap_1426_li
@roadmap_1425_li
#Listener or authentication module for new connections, or a way to restrict the number of different connections to a tcp server, or to prevent to login with the same username and password from different IPs. Possibly using the DatabaseEventListener API, or a new API.
@roadmap_1427_li
@roadmap_1426_li
#Compatibility for data type CHAR (Derby, HSQLDB). Issue 212.
@roadmap_1428_li
@roadmap_1427_li
#Compatibility with MySQL TIMESTAMPDIFF. Issue 209.
@roadmap_1429_li
@roadmap_1428_li
#Optimizer: use a histogram of the data, specially for non-normal distributions.
@roadmap_1430_li
@roadmap_1429_li
#Trigger: allow declaring as source code (like functions).
@roadmap_1431_li
@roadmap_1430_li
#User defined aggregate: allow declaring as source code (like functions).
@roadmap_1432_li
@roadmap_1431_li
#The error "table not found" is sometimes caused by using the wrong database. Add "(this database is empty)" to the exception message if applicable.
@roadmap_1433_li
@roadmap_1432_li
#MySQL + PostgreSQL compatibility: support string literal escape with \n.
@roadmap_1434_li
@roadmap_1433_li
#PostgreSQL compatibility: support string literal escape with double \\.
@roadmap_1435_li
@roadmap_1434_li
#Document the TCP server "management_db". Maybe include the IP address of the client.
@roadmap_1436_li
@roadmap_1435_li
#Use javax.tools.JavaCompilerTool instead of com.sun.tools.javac.Main
@roadmap_1437_li
@roadmap_1436_li
#If a database object was not found in the current schema, but one with the same name existed in another schema, included that in the error message.
@roadmap_1438_li
@roadmap_1437_li
#Optimization to use an index for OR when using multiple keys: where (key1 = ? and key2 = ?) OR (key1 = ? and key2 = ?)
@roadmap_1439_li
@roadmap_1438_li
#Issue 302: Support optimizing queries with both inner and outer joins, as in: select * from test a inner join test b on a.id=b.id inner join o on o.id=a.id where b.x=1 (the optimizer should swap a and b here). See also TestNestedJoins, tag "swapInnerJoinTables".
@roadmap_1440_li
@roadmap_1439_li
#JaQu should support a DataSource and a way to create a Db object using a Connection (for multi-threaded usage with a connection pool).
@roadmap_1441_li
@roadmap_1440_li
#Move table to a different schema (rename table to a different schema), possibly using ALTER TABLE ... SET SCHEMA ...;
@roadmap_1442_li
@roadmap_1441_li
#nioMapped file system: automatically fall back to regular (non mapped) IO if there is a problem (out of memory exception for example).
@roadmap_1443_li
@roadmap_1442_li
#Column as parameter of function table. Issue 228.
@roadmap_1444_li
@roadmap_1443_li
#Connection pool: detect ;AUTOCOMMIT=FALSE in the database URL, and if set, disable autocommit for all connections.
@roadmap_1445_li
@roadmap_1444_li
#Compatibility with MS Access: support "&amp;" to concatenate text.
@roadmap_1446_li
@roadmap_1445_li
#The BACKUP statement should not synchronize on the database, and therefore should not block other users.
@roadmap_1447_li
@roadmap_1446_li
#Document the database file format.
@roadmap_1448_li
@roadmap_1447_li
#Support reading LOBs.
@roadmap_1449_li
@roadmap_1448_li
#Require appending DANGEROUS=TRUE when using certain dangerous settings such as LOG=0, LOG=1, LOCK_MODE=0, disabling FILE_LOCK,...
@roadmap_1450_li
@roadmap_1449_li
#Support UDT (user defined types) similar to how Apache Derby supports it: check constraint, allow to use it in Java functions as parameters (return values already seem to work).
@roadmap_1451_li
@roadmap_1450_li
#Encrypted file system (use cipher text stealing so file length doesn't need to decrypt; 4 KB header per file, optional compatibility with current encrypted database files).
@roadmap_1452_li
@roadmap_1451_li
#Issue 229: SELECT with simple OR tests uses tableScan when it could use indexes.
@roadmap_1453_li
@roadmap_1452_li
#GROUP BY queries should use a temporary table if there are too many rows.
@roadmap_1454_li
@roadmap_1453_li
#BLOB: support random access when reading.
@roadmap_1455_li
@roadmap_1454_li
#CLOB: support random access when reading (this is harder than for BLOB as data is stored in UTF-8 form).
@roadmap_1456_li
@roadmap_1455_li
#Compatibility: support SELECT INTO (as an alias for CREATE TABLE ... AS SELECT ...).
@roadmap_1457_li
@roadmap_1456_li
#Compatibility with MySQL: support SELECT INTO OUTFILE (cannot be an existing file) as an alias for CSVWRITE(...).
@roadmap_1458_li
@roadmap_1457_li
#Compatibility with MySQL: support non-strict mode (sql_mode = "") any data that is too large for the column will just be truncated or set to the default value.
@roadmap_1459_li
@roadmap_1458_li
#The full condition should be sent to the linked table, not just the indexed condition. Example: TestLinkedTableFullCondition
@roadmap_1460_li
@roadmap_1459_li
#Compatibility with IBM DB2: CREATE PROCEDURE.
@roadmap_1461_li
@roadmap_1460_li
#Compatibility with IBM DB2: SQL cursors.
@roadmap_1462_li
@roadmap_1461_li
#Single-column primary key values are always stored explicitly. This is not required.
@roadmap_1463_li
@roadmap_1462_li
#Compatibility with MySQL: support CREATE TABLE TEST(NAME VARCHAR(255) CHARACTER SET UTF8).
@roadmap_1464_li
@roadmap_1463_li
#CALL is incompatible with other databases because it returns a result set, so that CallableStatement.execute() returns true.
@roadmap_1465_li
@roadmap_1464_li
#Optimization for large lists for column IN(1, 2, 3, 4,...) - currently an list is used, could potentially use a hash set (maybe only for a part of the values - the ones that can be evaluated).
@roadmap_1466_li
@roadmap_1465_li
#Compatibility for ARRAY data type (Oracle: VARRAY(n) of VARCHAR(m); HSQLDB: VARCHAR(n) ARRAY; Postgres: VARCHAR(n)[]).
@roadmap_1467_li
@roadmap_1466_li
#PostgreSQL compatible array literal syntax: ARRAY[['a', 'b'], ['c', 'd']]
@roadmap_1468_li
@roadmap_1467_li
#PostgreSQL compatibility: UPDATE with FROM.
@roadmap_1469_li
@roadmap_1468_li
#Issue 297: Oracle compatibility for "at time zone".
@roadmap_1470_li
@roadmap_1469_li
#IBM DB2 compatibility: IDENTITY_VAL_LOCAL().
@roadmap_1471_li
@roadmap_1470_li
#Support SQL/XML.
@roadmap_1472_li
@roadmap_1471_li
#Support concurrent opening of databases.
@roadmap_1473_li
@roadmap_1472_li
#Improved error message and diagnostics in case of network configuration problems.
@roadmap_1474_li
@roadmap_1473_li
#TRUNCATE should reset the identity columns as in MySQL and MS SQL Server (and possibly other databases).
@roadmap_1475_li
@roadmap_1474_li
#Adding a primary key should make the columns 'not null' unless if there is a row with null (compatibility with MySQL, PostgreSQL, HSQLDB; not Derby).
@roadmap_1476_li
@roadmap_1475_li
#ARRAY data type: support Integer[] and so on in Java functions (currently only Object[] is supported).
@roadmap_1477_li
@roadmap_1476_li
#MySQL compatibility: LOCK TABLES a READ, b READ - see also http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html
@roadmap_1478_li
@roadmap_1477_li
#Oracle compatibility: convert empty strings to null. Also convert an empty byte array to null, but not empty varray.
@roadmap_1479_li
@roadmap_1478_li
#The HTML to PDF converter should use http://code.google.com/p/wkhtmltopdf/
@roadmap_1480_li
@roadmap_1479_li
#Issue 303: automatically convert "X NOT IN(SELECT...)" to "NOT EXISTS(...)".
@roadmap_1481_li
@roadmap_1480_li
#MySQL compatibility: update test1 t1, test2 t2 set t1.name=t2.name where t1.id=t2.id.
@roadmap_1482_li
@roadmap_1481_li
#Issue 283: Improve performance of H2 on Android.
@roadmap_1483_li
@roadmap_1482_li
#Support INSERT INTO / UPDATE / MERGE ... RETURNING to retrieve the generated key(s).
@roadmap_1484_li
@roadmap_1483_li
#Column compression option - see http://groups.google.com/group/h2-database/browse_thread/thread/3e223504e52671fa/243da82244343f5d
@roadmap_1485_li
@roadmap_1484_li
#PostgreSQL compatibility: ALTER TABLE ADD combined with adding a foreign key constraint, as in ALTER TABLE FOO ADD COLUMN PARENT BIGINT REFERENCES FOO(ID).
@roadmap_1486_li
@roadmap_1485_li
#MS SQL Server compatibility: support @@ROWCOUNT.
@roadmap_1487_li
@roadmap_1486_li
#PostgreSQL compatibility: LOG(x) is LOG10(x) and not LN(x).
@roadmap_1488_li
@roadmap_1487_li
#Issue 311: Serialized lock mode: executeQuery of write operations fails.
@roadmap_1489_li
@roadmap_1488_li
#PostgreSQL compatibility: support PgAdmin III (specially the function current_setting).
@roadmap_1490_li
@roadmap_1489_li
#MySQL compatibility: support TIMESTAMPADD.
@roadmap_1491_li
@roadmap_1490_li
#Support SELECT ... FOR UPDATE with joins (supported by PostgreSQL, MySQL, and HSQLDB; but not Derby).
@roadmap_1492_li
@roadmap_1491_li
#Support SELECT ... FOR UPDATE OF [field-list] (supported by PostgreSQL, MySQL, and HSQLDB; but not Derby).
@roadmap_1493_li
@roadmap_1492_li
#Support SELECT ... FOR UPDATE OF [table-list] (supported by PostgreSQL, HSQLDB, Sybase).
@roadmap_1494_li
@roadmap_1493_li
#TRANSACTION_ID() for in-memory databases.
@roadmap_1495_li
@roadmap_1494_li
#TRANSACTION_ID() should be long (same as HSQLDB and PostgreSQL).
@roadmap_1496_li
@roadmap_1495_li
#Support [INNER | OUTER] JOIN USING(column [,...]).
@roadmap_1497_li
@roadmap_1496_li
#Support NATURAL [ { LEFT | RIGHT } [ OUTER ] | INNER ] JOIN (Derby, Oracle)
@roadmap_1498_li
@roadmap_1497_li
#GROUP BY columnNumber (similar to ORDER BY columnNumber) (MySQL, PostgreSQL, SQLite; not by HSQLDB and Derby).
@roadmap_1499_li
@roadmap_1498_li
#Sybase / MS SQL Server compatibility: CONVERT(..) parameters are swapped.
@roadmap_1500_li
@roadmap_1499_li
#Index conditions: WHERE AGE>1 should not scan through all rows with AGE=1.
@roadmap_1501_li
@roadmap_1500_li
#PHP support: H2 should support PDO, or test with PostgreSQL PDO.
@roadmap_1502_li
@roadmap_1501_li
#Outer joins: if no column of the outer join table is referenced, the outer join table could be removed from the query.
@roadmap_1503_li
@roadmap_1502_li
#Cluster: allow using auto-increment and identity columns by ensuring executed in lock-step.
@roadmap_1504_li
@roadmap_1503_li
#MySQL compatibility: index names only need to be unique for the given table.
@roadmap_1505_li
@roadmap_1504_li
#Issue 352: constraints: distinguish between 'no action' and 'restrict'. Currently, only restrict is supported, and 'no action' is internally mapped to 'restrict'. The database meta data returns 'restrict' in all cases.
@roadmap_1506_li
@roadmap_1505_li
#Oracle compatibility: support MEDIAN aggregate function.
@roadmap_1507_li
@roadmap_1506_li
#Issue 348: Oracle compatibility: division should return a decimal result.
@roadmap_1508_li
@roadmap_1507_li
#Read rows on demand: instead of reading the whole row, only read up to that column that is requested. Keep an pointer to the data area and the column id that is already read.
@roadmap_1509_li
@roadmap_1508_li
#Long running transactions: log session id when detected.
@roadmap_1510_li
@roadmap_1509_li
#Optimization: "select id from test" should use the index on id even without "order by".
@roadmap_1511_li
@roadmap_1510_li
#Issue 362: LIMIT support for UPDATE statements (MySQL compatibility).
@roadmap_1512_li
@roadmap_1511_li
#Sybase SQL Anywhere compatibility: SELECT TOP ... START AT ...
@roadmap_1513_li
@roadmap_1512_li
#Use Java 6 SQLException subclasses.
@roadmap_1514_li
@roadmap_1513_li
#Issue 390: RUNSCRIPT FROM '...' CONTINUE_ON_ERROR
@roadmap_1515_li
@roadmap_1514_li
#Use Java 6 exceptions: SQLDataException, SQLSyntaxErrorException, SQLTimeoutException,..
@roadmap_1516_li
@roadmap_1515_li
#MySQL compatibility: support REPLACE INTO as an alias for MERGE INTO.
@roadmap_1517_h2
@roadmap_1516_h2
#Not Planned
@roadmap_1518_li
@roadmap_1517_li
#HSQLDB (did) support this: select id i from test where i&lt;0 (other databases don't). Supporting it may break compatibility.
@roadmap_1519_li
@roadmap_1518_li
#String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
@roadmap_1520_li
@roadmap_1519_li
#In prepared statements, identifier names (table names and so on) can not be parameterized. Adding such a feature would complicate the source code without providing reasonable speedup, and would slow down regular prepared statements.
@sourceError_1000_h1
......@@ -10526,7 +10532,7 @@ Windows
# Click [Start], [All Programs], [H2], and [H2 Console (Command Line)]
@tutorial_1036_td
# When using the Sun JDK 1.5, a window with the title 'H2 Console ' should appear. When using the Sun JDK 1.6, an icon will be added to the system tray:
# An icon will be added to the system tray:
@tutorial_1037_td
# If you don't get the window and the system tray icon, then maybe Java is not installed correctly (in this case, try another way to start the application). A browser window should open and point to the login page at <code>http://localhost:8082</code>.
......
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论