This is a bugfix for MySQL autoincrement.
The directory structure has changed.
New database versions have been tested.
For MySQL, the library now uses the native AUTO_INCREMENT mechanism of the database. The same is planned for other databases if possible.
COUNT(DISTINCT support)
Add MS SQL Server support using the JTDS driver
Added 'SQL only' trace
Console: password hiding is now optional, because it doesn't work in some consoles (for example Eclipse)
Bugfixes:
Oracle: Reduces the size of the buffer to 1k (for example for the chineese charset)... read more
SELECT TOP n functionality is supported. Example:
SELECT TOP 2 * FROM TEST ORDER BY ID
There are two exceptions:
INSERT INTO ... SELECT TOP <top> ... : <top> is ignored
EXISTS (SELECT TOP <top>...): <top> is ignored
ALTER TABLE ADD COLUMN
CREATE TABLE with DEFAULT
Smaller bugfixes for IBM DB2 Version 8 (rename table).
NOW() and other functions in INSERT clause
Improved the API of the Object-Relation mapping tool. Support arbitrary SQL statements. Fixed various bugs
New features:
Support for COUNT(1)
Support for DatabaseMetaData.getMax...NameLength. Max length is 30
support != as an alias for <>
Support SELECT T.* FROM TEST T
Bugfixes:
adapters.properties was not in the jar
Support for:
ALTER TABLE .. DROP CONSTRAINT .., ALTER TABLE .. RENAME TO .., INSERT INTO .. SELECT ..
Statement.getGeneratedKeys is supported now.
A coverage test tool is now used. The regression test was quite poor before, as the test did not cover 34% of the code (jdbc and core packages, and Translator class in the parser package). The goal is to test nearly 100%. Some new tests have been added, and some new bugs have been found and fixed: NOT LIKE, DatabaseMetaData.getCatalogs, DatabaseMetaData.getUDTs, Connection.nativeSQL. RIGHT OUTER JOIN problem found. HAVING was not translated correctly (and HSQLDB doesn't support HAVING). Current level: 26% not covered.... read more
Support for EXISTS and HAVING, but MySQL version 4.1 is required in order to support EXISTS and NOT EXISTS. Please note that MySQL version 4.1 has some other problems (it is a beta release) and is not fully supported by LDBC, but in the future it should work.
A new Console tool for interactive (command line / console) query processing and debugging
Implemented export with unicode characters (which works if the database supports unicode characters as well)... read more
After a longer pause a new release is now available.
New Features:
A new SQL command to get the last inserted autoincrement value: GET AUTOINCREMENT KEY
New commands implemented: CREATE TABLE IF NOT EXISTS and DROP TABLE IF EXISTS
New Export and Import tools for transfering data amount databases and backup - restore. However referential integrity is not yet supported.
Configurable adapter info in Factory. The list of adapters can be set in the test file 'adapters.properties'... read more
The following bugs have been fixed:
- Foreign Key/Reference multiple column names (2 bugs)
- Problems with parenthesis
Support for PostgreSQL
PostgreSQL is now supported. There are some issues with commit/rollback after exception and blobs.
The Java databases QED and Mckoi have been tested as well, unfortunately there are still bigger problems with these two.
Bugfixes:
- identifiers where not correctly converted to uppercase before being quoted
- autoincrement column was not correctly converted to uppercase
A simple Object-Relation mapping library is included in this release. It is not finished, so this is just a preview. Maybe a new sourceforge project will be started later. The targets of the project are:... read more
Autoincrement columns are now supported. The MS SQL Server / Sybase style is used. For details, see the documentation.
Internally using quoted names. This allowed to reduce the list of reserved words (keywords) to around 1/3 of the original list. If MySQL and HSQLDB would fully support quoted names, this list could be futher reduced.
The documentation and Javadoc is cleaned up.
The project web site is black to protest against the war in Iraq.
IBM DB2 is supported now. With DB2, there are now 6 databases fully supported by LDBC.
The issued found and solved with DB2 are:
- Binary constants
- ResultSet.getCharacterStream is not implemented
- This query is not allowed: SELECT NULL FROM TEST
- Can not cast integer directly to varchar
- DatabaseMetaData resultsets must be explicitly closed
- prep.setNull(i,Types.BLOB) issue
- prep.setBinaryStream not always working
- prep.setCharacterStream is not implemented
Bugs fixed:
- "Null" in select not supported
- MySQL convertDataType error
- meta.getColumns unreadable
JDK 1.4.1 extensions are implemented. The extensions can be switched on and off in the source code using ant.
The documentation is now compliant to the Standard Doclet version 1.4.1. This simplifies the translation of the javadocs.
Started with IBM DB2 support.
SQL Server: check for correct URL at startup, with appropriate error message.
MySQL: documentation how to switch on InnoDB.
Some people had problems building the package (ldbc.jar). Now, the jar file is also available for download. In addition to that, there is a new section 'How to Build' in the documentation (and a link in the FAQ).
The debug trace feature is improved. It is now possible to trace to file, and the option can be set in the database url.
Other changed: DROP INDEX implemented (with the MySQL syntax). Index names only need to be unique for each table (even for Oracle and HSQLDB). SET AUTOCOMMIT TRUE / FALSE pseudo command implemented. DatabaseMetaData.getImportedKeys is implemented.
Foreign keys are now supported. However, not all the functionality is implemented, only the basics. Delete on cascade and so on are currently missing. More tests need to be implemented as well. There was a problem with MySQL, because in this database a index is required for the columns referencing. It may still be problematic in some cases, for example the MySQL documentation says CREATE INDEX after referential integrity is not supported, and currently LDBC does not check if the referenced table (parent table) already has an index. Also the DatabaseMetaData methods for foreign keys are not implemented / tested.
The idea is: make sure as many as possible existing applications just work when switching to LDBC. A first step in this direction is aliases for data types and functions.
Other changes:
Web site changes
Error handling cleanup
Package structure simplification
Support for two new SQL statements: COMMIT and ROLLBACK. But this commands will not be sent to the database, instead the method Connection.commit() / Connection.rollback() is called. This is a first step towards more complex pseudo commands like Java 'stored procedures'.
Autocommit problems fixed (Oracle and PointBase have problems).
Added SQL grammar support for aggregates: MIN, MAX, AVG, SUM, COUNT.... read more
Background: The Oracle thin driver does not support inserting/updating a CLOB or BLOB with more then 4000 bytes/characters. This is a problem for many applications.
There is a workaround suggested by Oracle, but it is very complex. Anyway, this workaround is implemented now. There is still a problem with Oracle 8i and autocommit, but this can be solved as well.
Unfortunately, there is a new limit for CLOB/BLOB, this time by MySQL, it seems to be 65535 bytes.
The remaining JDBC methods in ResultSet and PreparedStatement are implemented.
Only CallableStatement is not fully implemented yet.
Unfortunately only up to 4000 bytes. Oracle doesn't support more. Tests with binary have been added.
PreparedStatement:
setBytes, setBlob, setClob, setArray, setBinaryStream, etDate, Time, Timestamp with Calendar are implemented.
ResultSet:
getBytes, getBlob, getClob, getArray, getBinaryStream, getDate, Time, Timestamp with Calendar are implemented.
Statement is now fully implemented.
A test for batch updates has been added, however batch updates are not supported due to bugs in the underlying drivers.
Many additional JDBC methods have been implemented:
All the remainging Connection methods.
Most Statement methods (except batch methods).
Many in Resultset: isBeforeFirst, isAfterLast, isFirst, isLast, beforeFirst, afterLast, first, last, moveToInsertRow, moveToCurrentRow, absolute, relative, previous, get+set FetchDirection, get+set FetchSize, getType, getConcurrency, rowUpdated, rowInserted, rowDeleted, insertRow, updateRow, deleteRow, refreshRow, cancelRowUpdates. Most of these methods are just throwing an exception as the functionality is not available in many databases. However, the Javadocs are now there :)... read more
Outer join not yet supported on Oracle 8i, however Inner Join is (even using the ANSI SQL-92 Join Syntax).
Now Implemented:
Statement.setCursorName
PreparedStatement.setCursorName
ResultSet.getCursorName
ResultSet.getRow
Found an idea for CallableStatement (Stored Procedures): call a Java method on the client side. A more advanced solution would be to store the bytecode of this class in the database.