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

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

Version 1.3.171 (2013-03-17)

久しぶりにリリースされました。今回は、MVTableEngineがExperimentalとはいえ使えるようになったのが特筆すべき点でしょうか。

  • Security: TCP serverがいくつかのケースでアクセス権限による制御を正しく行っていなかった。これは"tcpAllowOthers"フラグを使っているときに特に問題となる。
  • H2 Console: システムプロパティ"h2.consoleTimeout"を使う事で、セッションタイムアウトが設定できるようになった。
  • Issue 431: MySQLとの互換性の改善: CREATE TABLE時の"ENGINE=InnoDB charset=UTF8"をサポート
    • とはいっても、エラーにならないと言うだけで、特に効果はないですが。
  • Issue 249: MySQLモード時のMySQLとの互換性の改善: MySQLモード使用時、DatabaseMetaDataのメソッドがMySQLと同様に、ケースを保持した識別子を返すようになった。
  • Issue 434: 不正なviewportの為に、ChromeでH2 Consoleが動作しなかった。
  • .lock.dbファイルがデータベースクローズ時に削除されない可能性があり、データベースのオープンの速度低下させていた。
  • "script"コマンドによって生成されたSQLスクリプトがWindowsで不正な改行を含んでいた。
  • サーバ側で、trace level4(SLF4J)を使っているときに、クライアント側でも"trace.db"ディレクトリと空のファイルが作られていた。これは作られなくなった。
  • Optimize IN(...) queries: version 1.3.170では左辺値と右辺値が異なるときにバグがあった。修正済み。
  • Optimize IN(...) queries: version 1.3.170では、"X IN(NULL, NULL)"のタイプの比較の際にバグがあった。修正済み。
  • timezoneつきのタイムスタンプが文字列として渡されたときに常に正しく変換されていなかった。例えば、"2012-11-06T23:00:00.000Z"は中央ヨーロッパ時間で"2012-11-07"ではなく"2012-11-06"と変換されてしまっていた。
  • データの永続化に内部的にMVStoreを使った新しいテーブルエンジン"org.h2.mvstore.db.MVTableEngine"。試すには、データベースURLに";DEFAULT_TABLE_ENGINE=org.h2.mvstore.db.MVTableEngine"を追加する。これはまだ非常に実験的な機能であり、多くの機能がまだサポートされていない。データは".mv.db"がついたファイルに格納される。
  • 新しいコネクション設定 "DEFAULT_TABLE_ENGINE" 明示的に設定されなかった場合にどのテーブルエンジンを使うか。これは、MVStoreテーブルエンジンのテストをシンプルにするためのもの。
  • MVStore: 暗号化ストアのサポート。標準化されたアルゴリズムのみ使用されている: PBKDF2, SHA-256, XTS-AES, AES-128.
  • MVStore: APIの改善
  • MVStore: mapがリネームできるようになった。
  • MVStore: チャンクの末尾にファイルヘッダもストアされるようになり、結果、書き込み回数が削減された。
  • MVStore: 並列処理をサポートしたmapの実装
  • MVStore: 統合化された例外ハンドリング: メッセージにバージョンが含まれるようになった
  • MVStore: 古いデータが45秒間保持されるようになった。
  • MVStore: 圧縮がデフォルト無効になった。要求により有効にできる。
  • Issue 401: ALTER TABLE ADD ... AFTERをサポート。
  • Issue 365: OSGiサポートの改善。H2は自分自身をデータソースファクトリサービスとして登録する。
  • Issue 270: DISK_SPACE_USEDシステム関数の追加。
  • JDK7でのコンパイル時に、コンパイル時の曖昧さを修正
  • Lucene全文検索インデックスのドロップをサポート。
  • SELECT ... ORDER BY X LIMIT Y OFFSET Zのインメモリデータベースでの部分ソートを使ったパフォーマンスの最適化
  • 実験的なオフヒープメモリストレージエンジン"nioMemFS"と"nioMemLZF"
  • Issue 438: JdbcDatabaseMetaData.getSchemas() が1.3.169現在サポートされていない
  • MySQL compatibility: ALTER TABLE tableName MODIFY [COLUMN] カラム名 カラム定義 をサポート
  • Issue 404: SHOW COLUMNS FROM テーブル名が、ALLOW_LITERALS=NUMBERSの時動作していなかった。
  • TRIGGERのSELECTとFOR EACH ROWの組み合わせをサポートしていない事をはっきりさせるために明確にエラーをスローするようにした
  • Issue 439: Utils.sortTopNが単一要素の配列を処理できなかった