JDBDT is expected to work with any (sane) JDBC driver. The JDBDT build currently tests integration with:
Derby does not support LIMIT in association to SQL queries, hence QueryBuilder.limit() should not be used.
Auto-commit off / Rollback on error
If auto-commit is turned off for the database connection and a SQL statement raises an error (e.g., an integrity constraint is violated during an insertion), PostgreSQL aborts the transaction and requires an explicit rollback execute further statements. This is a well known issue in PostgreSQL (e.g., see here). When using JDBDT, this may affect tests that validate invalid uses of a database by the SUT:
try { // at this point connection has autocommit turned off call SUT, expecting it to throw a database exception, e.g., insert data that violates a primary key fail("exception expected"); } catch(SQLException e) { assertXXX(...); // e.g. assertUnchanged(...) }
The assertXXX JDBDT assertion above (or any other code that issues a database statement for that matter) will fail with the following message
org.postgresql.util.PSQLException: ERROR: current transaction is aborted, commands ignored until end of transaction block
A possible workaround is to issue a rollback statement before any further operations, i.e., before assertXXX in the example snippet above.
Statement reuse
Statement reuse should be disabled for xerial’s JDBC driver for sqlite.
Table truncation is not supported
sqlite does not support TRUNCATE statements, so JDBDT.truncate will not work.
** LIMIT clause not supported **
Derby does not support LIMIT, so QueryBuilder.limit() will not work.