h2database でコマンドラインからスクリプトファイルの実行例。 エラーになったSQLで処理が中止され、次のSQLは実行されない。
java org.h2.tools.RunScript -url jdbc:h2:~/test -driver org.h2.Driver -user sa -password sa -script ~/script.sql
SHOW COLUMNS FROM <テーブル名>
Oracleへの linked table を作成した場合 Clobカラムのデータ登録で NegativeArraySizeException が発生してしまう。配列を -1 で作成しようとしてしまうらしい。
h2 の org.h2.value.ValueLobDb クラスを以下のように修正。
package org.h2.value;
:
:
public class ValueLobDb extends Value implements Value.ValueClob, Value.ValueBlob {
:
:
@Override
public void set(PreparedStatement prep, int parameterIndex) throws SQLException {
long p = getPrecision();
if (p > Integer.MAX_VALUE || p <= 0) {
p = -1;
}
if (type == Value.BLOB) {
prep.setBinaryStream(parameterIndex, getInputStream(), (int) p);
} else if (type == Value.CLOB && p < 1L) { // chibat ADD
prep.setBinaryStream(parameterIndex, getInputStream(), Integer.MAX_VALUE); // chibat ADD
} else {
prep.setCharacterStream(parameterIndex, getReader(), (int) p);
}
}
:
:
}