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

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

Version 1.3.153 (2011-03-14)

ついにnon-betaです。

  • Issue 294: Eclipseで自動的にソースコードがアタッチできるよう(Mavenを使用している場合)に、Mavenのソースバンドルにマニフェストファイルを含むようになった。
  • 明示的にLIMIT 0が指定されたクエリが結果行を返さなくなりました(今までは、LIMITなしを意味していましたが) これはPostgreSQLMySQLとの互換性のためです。負のLIMIT値(同様にLIMIT NULLも)が、LIMIT無しを意味するようになります(以前は負のLIMIT値はLIMIT 1を意味していました) OFFSETについても同様の問題があります。
  • 新しい暗号化ファイルシステムが実装されました。これはデータベースファイルだけでなく、すべてのファイルを暗号化できるようにします。さらに、簡易なファイルシステムのShell toolも実装されました。いずれ、Backup, ChangeFileEncryption, DeleteDbFiles,そしてRestore Toolsもリプレースされるでしょう。
  • Lob in database: LOBオブジェクトの書き込みが正しく同期化されていなかった。これは、Connection.createBlob()/createClob()を使っている際に問題になります。
  • ライセンスページがアップデートされました。
  • Windows以外のシステムで、データベースのパスにバックスラッシュが使えるようになりました。
  • cleanメソッドの代わりにclearメソッドを呼んでいたために、NIO cleanerハックが期待通りの動作をしていなかった。これは修正されました。このハックはデフォルトでは有効になっていません。試したい場合にはシステムプロパティの"h2.nioCleanerHack"をtrueにしてください。
  • MS SQL ServerMySQLとの互換性向上: DELETE文でのTOP、LIMITのサポート。
  • COSH,SINH,TANH関数のサポート
  • %演算子(剰余演算子)のサポート
  • Issue 288: ある右外部結合のクエリで、正確な結果を返さないか、"column x must be in the group by list"といった例外がスローされる。
  • 不正なカラムの参照(スペルミス)を含む右外部結合のクエリで、"column not found"例外の代わりに、NullPointerExceptionがスローされる。
  • 新しいデータベース設定 EARLY_FILTER で、テーブルの実装に対し早期のフィルタ条件の適用を可能にする
    • 今ひとつよくわかりません。
  • Cluster: 二つのノードのクラスタで、クラスタのノードが停止し、autocommitが有効だった場合、残ったノードでの変更が自動でコミットされない。
  • Issue 291: org.h2.value.ValueをFUNCTION ALIASのパラメータ、返り値として利用可能に
    • これにより、渡された値をフォーマットするような関数をユーザ定義関数として作成できるようになった
  • Issue 265: Linked Tables: 裏側でコネクションが切断された場合自動で再接続するように なった(インアクティブになってから8時間経過するとコネクションが切断されるMySQLの問題の回避策)
  • Linked Tables: リモートのデータベースに問い合わせする場合にインデックスの条件が使われない事がある件に対応
  • Issue 294: OSGi: manifestのExport-Packageエンティティのバージョンが抜けていた
  • -baseDirオプションでシンボリックリンクがうまく動作していなかった
  • ALTER TABLE ADD COLUMN IF NOT EXISTSをサポート
  • データベースレベルのコネクション設定がデータベースURLでセットされているものしか使われなくなった(ただし、DriverManager.getConnection(String url, Properties info)で渡されるプロパティパラメータで使われていない場合)
    • 実装としては、データベースURLでセットされたコネクション設定に、Propertiesで渡された内容を上書きしている感じ。全体で見たときに、どういう効果の修正なのかわからない。