2000-06-03
1.42: Fixed errors in server version (port number); missing keywords;
parsing nested queries; support for LONGTEXT (in Transfer); parsing floating
point numbers; PreparedStatement.setObject; foreign keys; misspelled command
(REFERENCIAL -> REFERENTIAL); Transaction error when using UPDATE
2000-03-27
1.41: Fixed an error in the ASCII to Unicode conversion. Unicode
characters bigger than 0xff where not converted correctly (Standalone
& Client/Server).
2000-02-22
1.3: [JDK 1.3 RC 1] After creating a database, the second connect
attempt returned a NullPointerException. Workaround implemented.
2000-01-25
1.3: The hidden primary key column of cached tables that have no
primary key was not saved. Fixed.
New and improved Tools
There are two new tools: Database Manager and
Transfer Tool. Database Manager is a much improved
version of the Query Tool, and Transfer Tool is a
application that can transfer data from one JDBC
source to another. Both tools are not bound to
Hypersonic SQL, they can be used with any database
that has the JDBC interface. The other tools
(WebServer, Servlet,...) has also been improved.
Improved File System
The cache algorithm for saving records to file was
re-implemented. The new algorithm is much faster and
requires less disk access. The maximum size of the
.script file can be set now, if the limit is reached
the database is automatically closed and re-opened
(this shrinks the .script file). The .index file
is no longer required. Closing the database is about
double as fast. Read-only databases and connectios
are now possible.
Changed the Package and Class names
The package name is now 'org.hsql'. The classes where
also renamed. The driver class is now 'org.hsql.jdbcDriver'.
This renaming was necessary to conform the package naming
conventions.
Improved SQL Syntax and JDBC interface
New features are: MaxRows, BETWEEN .. AND .., auto-number
(IDENTITY) column, SELECT .. INTO, MINUS, INTERSECT.
Compatibility was improved: != (<>), UPPER (UCASE), LOWER (LCASE), SUBSTRING(String,start[,length]), DOUBLE [PRECISION],
ROLLBACK [WORK], COMMIT [WORK]. It is now possible to switch
off the case sensitivity for Strings. A PUBLIC user was added.
Bug Fixes
There where some bugs in the parser (complex queries failed
in some cases). Errors in the write/read functions where
fixed. Unnecessary reserved names where removed. The permissions
function (GRANT, REVOKE) conform now the standard SQL.
The syntax for outer join is corrected: LEFT [OUTER] JOIN
instead of OUTER JOIN.
Documentation
The JDBC interface is now documented. The documentation was
improved in almost all parts. A 'How To' documentation for
JBuilder is included.
How to Upgrade from the old to the new version
A detailed description is included in the 'How To / FAQ' page
on the internet.
Extended SQL Syntax
A new parser and a new query engine makes Hypersonic SQL
now almost SQL 92 Entry Level compatible. New features
include OUTER JOIN, INNER JOIN, EXISTS, correlated
subqueries. Constraints are now allowed in CREATE TABLE
statements. Only a few features are still missing, like
HAVING, ANY, ALL, BETWEEN.
Functions and Formulas
Formulas are now type safe. New functions have been
implemented: CONVERT, LCASE, UCASE, LENGTH, LEFT,
RIGHT, MID, SUBSTRING, CURDATE, CURTIME, NOW, IFNULL,
CASEWHEN, BITOR, BITAND, MOD.
Improved speed
Tests shows that the new query engine is faster than
the old one.
Documentation
The SQL Syntax is now better documented.
No database size limitation any more
The indexes are now also cached so that the size of
a database is no longer restricted to the available
memory. In the persistence part where made big
modifications, for example the '*.script' file is now
human-readable. Recovery is improved. Opening databases
with cached tables is now much faster. Unfortunately,
the database file format is not compatible to the
older version.
Data type 'Object'
It is possible to save Java Objects in the database
using the data type 'Object'.
New SQL commands
Some new SQL syntax has be added. It is now possible
to use values in SELECT: SELECT 1 FROM ADDRESS.
There are also some non-standard SQL commands like
- SHUTDOWN [IMMEDIATELY] to close the database
- SCRIPT 'filename' will create full database script file
- CREATE USER ... ADMIN to create another administrator
Improved the JDBC interface
Except for CallableStatement and some DatabaseMetaData
functions, there are now all JDBC 1.2 functions
implemented. ResultSet does now automatically convert
data types if possible. All get/set*Stream functions
are implemented.
Bugfixes and Self Testing
Lots of bugfixes where made, for example in
ResultSet, in PreparedStatement, but also in the
main database engine. SelfTest and Debug was extended,
there is now additionally profiling and performance
data created. Remember that CodeSwither and Debug can
be used for other applications as well.
Plans
For the near future, high priority has extending the
SQL syntax (EXISTS, correlated queries, formulas),
documentation and the client / server version.
Added support for SQL commands
- GROUP BY
- SELECT DISTINCT
- UNION ALL
- AVG()
- WHERE ... IN (SELECT...)
Formulas
It is now possible to use formulas where a value
is expected. Examples:
- UPDATE ... SET Column=[formula]
- INSERT INTO ... VALUES ([formula],...)
- ... WHERE Column=[formula]
Formulas can be SELECT statments, string operations, integer operations or any combination.
Simplification of versions and modes
It is no longer necessary to use the CodeSwitcher
to produce different versions and modes.
CREATE CACHED TABLE... is now used to create a table
where the data records are stored in the database file.
Bugfixes and Self Testing
Now a self-testing class is improved so that
a huge part of the code is included in the
tests. Lines of code that are not tested
by the self testing program are listed out.
The self-testing program will be improved
so that almost all lines of code are covered.
Copyright
Updated the copyright so it can be used
also in commercial products.
A lot of new functionality has been added to the database:
Transactions (COMMIT, ROLLBACK)
Access rights (passwords, users, rights)
Improved SQL syntax
- UNION SELECT, SELECT FROM (SELECT...)
- LIKE ESCAPE, IN ()
- INSERT INTO ... SELECT
- NOT NULL
- Implemented Java SQL escape processing {}
Improved JDBC interface
Fixed various bugs
Added copyright (or better 'copyleft') remark
Improved JDBC Interface
The interface is extended in almost all parts. The compatibility to other databases is greatly improved. The
DatabaseMetaData class is extended.
Improved SQL syntax
It is now possible to use complex conditions with AND, OR, NOT, () in the WHERE clause of a SELECT statement. All comparisation types are now allowed in the join condition. It is now possible to specify the columns in the INSERT statement.
NULL support
It is now possible to use NULL. NULL is the smallest possible value for all data types. It is not fully compatible with standard SQL (NULL is really a complex thing), but it is a first step. IS NULL works also.
All JDBC Data Types
Now all JDBC data types are implemented. Missing is only the possibility to use streams.
Performance Improvements
The cache algorithm for the full disk version was improved and uses now double hashing. Additionally, the overall performance
could be improved in some points.
Servlet available
The source code for a servlet is included. That means it is now possible to run a Hypersonic SQL database on a general web
server as a servlet. This is not fully tested, but should work with all web servers that support servlets.
Trace messages
Almost all JDBC functions now write trace messages. This is very important for debugging. There are also trace messages
for some database operations like the query plan.
Persistent Mode available
Hypersonic SQL has now two operating modes: Non-persistent (memory-only) and Persistent (with logging to disk). That
means you can store the data on disk.
Performance Tests
Tests shows that Hypersonic SQL is much faster than Microsoft Access 97 and InterBase Server.
More Data Types
Now all important data types are implemented.
Improved SQL syntax
It is now possible to specify Columns in a SELECT statement. Tables and Columns can be aliased in a SELECT statement. 'LIKE' can be used in the WHERE clause.
Improved JDBC Interface
Now all JDBC classes are implemented and the compatibility to other JDBC drivers is enhanced.
The programming interface is now a subset of JDBC
With this step, the compatibility to other databases is greatly
improved: JDBC is the standard database interface in Java.
You can compare it to the ODBC standard in the 'Windows' world.
That means if your program works with Hypersonic SQL and you
want to use another SQL database, you will have to change in
most cases only the driver (two lines of code).
- A first Client / Server version is available in the download
- The documentation is extended
- Sourcecode is now included
- The homepage is updated