[groonga-dev,00210] Re: 末尾に:をもつ項が最初にあるクエリでSEGVする

Back to archive index

morit****@razil***** morit****@razil*****
2009年 9月 23日 (水) 09:37:46 JST


森です。

>>> Kouhei Sutou さんは書きました:
> 須藤です。
> 
> In <20090****@epepe*****>
>   "[groonga-dev,00203] Re: 末尾に:をもつ項が最初にあるクエリでSEGVする" on Tue, 22 Sep 2009 14:54:35 +0900,
>   morit****@razil***** wrote:
> 
> > なお、grn_expr_parse()関数のparse_level引数に、2〜3を指定したときに限り、
> > 
> >   カラム名:値
> > 
> > のような文字列を、カラム検索条件として解釈するようにしました。
> > 
> > したがって、
> > 
> >  "photo:"
> > 
> > のようなクエリは以下のように解釈されます。
> > 
> > parse_levelに0〜1を指定した場合:
> > 
> >  単なる文字列として解釈されます。
> > 
> > parse_levelに2〜3を指定した場合:
> > 
> >  "photo"という名前のカラムに対する検索条件として解釈されます。
> >  名前に一致するカラムが存在しない場合はエラーが返ります。
> 
> 実は、parse_levelという名前に違和感があったのですが、やっぱり、
> levelじゃないと思うんです。
> 
> levelだと互換性を保ちながら段階的に新しい機能が追加されてい
> くイメージがあるのですが、1 -> 2に変わったときは、既存の文法
> の意味が変わってしまうので互換性がありませんよね。たぶん、そ
> こが違和感の原因だと思います。
> 
> 
> ということで、parse_levelをparserにするのはどうでしょうか?
> (内部的にはparserじゃなくてlexerかと思いますが)
> 例えば、こんな感じです。
> 
>   * parse_level: 0-1: → GRN_EXPR_PARSER_COLUMN_QUERY
>   * parse_level: 2-3: → GRN_EXPR_PARSER_TABLE_QUERY
>   * parse_level: 4:   → GRN_EXPR_PARSER_EXPRESSION
> 
> 4はexpressionよりlanguageの方がよいかもしれませんが、イメー
> ジはこんな感じです。
> 
> どんなもんでしょうか?

そうですねー。確かにparse_levelはしっくり来ないのですが、
PARSER_*のそれぞれ適切な名前付けが難しく、まだまとまっていない状態です。

いずれにしても、現状のように数値で指定するのはやめて、
enum型で宣言するか、flagにするか、もっと適切な仕様に改めたいと思います。

> -- 
> 須藤 功平 <kou****@clear*****>
> 株式会社クリアコード (http://www.clear-code.com/)
> 
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
> 
--
morita




groonga-dev メーリングリストの案内
Back to archive index