Code

store: Add the timeseries field to metrics.
[sysdb.git] / src / parser / grammar.y
index ed2b070dbb23fef9b2af493286ba3fea4653ac97..339f17ae43432dbcafd9fe6c2d1b5d7aead796c6 100644 (file)
@@ -127,6 +127,8 @@ sdb_parser_yyerrorf(YYLTYPE *lval, sdb_parser_yyscan_t scanner, const char *fmt,
 /* NULL token */
 %token NULL_T
 
+%token TRUE FALSE
+
 %token FETCH LIST LOOKUP STORE TIMESERIES
 
 %token <str> IDENTIFIER STRING
@@ -453,13 +455,17 @@ comparison:
        |
        ANY expression cmp expression
                {
-                       $$ = sdb_ast_iter_create(SDB_AST_ANY, $3, $2, $4);
+                       sdb_ast_node_t *n = sdb_ast_op_create($3, NULL, $4);
+                       CK_OOM(n);
+                       $$ = sdb_ast_iter_create(SDB_AST_ANY, $2, n);
                        CK_OOM($$);
                }
        |
        ALL expression cmp expression
                {
-                       $$ = sdb_ast_iter_create(SDB_AST_ALL, $3, $2, $4);
+                       sdb_ast_node_t *n = sdb_ast_op_create($3, NULL, $4);
+                       CK_OOM(n);
+                       $$ = sdb_ast_iter_create(SDB_AST_ALL, $2, n);
                        CK_OOM($$);
                }
        |
@@ -477,6 +483,34 @@ comparison:
                        CK_OOM($$);
                }
        |
+       expression IS TRUE
+               {
+                       $$ = sdb_ast_op_create(SDB_AST_ISTRUE, NULL, $1);
+                       CK_OOM($$);
+               }
+       |
+       expression IS NOT TRUE
+               {
+                       $$ = sdb_ast_op_create(SDB_AST_ISTRUE, NULL, $1);
+                       CK_OOM($$);
+                       $$ = sdb_ast_op_create(SDB_AST_NOT, NULL, $$);
+                       CK_OOM($$);
+               }
+       |
+       expression IS FALSE
+               {
+                       $$ = sdb_ast_op_create(SDB_AST_ISFALSE, NULL, $1);
+                       CK_OOM($$);
+               }
+       |
+       expression IS NOT FALSE
+               {
+                       $$ = sdb_ast_op_create(SDB_AST_ISFALSE, NULL, $1);
+                       CK_OOM($$);
+                       $$ = sdb_ast_op_create(SDB_AST_NOT, NULL, $$);
+                       CK_OOM($$);
+               }
+       |
        expression IN expression
                {
                        $$ = sdb_ast_op_create(SDB_AST_IN, $1, $3);