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

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

Version 1.3.166 (2012-04-08)

それほど変更点なし。

  • ページサイズの半分を超えるような大きなサイズのインデックスで不整合を引き起こす事があり、結果、PageBtree.getRowでArrayIndexOutOfBoundsExceptionもしくはPageBtreeLeafにて"Row not found"が発生していた。また、そのようなインデックスで過剰にディスクを使用していた。
  • Server mode: 64行を超えるCLOBを含む行を検索した際に、エラーメッセージ"The object is already closed"がスローされていた。
  • ConvertTraceFile: トレースファイル内の時刻がlongとしてパースされるようになった。
  • 不正なコネクション設定が検出されるようになった。
  • Issue 387: WHERE condition getting pushed into sub-query with LIMIT.
    • 文章の意味がよく分からない...。whereの条件がLIMIT句を持っているサブクエリの中に入ってしまう、ということ? Issueの実例はわかりやすいです。
DROP TABLE COFFEES if exists;
CREATE TABLE COFFEES (COF_NAME VARCHAR,PRICE INT);

INSERT INTO COFFEES (COF_NAME,PRICE) VALUES ('Colombian',       5);
INSERT INTO COFFEES (COF_NAME,PRICE) VALUES ('French_Roast',    5);
INSERT INTO COFFEES (COF_NAME,PRICE) VALUES ('Colombian_Decaf', 20);

select * from (
  select COF_NAME, PRICE from COFFEES order by COF_NAME LIMIT 2
  );

  select * from (
    select COF_NAME, PRICE from COFFEES order by COF_NAME LIMIT 2
	) where PRICE < 10;
    • 1.3.165
sql> select * from (select COF_NAME, PRICE from COFFEES order by COF_NAME LIMIT 2) where PRICE < 10;
COF_NAME     | PRICE
Colombian    | 5
French_Roast | 5
(2 rows, 5 ms)
    • 1.3.166
sql> select * from (select COF_NAME, PRICE from COFFEES order by COF_NAME LIMIT 2) where PRICE < 10;
COF_NAME  | PRICE
Colombian | 5
(1 row, 17 ms)
sql>