H2Databaseを追っかけていたりしたブログ

H2 database のリリースノートを読んだりとか。

Version 1.4.179 Beta (2014-06-23)

今回、MVStore周りの大丈夫か?というような不具合が修正されています。ML読んでても、引き続き不具合が出ているようです。まぁ、βだしね...

  • ライセンスがMPL2.0とEPL1.0に変更になった (MPL1.0からMPL2.0へ)
  • Issue565: MVStore: MULTI_THREADEDオプションがある状態で、並行にLOBオブジェクトを追加するとNullPointerExceptionが発生する
  • MVStore: その他のH2のクラスに対しての依存を低減
  • データベースの再オープンを妨げるように高位のIDのテーブル(後に作られたテーブル)のカラムを参照する制約を作成することができていた。これは現在検出されるようになっており、そのようなテーブルの作成は禁止されている。将来のバージョンのH2では、このような問題のために、その他のテーブルの参照はサポートされなくなる
    • 例によってよくわからない..原文は下記の通り.
    • There was a way to prevent a database from being re-opened, by creating a column constraint that references a table with a higher id. This is now detected, and creating the table is prohibited. In future versions of H2, most likely creating references to other tables will no longer be supported because of such problems.
  • MVStore: "nulls first"の降順インデックスが期待した通りに動作していなかった(nullが最後になっていた)
  • 大きな結果セットが、テンポラリファイルの代わりに常にテンポラリテーブルを作成するようになった
  • PageStoreを使っている場合、テンポラリテーブルを使用した場合に、データベースのオープン時にNullPointerExceptionが発生して、失敗するケースがあった(明示的に、あるいは、暗黙的に大きな結果セットを使用する場合)
  • PageStoreファイルフォーマットのファイルが存在する場合、データベースURLに"MV_STORE=FALSE"が含まれていなくても、そのファイルとそのモードが使用されるようになった。MVStoreファイルがあった場合、それが使用される。
  • version 1.3.175以前で作成されたデータベースで、マルチカラムのインデックスと外部キーの組合せを含む場合、幾つかのケースでオープンできないことがある。これは、version 1.3.176 の「参照整合性制約で間違ったインデックスを使用してしまうことがある」の不具合対応によるもの
  • MVStore: 片方がSerializableで、もう片方が共通クラスの場合、ObjectDataTypeの比較メソッドが不正確な動作をする
  • ライセンスがMPL 2.0 + EPL 1.0に変更された
  • MVStore: 結果セットによって作成されたテンポラリテーブルがデータベースの再オープン時にも生き残ってしまい、結果としてClassCastExceptionを引き起こすことがある
  • Issue 566: MVStore: 5000行を超えるテーブルに後付けでユニークインデックスが作成された時正確に動作しない
  • MVStore: 大きなテーブルに第2のインデックスを作成した時、インデックス内で行を見失うことがある
  • Metadata: linked tableのパスワードは管理者しか参照できなくなった。
  • Windowsにて"jdbc:h2:/test"形式のデータベースURLは相対パスと判定され、システムプロパティ"h2.implicitRelativePath"を使用しない場合動作しなくなった。
  • Windows: ベースディレクトリに"C:/"や類似の形式を指定した場合に期待通りに動作していなかった。
  • プロシージャのメタデータについてのJDBC仕様に追随。プロシージャの返り値の型として、P0を使用。
    • P0?
  • Issue 531: IDENTITYがカラム追加の際には無視されていた
  • FileSystem: スローされる例外をJDK互換のものに変更
    • IOExceptionをスローしていたところがNonWritableChannelExceptionに変更されています
  • Spatial Index: クエリにintersect演算子が含まれていない場合、Spatial Indexを使用しないのでコストを調整した
  • TableFunctionを含むビューを使っている場合のマルチスレッドのデッドロックを修正
  • とても小さなBigDecimalの数値で除算を行った場合の不具合を修正