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

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

Version 1.3.162 (2011-11-26)

Update文の不具合とか恐ろしいですね。

  • 次のシステムプロパティがサポートされなくなった。h2.allowBigDecimalExtensions, h2.emptyPassword, h2.minColumnNameMap, h2.returnLobObjects, h2.webMaxValueLength.
  • VPNを使っていて、H2サーバーを起動しようとするとうまく動作しなかった(いくつかのVPNソフトウェアで)
  • Oracle 互換性: DECODE(...)のサポート
  • Luceneによる全文検索: テーブルにすでにデータがある場合、索引を作成するのが速くなった
  • かっこで囲まれたカラムのリストを使った形式のUpdate文が、カラムが一つしかない場合に動作していなかった。例): update test set (id)=(id).

- おおお...。なお、(id)=(3)みたいに固定値にしても同様(試してみたのは1.3.159)

sql> create table hoge (id int);
(Update count: 0, 0 ms)
sql> insert into hoge values (1),(2);
(Update count: 2, 31 ms)
sql> select * from hoge;
ID
1
2
(2 rows, 62 ms)
sql> update hoge set (id)=(id);
(Update count: 2, 0 ms)
sql> select * from hoge;
ID
null
null
(2 rows, 0 ms)
  • -baseDirオプションを使っていると読み込み専用のデータベース(zipファイルを使用)が動作しなかった。
  • Issue 334: SimpleResultSet.getStringがClobカラムに対しても使えるようになった
  • 集約関数を使ったサブクエリが常に動作していなかった。例): select (select count(*) from test where a = t.a and b = 0) from test t group by a
  • Server: いくつかの理論上のケースで、コネクションをクローズしている際の例外が無視されることがあった
  • Server.createTcpServer, createPgServer, createWebServer: 無効な引数が検出されるようになった。
  • LOBカラムに対するインデックスはサポートされていないため、LOBカラムの選択性が計算されないようになった。(しかし、これはパフォーマンスにほとんど影響はない。選択性はハッシュコードにのみ計算されていて、データに対してされていないため)
  • 新しい実験的システムプロパティ h2.modifyOnWrite: 有効になっているとデータベースに書き込みが発生したときのみデータベースベースファイルの編集を行う。有効になっていると、読み込みのみのオペレーションでシリアライズされたファイルロックがより速くなる。
  • 無効なビューに対するTableView.isDeterministicでNullPointerExceptionが発生することがあった
  • Issue 180: システムプロパティh2.useThreadContextClassLoaderがセットされているとオブジェクトのデシリアライズ時にデフォルトのクラスローダーの代わりにコンテキストクラスローダーが使用されるようになる
  • exclusiveモード使用時に、LOBに対する操作がスレッドのブロックを引き起こす。これは主にCreateClusterツールに影響する(BLOBやCLOBを使っている場合)
  • group by カラムがselect listの中でエイリアスされている場合、"group by"の最適化が正しく動作していなかった。
  • Issue 326: クォートを使わないケースセンシティブな識別子(DATABASE_TO_UPPER=FALSEを使っている場合)のサポートの改善。