diff --git a/src/frontend/query.c b/src/frontend/query.c
index 79886105bd3d68ed0dd099114af5d7d8913983cf..56cd4ec86638ef537d8bdc09fabc15e4b90ed0b0 100644 (file)
--- a/src/frontend/query.c
+++ b/src/frontend/query.c
matcher = sdb_strbuf_string(conn->buf) + sizeof(uint32_t);
matcher_len = conn->cmd_len - sizeof(uint32_t);
- m = sdb_parser_parse_conditional(matcher, (int)matcher_len, conn->errbuf);
+ m = sdb_parser_parse_conditional((int)type,
+ matcher, (int)matcher_len, conn->errbuf);
if (! m) {
- char expr[matcher_len + 1];
- strncpy(expr, matcher, sizeof(expr));
- expr[sizeof(expr) - 1] = '\0';
- sdb_log(SDB_LOG_ERR, "frontend: Failed to parse lookup condition '%s': %s",
- expr, sdb_strbuf_string(conn->errbuf));
- return -1;
- }
-
- ast = sdb_ast_lookup_create((int)type, m, /* filter = */ NULL);
- /* run analyzer using the full context */
- if (ast && sdb_parser_analyze(ast, conn->errbuf)) {
char expr[matcher_len + 1];
char err[sdb_strbuf_len(conn->errbuf) + sizeof(expr) + 64];
strncpy(expr, matcher, sizeof(expr));
expr[sizeof(expr) - 1] = '\0';
snprintf(err, sizeof(err), "Failed to parse lookup condition '%s': %s",
expr, sdb_strbuf_string(conn->errbuf));
+ sdb_log(SDB_LOG_ERR, "frontend: %s", err);
sdb_strbuf_sprintf(conn->errbuf, "%s", err);
- status = -1;
+ return -1;
}
- else
- status = exec_query(conn, ast);
+
+ ast = sdb_ast_lookup_create((int)type, m, /* filter = */ NULL);
+ status = exec_query(conn, ast);
if (! ast)
sdb_object_deref(SDB_OBJ(m));
sdb_object_deref(SDB_OBJ(ast));