|
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.
|
|
|