diff --git a/src/frontend/query.c b/src/frontend/query.c
index 7b105e731bf056af321611bc444a2a7287151d6a..338d95a75c6351343a6a2b248b3f5bc2a61cdafa 100644 (file)
--- a/src/frontend/query.c
+++ b/src/frontend/query.c
return -1;
parsetree = sdb_fe_parse(sdb_strbuf_string(conn->buf),
return -1;
parsetree = sdb_fe_parse(sdb_strbuf_string(conn->buf),
- (int)conn->cmd_len);
+ (int)conn->cmd_len, conn->errbuf);
if (! parsetree) {
char query[conn->cmd_len + 1];
strncpy(query, sdb_strbuf_string(conn->buf), conn->cmd_len);
query[sizeof(query) - 1] = '\0';
if (! parsetree) {
char query[conn->cmd_len + 1];
strncpy(query, sdb_strbuf_string(conn->buf), conn->cmd_len);
query[sizeof(query) - 1] = '\0';
- sdb_log(SDB_LOG_ERR, "frontend: Failed to parse query '%s'",
- query);
+ sdb_log(SDB_LOG_ERR, "frontend: Failed to parse query '%s': %s",
+ query, sdb_strbuf_string(conn->errbuf));
return -1;
}
return -1;
}
}
if (node) {
}
if (node) {
- if (sdb_fe_analyze(node)) {
- char query[conn->cmd_len + 1];
- strncpy(query, sdb_strbuf_string(conn->buf), conn->cmd_len);
- query[sizeof(query) - 1] = '\0';
- sdb_log(SDB_LOG_ERR, "frontend: Failed to verify query '%s'",
- query);
- status = -1;
- }
- else
- status = sdb_fe_exec(conn, node);
+ status = sdb_fe_exec(conn, node);
sdb_object_deref(SDB_OBJ(node));
}
sdb_object_deref(SDB_OBJ(node));
}
matcher = sdb_strbuf_string(conn->buf) + sizeof(uint32_t);
matcher_len = conn->cmd_len - sizeof(uint32_t);
matcher = sdb_strbuf_string(conn->buf) + sizeof(uint32_t);
matcher_len = conn->cmd_len - sizeof(uint32_t);
- m = sdb_fe_parse_matcher(matcher, (int)matcher_len);
+ m = sdb_fe_parse_matcher(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 "
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'", expr);
+ "lookup condition '%s': %s", expr,
+ sdb_strbuf_string(conn->errbuf));
return -1;
}
node.type = type;
m_node.matcher = m;
return -1;
}
node.type = type;
m_node.matcher = m;
+ /* run analyzer separately; parse_matcher is missing
+ * the right context to do so */
if (sdb_fe_analyze(SDB_CONN_NODE(&node))) {
char expr[matcher_len + 1];
strncpy(expr, matcher, sizeof(expr));
expr[sizeof(expr) - 1] = '\0';
if (sdb_fe_analyze(SDB_CONN_NODE(&node))) {
char expr[matcher_len + 1];
strncpy(expr, matcher, sizeof(expr));
expr[sizeof(expr) - 1] = '\0';
- sdb_log(SDB_LOG_ERR, "frontend: Failed to verify "
+ sdb_strbuf_sprintf(conn->errbuf, "Failed to verify "
"lookup condition '%s'", expr);
status = -1;
}
"lookup condition '%s'", expr);
status = -1;
}