For details about changes, see the <a href="history.html">Change Log</a> .
For details about changes, see the <a href="changelog.html">Change Log</a> .
@faq_1000_h1
@faq_1000_h1
Frequently Asked Questions
Frequently Asked Questions
...
@@ -5966,22 +5966,22 @@ Priority 1
...
@@ -5966,22 +5966,22 @@ Priority 1
Write more tests and documentation for MVCC (Multi Version Concurrency Control)
Write more tests and documentation for MVCC (Multi Version Concurrency Control)
@roadmap_1016_li
@roadmap_1016_li
RECOVER=1 should automatically recover, =2 should run the recovery tool if required
Row level locking
@roadmap_1017_li
@roadmap_1017_li
More tests with MULTI_THREADED=1
RECOVER=1 should automatically recover, =2 should run the recovery tool if required
@roadmap_1018_li
@roadmap_1018_li
Test with Spatial DB in a box / JTS (http://docs.codehaus.org/display/GEOS/SpatialDBBox)
More tests with MULTI_THREADED=1
@roadmap_1019_li
@roadmap_1019_li
Optimization: result set caching (like MySQL)
Test with Spatial DB in a box / JTS (http://docs.codehaus.org/display/GEOS/SpatialDBBox)
@roadmap_1020_li
@roadmap_1020_li
Server side cursors
Optimization: result set caching (like MySQL)
@roadmap_1021_li
@roadmap_1021_li
Row level locking
Server side cursors
@roadmap_1022_li
@roadmap_1022_li
Long running queries / errors / trace system table
Long running queries / errors / trace system table
...
@@ -5992,1087 +5992,1069 @@ Migrate database tool (also from other database engines)
...
@@ -5992,1087 +5992,1069 @@ Migrate database tool (also from other database engines)
@roadmap_1024_li
@roadmap_1024_li
Shutdown compact
Shutdown compact
@roadmap_1025_li
@roadmap_1025_h2
Document server mode, embedded mode, web app mode, dual mode (server+embedded)
Priority 2
@roadmap_1026_li
@roadmap_1026_li
Updatable result sets: DatabaseMetaData.ownUpdatesAreVisible = true (for insert, delete, update) Simple solution: automatically calls 'refresh' when the result was changed. Compare with other databases.
Automatic mode: jdbc:h2:auto: (embedded mode if possible, if not use server mode). Keep the server running until all have disconnected.
@roadmap_1027_h2
@roadmap_1027_li
Priority 2
Support OSGi: http://oscar-osgi.sourceforge.net, http://incubator.apache.org/felix/index.html
@roadmap_1028_li
@roadmap_1028_li
Automatic mode: jdbc:h2:auto: (embedded mode if possible, if not use server mode). Keep the server running until all have disconnected.
Better space re-use in the files after deleting data: shrink the data file without closing the database (if the end of the file is empty)
@roadmap_1029_li
@roadmap_1029_li
Support OSGi: http://oscar-osgi.sourceforge.net, http://incubator.apache.org/felix/index.html
Pluggable tracing system
@roadmap_1030_li
@roadmap_1030_li
Better space re-use in the files after deleting data (shrink the files)
Full outer joins
@roadmap_1031_li
@roadmap_1031_li
Shrink the data file without closing the database (if the end of the file is empty)
Procedural language / script language (Javascript)
@roadmap_1032_li
@roadmap_1032_li
ParameterMetaData should return correct data type where possible (INSERT, UPDATE; supported by PostgreSQL, Derby, HSQLDB)
Change LOB mechanism (less files, keep index of lob files, point to files and row, delete unused files earlier, maybe bundle files into a tar file)
@roadmap_1033_li
@roadmap_1033_li
Pluggable tracing system
Clustering: recovery needs to becomes fully automatic. Global write lock feature.
@roadmap_1034_li
@roadmap_1034_li
Full outer joins
Option for Java functions: constant/isDeterministic to allow early evaluation when all parameters are constant
@roadmap_1035_li
@roadmap_1035_li
Procedural language / script language (Javascript)
Support function overloading as in Java (multiple functions with the same name, but different parameter count or data types)
@roadmap_1036_li
@roadmap_1036_li
Change LOB mechanism (less files, keep index of lob files, point to files and row, delete unused files earlier, maybe bundle files into a tar file)
Compression performance: don't allocate buffers, compress / expand in to out buffer
@roadmap_1042_li
@roadmap_1042_li
System table / function: cache usage
Connection pool manager
@roadmap_1043_li
@roadmap_1043_li
Add a migration guide (list differences between databases)
Implement Statement.cancel for server connections
@roadmap_1044_li
@roadmap_1044_li
Optimization: automatic index creation suggestion using the trace file?
Start / stop server with database URL
@roadmap_1045_li
@roadmap_1045_li
Compression performance: don't allocate buffers, compress / expand in to out buffer
Sequence: add features [NO] MINVALUE, MAXVALUE, CYCLE
@roadmap_1046_li
@roadmap_1046_li
Connection pool manager
Rebuild index functionality (other than delete the index file)
@roadmap_1047_li
@roadmap_1047_li
Implement Statement.cancel for server connections
Don't use deleteOnExit (bug 4513817: File.deleteOnExit consumes memory)
@roadmap_1048_li
@roadmap_1048_li
Start / stop server with database URL
Console: add accesskey to most important commands (A, AREA, BUTTON, INPUT, LABEL, LEGEND, TEXTAREA)
@roadmap_1049_li
@roadmap_1049_li
Sequence: add features [NO] MINVALUE, MAXVALUE, CYCLE
Feature: a setting to delete the the log or not (for backup)
@roadmap_1050_li
@roadmap_1050_li
Rebuild index functionality (other than delete the index file)
Test with Sun ASPE1_4; JEE Sun AS PE1.4
@roadmap_1051_li
@roadmap_1051_li
Don't use deleteOnExit (bug 4513817: File.deleteOnExit consumes memory)
Test performance again with SQL Server, Oracle, DB2
@roadmap_1052_li
@roadmap_1052_li
Console: add accesskey to most important commands (A, AREA, BUTTON, INPUT, LABEL, LEGEND, TEXTAREA)
Test with dbmonster (http://dbmonster.kernelpanic.pl/)
@roadmap_1053_li
@roadmap_1053_li
Feature: a setting to delete the the log or not (for backup)
Test with dbcopy (http://dbcopyplugin.sourceforge.net)
@roadmap_1054_li
@roadmap_1054_li
Test with Sun ASPE1_4; JEE Sun AS PE1.4
Find a tool to view a text file >100 MB, with find, page up and down (like less)
@roadmap_1055_li
@roadmap_1055_li
Test performance again with SQL Server, Oracle, DB2
Implement, test, document XAConnection and so on
@roadmap_1056_li
@roadmap_1056_li
Test with dbmonster (http://dbmonster.kernelpanic.pl/)
Web site: meta keywords, description, get rid of frame set
@roadmap_1057_li
@roadmap_1057_li
Test with dbcopy (http://dbcopyplugin.sourceforge.net)
Pluggable data type (for compression, validation, conversion, encryption)
@roadmap_1058_li
@roadmap_1058_li
Find a tool to view a text file >100 MB, with find, page up and down (like less)
CHECK: find out what makes CHECK=TRUE slow, move to CHECK2
@roadmap_1059_li
@roadmap_1059_li
Implement, test, document XAConnection and so on
Improve recovery: improve code for log recovery problems (less try/catch)
@roadmap_1060_li
@roadmap_1060_li
Web site: meta keywords, description, get rid of frame set
Log linear hash index changes, fast open / close
@roadmap_1061_li
@roadmap_1061_li
Pluggable data type (for compression, validation, conversion, encryption)
Index usage for (ID, NAME)=(1, 'Hi'); document
@roadmap_1062_li
@roadmap_1062_li
CHECK: find out what makes CHECK=TRUE slow, move to CHECK2
Suggestion: include jetty as Servlet Container (like LAMP)
@roadmap_1063_li
@roadmap_1063_li
Improve recovery: improve code for log recovery problems (less try/catch)
Trace shipping to server
@roadmap_1064_li
@roadmap_1064_li
Log linear hash index changes, fast open / close
Performance / server mode: use UDP optionally?
@roadmap_1065_li
@roadmap_1065_li
Index usage for (ID, NAME)=(1, 'Hi'); document
Version check: docs / web console (using javascript), and maybe in the library (using TCP/IP)
@roadmap_1066_li
@roadmap_1066_li
Suggestion: include jetty as Servlet Container (like LAMP)
Web server classloader: override findResource / getResourceFrom
@roadmap_1067_li
@roadmap_1067_li
Trace shipping to server
Cost for embedded temporary view is calculated wrong, if result is constant
@roadmap_1068_li
@roadmap_1068_li
Performance / server mode: use UDP optionally?
Comparison: pluggable sort order: natural sort
@roadmap_1069_li
@roadmap_1069_li
Version check: docs / web console (using javascript), and maybe in the library (using TCP/IP)
Count index range query (count(*) where id between 10 and 20)
@roadmap_1070_li
@roadmap_1070_li
Web server classloader: override findResource / getResourceFrom
Eclipse plugin
@roadmap_1071_li
@roadmap_1071_li
Cost for embedded temporary view is calculated wrong, if result is constant
Asynchronous queries to support publish/subscribe: SELECT ... FOR READ WAIT [maxMillisToWait]
@roadmap_1072_li
@roadmap_1072_li
Comparison: pluggable sort order: natural sort
iReport to support H2
@roadmap_1073_li
@roadmap_1073_li
Count index range query (count(*) where id between 10 and 20)
Implement missing JDBC API (CallableStatement,...)
@roadmap_1074_li
@roadmap_1074_li
Eclipse plugin
Compression of the cache
@roadmap_1075_li
@roadmap_1075_li
iReport to support H2
Run H2 Console inside servlet (pass-through servlet of fix the JSP / app)
@roadmap_1076_li
@roadmap_1076_li
Implement missing JDBC API (CallableStatement,...)
Include SMPT (mail) server (at least client) (alert on cluster failure, low disk space,...)
@roadmap_1077_li
@roadmap_1077_li
Compression of the cache
Drop with restrict (currently cascade is the default)
@roadmap_1078_li
@roadmap_1078_li
Run H2 Console inside servlet (pass-through servlet of fix the JSP / app)
JSON parser and functions
@roadmap_1079_li
@roadmap_1079_li
Include SMPT (mail) server (at least client) (alert on cluster failure, low disk space,...)
Automatic collection of statistics (auto ANALYZE)
@roadmap_1080_li
@roadmap_1080_li
Drop with restrict (currently cascade is the default)
Server: client ping from time to time (to avoid timeout - is timeout a problem?)
@roadmap_1081_li
@roadmap_1081_li
JSON parser and functions
Copy database: Tool with config GUI and batch mode, extensible (example: compare)
@roadmap_1082_li
@roadmap_1082_li
Automatic collection of statistics (auto ANALYZE)
Document, implement tool for long running transactions using user-defined compensation statements
@roadmap_1083_li
@roadmap_1083_li
Server: client ping from time to time (to avoid timeout - is timeout a problem?)
Support SET TABLE DUAL READONLY
@roadmap_1084_li
@roadmap_1084_li
Copy database: Tool with config GUI and batch mode, extensible (example: compare)
Linked schema using CSV files: one schema for a directory of files; support indexes for CSV files
@roadmap_1085_li
@roadmap_1085_li
Document, implement tool for long running transactions using user-defined compensation statements
Don't write stack traces for common exceptions like duplicate key to the log by default
@roadmap_1086_li
@roadmap_1086_li
Support SET TABLE DUAL READONLY
Setting for MAX_QUERY_TIME (default no limit?)
@roadmap_1087_li
@roadmap_1087_li
Linked schema using CSV files: one schema for a directory of files; support indexes for CSV files
GCJ: what is the state now?
@roadmap_1088_li
@roadmap_1088_li
Don't write stack traces for common exceptions like duplicate key to the log by default
Use Janino to convert Java to C++
@roadmap_1089_li
@roadmap_1089_li
Setting for MAX_QUERY_TIME (default no limit?)
Reduce disk space usage (Derby uses less disk space?)
@roadmap_1090_li
@roadmap_1090_li
GCJ: what is the state now?
Events for: Database Startup, Connections, Login attempts, Disconnections, Prepare (after parsing), Web Server (see http://docs.openlinksw.com/virtuoso/fn_dbev_startup.html)
@roadmap_1091_li
@roadmap_1091_li
Use Janino to convert Java to C++
Optimization: Log compression
@roadmap_1092_li
@roadmap_1092_li
Reduce disk space usage (Derby uses less disk space?)
Support standard INFORMATION_SCHEMA tables, as defined in http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt; specially KEY_COLUMN_USAGE (http://dev.mysql.com/doc/refman/5.0/en/information-schema.html, http://www.xcdsql.org/Misc/INFORMATION_SCHEMA%20With%20Rolenames.gif)
@roadmap_1093_li
@roadmap_1093_li
Events for: Database Startup, Connections, Login attempts, Disconnections, Prepare (after parsing), Web Server (see http://docs.openlinksw.com/virtuoso/fn_dbev_startup.html)
Compatibility: in MySQL, HSQLDB, /0.0 is NULL; in PostgreSQL, Derby: Division by zero
@roadmap_1094_li
@roadmap_1094_li
Optimization: Log compression
Functional tables should accept parameters from other tables (see FunctionMultiReturn) SELECT * FROM TEST T, P2C(T.A, T.R)
@roadmap_1095_li
@roadmap_1095_li
Support standard INFORMATION_SCHEMA tables, as defined in http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt; specially KEY_COLUMN_USAGE (http://dev.mysql.com/doc/refman/5.0/en/information-schema.html, http://www.xcdsql.org/Misc/INFORMATION_SCHEMA%20With%20Rolenames.gif)
Custom class loader to reload functions on demand
@roadmap_1096_li
@roadmap_1096_li
Compatibility: in MySQL, HSQLDB, /0.0 is NULL; in PostgreSQL, Derby: Division by zero
Test http://mysql-je.sourceforge.net/
@roadmap_1097_li
@roadmap_1097_li
Functional tables should accept parameters from other tables (see FunctionMultiReturn) SELECT * FROM TEST T, P2C(T.A, T.R)
Close all files when closing the database (including LOB files that are open on the client side)
@roadmap_1098_li
@roadmap_1098_li
Custom class loader to reload functions on demand
Test Connection Pool http://jakarta.apache.org/commons/dbcp
@roadmap_1099_li
@roadmap_1099_li
Test http://mysql-je.sourceforge.net/
Profiler option or profiling tool to find long running and often repeated queries (using DatabaseEventListener API)
@roadmap_1100_li
@roadmap_1100_li
Close all files when closing the database (including LOB files that are open on the client side)
Allow custom settings (@PATH for RUNSCRIPT for example)
@roadmap_1101_li
@roadmap_1101_li
Test Connection Pool http://jakarta.apache.org/commons/dbcp
EXE file: maybe use http://jsmooth.sourceforge.net
@roadmap_1102_li
@roadmap_1102_li
Profiler option or profiling tool to find long running and often repeated queries (using DatabaseEventListener API)
Automatically delete the index file if opening it fails
@roadmap_1103_li
@roadmap_1103_li
Allow custom settings (@PATH for RUNSCRIPT for example)
Performance: Automatically build in-memory indexes if the whole table is in memory
@roadmap_1104_li
@roadmap_1104_li
EXE file: maybe use http://jsmooth.sourceforge.net
H2 Console: The webclient could support more features like phpMyAdmin.
@roadmap_1105_li
@roadmap_1105_li
SELECT ... FOR READ WAIT [maxMillisToWait]
The HELP information schema can be directly exposed in the Console
@roadmap_1106_li
@roadmap_1106_li
Automatically delete the index file if opening it fails
Maybe use the 0x1234 notation for binary fields, see MS SQL Server
@roadmap_1107_li
@roadmap_1107_li
Performance: Automatically build in-memory indexes if the whole table is in memory
Support Oracle CONNECT BY in some way: http://www.adp-gmbh.ch/ora/sql/connect_by.html, http://philip.greenspun.com/sql/trees.html
@roadmap_1108_li
@roadmap_1108_li
H2 Console: The webclient could support more features like phpMyAdmin.
Date: default date is '1970-01-01' (is it 1900-01-01 in the standard / other databases?)
@roadmap_1113_li
@roadmap_1113_li
http://www.jpackage.org
Test and document UPDATE TEST SET (ID, NAME) = (SELECT ID*10, NAME || '!' FROM TEST T WHERE T.ID=TEST.ID);
@roadmap_1114_li
@roadmap_1114_li
Version column (number/sequence and timestamp based)
Max memory rows / max undo log size: use block count / row size not row count
@roadmap_1115_li
@roadmap_1115_li
Optimize getGeneratedKey: send last identity after each execute (server).
Index summary is only written if log=2; maybe write it also when log=1 and everything is fine (and no in doubt transactions)
@roadmap_1116_li
@roadmap_1116_li
Date: default date is '1970-01-01' (is it 1900-01-01 in the standard / other databases?)
Support 123L syntax as in Java; example: SELECT (2000000000*2)
@roadmap_1117_li
@roadmap_1117_li
Test and document UPDATE TEST SET (ID, NAME) = (SELECT ID*10, NAME || '!' FROM TEST T WHERE T.ID=TEST.ID);
Implement point-in-time recovery
@roadmap_1118_li
@roadmap_1118_li
Max memory rows / max undo log size: use block count / row size not row count
Memory database: add a feature to keep named database open until 'shutdown'
@roadmap_1119_li
@roadmap_1119_li
Index summary is only written if log=2; maybe write it also when log=1 and everything is fine (and no in doubt transactions)
Use the directory of the first script as the default directory for any scripts run inside that script
@roadmap_1120_li
@roadmap_1120_li
Support 123L syntax as in Java; example: SELECT (2000000000*2)
Include the version name in the jar file name
@roadmap_1121_li
@roadmap_1121_li
Implement point-in-time recovery
Optimize ID=? OR ID=?: convert to IN(...)
@roadmap_1122_li
@roadmap_1122_li
Memory database: add a feature to keep named database open until 'shutdown'
LIKE: improved version for larger texts (currently using naive search)
@roadmap_1123_li
@roadmap_1123_li
Use the directory of the first script as the default directory for any scripts run inside that script
Auto-reconnect on lost connection to server (even if the server was re-started) except if autocommit was off and there was pending transaction
@roadmap_1124_li
@roadmap_1124_li
Include the version name in the jar file name
The Script tool should work with other databases as well
@roadmap_1125_li
@roadmap_1125_li
Optimize ID=? OR ID=?: convert to IN(...)
Automatically convert to the next 'higher' data type whenever there is an overflow.
@roadmap_1126_li
@roadmap_1126_li
LIKE: improved version for larger texts (currently using naive search)
Throw an exception when the application calls getInt on a Long (optional)
@roadmap_1127_li
@roadmap_1127_li
Auto-reconnect on lost connection to server (even if the server was re-started) except if autocommit was off and there was pending transaction
Default date format for input and output (local date constants)
@roadmap_1128_li
@roadmap_1128_li
The Script tool should work with other databases as well
Cache collation keys for performance
@roadmap_1129_li
@roadmap_1129_li
Automatically convert to the next 'higher' data type whenever there is an overflow.
ValueInt.convertToString and so on (remove Value.convertTo)
@roadmap_1130_li
@roadmap_1130_li
Throw an exception when the application calls getInt on a Long (optional)
Support custom Collators
@roadmap_1131_li
@roadmap_1131_li
Default date format for input and output (local date constants)
Document ROWNUM usage for reports: SELECT ROWNUM, * FROM (subquery)
@roadmap_1132_li
@roadmap_1132_li
Cache collation keys for performance
Clustering: Reads should be randomly distributed or to a designated database on RAM
@roadmap_1133_li
@roadmap_1133_li
ValueInt.convertToString and so on (remove Value.convertTo)
Clustering: When a database is back alive, automatically synchronize with the master
@roadmap_1134_li
@roadmap_1134_li
Support custom Collators
Standalone tool to get relevant system properties and add it to the trace output.
@roadmap_1135_li
@roadmap_1135_li
Document ROWNUM usage for reports: SELECT ROWNUM, * FROM (subquery)
Support mixed clustering mode (one embedded, the other server mode)
@roadmap_1136_li
@roadmap_1136_li
Clustering: Reads should be randomly distributed or to a designated database on RAM
Support 'call proc(1=value)' (PostgreSQL, Oracle)
@roadmap_1137_li
@roadmap_1137_li
Clustering: When a database is back alive, automatically synchronize with the master
HSQLDB compatibility: "INSERT INTO TEST(name) VALUES(?); SELECT IDENTITY()"
@roadmap_1138_li
@roadmap_1138_li
Standalone tool to get relevant system properties and add it to the trace output.
Shutdown lock (shutdown can only start if there are no logins pending, and logins are delayed until shutdown ends)
@roadmap_1139_li
@roadmap_1139_li
Support mixed clustering mode (one embedded, the other server mode)
Automatically delete the index file if opening it fails
@roadmap_1140_li
@roadmap_1140_li
Support 'call proc(1=value)' (PostgreSQL, Oracle)
DbAdapters http://incubator.apache.org/cayenne/
@roadmap_1141_li
@roadmap_1141_li
HSQLDB compatibility: "INSERT INTO TEST(name) VALUES(?); SELECT IDENTITY()"
JAMon (proxy jdbc driver)
@roadmap_1142_li
@roadmap_1142_li
Shutdown lock (shutdown can only start if there are no logins pending, and logins are delayed until shutdown ends)
Console: Allow setting Null value; Alternative display format two column (for copy and paste as well)
@roadmap_1143_li
@roadmap_1143_li
Automatically delete the index file if opening it fails
Console: Improve editing data (Tab, Shift-Tab, Enter, Up, Down, Shift+Del?)
@roadmap_1144_li
@roadmap_1144_li
DbAdapters http://incubator.apache.org/cayenne/
Console: Autocomplete Ctrl+Space inserts template
@roadmap_1145_li
@roadmap_1145_li
JAMon (proxy jdbc driver)
Google Code http://code.google.com/p/h2database/issues/list#
@roadmap_1146_li
@roadmap_1146_li
Console: Allow setting Null value; Alternative display format two column (for copy and paste as well)
Simplify translation ('Donate a translation')
@roadmap_1147_li
@roadmap_1147_li
Console: Improve editing data (Tab, Shift-Tab, Enter, Up, Down, Shift+Del?)
Option to encrypt .trace.db file
@roadmap_1148_li
@roadmap_1148_li
Console: Autocomplete Ctrl+Space inserts template
Write Behind Cache on SATA leads to data corruption See also http://sr5tech.com/write_back_cache_experiments.htm and http://www.jasonbrome.com/blog/archives/2004/04/03/writecache_enabled.html
@roadmap_1149_li
@roadmap_1149_li
Google Code http://code.google.com/p/h2database/issues/list#
Functions with unknown return or parameter data types: serialize / deserialize
@roadmap_1150_li
@roadmap_1150_li
Simplify translation ('Donate a translation')
Test if idle TCP connections are closed, and how to disable that
@roadmap_1151_li
@roadmap_1151_li
Option to encrypt .trace.db file
Try using a factory for Row, Value[] (faster?), http://javolution.org/, alternative ObjectArray / IntArray
@roadmap_1152_li
@roadmap_1152_li
Write Behind Cache on SATA leads to data corruption See also http://sr5tech.com/write_back_cache_experiments.htm and http://www.jasonbrome.com/blog/archives/2004/04/03/writecache_enabled.html
Auto-Update feature for database, .jar file
@roadmap_1153_li
@roadmap_1153_li
Functions with unknown return or parameter data types: serialize / deserialize
ResultSet SimpleResultSet.readFromURL(String url): id varchar, state varchar, released timestamp
@roadmap_1154_li
@roadmap_1154_li
Test if idle TCP connections are closed, and how to disable that
RANK() and DENSE_RANK(), Partition using OVER()
@roadmap_1155_li
@roadmap_1155_li
Try using a factory for Row, Value[] (faster?), http://javolution.org/, alternative ObjectArray / IntArray
ROW_NUMBER (not the same as ROWNUM)
@roadmap_1156_li
@roadmap_1156_li
Auto-Update feature for database, .jar file
Partial indexing (see PostgreSQL)
@roadmap_1157_li
@roadmap_1157_li
ResultSet SimpleResultSet.readFromURL(String url): id varchar, state varchar, released timestamp
BUILD should fail if ant test fails
@roadmap_1158_li
@roadmap_1158_li
RANK() and DENSE_RANK(), Partition using OVER()
http://rubyforge.org/projects/hypersonic/
@roadmap_1159_li
@roadmap_1159_li
ROW_NUMBER (not the same as ROWNUM)
DbVisualizer profile for H2
@roadmap_1160_li
@roadmap_1160_li
Partial indexing (see PostgreSQL)
Add comparator (x === y) : (x = y or (x is null and y is null))
@roadmap_1161_li
@roadmap_1161_li
BUILD should fail if ant test fails
Try to create trace file even for read only databases
@roadmap_1162_li
@roadmap_1162_li
http://rubyforge.org/projects/hypersonic/
Add a sample application that runs the H2 unit test and writes the result to a file (so it can be included in the user app)
@roadmap_1163_li
@roadmap_1163_li
DbVisualizer profile for H2
Count on a column that can not be null would be optimized to COUNT(*)
@roadmap_1164_li
@roadmap_1164_li
Add comparator (x === y) : (x = y or (x is null and y is null))
Table order: ALTER TABLE TEST ORDER BY NAME DESC (MySQL compatibility)
@roadmap_1165_li
@roadmap_1165_li
Try to create trace file even for read only databases
Backup tool should work with other databases as well
@roadmap_1166_li
@roadmap_1166_li
Add a sample application that runs the H2 unit test and writes the result to a file (so it can be included in the user app)
Console: -ifExists doesn't work for the console. Add a flag to disable other dbs
@roadmap_1167_li
@roadmap_1167_li
Count on a column that can not be null would be optimized to COUNT(*)
Maybe use Fowler Noll Vo hash function
@roadmap_1168_li
@roadmap_1168_li
Table order: ALTER TABLE TEST ORDER BY NAME DESC (MySQL compatibility)
Improved full text search (supports LOBs, reader / tokenizer / filter).
@roadmap_1169_li
@roadmap_1169_li
Backup tool should work with other databases as well
Performance: Update in-place
@roadmap_1170_li
@roadmap_1170_li
Console: -ifExists doesn't work for the console. Add a flag to disable other dbs
Check if 'FSUTIL behavior set disablelastaccess 1' improves the performance (fsutil behavior query disablelastaccess)
Feature matrix like in <a href="http://www.inetsoftware.de/products/jdbc/mssql/features/default.asp">i-net software</a> .
@roadmap_1207_li
@roadmap_1207_li
Functions: options readonly, deterministic (pure, always return the same value)
Updatable result set on table without primary key or unique index
@roadmap_1208_li
@roadmap_1208_li
Document FTP server, including -ftpTask option to execute / kill remote processes
Use LinkedList instead of ArrayList where applicable
@roadmap_1209_li
@roadmap_1209_li
Add jdbcx to the javadocs
Optimization: (A=B AND B=C) > (A=B AND B=C AND A=C)
@roadmap_1210_li
@roadmap_1210_li
Delay reading the row if data is not required
Support % operator (modulo)
@roadmap_1211_li
@roadmap_1211_li
Eliminate undo log records if stored on disk (just one pointer per block, not per record)
Large subqueries: close them when the main query is closed, not earlier (so result can be reused)
@roadmap_1212_li
@roadmap_1212_li
Feature matrix like in <a href="http://www.inetsoftware.de/products/jdbc/mssql/features/default.asp">i-net software</a> .
Support 1+'2'=3, '1'+'2'='12' (MS SQL Server compatibility)
@roadmap_1213_li
@roadmap_1213_li
Updatable result set on table without primary key or unique index
Support nested transactions
@roadmap_1214_li
@roadmap_1214_li
Use LinkedList instead of ArrayList where applicable
Add a benchmark for big databases, and one for many users
@roadmap_1215_li
@roadmap_1215_li
Optimization: (A=B AND B=C) > (A=B AND B=C AND A=C)
Compression in the result set (repeating values in the same column)
@roadmap_1216_li
@roadmap_1216_li
Support % operator (modulo)
Improve command line consistency (+/- options, or true false options)
@roadmap_1217_li
@roadmap_1217_li
Large subqueries: close them when the main query is closed, not earlier (so result can be reused)
Allow to use the catalog name in statements: [[catalog.]schema.]object
@roadmap_1218_li
@roadmap_1218_li
Support 1+'2'=3, '1'+'2'='12' (MS SQL Server compatibility)
Support curtimestamp (like curtime, curdate)
@roadmap_1219_li
@roadmap_1219_li
Support nested transactions
Support ANALYZE {TABLE|INDEX} tableName COMPUTE|ESTIMATE|DELETE STATISTICS ptnOption options
@roadmap_1220_li
@roadmap_1220_li
Add a benchmark for big databases, and one for many users
Support Sequoia (Continuent.org)
@roadmap_1221_li
@roadmap_1221_li
Compression in the result set (repeating values in the same column)
Dynamic length numbers / special methods for DataPage.writeByte / writeShort / Ronni Nielsen
@roadmap_1222_li
@roadmap_1222_li
Improve command line consistency (+/- options, or true false options)
Pluggable ThreadPool, (AvalonDB / deebee / Paul Hammant)
@roadmap_1223_li
@roadmap_1223_li
Allow to use the catalog name in statements: [[catalog.]schema.]object
Recursive Queries (see details)
@roadmap_1224_li
@roadmap_1224_li
Support curtimestamp (like curtime, curdate)
Use index on boolean flag (see details)
@roadmap_1225_li
@roadmap_1225_li
Support ANALYZE {TABLE|INDEX} tableName COMPUTE|ESTIMATE|DELETE STATISTICS ptnOption options
Add build for embedded database only
@roadmap_1226_li
@roadmap_1226_li
Support Sequoia (Continuent.org)
Release locks (shared or exclusive) on demand
@roadmap_1227_li
@roadmap_1227_li
Dynamic length numbers / special methods for DataPage.writeByte / writeShort / Ronni Nielsen
Support catalog names
@roadmap_1228_li
@roadmap_1228_li
Pluggable ThreadPool, (AvalonDB / deebee / Paul Hammant)
Add object id to metadata tables
@roadmap_1229_li
@roadmap_1229_li
Recursive Queries (see details)
Support OUTER UNION
@roadmap_1230_li
@roadmap_1230_li
Use index on boolean flag (see details)
Support Parameterized Views (similar to CSVREAD, but using just SQL for the definition)
@roadmap_1231_li
@roadmap_1231_li
Add build for embedded database only
Implement a command line SQL utility similar to HenPlus: http://henplus.sourceforge.net
@roadmap_1232_li
@roadmap_1232_li
Release locks (shared or exclusive) on demand
A way (JDBC driver) to map an URL (jdbc:h2map:c1) to a connection object
@roadmap_1233_li
@roadmap_1233_li
Support catalog names
Build script for the embedded functionality only (h2embedded.jar)
@roadmap_1234_li
@roadmap_1234_li
Add object id to metadata tables
Option for SCRIPT to only process one or a set of tables, and append to a file
@roadmap_1235_li
@roadmap_1235_li
Support OUTER UNION
Support using a unique index for IS NULL (including linked tables)
@roadmap_1236_li
@roadmap_1236_li
Support Parameterized Views (similar to CSVREAD, but using just SQL for the definition)
Support linked tables to the current database
@roadmap_1237_li
@roadmap_1237_li
Implement a command line SQL utility similar to HenPlus: http://henplus.sourceforge.net
Support dynamic linked schema (automatically adding/updating/removing tables)
@roadmap_1238_li
@roadmap_1238_li
A way (JDBC driver) to map an URL (jdbc:h2map:c1) to a connection object
Compatibility with Derby: VALUES(1), (2); SELECT * FROM (VALUES (1), (2)) AS myTable(c1)
@roadmap_1239_li
@roadmap_1239_li
Build script for the embedded functionality only (h2embedded.jar)
Compatibility: # is the start of a single line comment (MySQL) but date quote (Access). Mode specific
@roadmap_1240_li
@roadmap_1240_li
Option for SCRIPT to only process one or a set of tables, and append to a file
Run benchmarks with JDK 1.5, JDK 1.6, java -server
@roadmap_1241_li
@roadmap_1241_li
Support using a unique index for IS NULL (including linked tables)
Optimizations: Faster hash function for strings, byte arrays, big decimal
@roadmap_1242_li
@roadmap_1242_li
Support linked tables to the current database
DatabaseEventListener: callback for all operations (including expected time, RUNSCRIPT) and cancel functionality
@roadmap_1243_li
@roadmap_1243_li
Support dynamic linked schema (automatically adding/updating/removing tables)
H2 Console / large result sets: use 'streaming' instead of building the page in-memory
@roadmap_1244_li
@roadmap_1244_li
Compatibility with Derby: VALUES(1), (2); SELECT * FROM (VALUES (1), (2)) AS myTable(c1)
Benchmark: add a graph to show how databases scale (performance/database size)
@roadmap_1245_li
@roadmap_1245_li
Compatibility: # is the start of a single line comment (MySQL) but date quote (Access). Mode specific
Implement a SQLData interface to map your data over to a custom object
@roadmap_1246_li
@roadmap_1246_li
Run benchmarks with JDK 1.5, JDK 1.6, java -server
Extend H2 Console to run tools (show command line as well)
@roadmap_1247_li
@roadmap_1247_li
Optimizations: Faster hash function for strings, byte arrays, big decimal
Make DDL (Data Definition) operations transactional
@roadmap_1248_li
@roadmap_1248_li
DatabaseEventListener: callback for all operations (including expected time, RUNSCRIPT) and cancel functionality
Allow execution time prepare for SELECT * FROM CSVREAD(?, 'columnNameString')
@roadmap_1249_li
@roadmap_1249_li
H2 Console / large result sets: use 'streaming' instead of building the page in-memory
Support multiple directories (on different hard drives) for the same database
@roadmap_1250_li
@roadmap_1250_li
Benchmark: add a graph to show how databases scale (performance/database size)
Server protocol: use challenge response authentication, but client sends hash(user+password) encrypted with response
@roadmap_1251_li
@roadmap_1251_li
Implement a SQLData interface to map your data over to a custom object
Support EXEC[UTE] (doesn't return a result set, compatible to MS SQL Server)
@roadmap_1252_li
@roadmap_1252_li
Extend H2 Console to run tools (show command line as well)
GROUP BY and DISTINCT: support large groups (buffer to disk), do not keep large sets in memory
@roadmap_1253_li
@roadmap_1253_li
Make DDL (Data Definition) operations transactional
Support native XML data type
@roadmap_1254_li
@roadmap_1254_li
Allow execution time prepare for SELECT * FROM CSVREAD(?, 'columnNameString')
Support triggers with a string property or option: SpringTrigger, OSGITrigger
@roadmap_1255_li
@roadmap_1255_li
Support multiple directories (on different hard drives) for the same database
Clustering: adding a node should be very fast and without interrupting clients (very short lock)
@roadmap_1256_li
@roadmap_1256_li
Server protocol: use challenge response authentication, but client sends hash(user+password) encrypted with response
Support materialized views (using triggers)
@roadmap_1257_li
@roadmap_1257_li
Support EXEC[UTE] (doesn't return a result set, compatible to MS SQL Server)
Store dates in local time zone (portability of database files)
@roadmap_1258_li
@roadmap_1258_li
GROUP BY and DISTINCT: support large groups (buffer to disk), do not keep large sets in memory
Ability to resize the cache array when resizing the cache
@roadmap_1259_li
@roadmap_1259_li
Support native XML data type
Automatic conversion from WHERE X>10 AND X>20 to X>20
@roadmap_1260_li
@roadmap_1260_li
Support triggers with a string property or option: SpringTrigger, OSGITrigger
Time based cache writing (one second after writing the log)
@roadmap_1261_li
@roadmap_1261_li
Clustering: adding a node should be very fast and without interrupting clients (very short lock)
Check state of H2 driver for DDLUtils: https://issues.apache.org/jira/browse/DDLUTILS-185
@roadmap_1262_li
@roadmap_1262_li
Support materialized views (using triggers)
Index usage for REGEXP LIKE.
@roadmap_1263_li
@roadmap_1263_li
Store dates in local time zone (portability of database files)
Add a role DBA (like ADMIN).
@roadmap_1264_li
@roadmap_1264_li
Ability to resize the cache array when resizing the cache
Better support multiple processors for in-memory databases.
@roadmap_1265_li
@roadmap_1265_li
Automatic conversion from WHERE X>10 AND X>20 to X>20
Access rights: remember the owner of an object. COMMENT: allow owner of object to change it.
@roadmap_1266_li
@roadmap_1266_li
Time based cache writing (one second after writing the log)
Implement INSTEAD OF trigger.
@roadmap_1267_li
@roadmap_1267_li
Check state of H2 driver for DDLUtils: https://issues.apache.org/jira/browse/DDLUTILS-185
Access rights: Finer grained access control (grant access for specific functions)
@roadmap_1268_li
@roadmap_1268_li
Index usage for REGEXP LIKE.
Support N'text'
@roadmap_1269_li
@roadmap_1269_li
Add a role DBA (like ADMIN).
Support SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger
@roadmap_1270_li
@roadmap_1270_li
Better support multiple processors for in-memory databases.
Set a connection read only (Connection.setReadOnly)
@roadmap_1271_li
@roadmap_1271_li
Access rights: remember the owner of an object. COMMENT: allow owner of object to change it.
In MySQL mode, for AUTO_INCREMENT columns, don't set the primary key
@roadmap_1272_li
@roadmap_1272_li
Implement INSTEAD OF trigger.
Use JDK 1.4 file locking to create the lock file (but not yet by default); writing a system property to detect concurrent access from the same VM (different classloaders).
@roadmap_1273_li
@roadmap_1273_li
Access rights: Finer grained access control (grant access for specific functions)
Read-only sessions (Connection.setReadOnly)
@roadmap_1274_li
@roadmap_1274_li
Support N'text'
Support compatibility for jdbc:hsqldb:res:
@roadmap_1275_li
@roadmap_1275_li
Support SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger
In the MySQL and PostgreSQL, use lower case identifiers by default (DatabaseMetaData.storesLowerCaseIdentifiers = true)
@roadmap_1276_li
@roadmap_1276_li
Support DESCRIBE like MySQL or Oracle (DESC|DESCRIBE {[schema.]object[@connect_identifier]})
Provide a simple, lightweight O/R mapping tool
@roadmap_1277_li
@roadmap_1277_li
Set a connection read only (Connection.setReadOnly)
Provide an Java SQL builder with standard and H2 syntax
@roadmap_1278_li
@roadmap_1278_li
In MySQL mode, for AUTO_INCREMENT columns, don't set the primary key
Trace: write OS, file system, JVM,... when opening the database
@roadmap_1279_li
@roadmap_1279_li
Use JDK 1.4 file locking to create the lock file (but not yet by default); writing a system property to detect concurrent access from the same VM (different classloaders).
Trace: write dangerous operations (set log 0,...) in every case (including when opening the database)
@roadmap_1280_li
@roadmap_1280_li
Read-only sessions (Connection.setReadOnly)
Support indexes for views (probably requires materialized views)
@roadmap_1281_li
@roadmap_1281_li
Support compatibility for jdbc:hsqldb:res:
Linked tables that point to the same database should share the connection
@roadmap_1282_li
@roadmap_1282_li
In the MySQL and PostgreSQL, use lower case identifiers by default (DatabaseMetaData.storesLowerCaseIdentifiers = true)
Document SET SEARCH_PATH, BEGIN, EXECUTE, parameters
@roadmap_1283_li
@roadmap_1283_li
Provide a simple, lightweight O/R mapping tool
Complete Javadocs for ErrorCode messages and add to docs
@roadmap_1284_li
@roadmap_1284_li
Provide an Java SQL builder with standard and H2 syntax
Browser: use Desktop.isDesktopSupported and browse when using JDK 1.6
@roadmap_1285_li
@roadmap_1285_li
Trace: write OS, file system, JVM,... when opening the database
Document org.h2.samples.MixedMode
@roadmap_1286_li
@roadmap_1286_li
Trace: write dangerous operations (set log 0,...) in every case (including when opening the database)
Server: use one listener (detect if the request comes from an PG or TCP client)
@roadmap_1287_li
@roadmap_1287_li
Support indexes for views (probably requires materialized views)
Store dates as 'local'. Existing files use GMT. Use escape syntax for compatibility.
@roadmap_1288_li
@roadmap_1288_li
Linked tables that point to the same database should share the connection
Support data type INTERVAL
@roadmap_1289_li
@roadmap_1289_li
Document SET SEARCH_PATH, BEGIN, EXECUTE, parameters
NATURAL JOIN: MySQL and PostgreSQL don't repeat columns when using SELECT * ...
@roadmap_1290_li
@roadmap_1290_li
Complete Javadocs for ErrorCode messages and add to docs
Optimize SELECT MIN(ID), MAX(ID), COUNT(*) FROM TEST WHERE ID BETWEEN 100 AND 200
@roadmap_1291_li
@roadmap_1291_li
Browser: use Desktop.isDesktopSupported and browse when using JDK 1.6
Support Oracle functions: TRUNC, NVL2, TO_CHAR, TO_DATE, TO_NUMBER
@roadmap_1292_li
@roadmap_1292_li
Document org.h2.samples.MixedMode
Support setQueryTimeout (using System.currentTimeMillis in a loop; not using a thread)
@roadmap_1293_li
@roadmap_1293_li
Server: use one listener (detect if the request comes from an PG or TCP client)
Does the FTP server has problems with multithreading?
@roadmap_1329_li
@roadmap_1329_li
Document how to use IKVM
Write an article about SQLInjection (h2\src\docsrc\html\images\SQLInjection.txt)
@roadmap_1330_li
@roadmap_1330_li
Javadoc: document design patterns used
Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
@roadmap_1331_li
@roadmap_1331_li
Update Wikipedia
Send SQL Injection solution proposal to PostgreSQL, MySQL, Derby, HSQLDB,...
@roadmap_1332_li
@roadmap_1332_li
Try https://hudson.dev.java.net/
Improve LOB in directories performance
@roadmap_1333_li
@roadmap_1333_li
Don't create @~ of not translated
Web site design: http://www.igniterealtime.org/projects/openfire/index.jsp
@roadmap_1334_li
@roadmap_1334_li
Triggers for metadata tables; use for PostgreSQL catalog
HSQLDB compatibility: Openfire server uses: CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
@roadmap_1335_li
@roadmap_1335_li
Does the FTP server has problems with multithreading?
Web site: Rename Performance to Comparison [/Compatibility], move Comparison to Other Database Engines to Comparison, move Products that Work with H2 to Comparison, move Performance Tuning to Advanced Topics
@roadmap_1336_li
@roadmap_1336_li
Write an article about SQLInjection (h2\src\docsrc\html\images\SQLInjection.txt)
Translation: use ${.} in help.csv
@roadmap_1337_li
@roadmap_1337_li
Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
Translated .pdf
@roadmap_1338_li
@roadmap_1338_li
Send SQL Injection solution proposal to PostgreSQL, MySQL, Derby, HSQLDB,...
Cluster: hot deploy (adding a node on runtime)
@roadmap_1339_li
@roadmap_1339_li
Improve LOB in directories performance
Test with PostgreSQL Version 8.2
@roadmap_1340_li
@roadmap_1340_li
Web site design: http://www.igniterealtime.org/projects/openfire/index.jsp
Submit again to http://www.docjar.com/
@roadmap_1341_li
@roadmap_1341_li
HSQLDB compatibility: Openfire server uses: CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
Website: Don't use frames.
@roadmap_1342_li
@roadmap_1342_li
Web site: Rename Performance to Comparison [/Compatibility], move Comparison to Other Database Engines to Comparison, move Products that Work with H2 to Comparison, move Performance Tuning to Advanced Topics
Try again with Lobo browser (pure Java)
@roadmap_1343_li
@roadmap_1343_li
Translation: use ${.} in help.csv
Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
@roadmap_1344_li
@roadmap_1344_li
Translated .pdf
RECOVER=2 to backup the database, run recovery, open the database
@roadmap_1345_li
@roadmap_1345_li
Cluster: hot deploy (adding a node on runtime)
Recovery should work with encrypted databases
@roadmap_1346_li
@roadmap_1346_li
Test with PostgreSQL Version 8.2
Integrate tools in H2 Console
@roadmap_1347_li
@roadmap_1347_li
Submit again to http://www.docjar.com/
Corruption: new error code, add help
@roadmap_1348_li
@roadmap_1348_li
Website: Don't use frames.
Space reuse: after init, scan all storages and free those that don't belong to a live database object
@roadmap_1349_li
@roadmap_1349_li
Try again with Lobo browser (pure Java)
SysProperties: change everything to H2_...
@roadmap_1350_li
@roadmap_1350_li
Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
Use FilterIn / FilterOut putStream?
@roadmap_1351_li
@roadmap_1351_li
RECOVER=2 to backup the database, run recovery, open the database
Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
@roadmap_1352_li
@roadmap_1352_li
Recovery should work with encrypted databases
Support NOCACHE table option (Oracle)
@roadmap_1353_li
@roadmap_1353_li
Integrate tools in H2 Console
Use ant 'get' to download dependencies
@roadmap_1354_li
@roadmap_1354_li
Corruption: new error code, add help
Index usage for UPDATE ... WHERE .. IN (SELECT...)
@roadmap_1355_li
@roadmap_1355_li
Space reuse: after init, scan all storages and free those that don't belong to a live database object
The RunScript tool should support interactive mode (reading from system in). Password using a second thread.
@roadmap_1356_li
@roadmap_1356_li
SysProperties: change everything to H2_...
Add regular javadocs to the homepage.
@roadmap_1357_li
@roadmap_1357_li
Use FilterIn / FilterOut putStream?
The database should be kept open for a longer time when using the server mode.
@roadmap_1358_li
@roadmap_1358_li
Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
Javadocs: for each tool, add a copy & paste sample in the class level.
@roadmap_1359_li
@roadmap_1359_li
Support NOCACHE table option (Oracle)
Add google site search to web page.
@roadmap_1360_li
@roadmap_1360_li
Use ant 'get' to download dependencies
Javadocs: add @author tags.
@roadmap_1361_li
@roadmap_1361_li
Index usage for UPDATE ... WHERE .. IN (SELECT...)
SET LOG_SYSTEM {NATIVE|LOG4J|COMMONS|DRIVER_MANAGER}
@roadmap_1362_li
@roadmap_1362_li
The RunScript tool should support interactive mode (reading from system in). Password using a second thread.
Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
@roadmap_1363_li
@roadmap_1363_li
Add regular javadocs to the homepage.
MySQL compatibility: real SQL statements for SHOW TABLES, DESCRIBE TEST (then remove from Shell)
@roadmap_1364_li
@roadmap_1364_li
The database should be kept open for a longer time when using the server mode.
Use a default delay of 1 second before closing a database.
@roadmap_1365_li
@roadmap_1365_li
Javadocs: for each tool, add a copy & paste sample in the class level.
Maven: upload source code and javadocs as well.
@roadmap_1366_li
@roadmap_1366_li
Add google site search to web page.
Write (log) to system table before adding to internal data structures.
@roadmap_1367_li
@roadmap_1367_li
Javadocs: add @author tags.
Support very large deletes and updates.
@roadmap_1368_li
@roadmap_1368_li
SET LOG_SYSTEM {NATIVE|LOG4J|COMMONS|DRIVER_MANAGER}
Doclet (javadocs): constructors are not listed.
@roadmap_1369_li
@roadmap_1369_li
Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
@roadmap_1370_li
@roadmap_1370_li
MySQL compatibility: SHOW TABLES, DESCRIBE TEST (then remove from Shell)
Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
@roadmap_1371_li
@roadmap_1371_li
Use a default delay of 1 second before closing a database.
MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
@roadmap_1372_li
@roadmap_1372_li
Maven: upload source code and javadocs as well.
Support CREATE TEMPORARY LINKED TABLE.
@roadmap_1373_li
@roadmap_1373_li
Write (log) to system table before adding to internal data structures.
MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
@roadmap_1374_li
@roadmap_1374_li
Support very large deletes and updates.
Oracle compatibility: support NLS_DATE_FORMAT.
@roadmap_1375_li
@roadmap_1375_li
Doclet (javadocs): constructors are not listed.
Support flashback queries as in Oracle.
@roadmap_1376_li
@roadmap_1376_li
Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
Import / Export of fixed with text files.
@roadmap_1377_li
Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
@roadmap_1378_li
@roadmap_1377_h2
MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
@roadmap_1379_li
Support CREATE TEMPORARY LINKED TABLE.
@roadmap_1380_li
MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
@roadmap_1381_li
Oracle compatibility: support NLS_DATE_FORMAT.
@roadmap_1382_li
Support flashback queries as in Oracle.
@roadmap_1383_h2
Not Planned
Not Planned
@roadmap_1384_li
@roadmap_1378_li
HSQLDB (did) support this: select id i from test where i>0 (other databases don't). Supporting it may break compatibility.
HSQLDB (did) support this: select id i from test where i>0 (other databases don't). Supporting it may break compatibility.
@roadmap_1385_li
@roadmap_1379_li
String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
#Document server mode, embedded mode, web app mode, dual mode (server+embedded)
#Priority 2
@roadmap_1026_li
@roadmap_1026_li
#Updatable result sets: DatabaseMetaData.ownUpdatesAreVisible = true (for insert, delete, update) Simple solution: automatically calls 'refresh' when the result was changed. Compare with other databases.
#Automatic mode: jdbc:h2:auto: (embedded mode if possible, if not use server mode). Keep the server running until all have disconnected.
#Compression performance: don't allocate buffers, compress / expand in to out buffer
@roadmap_1042_li
@roadmap_1042_li
#System table / function: cache usage
#Connection pool manager
@roadmap_1043_li
@roadmap_1043_li
#Add a migration guide (list differences between databases)
#Implement Statement.cancel for server connections
@roadmap_1044_li
@roadmap_1044_li
#Optimization: automatic index creation suggestion using the trace file?
#Start / stop server with database URL
@roadmap_1045_li
@roadmap_1045_li
#Compression performance: don't allocate buffers, compress / expand in to out buffer
#Sequence: add features [NO] MINVALUE, MAXVALUE, CYCLE
@roadmap_1046_li
@roadmap_1046_li
#Connection pool manager
#Rebuild index functionality (other than delete the index file)
@roadmap_1047_li
@roadmap_1047_li
#Implement Statement.cancel for server connections
#Don't use deleteOnExit (bug 4513817: File.deleteOnExit consumes memory)
@roadmap_1048_li
@roadmap_1048_li
#Start / stop server with database URL
#Console: add accesskey to most important commands (A, AREA, BUTTON, INPUT, LABEL, LEGEND, TEXTAREA)
@roadmap_1049_li
@roadmap_1049_li
#Sequence: add features [NO] MINVALUE, MAXVALUE, CYCLE
#Feature: a setting to delete the the log or not (for backup)
@roadmap_1050_li
@roadmap_1050_li
#Rebuild index functionality (other than delete the index file)
#Test with Sun ASPE1_4; JEE Sun AS PE1.4
@roadmap_1051_li
@roadmap_1051_li
#Don't use deleteOnExit (bug 4513817: File.deleteOnExit consumes memory)
#Test performance again with SQL Server, Oracle, DB2
@roadmap_1052_li
@roadmap_1052_li
#Console: add accesskey to most important commands (A, AREA, BUTTON, INPUT, LABEL, LEGEND, TEXTAREA)
#Test with dbmonster (http://dbmonster.kernelpanic.pl/)
@roadmap_1053_li
@roadmap_1053_li
#Feature: a setting to delete the the log or not (for backup)
#Test with dbcopy (http://dbcopyplugin.sourceforge.net)
@roadmap_1054_li
@roadmap_1054_li
#Test with Sun ASPE1_4; JEE Sun AS PE1.4
#Find a tool to view a text file >100 MB, with find, page up and down (like less)
@roadmap_1055_li
@roadmap_1055_li
#Test performance again with SQL Server, Oracle, DB2
#Implement, test, document XAConnection and so on
@roadmap_1056_li
@roadmap_1056_li
#Test with dbmonster (http://dbmonster.kernelpanic.pl/)
#Web site: meta keywords, description, get rid of frame set
@roadmap_1057_li
@roadmap_1057_li
#Test with dbcopy (http://dbcopyplugin.sourceforge.net)
#Pluggable data type (for compression, validation, conversion, encryption)
@roadmap_1058_li
@roadmap_1058_li
#Find a tool to view a text file >100 MB, with find, page up and down (like less)
#CHECK: find out what makes CHECK=TRUE slow, move to CHECK2
@roadmap_1059_li
@roadmap_1059_li
#Implement, test, document XAConnection and so on
#Improve recovery: improve code for log recovery problems (less try/catch)
@roadmap_1060_li
@roadmap_1060_li
#Web site: meta keywords, description, get rid of frame set
#Log linear hash index changes, fast open / close
@roadmap_1061_li
@roadmap_1061_li
#Pluggable data type (for compression, validation, conversion, encryption)
#Index usage for (ID, NAME)=(1, 'Hi'); document
@roadmap_1062_li
@roadmap_1062_li
#CHECK: find out what makes CHECK=TRUE slow, move to CHECK2
#Suggestion: include jetty as Servlet Container (like LAMP)
@roadmap_1063_li
@roadmap_1063_li
#Improve recovery: improve code for log recovery problems (less try/catch)
#Trace shipping to server
@roadmap_1064_li
@roadmap_1064_li
#Log linear hash index changes, fast open / close
#Performance / server mode: use UDP optionally?
@roadmap_1065_li
@roadmap_1065_li
#Index usage for (ID, NAME)=(1, 'Hi'); document
#Version check: docs / web console (using javascript), and maybe in the library (using TCP/IP)
@roadmap_1066_li
@roadmap_1066_li
#Suggestion: include jetty as Servlet Container (like LAMP)
#Web server classloader: override findResource / getResourceFrom
@roadmap_1067_li
@roadmap_1067_li
#Trace shipping to server
#Cost for embedded temporary view is calculated wrong, if result is constant
@roadmap_1068_li
@roadmap_1068_li
#Performance / server mode: use UDP optionally?
#Comparison: pluggable sort order: natural sort
@roadmap_1069_li
@roadmap_1069_li
#Version check: docs / web console (using javascript), and maybe in the library (using TCP/IP)
#Count index range query (count(*) where id between 10 and 20)
@roadmap_1070_li
@roadmap_1070_li
#Web server classloader: override findResource / getResourceFrom
#Eclipse plugin
@roadmap_1071_li
@roadmap_1071_li
#Cost for embedded temporary view is calculated wrong, if result is constant
#Asynchronous queries to support publish/subscribe: SELECT ... FOR READ WAIT [maxMillisToWait]
@roadmap_1072_li
@roadmap_1072_li
#Comparison: pluggable sort order: natural sort
@roadmap_1073_li
#Count index range query (count(*) where id between 10 and 20)
@roadmap_1074_li
#Eclipse plugin
@roadmap_1075_li
#iReport to support H2
#iReport to support H2
@roadmap_1076_li
@roadmap_1073_li
#Implement missing JDBC API (CallableStatement,...)
#Implement missing JDBC API (CallableStatement,...)
@roadmap_1077_li
@roadmap_1074_li
#Compression of the cache
#Compression of the cache
@roadmap_1078_li
@roadmap_1075_li
#Run H2 Console inside servlet (pass-through servlet of fix the JSP / app)
#Run H2 Console inside servlet (pass-through servlet of fix the JSP / app)
@roadmap_1079_li
@roadmap_1076_li
#Include SMPT (mail) server (at least client) (alert on cluster failure, low disk space,...)
#Include SMPT (mail) server (at least client) (alert on cluster failure, low disk space,...)
@roadmap_1080_li
@roadmap_1077_li
#Drop with restrict (currently cascade is the default)
#Drop with restrict (currently cascade is the default)
@roadmap_1081_li
@roadmap_1078_li
#JSON parser and functions
#JSON parser and functions
@roadmap_1082_li
@roadmap_1079_li
#Automatic collection of statistics (auto ANALYZE)
#Automatic collection of statistics (auto ANALYZE)
@roadmap_1083_li
@roadmap_1080_li
#Server: client ping from time to time (to avoid timeout - is timeout a problem?)
#Server: client ping from time to time (to avoid timeout - is timeout a problem?)
@roadmap_1084_li
@roadmap_1081_li
#Copy database: Tool with config GUI and batch mode, extensible (example: compare)
#Copy database: Tool with config GUI and batch mode, extensible (example: compare)
@roadmap_1085_li
@roadmap_1082_li
#Document, implement tool for long running transactions using user-defined compensation statements
#Document, implement tool for long running transactions using user-defined compensation statements
@roadmap_1086_li
@roadmap_1083_li
#Support SET TABLE DUAL READONLY
#Support SET TABLE DUAL READONLY
@roadmap_1087_li
@roadmap_1084_li
#Linked schema using CSV files: one schema for a directory of files; support indexes for CSV files
#Linked schema using CSV files: one schema for a directory of files; support indexes for CSV files
@roadmap_1088_li
@roadmap_1085_li
#Don't write stack traces for common exceptions like duplicate key to the log by default
#Don't write stack traces for common exceptions like duplicate key to the log by default
@roadmap_1089_li
@roadmap_1086_li
#Setting for MAX_QUERY_TIME (default no limit?)
#Setting for MAX_QUERY_TIME (default no limit?)
@roadmap_1090_li
@roadmap_1087_li
#GCJ: what is the state now?
#GCJ: what is the state now?
@roadmap_1091_li
@roadmap_1088_li
#Use Janino to convert Java to C++
#Use Janino to convert Java to C++
@roadmap_1092_li
@roadmap_1089_li
#Reduce disk space usage (Derby uses less disk space?)
#Reduce disk space usage (Derby uses less disk space?)
@roadmap_1093_li
@roadmap_1090_li
#Events for: Database Startup, Connections, Login attempts, Disconnections, Prepare (after parsing), Web Server (see http://docs.openlinksw.com/virtuoso/fn_dbev_startup.html)
#Events for: Database Startup, Connections, Login attempts, Disconnections, Prepare (after parsing), Web Server (see http://docs.openlinksw.com/virtuoso/fn_dbev_startup.html)
@roadmap_1094_li
@roadmap_1091_li
#Optimization: Log compression
#Optimization: Log compression
@roadmap_1095_li
@roadmap_1092_li
#Support standard INFORMATION_SCHEMA tables, as defined in http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt; specially KEY_COLUMN_USAGE (http://dev.mysql.com/doc/refman/5.0/en/information-schema.html, http://www.xcdsql.org/Misc/INFORMATION_SCHEMA%20With%20Rolenames.gif)
#Support standard INFORMATION_SCHEMA tables, as defined in http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt; specially KEY_COLUMN_USAGE (http://dev.mysql.com/doc/refman/5.0/en/information-schema.html, http://www.xcdsql.org/Misc/INFORMATION_SCHEMA%20With%20Rolenames.gif)
@roadmap_1096_li
@roadmap_1093_li
#Compatibility: in MySQL, HSQLDB, /0.0 is NULL; in PostgreSQL, Derby: Division by zero
#Compatibility: in MySQL, HSQLDB, /0.0 is NULL; in PostgreSQL, Derby: Division by zero
@roadmap_1097_li
@roadmap_1094_li
#Functional tables should accept parameters from other tables (see FunctionMultiReturn) SELECT * FROM TEST T, P2C(T.A, T.R)
#Functional tables should accept parameters from other tables (see FunctionMultiReturn) SELECT * FROM TEST T, P2C(T.A, T.R)
@roadmap_1098_li
@roadmap_1095_li
#Custom class loader to reload functions on demand
#Custom class loader to reload functions on demand
@roadmap_1099_li
@roadmap_1096_li
#Test http://mysql-je.sourceforge.net/
#Test http://mysql-je.sourceforge.net/
@roadmap_1100_li
@roadmap_1097_li
#Close all files when closing the database (including LOB files that are open on the client side)
#Close all files when closing the database (including LOB files that are open on the client side)
@roadmap_1101_li
@roadmap_1098_li
#Test Connection Pool http://jakarta.apache.org/commons/dbcp
#Test Connection Pool http://jakarta.apache.org/commons/dbcp
@roadmap_1102_li
@roadmap_1099_li
#Profiler option or profiling tool to find long running and often repeated queries (using DatabaseEventListener API)
#Profiler option or profiling tool to find long running and often repeated queries (using DatabaseEventListener API)
@roadmap_1103_li
@roadmap_1100_li
#Allow custom settings (@PATH for RUNSCRIPT for example)
#Allow custom settings (@PATH for RUNSCRIPT for example)
@roadmap_1104_li
@roadmap_1101_li
#EXE file: maybe use http://jsmooth.sourceforge.net
#EXE file: maybe use http://jsmooth.sourceforge.net
@roadmap_1105_li
@roadmap_1102_li
#SELECT ... FOR READ WAIT [maxMillisToWait]
@roadmap_1106_li
#Automatically delete the index file if opening it fails
#Automatically delete the index file if opening it fails
@roadmap_1107_li
@roadmap_1103_li
#Performance: Automatically build in-memory indexes if the whole table is in memory
#Performance: Automatically build in-memory indexes if the whole table is in memory
@roadmap_1108_li
@roadmap_1104_li
#H2 Console: The webclient could support more features like phpMyAdmin.
#H2 Console: The webclient could support more features like phpMyAdmin.
@roadmap_1109_li
@roadmap_1105_li
#The HELP information schema can be directly exposed in the Console
#The HELP information schema can be directly exposed in the Console
@roadmap_1110_li
@roadmap_1106_li
#Maybe use the 0x1234 notation for binary fields, see MS SQL Server
#Maybe use the 0x1234 notation for binary fields, see MS SQL Server
@roadmap_1111_li
@roadmap_1107_li
#Support Oracle CONNECT BY in some way: http://www.adp-gmbh.ch/ora/sql/connect_by.html, http://philip.greenspun.com/sql/trees.html
#Support Oracle CONNECT BY in some way: http://www.adp-gmbh.ch/ora/sql/connect_by.html, http://philip.greenspun.com/sql/trees.html
#Write Behind Cache on SATA leads to data corruption See also http://sr5tech.com/write_back_cache_experiments.htm and http://www.jasonbrome.com/blog/archives/2004/04/03/writecache_enabled.html
#Write Behind Cache on SATA leads to data corruption See also http://sr5tech.com/write_back_cache_experiments.htm and http://www.jasonbrome.com/blog/archives/2004/04/03/writecache_enabled.html
@roadmap_1153_li
@roadmap_1149_li
#Functions with unknown return or parameter data types: serialize / deserialize
#Functions with unknown return or parameter data types: serialize / deserialize
@roadmap_1154_li
@roadmap_1150_li
#Test if idle TCP connections are closed, and how to disable that
#Test if idle TCP connections are closed, and how to disable that
@roadmap_1155_li
@roadmap_1151_li
#Try using a factory for Row, Value[] (faster?), http://javolution.org/, alternative ObjectArray / IntArray
#Try using a factory for Row, Value[] (faster?), http://javolution.org/, alternative ObjectArray / IntArray
@roadmap_1156_li
@roadmap_1152_li
#Auto-Update feature for database, .jar file
#Auto-Update feature for database, .jar file
@roadmap_1157_li
@roadmap_1153_li
#ResultSet SimpleResultSet.readFromURL(String url): id varchar, state varchar, released timestamp
#ResultSet SimpleResultSet.readFromURL(String url): id varchar, state varchar, released timestamp
@roadmap_1158_li
@roadmap_1154_li
#RANK() and DENSE_RANK(), Partition using OVER()
#RANK() and DENSE_RANK(), Partition using OVER()
@roadmap_1159_li
@roadmap_1155_li
#ROW_NUMBER (not the same as ROWNUM)
#ROW_NUMBER (not the same as ROWNUM)
@roadmap_1160_li
@roadmap_1156_li
#Partial indexing (see PostgreSQL)
#Partial indexing (see PostgreSQL)
@roadmap_1161_li
@roadmap_1157_li
#BUILD should fail if ant test fails
#BUILD should fail if ant test fails
@roadmap_1162_li
@roadmap_1158_li
#http://rubyforge.org/projects/hypersonic/
#http://rubyforge.org/projects/hypersonic/
@roadmap_1163_li
@roadmap_1159_li
#DbVisualizer profile for H2
#DbVisualizer profile for H2
@roadmap_1164_li
@roadmap_1160_li
#Add comparator (x === y) : (x = y or (x is null and y is null))
#Add comparator (x === y) : (x = y or (x is null and y is null))
@roadmap_1165_li
@roadmap_1161_li
#Try to create trace file even for read only databases
#Try to create trace file even for read only databases
@roadmap_1166_li
@roadmap_1162_li
#Add a sample application that runs the H2 unit test and writes the result to a file (so it can be included in the user app)
#Add a sample application that runs the H2 unit test and writes the result to a file (so it can be included in the user app)
@roadmap_1167_li
@roadmap_1163_li
#Count on a column that can not be null would be optimized to COUNT(*)
#Count on a column that can not be null would be optimized to COUNT(*)
@roadmap_1168_li
@roadmap_1164_li
#Table order: ALTER TABLE TEST ORDER BY NAME DESC (MySQL compatibility)
#Table order: ALTER TABLE TEST ORDER BY NAME DESC (MySQL compatibility)
@roadmap_1169_li
@roadmap_1165_li
#Backup tool should work with other databases as well
#Backup tool should work with other databases as well
@roadmap_1170_li
@roadmap_1166_li
#Console: -ifExists doesn't work for the console. Add a flag to disable other dbs
#Console: -ifExists doesn't work for the console. Add a flag to disable other dbs
@roadmap_1171_li
@roadmap_1167_li
#Maybe use Fowler Noll Vo hash function
#Maybe use Fowler Noll Vo hash function
@roadmap_1172_li
@roadmap_1168_li
#Improved full text search (supports LOBs, reader / tokenizer / filter).
#Improved full text search (supports LOBs, reader / tokenizer / filter).
@roadmap_1173_li
@roadmap_1169_li
#Performance: Update in-place
#Performance: Update in-place
@roadmap_1174_li
@roadmap_1170_li
#Check if 'FSUTIL behavior set disablelastaccess 1' improves the performance (fsutil behavior query disablelastaccess)
#Check if 'FSUTIL behavior set disablelastaccess 1' improves the performance (fsutil behavior query disablelastaccess)
#Allow execution time prepare for SELECT * FROM CSVREAD(?, 'columnNameString')
#Allow execution time prepare for SELECT * FROM CSVREAD(?, 'columnNameString')
@roadmap_1255_li
@roadmap_1249_li
#Support multiple directories (on different hard drives) for the same database
#Support multiple directories (on different hard drives) for the same database
@roadmap_1256_li
@roadmap_1250_li
#Server protocol: use challenge response authentication, but client sends hash(user+password) encrypted with response
#Server protocol: use challenge response authentication, but client sends hash(user+password) encrypted with response
@roadmap_1257_li
@roadmap_1251_li
#Support EXEC[UTE] (doesn't return a result set, compatible to MS SQL Server)
#Support EXEC[UTE] (doesn't return a result set, compatible to MS SQL Server)
@roadmap_1258_li
@roadmap_1252_li
#GROUP BY and DISTINCT: support large groups (buffer to disk), do not keep large sets in memory
#GROUP BY and DISTINCT: support large groups (buffer to disk), do not keep large sets in memory
@roadmap_1259_li
@roadmap_1253_li
#Support native XML data type
#Support native XML data type
@roadmap_1260_li
@roadmap_1254_li
#Support triggers with a string property or option: SpringTrigger, OSGITrigger
#Support triggers with a string property or option: SpringTrigger, OSGITrigger
@roadmap_1261_li
@roadmap_1255_li
#Clustering: adding a node should be very fast and without interrupting clients (very short lock)
#Clustering: adding a node should be very fast and without interrupting clients (very short lock)
@roadmap_1262_li
@roadmap_1256_li
#Support materialized views (using triggers)
#Support materialized views (using triggers)
@roadmap_1263_li
@roadmap_1257_li
#Store dates in local time zone (portability of database files)
#Store dates in local time zone (portability of database files)
@roadmap_1264_li
@roadmap_1258_li
#Ability to resize the cache array when resizing the cache
#Ability to resize the cache array when resizing the cache
@roadmap_1265_li
@roadmap_1259_li
#Automatic conversion from WHERE X>10 AND X>20 to X>20
#Automatic conversion from WHERE X>10 AND X>20 to X>20
@roadmap_1266_li
@roadmap_1260_li
#Time based cache writing (one second after writing the log)
#Time based cache writing (one second after writing the log)
@roadmap_1267_li
@roadmap_1261_li
#Check state of H2 driver for DDLUtils: https://issues.apache.org/jira/browse/DDLUTILS-185
#Check state of H2 driver for DDLUtils: https://issues.apache.org/jira/browse/DDLUTILS-185
@roadmap_1268_li
@roadmap_1262_li
#Index usage for REGEXP LIKE.
#Index usage for REGEXP LIKE.
@roadmap_1269_li
@roadmap_1263_li
#Add a role DBA (like ADMIN).
#Add a role DBA (like ADMIN).
@roadmap_1270_li
@roadmap_1264_li
#Better support multiple processors for in-memory databases.
#Better support multiple processors for in-memory databases.
@roadmap_1271_li
@roadmap_1265_li
#Access rights: remember the owner of an object. COMMENT: allow owner of object to change it.
#Access rights: remember the owner of an object. COMMENT: allow owner of object to change it.
@roadmap_1272_li
@roadmap_1266_li
#Implement INSTEAD OF trigger.
#Implement INSTEAD OF trigger.
@roadmap_1273_li
@roadmap_1267_li
#Access rights: Finer grained access control (grant access for specific functions)
#Access rights: Finer grained access control (grant access for specific functions)
@roadmap_1274_li
@roadmap_1268_li
#Support N'text'
#Support N'text'
@roadmap_1275_li
@roadmap_1269_li
#Support SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger
#Support SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger
@roadmap_1276_li
@roadmap_1270_li
#Support DESCRIBE like MySQL or Oracle (DESC|DESCRIBE {[schema.]object[@connect_identifier]})
@roadmap_1277_li
#Set a connection read only (Connection.setReadOnly)
#Set a connection read only (Connection.setReadOnly)
@roadmap_1278_li
@roadmap_1271_li
#In MySQL mode, for AUTO_INCREMENT columns, don't set the primary key
#In MySQL mode, for AUTO_INCREMENT columns, don't set the primary key
@roadmap_1279_li
@roadmap_1272_li
#Use JDK 1.4 file locking to create the lock file (but not yet by default); writing a system property to detect concurrent access from the same VM (different classloaders).
#Use JDK 1.4 file locking to create the lock file (but not yet by default); writing a system property to detect concurrent access from the same VM (different classloaders).
@roadmap_1280_li
@roadmap_1273_li
#Read-only sessions (Connection.setReadOnly)
#Read-only sessions (Connection.setReadOnly)
@roadmap_1281_li
@roadmap_1274_li
#Support compatibility for jdbc:hsqldb:res:
#Support compatibility for jdbc:hsqldb:res:
@roadmap_1282_li
@roadmap_1275_li
#In the MySQL and PostgreSQL, use lower case identifiers by default (DatabaseMetaData.storesLowerCaseIdentifiers = true)
#In the MySQL and PostgreSQL, use lower case identifiers by default (DatabaseMetaData.storesLowerCaseIdentifiers = true)
@roadmap_1283_li
@roadmap_1276_li
#Provide a simple, lightweight O/R mapping tool
#Provide a simple, lightweight O/R mapping tool
@roadmap_1284_li
@roadmap_1277_li
#Provide an Java SQL builder with standard and H2 syntax
#Provide an Java SQL builder with standard and H2 syntax
@roadmap_1285_li
@roadmap_1278_li
#Trace: write OS, file system, JVM,... when opening the database
#Trace: write OS, file system, JVM,... when opening the database
@roadmap_1286_li
@roadmap_1279_li
#Trace: write dangerous operations (set log 0,...) in every case (including when opening the database)
#Trace: write dangerous operations (set log 0,...) in every case (including when opening the database)
@roadmap_1287_li
@roadmap_1280_li
#Support indexes for views (probably requires materialized views)
#Support indexes for views (probably requires materialized views)
@roadmap_1288_li
@roadmap_1281_li
#Linked tables that point to the same database should share the connection
#Linked tables that point to the same database should share the connection
@roadmap_1289_li
@roadmap_1282_li
#Document SET SEARCH_PATH, BEGIN, EXECUTE, parameters
#Document SET SEARCH_PATH, BEGIN, EXECUTE, parameters
@roadmap_1290_li
@roadmap_1283_li
#Complete Javadocs for ErrorCode messages and add to docs
#Complete Javadocs for ErrorCode messages and add to docs
@roadmap_1291_li
@roadmap_1284_li
#Browser: use Desktop.isDesktopSupported and browse when using JDK 1.6
#Browser: use Desktop.isDesktopSupported and browse when using JDK 1.6
@roadmap_1292_li
@roadmap_1285_li
#Document org.h2.samples.MixedMode
#Document org.h2.samples.MixedMode
@roadmap_1293_li
@roadmap_1286_li
#Server: use one listener (detect if the request comes from an PG or TCP client)
#Server: use one listener (detect if the request comes from an PG or TCP client)
@roadmap_1294_li
@roadmap_1287_li
#Store dates as 'local'. Existing files use GMT. Use escape syntax for compatibility.
#Store dates as 'local'. Existing files use GMT. Use escape syntax for compatibility.
@roadmap_1295_li
@roadmap_1288_li
#Support data type INTERVAL
#Support data type INTERVAL
@roadmap_1296_li
@roadmap_1289_li
#NATURAL JOIN: MySQL and PostgreSQL don't repeat columns when using SELECT * ...
#NATURAL JOIN: MySQL and PostgreSQL don't repeat columns when using SELECT * ...
@roadmap_1297_li
@roadmap_1290_li
#Optimize SELECT MIN(ID), MAX(ID), COUNT(*) FROM TEST WHERE ID BETWEEN 100 AND 200
#Optimize SELECT MIN(ID), MAX(ID), COUNT(*) FROM TEST WHERE ID BETWEEN 100 AND 200
#Triggers for metadata tables; use for PostgreSQL catalog
#Triggers for metadata tables; use for PostgreSQL catalog
@roadmap_1335_li
@roadmap_1328_li
#Does the FTP server has problems with multithreading?
#Does the FTP server has problems with multithreading?
@roadmap_1336_li
@roadmap_1329_li
#Write an article about SQLInjection (h2\src\docsrc\html\images\SQLInjection.txt)
#Write an article about SQLInjection (h2\src\docsrc\html\images\SQLInjection.txt)
@roadmap_1337_li
@roadmap_1330_li
#Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
#Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
@roadmap_1338_li
@roadmap_1331_li
#Send SQL Injection solution proposal to PostgreSQL, MySQL, Derby, HSQLDB,...
#Send SQL Injection solution proposal to PostgreSQL, MySQL, Derby, HSQLDB,...
@roadmap_1339_li
@roadmap_1332_li
#Improve LOB in directories performance
#Improve LOB in directories performance
@roadmap_1340_li
@roadmap_1333_li
#Web site design: http://www.igniterealtime.org/projects/openfire/index.jsp
#Web site design: http://www.igniterealtime.org/projects/openfire/index.jsp
@roadmap_1341_li
@roadmap_1334_li
#HSQLDB compatibility: Openfire server uses: CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
#HSQLDB compatibility: Openfire server uses: CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
@roadmap_1342_li
@roadmap_1335_li
#Web site: Rename Performance to Comparison [/Compatibility], move Comparison to Other Database Engines to Comparison, move Products that Work with H2 to Comparison, move Performance Tuning to Advanced Topics
#Web site: Rename Performance to Comparison [/Compatibility], move Comparison to Other Database Engines to Comparison, move Products that Work with H2 to Comparison, move Performance Tuning to Advanced Topics
@roadmap_1343_li
@roadmap_1336_li
#Translation: use ${.} in help.csv
#Translation: use ${.} in help.csv
@roadmap_1344_li
@roadmap_1337_li
#Translated .pdf
#Translated .pdf
@roadmap_1345_li
@roadmap_1338_li
#Cluster: hot deploy (adding a node on runtime)
#Cluster: hot deploy (adding a node on runtime)
@roadmap_1346_li
@roadmap_1339_li
#Test with PostgreSQL Version 8.2
#Test with PostgreSQL Version 8.2
@roadmap_1347_li
@roadmap_1340_li
#Submit again to http://www.docjar.com/
#Submit again to http://www.docjar.com/
@roadmap_1348_li
@roadmap_1341_li
#Website: Don't use frames.
#Website: Don't use frames.
@roadmap_1349_li
@roadmap_1342_li
#Try again with Lobo browser (pure Java)
#Try again with Lobo browser (pure Java)
@roadmap_1350_li
@roadmap_1343_li
#Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
#Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
@roadmap_1351_li
@roadmap_1344_li
#RECOVER=2 to backup the database, run recovery, open the database
#RECOVER=2 to backup the database, run recovery, open the database
@roadmap_1352_li
@roadmap_1345_li
#Recovery should work with encrypted databases
#Recovery should work with encrypted databases
@roadmap_1353_li
@roadmap_1346_li
#Integrate tools in H2 Console
#Integrate tools in H2 Console
@roadmap_1354_li
@roadmap_1347_li
#Corruption: new error code, add help
#Corruption: new error code, add help
@roadmap_1355_li
@roadmap_1348_li
#Space reuse: after init, scan all storages and free those that don't belong to a live database object
#Space reuse: after init, scan all storages and free those that don't belong to a live database object
@roadmap_1356_li
@roadmap_1349_li
#SysProperties: change everything to H2_...
#SysProperties: change everything to H2_...
@roadmap_1357_li
@roadmap_1350_li
#Use FilterIn / FilterOut putStream?
#Use FilterIn / FilterOut putStream?
@roadmap_1358_li
@roadmap_1351_li
#Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
#Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
@roadmap_1359_li
@roadmap_1352_li
#Support NOCACHE table option (Oracle)
#Support NOCACHE table option (Oracle)
@roadmap_1360_li
@roadmap_1353_li
#Use ant 'get' to download dependencies
#Use ant 'get' to download dependencies
@roadmap_1361_li
@roadmap_1354_li
#Index usage for UPDATE ... WHERE .. IN (SELECT...)
#Index usage for UPDATE ... WHERE .. IN (SELECT...)
@roadmap_1362_li
@roadmap_1355_li
#The RunScript tool should support interactive mode (reading from system in). Password using a second thread.
#The RunScript tool should support interactive mode (reading from system in). Password using a second thread.
@roadmap_1363_li
@roadmap_1356_li
#Add regular javadocs to the homepage.
#Add regular javadocs to the homepage.
@roadmap_1364_li
@roadmap_1357_li
#The database should be kept open for a longer time when using the server mode.
#The database should be kept open for a longer time when using the server mode.
@roadmap_1365_li
@roadmap_1358_li
#Javadocs: for each tool, add a copy & paste sample in the class level.
#Javadocs: for each tool, add a copy & paste sample in the class level.
#The version number is now major.minor.micro where micro is the build number. Not all version are public, so there may be gaps in the micro. The minor changes when there is a file format change.
#The version number is now major.minor.micro where micro is the build number. Not all version are public, so there may be gaps in the micro. The minor changes when there is a file format change.
@~roadmap_1025_li
#Document server mode, embedded mode, web app mode, dual mode (server+embedded)
@~roadmap_1027_h2
#Priority 2
@~roadmap_1377_li
#Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
@~roadmap_1380_li
#MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
@~roadmap_1381_li
#Oracle compatibility: support NLS_DATE_FORMAT.
@~roadmap_1382_li
#Support flashback queries as in Oracle.
@~roadmap_1383_h2
#Not Planned
@~roadmap_1384_li
#HSQLDB (did) support this: select id i from test where i>0 (other databases don't). Supporting it may break compatibility.
@~roadmap_1385_li
#String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
roadmap_1013_li=Change the default for NULL || 'x' to NULL
roadmap_1013_li=Change the default for NULL || 'x' to NULL
roadmap_1014_h2=Priority 1
roadmap_1014_h2=Priority 1
roadmap_1015_li=Write more tests and documentation for MVCC (Multi Version Concurrency Control)
roadmap_1015_li=Write more tests and documentation for MVCC (Multi Version Concurrency Control)
roadmap_1016_li=RECOVER\=1 should automatically recover, \=2 should run the recovery tool if required
roadmap_1016_li=Row level locking
roadmap_1017_li=More tests with MULTI_THREADED\=1
roadmap_1017_li=RECOVER\=1 should automatically recover, \=2 should run the recovery tool if required
roadmap_1018_li=Test with Spatial DB in a box / JTS (http\://docs.codehaus.org/display/GEOS/SpatialDBBox)
roadmap_1018_li=More tests with MULTI_THREADED\=1
roadmap_1019_li=Optimization\:result set caching (like MySQL)
roadmap_1019_li=Test with Spatial DB in a box / JTS (http\://docs.codehaus.org/display/GEOS/SpatialDBBox)
roadmap_1020_li=Server side cursors
roadmap_1020_li=Optimization\:result set caching (like MySQL)
roadmap_1021_li=Row level locking
roadmap_1021_li=Server side cursors
roadmap_1022_li=Long running queries / errors / trace system table
roadmap_1022_li=Long running queries / errors / trace system table
roadmap_1023_li=Migrate database tool (also from other database engines)
roadmap_1023_li=Migrate database tool (also from other database engines)
roadmap_1024_li=Shutdown compact
roadmap_1024_li=Shutdown compact
roadmap_1025_li=Document server mode, embedded mode, web app mode, dual mode (server+embedded)
roadmap_1025_h2=Priority 2
roadmap_1026_li=Updatable result sets\:DatabaseMetaData.ownUpdatesAreVisible \=true (for insert, delete, update) Simple solution\:automatically calls 'refresh' when the result was changed. Compare with other databases.
roadmap_1026_li=Automatic mode\:jdbc\:h2\:auto\:(embedded mode if possible, if not use server mode). Keep the server running until all have disconnected.
roadmap_1028_li=Automatic mode\:jdbc\:h2\:auto\:(embedded mode if possible, if not use server mode). Keep the server running until all have disconnected.
roadmap_1028_li=Better space re-use in the files after deleting data\:shrink the data file without closing the database (if the end of the file is empty)
roadmap_1030_li=Better space re-use in the files after deleting data (shrink the files)
roadmap_1030_li=Full outer joins
roadmap_1031_li=Shrink the data file without closing the database (if the end of the file is empty)
roadmap_1031_li=Procedural language / script language (Javascript)
roadmap_1032_li=ParameterMetaData should return correct data type where possible (INSERT, UPDATE; supported by PostgreSQL, Derby, HSQLDB)
roadmap_1032_li=Change LOB mechanism (less files, keep index of lob files, point to files and row, delete unused files earlier, maybe bundle files into a tar file)
roadmap_1033_li=Pluggable tracing system
roadmap_1033_li=Clustering\:recovery needs to becomes fully automatic. Global write lock feature.
roadmap_1034_li=Full outer joins
roadmap_1034_li=Option for Java functions\:constant/isDeterministic to allow early evaluation when all parameters are constant
roadmap_1035_li=Procedural language / script language (Javascript)
roadmap_1035_li=Support function overloading as in Java (multiple functions with the same name, but different parameter count or data types)
roadmap_1036_li=Change LOB mechanism (less files, keep index of lob files, point to files and row, delete unused files earlier, maybe bundle files into a tar file)
roadmap_1073_li=Count index range query (count(*) where id between 10 and 20)
roadmap_1073_li=Implement missing JDBC API (CallableStatement,...)
roadmap_1074_li=Eclipse plugin
roadmap_1074_li=Compression of the cache
roadmap_1075_li=iReport to support H2
roadmap_1075_li=Run H2 Console inside servlet (pass-through servlet of fix the JSP / app)
roadmap_1076_li=Implement missing JDBC API (CallableStatement,...)
roadmap_1076_li=Include SMPT (mail) server (at least client) (alert on cluster failure, low disk space,...)
roadmap_1077_li=Compression of the cache
roadmap_1077_li=Drop with restrict (currently cascade is the default)
roadmap_1078_li=Run H2 Console inside servlet (pass-through servlet of fix the JSP / app)
roadmap_1078_li=JSON parser and functions
roadmap_1079_li=Include SMPT (mail) server (at least client) (alert on cluster failure, low disk space,...)
roadmap_1079_li=Automatic collection of statistics (auto ANALYZE)
roadmap_1080_li=Drop with restrict (currently cascade is the default)
roadmap_1080_li=Server\:client ping from time to time (to avoid timeout - is timeout a problem?)
roadmap_1081_li=JSON parser and functions
roadmap_1081_li=Copy database\:Tool with config GUI and batch mode, extensible (example\:compare)
roadmap_1082_li=Automatic collection of statistics (auto ANALYZE)
roadmap_1082_li=Document, implement tool for long running transactions using user-defined compensation statements
roadmap_1083_li=Server\:client ping from time to time (to avoid timeout - is timeout a problem?)
roadmap_1083_li=Support SET TABLE DUAL READONLY
roadmap_1084_li=Copy database\:Tool with config GUI and batch mode, extensible (example\:compare)
roadmap_1084_li=Linked schema using CSV files\:one schema for a directory of files; support indexes for CSV files
roadmap_1085_li=Document, implement tool for long running transactions using user-defined compensation statements
roadmap_1085_li=Don't write stack traces for common exceptions like duplicate key to the log by default
roadmap_1086_li=Support SET TABLE DUAL READONLY
roadmap_1086_li=Setting for MAX_QUERY_TIME (default no limit?)
roadmap_1087_li=Linked schema using CSV files\:one schema for a directory of files; support indexes for CSV files
roadmap_1087_li=GCJ\:what is the state now?
roadmap_1088_li=Don't write stack traces for common exceptions like duplicate key to the log by default
roadmap_1088_li=Use Janino to convert Java to C++
roadmap_1089_li=Setting for MAX_QUERY_TIME (default no limit?)
roadmap_1089_li=Reduce disk space usage (Derby uses less disk space?)
roadmap_1090_li=GCJ\:what is the state now?
roadmap_1090_li=Events for\:Database Startup, Connections, Login attempts, Disconnections, Prepare (after parsing), Web Server (see http\://docs.openlinksw.com/virtuoso/fn_dbev_startup.html)
roadmap_1091_li=Use Janino to convert Java to C++
roadmap_1091_li=Optimization\:Log compression
roadmap_1092_li=Reduce disk space usage (Derby uses less disk space?)
roadmap_1092_li=Support standard INFORMATION_SCHEMA tables, as defined in http\://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt; specially KEY_COLUMN_USAGE (http\://dev.mysql.com/doc/refman/5.0/en/information-schema.html, http\://www.xcdsql.org/Misc/INFORMATION_SCHEMA%20With%20Rolenames.gif)
roadmap_1093_li=Events for\:Database Startup, Connections, Login attempts, Disconnections, Prepare (after parsing), Web Server (see http\://docs.openlinksw.com/virtuoso/fn_dbev_startup.html)
roadmap_1093_li=Compatibility\:in MySQL, HSQLDB, /0.0 is NULL; in PostgreSQL, Derby\:Division by zero
roadmap_1094_li=Optimization\:Log compression
roadmap_1094_li=Functional tables should accept parameters from other tables (see FunctionMultiReturn) SELECT * FROM TEST T, P2C(T.A, T.R)
roadmap_1095_li=Support standard INFORMATION_SCHEMA tables, as defined in http\://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt; specially KEY_COLUMN_USAGE (http\://dev.mysql.com/doc/refman/5.0/en/information-schema.html, http\://www.xcdsql.org/Misc/INFORMATION_SCHEMA%20With%20Rolenames.gif)
roadmap_1095_li=Custom class loader to reload functions on demand
roadmap_1096_li=Compatibility\:in MySQL, HSQLDB, /0.0 is NULL; in PostgreSQL, Derby\:Division by zero
roadmap_1112_li=Date\:default date is '1970-01-01' (is it 1900-01-01 in the standard / other databases?)
roadmap_1113_li=http\://www.jpackage.org
roadmap_1113_li=Test and document UPDATE TEST SET (ID, NAME) \=(SELECT ID*10, NAME || '\!' FROM TEST T WHERE T.ID\=TEST.ID);
roadmap_1114_li=Version column (number/sequence and timestamp based)
roadmap_1114_li=Max memory rows / max undo log size\:use block count / row size not row count
roadmap_1115_li=Optimize getGeneratedKey\:send last identity after each execute (server).
roadmap_1115_li=Index summary is only written if log\=2; maybe write it also when log\=1 and everything is fine (and no in doubt transactions)
roadmap_1116_li=Date\:default date is '1970-01-01' (is it 1900-01-01 in the standard / other databases?)
roadmap_1116_li=Support 123L syntax as in Java; example\:SELECT (2000000000*2)
roadmap_1117_li=Test and document UPDATE TEST SET (ID, NAME) \=(SELECT ID*10, NAME || '\!' FROM TEST T WHERE T.ID\=TEST.ID);
roadmap_1117_li=Implement point-in-time recovery
roadmap_1118_li=Max memory rows / max undo log size\:use block count / row size not row count
roadmap_1118_li=Memory database\:add a feature to keep named database open until 'shutdown'
roadmap_1119_li=Index summary is only written if log\=2; maybe write it also when log\=1 and everything is fine (and no in doubt transactions)
roadmap_1119_li=Use the directory of the first script as the default directory for any scripts run inside that script
roadmap_1120_li=Support 123L syntax as in Java; example\:SELECT (2000000000*2)
roadmap_1120_li=Include the version name in the jar file name
roadmap_1121_li=Implement point-in-time recovery
roadmap_1121_li=Optimize ID\=? OR ID\=?\:convert to IN(...)
roadmap_1122_li=Memory database\:add a feature to keep named database open until 'shutdown'
roadmap_1122_li=LIKE\:improved version for larger texts (currently using naive search)
roadmap_1123_li=Use the directory of the first script as the default directory for any scripts run inside that script
roadmap_1123_li=Auto-reconnect on lost connection to server (even if the server was re-started) except if autocommit was off and there was pending transaction
roadmap_1124_li=Include the version name in the jar file name
roadmap_1124_li=The Script tool should work with other databases as well
roadmap_1125_li=Optimize ID\=? OR ID\=?\:convert to IN(...)
roadmap_1125_li=Automatically convert to the next 'higher' data type whenever there is an overflow.
roadmap_1126_li=LIKE\:improved version for larger texts (currently using naive search)
roadmap_1126_li=Throw an exception when the application calls getInt on a Long (optional)
roadmap_1127_li=Auto-reconnect on lost connection to server (even if the server was re-started) except if autocommit was off and there was pending transaction
roadmap_1127_li=Default date format for input and output (local date constants)
roadmap_1128_li=The Script tool should work with other databases as well
roadmap_1128_li=Cache collation keys for performance
roadmap_1129_li=Automatically convert to the next 'higher' data type whenever there is an overflow.
roadmap_1129_li=ValueInt.convertToString and so on (remove Value.convertTo)
roadmap_1130_li=Throw an exception when the application calls getInt on a Long (optional)
roadmap_1130_li=Support custom Collators
roadmap_1131_li=Default date format for input and output (local date constants)
roadmap_1131_li=Document ROWNUM usage for reports\:SELECT ROWNUM, * FROM (subquery)
roadmap_1132_li=Cache collation keys for performance
roadmap_1132_li=Clustering\:Reads should be randomly distributed or to a designated database on RAM
roadmap_1133_li=ValueInt.convertToString and so on (remove Value.convertTo)
roadmap_1133_li=Clustering\:When a database is back alive, automatically synchronize with the master
roadmap_1134_li=Support custom Collators
roadmap_1134_li=Standalone tool to get relevant system properties and add it to the trace output.
roadmap_1135_li=Document ROWNUM usage for reports\:SELECT ROWNUM, * FROM (subquery)
roadmap_1135_li=Support mixed clustering mode (one embedded, the other server mode)
roadmap_1136_li=Clustering\:Reads should be randomly distributed or to a designated database on RAM
roadmap_1148_li=Write Behind Cache on SATA leads to data corruption See also http\://sr5tech.com/write_back_cache_experiments.htm and http\://www.jasonbrome.com/blog/archives/2004/04/03/writecache_enabled.html
roadmap_1149_li=Functions with unknown return or parameter data types\:serialize / deserialize
roadmap_1150_li=Simplify translation ('Donate a translation')
roadmap_1150_li=Test if idle TCP connections are closed, and how to disable that
roadmap_1151_li=Option to encrypt .trace.db file
roadmap_1151_li=Try using a factory for Row, Value[] (faster?), http\://javolution.org/, alternative ObjectArray / IntArray
roadmap_1152_li=Write Behind Cache on SATA leads to data corruption See also http\://sr5tech.com/write_back_cache_experiments.htm and http\://www.jasonbrome.com/blog/archives/2004/04/03/writecache_enabled.html
roadmap_1152_li=Auto-Update feature for database, .jar file
roadmap_1153_li=Functions with unknown return or parameter data types\:serialize / deserialize
roadmap_1153_li=ResultSet SimpleResultSet.readFromURL(String url)\:id varchar, state varchar, released timestamp
roadmap_1154_li=Test if idle TCP connections are closed, and how to disable that
roadmap_1154_li=RANK() and DENSE_RANK(), Partition using OVER()
roadmap_1155_li=Try using a factory for Row, Value[] (faster?), http\://javolution.org/, alternative ObjectArray / IntArray
roadmap_1155_li=ROW_NUMBER (not the same as ROWNUM)
roadmap_1156_li=Auto-Update feature for database, .jar file
roadmap_1156_li=Partial indexing (see PostgreSQL)
roadmap_1157_li=ResultSet SimpleResultSet.readFromURL(String url)\:id varchar, state varchar, released timestamp
roadmap_1157_li=BUILD should fail if ant test fails
roadmap_1158_li=RANK() and DENSE_RANK(), Partition using OVER()
roadmap_1263_li=Store dates in local time zone (portability of database files)
roadmap_1263_li=Add a role DBA (like ADMIN).
roadmap_1264_li=Ability to resize the cache array when resizing the cache
roadmap_1264_li=Better support multiple processors for in-memory databases.
roadmap_1265_li=Automatic conversion from WHERE X>10 AND X>20 to X>20
roadmap_1265_li=Access rights\:remember the owner of an object. COMMENT\:allow owner of object to change it.
roadmap_1266_li=Time based cache writing (one second after writing the log)
roadmap_1266_li=Implement INSTEAD OF trigger.
roadmap_1267_li=Check state of H2 driver for DDLUtils\:https\://issues.apache.org/jira/browse/DDLUTILS-185
roadmap_1267_li=Access rights\:Finer grained access control (grant access for specific functions)
roadmap_1268_li=Index usage for REGEXP LIKE.
roadmap_1268_li=Support N'text'
roadmap_1269_li=Add a role DBA (like ADMIN).
roadmap_1269_li=Support SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger
roadmap_1270_li=Better support multiple processors for in-memory databases.
roadmap_1270_li=Set a connection read only (Connection.setReadOnly)
roadmap_1271_li=Access rights\:remember the owner of an object. COMMENT\:allow owner of object to change it.
roadmap_1271_li=In MySQL mode, for AUTO_INCREMENT columns, don't set the primary key
roadmap_1272_li=Implement INSTEAD OF trigger.
roadmap_1272_li=Use JDK 1.4 file locking to create the lock file (but not yet by default); writing a system property to detect concurrent access from the same VM (different classloaders).
roadmap_1273_li=Access rights\:Finer grained access control (grant access for specific functions)
roadmap_1274_li=Support compatibility for jdbc\:hsqldb\:res\:
roadmap_1275_li=Support SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger
roadmap_1275_li=In the MySQL and PostgreSQL, use lower case identifiers by default (DatabaseMetaData.storesLowerCaseIdentifiers \=true)
roadmap_1276_li=Support DESCRIBE like MySQL or Oracle (DESC|DESCRIBE {[schema.]object[@connect_identifier]})
roadmap_1276_li=Provide a simple, lightweight O/R mapping tool
roadmap_1277_li=Set a connection read only (Connection.setReadOnly)
roadmap_1277_li=Provide an Java SQL builder with standard and H2 syntax
roadmap_1278_li=In MySQL mode, for AUTO_INCREMENT columns, don't set the primary key
roadmap_1278_li=Trace\:write OS, file system, JVM,... when opening the database
roadmap_1279_li=Use JDK 1.4 file locking to create the lock file (but not yet by default); writing a system property to detect concurrent access from the same VM (different classloaders).
roadmap_1279_li=Trace\:write dangerous operations (set log 0,...) in every case (including when opening the database)
roadmap_1328_li=Does the FTP server has problems with multithreading?
roadmap_1329_li=Document how to use IKVM
roadmap_1329_li=Write an article about SQLInjection (h2\\src\\docsrc\\html\\images\\SQLInjection.txt)
roadmap_1330_li=Javadoc\:document design patterns used
roadmap_1330_li=Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
roadmap_1331_li=Update Wikipedia
roadmap_1331_li=Send SQL Injection solution proposal to PostgreSQL, MySQL, Derby, HSQLDB,...
roadmap_1332_li=Try https\://hudson.dev.java.net/
roadmap_1332_li=Improve LOB in directories performance
roadmap_1333_li=Don't create @~ of not translated
roadmap_1333_li=Web site design\:http\://www.igniterealtime.org/projects/openfire/index.jsp
roadmap_1334_li=Triggers for metadata tables; use for PostgreSQL catalog
roadmap_1334_li=HSQLDB compatibility\:Openfire server uses\:CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
roadmap_1335_li=Does the FTP server has problems with multithreading?
roadmap_1335_li=Web site\:Rename Performance to Comparison [/Compatibility], move Comparison to Other Database Engines to Comparison, move Products that Work with H2 to Comparison, move Performance Tuning to Advanced Topics
roadmap_1336_li=Write an article about SQLInjection (h2\\src\\docsrc\\html\\images\\SQLInjection.txt)
roadmap_1336_li=Translation\:use ${.} in help.csv
roadmap_1337_li=Convert SQL-injection-2.txt to html document, include SQLInjection.java sample
roadmap_1337_li=Translated .pdf
roadmap_1338_li=Send SQL Injection solution proposal to PostgreSQL, MySQL, Derby, HSQLDB,...
roadmap_1338_li=Cluster\:hot deploy (adding a node on runtime)
roadmap_1339_li=Improve LOB in directories performance
roadmap_1339_li=Test with PostgreSQL Version 8.2
roadmap_1340_li=Web site design\:http\://www.igniterealtime.org/projects/openfire/index.jsp
roadmap_1340_li=Submit again to http\://www.docjar.com/
roadmap_1341_li=HSQLDB compatibility\:Openfire server uses\:CREATE SCHEMA PUBLIC AUTHORIZATION DBA; CREATE USER SA PASSWORD ""; GRANT DBA TO SA; SET SCHEMA PUBLIC
roadmap_1341_li=Website\:Don't use frames.
roadmap_1342_li=Web site\:Rename Performance to Comparison [/Compatibility], move Comparison to Other Database Engines to Comparison, move Products that Work with H2 to Comparison, move Performance Tuning to Advanced Topics
roadmap_1342_li=Try again with Lobo browser (pure Java)
roadmap_1343_li=Translation\:use ${.} in help.csv
roadmap_1343_li=Recovery tool\:bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
roadmap_1344_li=Translated .pdf
roadmap_1344_li=RECOVER\=2 to backup the database, run recovery, open the database
roadmap_1345_li=Cluster\:hot deploy (adding a node on runtime)
roadmap_1345_li=Recovery should work with encrypted databases
roadmap_1346_li=Test with PostgreSQL Version 8.2
roadmap_1346_li=Integrate tools in H2 Console
roadmap_1347_li=Submit again to http\://www.docjar.com/
roadmap_1347_li=Corruption\:new error code, add help
roadmap_1348_li=Website\:Don't use frames.
roadmap_1348_li=Space reuse\:after init, scan all storages and free those that don't belong to a live database object
roadmap_1349_li=Try again with Lobo browser (pure Java)
roadmap_1349_li=SysProperties\:change everything to H2_...
roadmap_1350_li=Recovery tool\:bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
roadmap_1368_li=Doclet (javadocs)\:constructors are not listed.
roadmap_1369_li=Fluent API for tools\:Server.createTcpServer().setPort(9081).setPassword(password).start();
roadmap_1369_li=Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
roadmap_1370_li=MySQL compatibility\:SHOW TABLES, DESCRIBE TEST (then remove from Shell)
roadmap_1370_li=Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
roadmap_1371_li=Use a default delay of 1 second before closing a database.
roadmap_1371_li=MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
roadmap_1372_li=Maven\:upload source code and javadocs as well.
roadmap_1375_li=Doclet (javadocs)\:constructors are not listed.
roadmap_1375_li=Support flashback queries as in Oracle.
roadmap_1376_li=Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
roadmap_1376_li=Import / Export of fixed with text files.
roadmap_1377_li=Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
roadmap_1377_h2=Not Planned
roadmap_1378_li=MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
roadmap_1378_li=HSQLDB (did) support this\:select id i from test where i>0 (other databases don't). Supporting it may break compatibility.