InstantDB Project
About InstantDB
Project Mail Lists
Short History
Reporting Bugs
Screen Shots
3rd Party Examples
FAQs

Software
Downloads
Documentation
CVS Repositories
Roadmap
License

About Enhydra.org
Who We Are
News, Articles & Events
Getting Involved
Contact Us

Community
Demos
Contributions
Resources
Case Studies
On The Edge! -NEW-
Commercial Vendors

InstantDB Release Notes

These release notes summarize new features and fixed bugs for all releases of InstantDB.

Version 3.13, 26th Feb 2000

  • Now accepts SELECT tableName.* from table...
  • LIKE tests now allow arbitrary expressions rather than just column comparisons.
  • Alternative locations for new tables can now be specified. Indexes are created in same place as alternate location tables.
  • SET EXPORT no allows a DELIMITER (delim) clause.
  • Statement.setQueryTimeout() has now been fully implemented.
  • preparedStatement.setXXXXstream() functions now implemented.
  • New property "timerCheck" added. Defines interval at which timeouts are checked.
  • New property "prepareIgnoresEscapes" added. Allows PreparedStatement.setString() to accept strings containing "\" (backslash) to be parsed without interpreting escape characters.

  Previous Release

     Basic

     Advanced      Reference
  • Non-updatable ResultSets now do a commit in auto-commit mode as soon as the results have been fetched. i.e. Table locks are freed even if the whole results set has not been read.
  • Minor parsing enhancement to allow quoted: "table"."column" as valid syntax.
  • Minor enhancement to JDBCAppl to allow <ENTER> after URL or SQL entry.
  • LIKE clauses did not handle \\ correctly. Fixed.
  • GROUP BY did not execute correctly on second run of a prepared statement. Fixed.
  • SMALLCHAR did not process NULLs correctly. Fixed.
  • Statement.setMaxRows(int) would truncate results sets prematurely even if an ORDER BY was included. This made it impossible to fetch the "top" or "bottom" set of values from a table. Fixed.
  • The read ahead cache was not updated when rows got deleted from large tables. Fixed.
  • UNIQUE PRIMARY KEYs would sometimes allow duplicates. Fixed.
  • Adding a binary column using ALTER TABLE caused an exception. Fixed.
  • Bug when updating binary encrypted fields. Fixed.
  • Index builds which utilise a large number of similar keys were very slow. Fixed.
  • Table names appearing in the SELECT part of GROUP BY expressions sometimes caused parsing errors. Fixed.

Version 3.12, 11th Dec 1999

  • Bug in index recovery could make recovery very slow. Fixed.
  • Illegal dates were accepted. Fixed
  • A bug in the Microsoft virtual machine causes certain floating point comparisons to produce erroneous results. A workaround has been put in place.
  • Dropping the final column in a table would result in illegal table headers. Fixed.
  • TEXT columns in IN phrases were not properly evaluated. Fixed.
  • Temporary tables used in empty GROUP BY sets were not created. Fixed.
  • Optimised WHERE clause could omit first matching row. Fixed.

Version 3.11, 27th Nov 1999

  • Added single character data type SMALLCHAR.
  • Major improvements in query performance where tables are not indexed and a WHERE clause testing for equality is included.
  • Major improvements in query performance of GROUP BY queries.
  • GROUP BY clause has been extended to allow simple function expressions as well as column names.
  • Added an INTO clause in SELECT statement.
    e.g. SELECT a,b INTO new_table FROM old_table WHERE C > 1.
  • New property, searchDeletes (default 0). Default value should speed up some UPDATE statements. Setting searchDeletes=1 results in old behaviour which gives slower updates, but more compact tables.
  • Readonly databases now use more compact indexes (half the size in memory).
  • Index tables are now automatically saved after being recovered.
  • If a table is recovered then all indexes on that table are also receovered, even if they are marked as up to date.
  • GROUP BY ... HAVING caused an exception if COUNT(*) used in having clause. Fixed.
  • Failing to specify all four table paths could cause an exception. Fixed.
  • PreparedStatement selects using parameterised IN clauses failed. Fixed.
  • Parameterless user defined functions caused an exception. Fixed.
  • PreparedStatements did only allowed setString on IN clauses. Now all setXXX methods should work on IN clauses.

Version 3.10, 30th Oct 1999

  • Added the SQL extension to allow: UPDATE tableName SET col = (SELECT...). Currently doesn't allow references to the updated table though.
  • All calls to System.gc() made by InstantDB have now been removed. It is now up to the application to decide if and when to make gc calls.
  • Small negative currency values were printed out wrong. Fixed.
  • Added a SET DEFAULT_USERNAME uname [DEFAULT_PASSWORD pword] statement. This sets the default username and password for imports from other JDBC data sources.
  • Relative URLs for specifying database properties files should now work.
  • The outer join syntax did not allow for pseudo tablenames. Fixed.
  • IMPORTs from files now search the database properties directory and allow files to use fully qualified path names.
  • Currency columns now accept values without the "." in them. "$300" is interpreted as three hundred dollars. "300" is iterpreted as three hundred cents (as before).
  • The interaction between outer joins and WHERE clauses was incorrect. Row selection was done by filtering on the WHERE and then adding and extending unmatched rows without further regard to the WHERE clause. Extended rows must now match the WHERE condition.
  • Added SETINCREMENT_BASE {<base>|MAX} ON{<table>.<column> | ALL} ao that auto increment columns can use different base values.
  • Now throws an exception when invalid escape characters are detected in strings (e.g. "abc\kde").
  • ResultSetMetaData.isAutoIncrement and isNullable have been implemented correctly.
  • UNIQUE table constraints now constrain columns collectively rather than individually.
  • db.TableEncrypt has been extended to allow for the encryption of binary columns.

Version 3.0, 30th Sep 1999

  • Added support for JDBC 2.0 features including: scrollable results sets and batch processing.
  • Numerous additions to sample.java to make use of JDBC 2.0 features and to support database export and import.
  • Functions: UPPER, LOWER, ABS, LENGTH, TO_DATE and TO_NUMBER added.
  • Added support for user defined functions.
  • Support for OUTER joins added.
  • Date accepts "current time" (full timestamp) as well as "now" (format dependent).
  • New property: nowMeansTime. If set to 1 (one) then "now" always places a full timestamp in a date column, regardless of its date format.
  • Added missing getTimestamp and getTime methods.
  • Non-standard method: Object idbConnection.getLastValueInserted(String tableName, String columnName) has been added.
  • Recovery message no longer implies database corruption. Default recovery policy is now to prompt the user.
  • Serializable objects can now be saved in Binary columns.
  • TEXT columns now do lexicographical comparisons rather than binary comparisons.
  • Binary deletes and updates closed the transaction too early with unpredictable results. Fixed.
  • Index tables attempted to write back in readonly mode. Fixed.
  • ALTER TABLE n ADD UNIQUE cols failed to add the uniqueness flag correctly. Fixed.
  • ResultSetMetaData.getDisplaySize returned too small a value for integers. Fixed.
  • Index based queries could sometimes include/exclude erroneous bordering values. Fixed.
  • Exceptions when re-using a deleted row would leave the row marked as valid. Fixed.
  • Subselects which included a GROUP BY clause would be incorrectly parsed. Fixed.
  • Long columns could not be dropped via ALTER TABLE. Fixed.
  • Exceptions when an index was being rebuilt would make the database un-openable. Invalid indexes are now dropped during recovery with a message to stdout.

Version 2.41, 22nd Aug 1999

  • BlobColumns created with 2.41 couldn't be reopened. Fixed.
  • Blobcolumns couldn't be used with readonly databases. Fixed.
  • Limited DECIMAL and NUMERIC data type support.

Version 2.4, 26th July 1999

    • Default recovery behaviour is now to not perform an automatic recovery. Database property recoveryPolicy added to change default behaviour.
    • Recognises noBanner environment variable in order to suppress the opening copyright message.
    • Now allows subselects in the FROM clause of SELECT statements.
    • MAX (string column) was failing. Fixed.
    • Extensive reorganisation of web site and documenation.

    Version 2.35, 19th July 1999

    • If a column uses a DATE format that does not include hours, then the column will now store only the date, not the date and time as it did previously. This enables the NOW keyword to be used to create date only entries and to query such columns using date only values or the NOW keyword.
    • Facilities to specify usernames and passwords while importing from external data sources have been added.
    • Expressions involving currency columns can now handle more natural decimal usage.
    • Queries involving EXISTS did not always provide correct results. Fixed.
    • Many sub-selects and correlated sub-selects did not produce the correct results. Fixed.
    • NULL values were not properly handled in summary queries. Fixed.

    Version 2.34, 12th July 1999

    • Substantial performance improvements to GROUP BY.
    • TEXT and LONGCHAR types now assume that only text is included, i.e. they do not attempt to interpret numbers or filenames.
    • The fastUpdate property now applies to BLOB files as well as main table files.
    • ResultsSets being closed by the finalizer thread was still causing lockups. Made even more resistant to this problem from this release.

    Version 2.33, 6th July 1999

    • ResultSets which were closed by the finalizer thread would sometimes lock up. This release attempts to make InstantDB less sensitive to this problem.
    • Connections in the READ_UNCOMMITTED transaction mode did not lock access to the disk read ahead buffer during object instantiation. The result was an unpredictable series of IO problems. Fixed.
    • Index files are now closed while not in use. This can substantially reduce the number of file handles required to access a database. This should help users experiencing difficulties where they must operate in an environment where the number of file handles is limited.

    Version 2.32, 27th June 1999

    • Temporary tables are now allocated in a thread safe manner.
    • idbConnection.setTableEncryption and BlobColumn.blobToString had been accidentally obfuscated. Fixed.
    • Various case errors in the documentation fixed.
    • ORDER BY tree rebalancing was actually slowing down many queries. Improved.
    • New property, ignoreKeywords, has been added. This allows elected InstantDB reserved words to be "un-reserved" so that they can be used as table or column names.

    Version 2.31, 30th May 1999

    • LIKE expressions can now be used with any data type, not just strings.
    • Since the introducution of temporary tables, InstantDB has been creating all tables with 100% caching. This could lead to memory problems. Fixed.
    • A new database property, altStringHashing has been introduced. This allows the change in String hashing from JDK 1.1 TO 1.2 to be overcome. See FAQ for details.
    • DatabaseMetaData.getTables() now creates temporary tables in a thread safe manner.
    • Subselects in UPDATE calls were not parsed correctly. Fixed.

    Version 2.3, 24th May 1999

    • SQLBuilder query window made larger by default. Commented alternative import lines in code.
    • The BTree sort used during ORDER BY now attempts regular tree rebalancing. Should help when the data is partially ordered.
    • idbTrigger.getConnection(), idbTrigger.preUpdate() and idbConnection.getProperties() added.
    • New SQL command: SHUTDOWN [NOWAIT] added.
    • InstantSQL and ObjectToRdbms removed.
    • JDBCmain now takes an optional URL as a parameter at startup.
    • JDBCAppl now loads the Rmi and bridge drivers as well as idbDriver.
    • Implements own String hashing to get around the 1.1/1.2 String hash problem (see FAQ for details).
    • SET EXPORT "null" now shuts down the previous export file allowing it to be manipulated by other processes.
    • INSERT and UPDATE didn't accept table.col style column references. Fixed.
    • CSVDELIMITED exports space padded the final field. Fixed.
    • EXPORT command now has an optional QUOTE <string expr> clause. The QUOTE clause allows each field output to be quoted using the given character. e.g. SET EXPORT "mylog.txt" CSVDELIMITED QUOTE "\"", would put double quotes around each field as was output.
    • New database property: likeIgnoreCase. Setting this to 1 (one) causes all LIKE string comparsions to be case insensitive.

    Version 2.2, 1st May 1999

    • UPDATEs on AUTO INCREMENT columns after an ALTER TABLE caused values to accidentally increment. Fixed.
    • Bug in DBSimpleInterface.java. Fixed.
    • Doing a buffered import from an empty source would cause an IO exception. Fixed.
    • LONGVARBINARY data type caused an exception. Fixed.
    • ResultSet.getBinaryStream() caused an exception when an empty results set was returned. Fixed.
    • Some database controls supplied with certain IDEs would call ResultSet.close() on an already closed ResultSet. InstantDB threw an exception on this, which is correct. Nevertheless, it still prevented InstantDB being used with those controls. InstantDB now silently ignores multiple close calls on the same ResultSet.

    Version 2.1, 11th April 1999

    • SMALLINT and TINYINT pseudonyms added for INTEGER and BYTE respectively.
    • Accepts an optional length parameter on binary fields. This is for compatability with other SQL implementations only and is currently ignored.
    • Uses a Date column's own date format when parsing dates. Only if this fails will alternative date formats be tried.
    • Now accepts date/time escape sequences in UPDATE statements.
    • Negative values could not be read into currency columns. Fixed.
    • A single character question mark when used as a string literal (i.e. "?") was being misinterpreted as a parameter in prepared statements. Fixed.

    Version 2.00, 28th March 1999

    • Added support for multiple simultaneous database access for the first time.
    • Optimisation of integer equality testing.
    • GROUP BY ... HAVING added.
    • Support for database encryption added.
    • Results sets now held in memory by default. resultOnDisk property added to overide this default behaviour.
    • Many new DatabaseMetaData calls added. This should ease compatability with many common IDE database controls.
    • CREATE INDEX on an unknown table caused a NullPointerException. Fixed.
    • Updated RmiJdbc installation instructions.
    • Can create temporary tables using CREATE TEMPORARY TABLE.
    • Added new statement: SET table AUTO INCREMENT {ON|OFF}.
    • Removed the sqlsyntax.txt file.

    Version 1.91, 1st January 1999

    • Added support for imports from other JDBC data sources.
    • Class files now run under the released Java TM 2 (formerly 1.2) JVM.
    • DatabaseMetaData.getTables() now distinguishes between system and user tables.
    • Buffered IMPORTs speeded up to make use of the write buffer for row lookahead during index construction.
    • Table locking was not always properly ordered in auto-commit statements. This could lead to deadlocks. Fixed.