[Groonga-commit] groonga/gcs [master] bq: throw exception for garbage after filter value

Back to archive index

null+****@clear***** null+****@clear*****
2012年 8月 6日 (月) 13:53:36 JST


Kouhei Sutou	2012-08-06 13:53:36 +0900 (Mon, 06 Aug 2012)

  New Revision: 7407fc1f989f752e5bceb77fb29486c0e42cac81
  https://github.com/groonga/gcs/commit/7407fc1f989f752e5bceb77fb29486c0e42cac81

  Log:
    bq: throw exception for garbage after filter value

  Modified files:
    lib/bq-translator.js
    test/bq-translator.test.js

  Modified: lib/bq-translator.js (+4 -3)
===================================================================
--- lib/bq-translator.js    2012-08-06 13:47:39 +0900 (a5cb3d1)
+++ lib/bq-translator.js    2012-08-06 13:53:36 +0900 (00eb8f8)
@@ -144,9 +144,10 @@ BooleanQueryTranslator.prototype = {
         this.skipSpaces();
         var expression = this.translateExpressionValueUnsignedInteger(field);
         this.skipSpaces();
-        if (this.query[this.offset] != ")") {
-          // TODO: report error: have garbage
-          return "";
+        var character = this.query[this.offset];
+        if (character != ")") {
+          this.throwTranslateError("a garbage character after value: " +
+                                   "<" + character + ">");
         }
         this.offset++;
         return expression;

  Modified: test/bq-translator.test.js (+5 -0)
===================================================================
--- test/bq-translator.test.js    2012-08-06 13:47:39 +0900 (3afa103)
+++ test/bq-translator.test.js    2012-08-06 13:53:36 +0900 (24c9518)
@@ -164,6 +164,11 @@ suite('BoolanQueryTranslator', function() {
                  "(field ||",
                  "close parenthesis is missing: operator:<field>");
 
+  testGroupError("filter: garbage after value",
+                 "(filter field1 29 'garbage')",
+                 "(filter field1 29 |'|garbage')",
+                 "a garbage character after value: <'>");
+
   // testGroupError("and: missing close parentheis",
   //                "(and f1:'k1' f2:'k2'",
   //                "(and f1:'k1' f2:'k2'||",
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



Groonga-commit メーリングリストの案内
Back to archive index