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

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

Version 1.4.186 Beta (2015-03-02)

書いたパッチが取り込まれた版。system_rangeテーブル(仮想表というか関数というか)は知ってると便利です。PostgreSQLならgenerate_seriesです。Oracleだとない(と思うので)、1から9が入った表を作ったりするのは、よくやられていたりするのかしら。しかし、…

Version 1.4.185 Beta (2015-01-16)

引き続き、MVStore周りが中心は中心だけど、時々すごい不具合が入ってくる。ここの所そういう感じのが続いてますね。 バージョン 1.4.184で "group by"がテーブル名を無視してしまっており、そのため、セレクトする項目を誤る可能性があった。例: select 0 a…

Version 1.4.184 Beta (2014-12-19)

MVStoreはまだ結構がちゃがちゃしてますね。1.3.183のバグ対応でリリース間隔が狭かったのかな。 version 1.4.183で、デフォルト値がシーケンスによって生成されたカラムを含むテーブルで、インデックスが使用されていなかった。これには、IDENTITYでオート…

Version 1.4.183 Beta (2014-12-13)

MVStore周りの改修が続く。そういえば、先日送ったパッチが取り込まれた。1.4.186に含まれるはず。 MVStore: デフォルトのオートコミット用のバッファのサイズが2倍になった。これにより大量のデータをインサートした後のデータファイルのサイズが削減される…

Version 1.4.182 Beta (2014-10-17)

MVStore周り、引き続きもりもり修正が入っています。それにしてもBeta長い。 MVStore: エラーメッセージとログの改善。オブジェクトをシリアライズする際のエラー時のふるまいを改善。 OSGi: MVStoreパッケージがエクスポートされるようになった MVStore使用…

Version 1.4.181 Beta (2014-08-06)

今回も変更点少ない。 MySQLとの互換性の向上。"use schema"のサポート。 特にデバッグレベルにおいて、トレースファイルへの書き込みが速くなった。 データベースのオプション"defrag_always=true"がMVStoreで動作していなかった。 JDBCエスケープシンタッ…

Version 1.4.180 Beta (2014-07-13)

ベータが続きます。MVStore周りが引き続き中心です。今回は変更点少ないです。 MVStore: ファイルサイズの肥大を避けるために、一定期間で自動でコンパクションが行われるようになった。これについてはまだ実装途中。 テンポラリテーブルのシーケンス(オート…

Version 1.4.179 Beta (2014-06-23)

今回、MVStore周りの大丈夫か?というような不具合が修正されています。ML読んでても、引き続き不具合が出ているようです。まぁ、βだしね... ライセンスがMPL2.0とEPL1.0に変更になった (MPL1.0からMPL2.0へ) Issue565: MVStore: MULTI_THREADEDオプションが…

h2databaseを読む3

データがデータファイルに具体的にどのように書き込まれているかを見てみます。PageDataLeafをみると、キーとそのオフセット(キーに該当するデータの位置)がデータファイルの前のほうから、実データはデータファイルの後ろの方から並べています。オフセット…

h2databaseを読む2

H2のPageStoreでは、データベースのデータを1つのファイルで管理しており、この1つのファイルをページ単位(PAGE_SIZEで指定可能で、デフォルトは2048バイト。512バイトから32768バイトまでの2のべき乗サイズを指定可能です。)で管理します。この1ページがそ…

Version 1.4.178 Beta (2014-05-02)

思ったより短い間隔でリリースされました。MVStoreとOSGi関連の修正が中心。 Issue 559: org.osgi.service.jdbcへの依存をオプションにする ユーザがサポートされないデータベース設定の組み合わせを指定した場合のエラーメッセージの改善 MVStore: マルチス…

Version 1.4.177 Beta (2014-04-12)

さくっと1.4ベータが出ました。次は1.3.178だったりするんでしょうが、ここらへんのバージョン番号のポリシーは独特ですね。 デフォルトで新しいMVStoreストレージを利用するためのMV_STOREオプションが有効に。MVCC設定もデフォルトではMV_STORE設定と同じ…

Version 1.3.176 (2014-04-05)

今回から、1.4Betaでの変更内容がchangelogに載るようになったようです。最近リリース間隔が広くなってきているので、1.4までは半年くらいかかるのかな。試してはいませんが、MV_STOREも大分速くなってきたようです。1.4ではデフォルトのストアが現行のPageS…

Version 1.3.175 (2013-01-18)

今回はchangelogに挙った変更点は若干少なめ。ただMVStoreの修正はほとんどchangelogに載らずにばんばん修正入っているようです。今回のchangelogで初めて知ったのですが、HikariCPという高速が売りのConnection Poolがあるのですね。Tomcat CPの100倍以上速…

Version 1.3.174 (2013-10-19)

LIRSキャッシュ: LIRS cache: bugfix for caches that only contain non-resident entries. For in-memory databases, queries with a "group by" column that is also a hash index threw a RuntimeException. Improved error message for some syntax erro…

h2databaseを読む

H2のデータファイルの内部構造(PageStore)。データファイルは最低で5ページ。デフォルトのページサイズは8192バイト。指定可能なページサイズは64バイトから32768バイトで、2の累乗である必要がある。0ページ目はヘッダ。ページサイズと、書き込みバージョン…

loader周りの動作確認

下記のようにrequireの第一引数としてオブジェクトを渡してあげるとloaderのフェーズ毎にログ出力されるようになる。 require({$ trace:{$ "loader-inject":1, // turn the loader-inject group on "loader-define":0 // turn the loader-define group off }…

vimでdojoの開発をしやすくなる1行。

dojoというかAMDでモジュール化されているjavascript全般ですが。.vimrcに以下の行を追加。 autocmd FileType javascript setlocal includeexpr=substitute(v:fname,'$','.js','') | setlocal path+=;/ 下記のdefineにかいてあるような、モジュールID(パス)…

サジェスト機能を作ってみた

サジェスト機能作ってみようかなと思って調べてみたら、下記のエントリを見つけて、ああそうかとおもったので作ってみた。http://tech.naver.jp/blog/?p=367ソースコードは下記。Eclipseのプロジェクトになっている。gitのリポジトリを作ったときにフォルダ…

Version 1.3.173 (2013-07-28)

今回は、PgServer周りの修正が多かったです。PgServer経由で使っているところから、多数のパッチが寄せられたようです。あと、GEOMETRYデータタイプとspatial indexが追加になったのがさらっと書いてありますが、大きいのでは。これも、パッチの提供があった…

Version 1.3.172 (2013-05-25)

MVStore周りの修正が多いですが、オプティマイザでインデックスを選択する際にorder byの項目もコスト計算に含めるようになったりとちょっと面白い。あと、CREATE ALIASでGroovyが使えるようになったというのは、結構面白いのではないかと。 参照整合性: 参…

Dojoのモジュールについて 5 dojo/dom-construct

dojo/dom-construct dojo/dom-constructはDOM組み立てるためのdojoのAPIです。dojo内では、domConstructという名前で使っている事が多いようです。 toDom 文字列からDOMノードを構築します。不正な文字列だった場合にはそのまま文字列が返ってきます。引数説…

Dojoのモジュールについて 4 dojo/dom-class

dojo/dom-class dojo/dom-classはDOMのclassを操作するためのdojoのAPIです。dojo内では、domClassという名前で使っている事が多いようです。 containes 対象のDOMに指定したクラスが設定されているかをtrue/falseで返します。引数説明Object/string対象のdo…

Dojoのモジュールについて 3 dojo/dom-attr

dojo/dom-attr dojo/dom-attrはDOMの属性を操作するためのAPIを定義しています。dojo内では、domAttrという名前で使っている事が多いようです。 get/getNodeProp どちらも指定したDOMの属性を取得できます。何が違うかと言うと、getは明示的に設定された属性…

MVTableEngineを使ってみた

1.3.171からExperimentalながら使用可能になったMVTableEngineを使ってみる。更新系はまずまずですが、今のところ参照は大分遅いです。すでにいくつか不具合が発見されては直ってしている状態ですし、今後に期待です。MVTableEngineが安定すれば、MultiThrea…

Version 1.3.171 (2013-03-17)

久しぶりにリリースされました。今回は、MVTableEngineがExperimentalとはいえ使えるようになったのが特筆すべき点でしょうか。 Security: TCP serverがいくつかのケースでアクセス権限による制御を正しく行っていなかった。これは"tcpAllowOthers"フラグを…

Dojoのモジュールについて 2 dojo/dom

dojo/dom dojo/domはコアとなるDOM APIを定義しています。定義されているのはbyId/isDescendant/setSelectableの3つの関数です。byIdはよく使うと思いますが、あとの二つはそれほどでも、という感じです。サンプル。 <html> <head> <meta charset="utf-8"> <title>Tutorial: Hello Dojo!</title> </head> <body> <div id="a1"> <div id="b1"> <span id="c1">this is </span></div></div></body></html>…

Dojoのモジュールについて 1 dojo

Dojo Toolkitのモジュールについて、ざっくり見ていきます。結構細かく分かれてます。まず、大きく3つのパッケージ(dojo/dijit/dojox)に分かれます。 dojo Dojo Toolkitのベースとなるコアパッケージです。結構あるな...と漠然と思っていましたが、改めて数…

dojo toolkitやってみる 4

モジュールを作ってみます。以下のような構成です。sample7.html <html> <head> <meta charset="utf-8"> <title>Tutorial: Hello Dojo!</title> </head> <body> <h1 id="greeting">Hello</h1> <script src="dojo/dojo.js" data-dojo-config="async: true"></script> <script> require(['ysobj/hello','dojo/domR…</body></html>

dojo toolkitやってみる 3

dojo/aspectの3つの関数のうち、aroundを使ってなかったので使ってみる。 <html> <head> <meta charset="utf-8"> <title>Tutorial: Hello Dojo!</title> </head> <body> <h1 id="greeting">Hello</h1> <h1 id="greetingJa">こんにちは</h1> <script src="dojo/dojo.js" data-dojo-config="async: true"></script> </body></html>