</li><li>DISTINCT: support large result sets by sorting on all columns (additionally) and then removing duplicates.
</li><li>Support a special trigger on all tables to allow building a transaction log reader.
</li><li>Support a special trigger on all tables to allow building a transaction log reader.
</li><li>File system with a background writer thread; test if this is faster
</li><li>File system with a background writer thread; test if this is faster
</li><li>Better document the source code (high level documentation).
</li><li>Better document the source code (high level documentation).
...
@@ -228,7 +225,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -228,7 +225,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Improve documentation of access rights.
</li><li>Improve documentation of access rights.
</li><li>Support opening a database that is in the classpath, maybe using a new file system. Workaround: detect jar file using getClass().getProtectionDomain().getCodeSource().getLocation().
</li><li>Support opening a database that is in the classpath, maybe using a new file system. Workaround: detect jar file using getClass().getProtectionDomain().getCodeSource().getLocation().
</li><li>Remember the user defined data type (domain) of a column.
</li><li>Remember the user defined data type (domain) of a column.
</li><li>MVCC: support multi-threaded kernel with multi-version concurrency.
</li><li>Auto-server: add option to define the port range or list.
</li><li>Auto-server: add option to define the port range or list.
</li><li>Support Jackcess (MS Access databases)
</li><li>Support Jackcess (MS Access databases)
</li><li>Built-in methods to write large objects (BLOB and CLOB): FILE_WRITE('test.txt', 'Hello World')
</li><li>Built-in methods to write large objects (BLOB and CLOB): FILE_WRITE('test.txt', 'Hello World')
...
@@ -254,7 +250,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -254,7 +250,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
</li><li>Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
</li><li>Support NOCACHE table option (Oracle).
</li><li>Support NOCACHE table option (Oracle).
</li><li>Support table partitioning.
</li><li>Support table partitioning.
</li><li>Add regular javadocs (using the default doclet, but another css) to the homepage.
</li><li>The database should be kept open for a longer time when using the server mode.
</li><li>The database should be kept open for a longer time when using the server mode.
</li><li>Javadocs: for each tool, add a copy & paste sample in the class level.
</li><li>Javadocs: for each tool, add a copy & paste sample in the class level.
</li><li>Javadocs: add @author tags.
</li><li>Javadocs: add @author tags.
...
@@ -264,7 +259,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -264,7 +259,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Write (log) to system table before adding to internal data structures.
</li><li>Write (log) to system table before adding to internal data structures.
</li><li>Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
</li><li>Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
</li><li>Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object) (with test case).
</li><li>Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object) (with test case).
</li><li>MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular b-tree index solves the problem).
</li><li>Oracle compatibility: support NLS_DATE_FORMAT.
</li><li>Oracle compatibility: support NLS_DATE_FORMAT.
</li><li>Support for Thread.interrupt to cancel running statements.
</li><li>Support for Thread.interrupt to cancel running statements.
</li><li>Cluster: add feature to make sure cluster nodes can not get out of sync (for example by stopping one process).
</li><li>Cluster: add feature to make sure cluster nodes can not get out of sync (for example by stopping one process).
...
@@ -298,7 +292,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -298,7 +292,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Support TRUNCATE .. CASCADE like PostgreSQL.
</li><li>Support TRUNCATE .. CASCADE like PostgreSQL.
</li><li>Fulltext search: lazy result generation using SimpleRowSource.
</li><li>Fulltext search: lazy result generation using SimpleRowSource.
</li><li>Fulltext search: support alternative syntax: WHERE FTL_CONTAINS(name, 'hello').
</li><li>Fulltext search: support alternative syntax: WHERE FTL_CONTAINS(name, 'hello').
</li><li>MySQL compatibility: support REPLACE, see http://dev.mysql.com/doc/refman/6.0/en/replace.html and issue 73.
</li><li>MySQL compatibility: support INSERT INTO table SET column1 = value1, column2 = value2
</li><li>MySQL compatibility: support INSERT INTO table SET column1 = value1, column2 = value2
</li><li>Docs: add a one line description for each functions and SQL statements at the top (in the link section).
</li><li>Docs: add a one line description for each functions and SQL statements at the top (in the link section).
</li><li>Javadoc search: weight for titles should be higher ('random' should list Functions as the best match).
</li><li>Javadoc search: weight for titles should be higher ('random' should list Functions as the best match).
...
@@ -319,7 +312,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -319,7 +312,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>MySQL compatibility: for auto_increment columns, convert 0 to next value (as when inserting NULL).
</li><li>MySQL compatibility: for auto_increment columns, convert 0 to next value (as when inserting NULL).
</li><li>Optimization for multi-column IN: use an index if possible. Example: (A, B) IN((1, 2), (2, 3)).
</li><li>Optimization for multi-column IN: use an index if possible. Example: (A, B) IN((1, 2), (2, 3)).
</li><li>Optimization for EXISTS: convert to inner join or IN(..) if possible.
</li><li>Optimization for EXISTS: convert to inner join or IN(..) if possible.
</li><li>Functions: support hashcode(value); cryptographic and fast
</li><li>Serialized file lock: support long running queries.
</li><li>Serialized file lock: support long running queries.
</li><li>Network: use 127.0.0.1 if other addresses don't work.
</li><li>Network: use 127.0.0.1 if other addresses don't work.
</li><li>Pluggable network protocol (currently Socket/ServerSocket over TCP/IP) - see also TransportServer with master slave replication.
</li><li>Pluggable network protocol (currently Socket/ServerSocket over TCP/IP) - see also TransportServer with master slave replication.
...
@@ -352,7 +344,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -352,7 +344,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Compatibility: Java functions with SQLJ Part1 http://www.acm.org/sigmod/record/issues/9912/standards.pdf.gz
</li><li>Compatibility: Java functions with SQLJ Part1 http://www.acm.org/sigmod/record/issues/9912/standards.pdf.gz
</li><li>Compatibility: Java functions with SQL/PSM (Persistent Stored Modules) - need to find the documentation.
</li><li>Compatibility: Java functions with SQL/PSM (Persistent Stored Modules) - need to find the documentation.
</li><li>CACHE_SIZE: automatically use a fraction of Runtime.maxMemory - maybe automatically the second level cache.
</li><li>CACHE_SIZE: automatically use a fraction of Runtime.maxMemory - maybe automatically the second level cache.
</li><li>Support date/time/timestamp as documented in http://en.wikipedia.org/wiki/ISO_8601
</li><li>PostgreSQL compatibility: when in PG mode, treat BYTEA data like PG.
</li><li>PostgreSQL compatibility: when in PG mode, treat BYTEA data like PG.
</li><li>Support =ANY(array) as in PostgreSQL. See also http://www.postgresql.org/docs/8.0/interactive/arrays.html
</li><li>Support =ANY(array) as in PostgreSQL. See also http://www.postgresql.org/docs/8.0/interactive/arrays.html
</li><li>IBM DB2 compatibility: support PREVIOUS VALUE FOR sequence.
</li><li>IBM DB2 compatibility: support PREVIOUS VALUE FOR sequence.
...
@@ -380,7 +371,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -380,7 +371,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Issue 126: The index name should be "IDX_" plus the constraint name unless there is a conflict, in which case append a number.
</li><li>Issue 126: The index name should be "IDX_" plus the constraint name unless there is a conflict, in which case append a number.
</li><li>Issue 127: Support activation/deactivation of triggers
</li><li>Issue 127: Support activation/deactivation of triggers
</li><li>Issue 130: Custom log event listeners
</li><li>Issue 130: Custom log event listeners
</li><li>Issue 131: IBM DB2 compatibility: sysibm.sysdummy1
</li><li>Issue 132: Use Java enum trigger type.
</li><li>Issue 132: Use Java enum trigger type.
</li><li>Issue 134: IBM DB2 compatibility: session global variables.
</li><li>Issue 134: IBM DB2 compatibility: session global variables.
</li><li>Cluster: support load balance with values for each server / auto detect.
</li><li>Cluster: support load balance with values for each server / auto detect.
...
@@ -430,7 +420,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -430,7 +420,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Maybe use PhantomReference instead of finalize.
</li><li>Maybe use PhantomReference instead of finalize.
</li><li>Database file name suffix: should only have one dot by default. Example: .h2db
</li><li>Database file name suffix: should only have one dot by default. Example: .h2db
</li><li>Issue 196: Function based indexes
</li><li>Issue 196: Function based indexes
</li><li>ALTER TABLE ... ADD COLUMN IF NOT EXISTS columnName.
</li><li>Fix the disk space leak (killing the process at the exact right moment will increase
</li><li>Fix the disk space leak (killing the process at the exact right moment will increase
the disk space usage; this space is not re-used). See TestDiskSpaceLeak.java
the disk space usage; this space is not re-used). See TestDiskSpaceLeak.java
</li><li>ROWNUM: Oracle compatibility when used within a subquery. Issue 198.
</li><li>ROWNUM: Oracle compatibility when used within a subquery. Issue 198.
...
@@ -464,7 +453,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -464,7 +453,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
or to prevent to login with the same username and password from different IPs.
or to prevent to login with the same username and password from different IPs.
Possibly using the DatabaseEventListener API, or a new API.
Possibly using the DatabaseEventListener API, or a new API.
</li><li>Compatibility for data type CHAR (Derby, HSQLDB). Issue 212.
</li><li>Compatibility for data type CHAR (Derby, HSQLDB). Issue 212.
</li><li>Compatibility with MySQL TIMESTAMPDIFF. Issue 209.
</li><li>Optimizer: use a histogram of the data, specially for non-normal distributions.
</li><li>Optimizer: use a histogram of the data, specially for non-normal distributions.
</li><li>Trigger: allow declaring as source code (like functions).
</li><li>Trigger: allow declaring as source code (like functions).
</li><li>User defined aggregate: allow declaring as source code (like functions).
</li><li>User defined aggregate: allow declaring as source code (like functions).
...
@@ -510,8 +498,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
...
@@ -510,8 +498,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Single-column primary key values are always stored explicitly. This is not required.
</li><li>Single-column primary key values are always stored explicitly. This is not required.
</li><li>Compatibility with MySQL: support CREATE TABLE TEST(NAME VARCHAR(255) CHARACTER SET UTF8).
</li><li>Compatibility with MySQL: support CREATE TABLE TEST(NAME VARCHAR(255) CHARACTER SET UTF8).
</li><li>CALL is incompatible with other databases because it returns a result set, so that CallableStatement.execute() returns true.
</li><li>CALL is incompatible with other databases because it returns a result set, so that CallableStatement.execute() returns true.
</li><li>Optimization for large lists for column IN(1, 2, 3, 4,...) - currently an list is used, could potentially use a hash set
(maybe only for a part of the values - the ones that can be evaluated).
</li><li>Compatibility for ARRAY data type (Oracle: VARRAY(n) of VARCHAR(m); HSQLDB: VARCHAR(n) ARRAY; Postgres: VARCHAR(n)[]).
</li><li>Compatibility for ARRAY data type (Oracle: VARRAY(n) of VARCHAR(m); HSQLDB: VARCHAR(n) ARRAY; Postgres: VARCHAR(n)[]).