Hatena::ブログ(Diary)

yvsu pron. yas このページをアンテナに追加 RSSフィード

2004-05-20

SQLの解析

SQLの解析は、SqlParserが行い、解析結果は、Nodeのツリーになってます。

public interface Node {
    public int getChildSize();
    public Node getChild(int index);
    public void addChild(Node node);
    public void accept(QueryContext ctx);
}

public interface SqlParser {
    public Node parse(String sql);
}

Nodeの具象クラスには、SqlNode(SQLの断片)、

BindVariableNode(バインド変数用)、IfNode(if文)、

BlockNode(BEGINからENDコメントまでを管理)などがあります。

実際の使い方は、

SqlParser parser = new SqlParserImpl();
Node root = parser.parse(sql);
QueryContext ctx = new QueryContextImpl();
//引数の設定
ctx.addArg(...);
root.accept(ctx);
//QueryContextからSQL文とバインド変数を取り出しS2JDBCで実行

のような感じです。id:masataka_kさん。

ELSE

ELSEではバインド変数は使えるが、BEGINやIFなどのENDタグを

使うものは使えないという仕様に落ち着きました。

基本は1ラインコメントになると思います。

/*IF job != null*/
  job = /*job*/'CLERK'
 --ELSE job is null
/*END*/

S2Unit

S2Unitを使って各テストメソッドが実行されるとき、どーいう順番で何が動くのかS2.0.8のソースを追っかけて纏めてみました。ソース追っかけたと言っても、S2TestCase#runBare()メソッドを読んだだけですけど(;^_^A

なんでこんなの書く気になったかというと、setUp()メソッドでreadXlsAllReplaceDb()メソッドを呼び出したら例外が発生したため、その原因を探ってたからだったりする。

はてなグループ - Seasar Projectグループ - とめどもSeasar日誌

マニュアルにreadXlsXxx()を呼び出すタイミングの記述がないですね。m(_ _)m

心より恥じる。

以下マニュアルに追加予定。

readXlsWriteDb()、readXlsAllReplaceDb()はテスト後に
ロールバックしてデータが元に戻るようにtestXxxTx()の
最初に実行してください。

seasarのからさわぎ in 沖縄

6/12の飛行機が取れたんですが、早い時間は席がなくて、

14:20に那覇空港着になってしまいました。

もっとはやく予約しておけばよかった。心より恥じる。

そろそろタイムスケジュール・場所・内容を決めたいと思います。

-> id:ukki4903さん MLにも書いておきます。

内容

時間は3時間強くらい。

時間によってはどれかはしょっても良いと思ふ。

S2Pluginの名称

S2Pluginの形も見えてきたとおもうので、

そろそろ名前を付けておこうと思います。

一番多く名前のあがった(?)kijimuna(キジムナー)でいきたいと

おもうのですがどうでしょうか。

id:masataka_kさん、id:agtさん。

masataka_kmasataka_k 2004/05/20 10:48 +1

masataka_kmasataka_k 2004/05/20 13:23 パッケージはorg.seasar.kijimuna.**でしょうか。

higayasuohigayasuo 2004/05/20 17:05 パッケージ名の変更は大変でなければ。

ukki4903ukki4903 2004/05/20 17:44 と言うことは、15:00頃開始って感じで良いですか?#まだOIAから返事もらってないや(^_^;

higayasuohigayasuo 2004/05/20 17:54 場所は那覇ですよね。15:00頃開始で大丈夫だと思います。

masataka_kmasataka_k 2004/05/20 18:14 パッケージ名はリファクタ一発というわけには行かないけど、まあずっと残るものですし。

masataka_kmasataka_k 2004/05/20 20:50 S2DaoのSQLコメントパーサーは外部からも使えますか?将来、プラグインからも使いたいのですが。

agtagt 2004/05/21 03:36 キムジナーでお願いします。パッケージもorg.seasar.kijimuna.**で。