Derby を使用するように一部の単体テスト (DB2 で実行されるアプリケーション用) を変更することがどの程度実現可能かを調査しています。DB2 と Derby は非常に互換性があると回答が主張しているこの質問を見つけたので、DDL を DB2 データベースから取り出して、Derby データベースで実行する可能性があるように思われました。しかし、Derby DDL で Derby が動作しないケースが見つかったようです。
したがって、次のような DB2 9.1 用に記述された DDL があります。
CREATE TABLE FOO (
FOO_ID CHAR(17) NOT NULL,
FOO_SOMESTUFF CHAR(17) NOT NULL WITH DEFAULT ,
FOO_MORESTUFF CHAR(1) NOT NULL WITH DEFAULT ,
FOO_DT DATE NOT NULL WITH DEFAULT
);
この DDL を ij で実行しても機能しません。次の構文エラーが発生します。
ij> run 'c:/derby/db-derby-10.6.1.0-bin/foo.sql';
ij> CREATE TABLE FOO (
FOO_ID CHAR(17) NOT NULL,
FOO_SOMESTUFF CHAR(17) NOT NULL WITH DEFAULT ,
FOO_MORESTUFF CHAR(1) NOT NULL WITH DEFAULT ,
FOO_DT DATE NOT NULL WITH DEFAULT
);
ERROR 42X01: Syntax error: Encountered "," at line 3, column 62.
Issue the 'help' command for general information on IJ command syntax.
Any unrecognized commands are treated as potential SQL commands and executed dir
ectly.
Consult your DBMS server reference documentation for details of the SQL syntax s
upported by your server.
DB2 DDL と同じデフォルト値になる Derby の DDL は何ですか? DDL を変更する必要があるかもしれないことはわかりました。DDL はAUDIT NONE
やDATA CAPTURE
のような奇妙なものでいっぱいでCCSID EBCDIC
、Derby が機能するためには取り除かなければなりません。しかし、デフォルトですべて空白にすることは、このコードベースにとって大きな問題です。これで Derby よりも優れた別のメモリ内データベースがあれば、私は提案を受け入れます。