Code

frontend/grammar: Use '.' instead of ':' to access queryable object fields.
[sysdb.git] / src / frontend / parser.c
index e8c0cdef314c7b186110f578ec3ab84f6f9cf908..0e0534e4af3c9c0be6bb93c5ed1dfda319cf75b1 100644 (file)
@@ -88,7 +88,7 @@ sdb_fe_parse(const char *query, int len)
 } /* sdb_fe_parse */
 
 sdb_store_matcher_t *
-sdb_fe_parse_matcher(const char *expr, int len)
+sdb_fe_parse_matcher(const char *cond, int len)
 {
        sdb_fe_yyscan_t scanner;
        sdb_fe_yyextra_t yyextra;
@@ -98,10 +98,10 @@ sdb_fe_parse_matcher(const char *expr, int len)
 
        int yyres;
 
-       if (scanner_init(expr, len, &scanner, &yyextra))
+       if (scanner_init(cond, len, &scanner, &yyextra))
                return NULL;
 
-       yyextra.mode = SDB_PARSE_EXPR;
+       yyextra.mode = SDB_PARSE_COND;
 
        yyres = sdb_fe_yyparse(scanner);
        sdb_fe_scanner_destroy(scanner);
@@ -120,7 +120,9 @@ sdb_fe_parse_matcher(const char *expr, int len)
        else
                m = NULL;
 
+       CONN_MATCHER(node)->matcher = NULL;
        sdb_llist_destroy(yyextra.parsetree);
+       sdb_object_deref(SDB_OBJ(node));
        return m;
 } /* sdb_fe_parse_matcher */