diff --git a/src/frontend/query.c b/src/frontend/query.c
index 338d95a75c6351343a6a2b248b3f5bc2a61cdafa..6e94f646f2f9d1c20dc2f12dbd30236283dda21a 100644 (file)
--- a/src/frontend/query.c
+++ b/src/frontend/query.c
/* run analyzer separately; parse_matcher is missing
* the right context to do so */
- if (sdb_fe_analyze(SDB_CONN_NODE(&node))) {
+ if (sdb_fe_analyze(SDB_CONN_NODE(&node), 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';
- sdb_strbuf_sprintf(conn->errbuf, "Failed to verify "
- "lookup condition '%s'", expr);
+ snprintf(err, sizeof(err), "Failed to parse "
+ "lookup condition '%s': %s", expr,
+ sdb_strbuf_string(conn->errbuf));
+ sdb_strbuf_sprintf(conn->errbuf, "%s", err);
status = -1;
}
else
sdb_store_json_formatter_t *f;
sdb_strbuf_t *buf;
- /* XXX: support other types */
- if (type != SDB_HOST) {
- sdb_log(SDB_LOG_ERR, "frontend: Invalid object type %d "
- "in LOOKUP command", type);
- sdb_strbuf_sprintf(conn->errbuf,
- "LOOKUP: Invalid object type %d", type);
- return -1;
- }
-
buf = sdb_strbuf_create(1024);
if (! buf) {
char errbuf[1024];
sdb_strbuf_memcpy(buf, &res_type, sizeof(uint32_t));
- if (sdb_store_scan(SDB_HOST, m, filter, lookup_tojson, f)) {
- sdb_log(SDB_LOG_ERR, "frontend: Failed to lookup hosts");
- sdb_strbuf_sprintf(conn->errbuf, "Failed to lookup hosts");
+ if (sdb_store_scan(type, m, filter, lookup_tojson, f)) {
+ sdb_log(SDB_LOG_ERR, "frontend: Failed to lookup %ss",
+ SDB_STORE_TYPE_TO_NAME(type));
+ sdb_strbuf_sprintf(conn->errbuf, "Failed to lookup %ss",
+ SDB_STORE_TYPE_TO_NAME(type));
sdb_strbuf_destroy(buf);
free(f);
return -1;