## History

- CHANGELOG for this version
- Recently fixed bugs
- News 10 (2000-03-28)
- News 9 (2000-01-21)
- News 8 (1999-12-12)
- News 7 (1999-10-17)
- News 6 (1999-12-12)
- News 5 (1999-10-17)
- News 4 (1999-04-09)
- News 3 (1999-02-12)
- News 2 (1998-11-13)
- News 1 (1998-07-98)

  ### Recently fixed bugs and changes

  2000-09-04
  1.43:
  - Fixed Bug #106448 (WHERE.. IN (SELECT...))
  - Added new Metadata table: SYSTEM_USERS
  - Changed package structure: all classes in the root (unnamed) package where moved to the new package org.hsql.util
  - Case insensitive LIKE did not work. Fixed. Works only if used with "column like 'test'"; not the other way round
  - Fixed Bug #107577 (links to source files in docs)
  - Fixed Bug #107155 (setMaxRows with ordered, grouped or union select)
  - Fixed Bug #104967 (Foreign key problem when using 'primary key(col,...)' constraint)
  - Added syntax for unique constraint (,[CONSTAINT name] UNIQUE (col,...)) (to solve #104967)
  - Fixed Bug #106935 ArrayIndexOutOfBoundsException on update with foreign keys
  - Added SQL command: DISCONNECT
  - Changed the way how the script is written to file: connections are enumerated now
  - SHUTDOWN disconnects all currently connected users
  - Bug in Constraint.replaceTable fixed (Exception in all cases)
  - Fixed: SELECT * FROM Address WHERE Id IN (-1); now formulas are allow in IN (...)
  - Fixed bugs in jdbdDatabaseMetaData: filters for table name and column name are case insensitive now (converted to uppercase)

  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.

  ### News Mails

  News 9 (2000-01-21)

  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.

  News 8 (1999-12-12)

  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.

  News 7 (1999-10-17)

  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.

  News 6 (1999-09-10)

  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.

  News 5 (1999-08-06)

  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

  News 4 (1999-04-09)

  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.

  News 3 (1999-02-12)

  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.

  News 2 (1998-11-13)

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

  News 1 (1998-07-98)

  - A first Client / Server version is available in the download
  - The documentation is extended
  - Sourcecode is now included
  - The homepage is updated