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.
Note: these are the older test results. Results for the 2.2 release coming soon.
DBMS | Server | Client | Notes | |||
---|---|---|---|---|---|---|
Version | Platform | Version | Platform | |||
Cloudscape | 4.0.6 | Sun JDK 1.4.2_03 Win2K SP4 |
cloudscape.jar: 4.0.6 | Sun JDK 1.4.2_03 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. | |
5.0.9 | Sun JDK 1.4.2_03 Win2K SP4 |
db2j.jar: 5.0.9 | Sun JDK 1.4.2_03 Win2K SP4 |
aka DB2J | ||
DB2 | 7.2.3 | Sun JDK 1.4.2_03 Win2K SP4 |
java12/db2java.zip: 7.2.3 | Sun JDK 1.4.2_03 Win2K SP4 |
||
Firebird | 1.0.3.972 | Win2K SP4 |
FirebirdSQL-1.0.1.zip |
Sun JDK 1.4.2_03 Win2K SP4 |
||
MySQL | 4.0.15-max | Win2K SP4 | mysql-connector-java-3.0.9-stable-bin.jar | Sun JDK 1.4.2_03 Win2K SP4 |
Tested only with InnoDB tables (server option --default-table-type=InnoDB). TJDO tests require database.noviewsupport=true in db.properties. | |
Oracle | 8.1.x | Not yet retested. | ||||
9.2.0.1.0 | Win2K SP4 | ojdbc14.jar: 9.2 | Sun JDK 1.4.2_03 Win2K SP4 |
|||
PostgreSQL | 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 SP4 |
||
7.4.2 | Red Hat Linux 7.3 Kernel 2.4.18-3 |
pg74.1jdbc2.jar: 7.4 (build 210) pg74.1jdbc2ee.jar: 7.4 (build 210) pg74.1jdbc3.jar: 7.4 (build 210) |
Sun JDK 1.4.1 Win2K SP4 |
|||
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.2_03 Win2K SP4 |
||
SQL Server | 7.0 SP4 | Win2K SP4 | Sprinta2000.jar: i-net SPRINTA(tm) 2000 Version 5.01 | Sun JDK 1.4.2_03 Win2K SP4 |
TJDO tests require the server be configured to use a case-sensitive sort order. | |
2000 | Not yet retested. |
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 });
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.
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.
TJDO does not (yet) attempt to make use of the new 9i TIMESTAMP data types. All date/time types are mapped to Oracle's DATE type, as done with 8i. For various unfortunate reasons (mostly having to do with Oracle's reluctance to conform to the standard JDBC API), even if you were to manually create your tables with TIMESTAMP columns they cannot be used with TJDO. This may be remedied in a future release.
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 available on SourceForge. It 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.
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
.