[groonga-dev,00225] grn_expr_snip()とAND

Back to archive index

Kouhei Sutou kou****@clear*****
2009年 9月 30日 (水) 20:57:47 JST


須藤です。

grn_expr_snip()するgrn_exprがANDを含んでいるとunmatched
parenthesisとエラーを吐いちゃうみたいです。

例えば、こんな風にテストを変更して

diff --git a/test/unit/core/test-expr.c b/test/unit/core/test-expr.c
index cb741fd..cd30dbb 100644
--- a/test/unit/core/test-expr.c
+++ b/test/unit/core/test-expr.c
@@ -1172,7 +1172,7 @@ test_expr_snip(void)
   GRN_EXPR_CREATE_FOR_QUERY(&context, docs, expr, v);
   cut_assert_not_null(expr);
 
-  PARSE(expr, "search OR engine OR column", 1);
+  PARSE(expr, "search engine column", 1);
 
   {
     grn_snip *snip;

実行すると、

  % test/unit/run-test.sh -n /expr_snip/

こんな風になって、

  F

  1) Failure: test_expr_snip
  expected: <snip> is not NULL
  test/unit/core/test-expr.c:1202: test_expr_snip(): cut_assert_not_null(snip, )

  Finished in 0.111184 seconds (total: 0.031137 seconds)

  1 test(s), 27 assertion(s), 1 failure(s), 0 error(s), 0 pending(s), 0 omission(s), 0 notification(s)
  0% passed

/var/log/groonga/groonga.logに

  2009-09-30 20:50:57.559826|n| grn_init
  2009-09-30 20:50:57.656092|e| unmatched parenthesis
  2009-09-30 20:50:57.656487|e|
  /home/kou/work/c/groonga/lib/.libs/libgroonga.so.0 [0x7f6e6d1c2e65] <=
  /home/kou/work/c/groonga/lib/.libs/libgroonga.so.0 [0x7f6e6d1c3b1d] <=
  /home/kou/work/c/groonga/lib/.libs/libgroonga.so.0(grn_expr_snip+0xb6) [0x7f6e6d1d01bb] <=
  test/unit/core/.libs/test-expr.so(test_expr_snip+0x358) [0x7f6e6870756d] <=
  /usr/lib/libcutter.so.0 [0x7f6e6f26731d] <=
  /usr/lib/libcutter.so.0 [0x7f6e6f269d48] <=
  /usr/lib/libcutter.so.0(cut_test_case_run_with_filter+0x62) [0x7f6e6f269dc2] <=
  /usr/lib/libcutter.so.0 [0x7f6e6f26a7d9] <=
  /usr/lib/libcutter.so.0 [0x7f6e6f26ac08] <=
  /usr/lib/libcutter.so.0(cut_test_suite_run_with_filter+0x70) [0x7f6e6f26aeb0] <=
  /usr/lib/libcutter.so.0 [0x7f6e6f2657d0] <=
  /usr/lib/libcutter.so.0(cut_runner_run+0x38) [0x7f6e6f263d28] <=
  /usr/lib/libcutter.so.0(cut_run_context_start+0x42) [0x7f6e6f260a82] <=
  /usr/lib/libcutter.so.0(cut_start_run_context+0x14b) [0x7f6e6f265b9b] <=
  /usr/lib/libcutter.so.0(cut_run+0x2c) [0x7f6e6f265d3c] <=
  /usr/bin/cutter [0x40072f]
  2009-09-30 20:50:57.668563|n| grn_fin (1)

とでます。

エラーになるとしても「unmatched parenthesis」ではないメッセー
ジの方がよいかと思います。

-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード (http://www.clear-code.com/)




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