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

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

Version 1.3.148 Beta (2010-12-12)

1.3系。

  • 組み込みのコネクションプールが少しだけ簡略化された。dispose()メソッドが、例外をスローしないようになった(ログのみ出力)
  • データベースのアップグレード(1.1.xからのアップデート)が簡略化された。
  • すべてのエラーを出力する機能(システムプロパティのh2.logAllErrorsとh2.logAllErrorsFile)が削除された
  • H2コンソールを起動しているときに、プロパティファイルを完全に無効にできるようになった?
  • URLを開くのに失敗した場合に、Server.openBrowserでSystem.outに直接出力しないようにした
  • INSERTの最適化(INSERT … DIRECT SORTED SELECT)の際に、カラムのリストを使用していると正しくパースされていなかった
  • H2 Console: SQLite同様にテーブルとカラムが列挙されるようになった
  • H2 Console: オートコンプリート機能の改善(この機能に関するソースコードの簡略化)
  • DbStarter servlet context listenerがコネクションを開く前にサーバを開始するようになり、そのコネクションもサーバモードで接続する。
    • DbStarterは起動時にコネクションを作成して、それをservletContextにconnectionという名前でsetAttributeするのですが、サーバモードで起動する際にも、先に組み込みモードでコネクションを作ってしまってから、そのあとサーバを起動すると言う流れになっていた。たぶん、その後、サーバモードで接続しようとするとエラーになってたんじゃなかろうか。
  • ShellToolが現在のオートコミットモードを有効化/無効化/表示ができるようになった。
  • クラスターモードの制限: SQL文による、SET AUTOCOMMIT FALSEは機能しない。オートコミットを無効にするには、Connection.setAutoCommit(false)が呼ばれる必要がある。これはドキュメントに記載された。Issue 259も参照。
  • Connection pool / DataSource: 使用するデータベースURLが"jdbc:h2:"で始まっていない場合、NullPointerExceptionがスローされていた
  • java.sql.Blobやjava.sql.Clobインターフェースを使用するとオブジェクトクローズ後に不適切な例外がスローされることがあった
    • ResultSetをクローズした後に、Blobから取り出したInputStreamをreadしたときの例外の話かな
  • LOB: サーバモードで、"LOBs in database"が無効になっている場合に、有効になっている時と同様にテンポラリファイルがtempディレクトリ下に作成されるようになった