Code

store: Add sdb_store_query_prepare_matcher().
[sysdb.git] / src / frontend / grammar.y
index ac899e3708212fe78b928fe6977fb86c6d5cfb2b..31b71a0eba7665b94de03bd47c50a0cd989ff24e 100644 (file)
@@ -78,7 +78,7 @@ sdb_fe_yyerrorf(YYLTYPE *lval, sdb_fe_yyscan_t scanner, const char *fmt, ...);
 #define MODE_TO_STRING(m) \
        (((m) == SDB_PARSE_DEFAULT) ? "statement" \
                : ((m) == SDB_PARSE_COND) ? "condition" \
-               : ((m) == SDB_PARSE_EXPR) ? "expression" \
+               : ((m) == SDB_PARSE_ARITH) ? "arithmetic expression" \
                : "UNKNOWN")
 
 %}
@@ -119,7 +119,7 @@ sdb_fe_yyerrorf(YYLTYPE *lval, sdb_fe_yyscan_t scanner, const char *fmt, ...);
 
 %token HOST_T HOSTS_T SERVICE_T SERVICES_T METRIC_T METRICS_T
 %token ATTRIBUTE_T ATTRIBUTES_T
-%token NAME_T LAST_UPDATE_T AGE_T INTERVAL_T BACKEND_T
+%token NAME_T LAST_UPDATE_T AGE_T INTERVAL_T BACKEND_T VALUE_T
 
 %token LAST UPDATE
 
@@ -244,7 +244,7 @@ statements:
        expression
                {
                        /* only accepted in expression parse mode */
-                       if (! (parser_mode & SDB_PARSE_EXPR)) {
+                       if (! (parser_mode & SDB_PARSE_ARITH)) {
                                sdb_fe_yyerrorf(&yylloc, scanner,
                                                YY_("syntax error, unexpected expression, "
                                                        "expecting %s"), MODE_TO_STRING(parser_mode));
@@ -700,6 +700,8 @@ field:
        INTERVAL_T { $$ = SDB_FIELD_INTERVAL; }
        |
        BACKEND_T { $$ = SDB_FIELD_BACKEND; }
+       |
+       VALUE_T { $$ = SDB_FIELD_VALUE; }
        ;
 
 cmp:
@@ -867,7 +869,7 @@ name_iter_matcher(int type, sdb_store_expr_t *iter, const char *cmp,
        sdb_store_matcher_t *m, *tmp = NULL;
        assert(cb);
 
-       m = cb(iter, expr);
+       m = cb(NULL, expr);
        if (type == MATCHER_ANY)
                tmp = sdb_store_any_matcher(iter, m);
        else if (type == MATCHER_ALL)