DBMS Compatibility

The tables below indicate which DBMS's have successfully passed TJDO's test suite. If you've run the tests successfully against another combination of DBMS, version, platform, etc. please post your results to the SourceForge forum so we can update the list.

TJDO 2.0

DBMS Server Client Notes Tested By
Version Platform Version Platform
Cloudscape 4.0.6 Sun JDK 1.4.1_01
Win2K SP4
cloudscape.jar: 4.0.6 Sun JDK 1.4.1_01
Win2K SP4
This is the version bundled with J2SDKEE 1.3.1. Tested in embedded mode, although client/server mode with RmiJdbc has been known to work successfully. Mike Martin
18-Oct-03
5.0.9 Sun JDK 1.4.1_01
Win2K SP4
db2j.jar: 5.0.9 Sun JDK 1.4.1_01
Win2K SP4
aka DB2J Mike Martin
18-Oct-03
DB2 7.2.3 Sun JDK 1.4.1_01
Win2K SP4
java12/db2java.zip: 7.2.3 Sun JDK 1.4.1_01
Win2K SP4
  Mike Martin
18-Oct-03
Firebird 1.0.3.972 Win2K SP4 FirebirdSQL-1.0.1.zip
Sun JDK 1.4.1_01
Win2K SP4
  Mike Martin
18-Oct-03
MySQL 4.0.15-max Win2K SP4 mysql-connector-java-3.0.9-stable-bin.jar Sun JDK 1.4.1_01
Win2K SP4
Tested only with InnoDB tables (server option --default-table-type=InnoDB). TJDO tests require database.noviewsupport=true in db.properties. Mike Martin
18-Oct-03
Oracle 8i 8.1.7.4.0 Solaris 8 classes12_817.jar: 8.1.7 Sun JDK 1.3.1_04
Win2K SP3
  Kelly Grizzle
PostgreSQL 7.2.1 Red Hat Linux 7.3
Kernel 2.4.18-3
pg72jdbc2.jar: 7.2+ (patched, see below) Sun JDK 1.4.1
Win2K SP2
7.3 driver(s) talking to a 7.2.1 server are supposed to work but have been known to hang. Mike Martin
7.3.1 Red Hat Linux 7.3
Kernel 2.4.18-3
pg73jdbc2.jar: 7.3 (build 107)
pg73jdbc2ee.jar: 7.3 (build 107)
pg73jdbc3.jar: 7.3 (build 107)
Sun JDK 1.4.1
Win2K SP2
  Mike Martin
7.3.2-1 Win2K SP3 pg73jdbc2.jar: 7.3 (build 108)
pg73jdbc2ee.jar: 7.3 (build 108)
pg73jdbc3.jar: 7.3 (build 108)
Sun JDK 1.3.1_04
Win2K SP3
Tested with PostgreSQL 7.3.2-1 running under Cygwin 1.3.20-1 with cygipc daemon 1.13-2. Kelly Grizzle
SAP DB 7.4.3 Build 010-120-035-462 Win2K SP4 sapdbc.jar: 7.4.4 Build 001-000-156-754 Sun JDK 1.4.1_01
Win2K SP4
  Mike Martin
18-Oct-03
SQL Server 7.0 SP4 Win2K SP4 Sprinta2000.jar: i-net SPRINTA(tm) 2000 Version 5.01 Sun JDK 1.4.1_01
Win2K SP4
TJDO tests require the server be configured to use a case-sensitive sort order. Mike Martin
18-Oct-03
2000 SP2 Win2K SP3 Sprinta2000.jar: i-net SPRINTA(tm) 2000 Version 5.01 Sun JDK 1.3.1_04
Win2K SP3
  Kelly Grizzle

Compatibility Notes

Firebird

Auto-table creation is severely limited with Firebird. In Firebird, DDL statements are not auto-committed and are executed at the end of a transaction, after any DML statements. This makes "on the fly" table creation in the middle of a DML transaction not work. Instead, you can use TJDO's SchemaManager to explicitly create tables (but auto-table creation mode must still be enabled). For example:

PersistenceManager pm = ...
SchemaManager sm = SchemaManagerFactory.getSchemaManager(pm);

sm.addClasses(new Class[] { Foo.class, Bar.class });

MySQL

The isEmpty() method and certain forms of contains() are not supported in query filters. They rely on subqueries, which MySQL does not yet support (although this is slated for 4.1).

View objects are not available since MySQL doesn't support views.

Oracle 8.1.x

On Oracle, class names must be chosen such that they do not result in table names that collide with Oracle SQL keywords. This is due to a bug in Oracle's implementation of DatabaseMetaData.getIndexInfo(), which fails for such table names.

This bug is known to exist at least in versions 8.1.6 and 8.1.7 of Oracle's JDBC thin driver. The class naming limitation will be eliminated if and when the bug is fixed by Oracle, without requiring any changes to TJDO.

PostgreSQL 7.2.x

There is a bug in the 7.2.x JDBC driver that can cause a NullPointerException in DatabaseMetaData.getIndexInfo(). The bug was fixed in source version 1.49 of org.postgresql.jdbc2.DatabaseMetaData. Unfortunately, all of the 7.2.x releases appear to have included version 1.48. The fix appears in the 7.3 drivers.

A modified copy of the 7.2 driver is included with TJDO as:

lib/pg72jdbc2-tjdo.jar
This differs from the original only in that it uses version 1.49 of org.postgresql.jdbc2.DatabaseMetaData. If you would prefer to rebuild the driver from source the necessary change can be seen here.

SQL Server

The TINYINT data type in SQL Server is unsigned (range 0 - 255), whereas the java byte type is signed (range -128 - 127). TJDO will auto-create byte fields as TINYINT columns to minimize storage, but the effective range of values is then limited to 0 - 127. In order to store negative values you can manually create such columns as SMALLINT.


SourceForge.net