index c840b0e0a56636ec5b2712d49d22fff155f546b2..06151a81d4fdb04bb49143dd794ee60c30a00618 100644 (file)
--- a/src/core/store_lookup.c
+++ b/src/core/store_lookup.c
assert((! CMP_M(ITER_M(m)->m)->left) && CMP_M(ITER_M(m)->m)->right);
iter = sdb_store_expr_iter(ITER_M(m)->iter, obj, filter);
- if (! iter)
+ if (! iter) {
+ sdb_log(SDB_LOG_WARNING, "store: Invalid iterator");
return 0;
+ }
status = all;
while (sdb_store_expr_iter_has_next(iter)) {
sdb_data_t value = SDB_DATA_INIT, array = SDB_DATA_INIT;
int status = 1;
- assert((m->type == MATCHER_IN) || (m->type == MATCHER_NIN));
+ assert(m->type == MATCHER_IN);
assert(CMP_M(m)->left && CMP_M(m)->right);
if (expr_eval2(CMP_M(m)->left, &value,
status = sdb_data_inarray(&value, &array);
expr_free_datum2(CMP_M(m)->left, &value, CMP_M(m)->right, &array);
- if (m->type == MATCHER_NIN)
- return !status;
return status;
} /* match_in */
match_iter,
match_iter,
match_in,
- match_in,
/* unary operators */
match_unary,
MATCHER_IN, left, right));
} /* sdb_store_in_matcher */
-sdb_store_matcher_t *
-sdb_store_nin_matcher(sdb_store_expr_t *left, sdb_store_expr_t *right)
-{
- return M(sdb_object_create("not-in-matcher", cmp_type,
- MATCHER_NIN, left, right));
-} /* sdb_store_in_matcher */
-
sdb_store_matcher_t *
sdb_store_regex_matcher(sdb_store_expr_t *left, sdb_store_expr_t *right)
{
MATCHER_ISFALSE, expr));
} /* sdb_store_isfalse_matcher */
-sdb_store_matcher_op_cb
-sdb_store_parse_matcher_op(const char *op)
-{
- if (! strcasecmp(op, "<"))
- return sdb_store_lt_matcher;
- else if (! strcasecmp(op, "<="))
- return sdb_store_le_matcher;
- else if (! strcasecmp(op, "="))
- return sdb_store_eq_matcher;
- else if (! strcasecmp(op, "!="))
- return sdb_store_ne_matcher;
- else if (! strcasecmp(op, ">="))
- return sdb_store_ge_matcher;
- else if (! strcasecmp(op, ">"))
- return sdb_store_gt_matcher;
- else if (! strcasecmp(op, "=~"))
- return sdb_store_regex_matcher;
- else if (! strcasecmp(op, "!~"))
- return sdb_store_nregex_matcher;
- return NULL;
-} /* sdb_store_parse_matcher_op */
-
-int
-sdb_store_parse_object_type(const char *name)
-{
- if (! strcasecmp(name, "host"))
- return SDB_HOST;
- else if (! strcasecmp(name, "service"))
- return SDB_SERVICE;
- else if (! strcasecmp(name, "metric"))
- return SDB_METRIC;
- else if (! strcasecmp(name, "attribute"))
- return SDB_ATTRIBUTE;
- return -1;
-} /* sdb_store_parse_object_type */
-
-int
-sdb_store_parse_object_type_plural(const char *name)
-{
- if (! strcasecmp(name, "hosts"))
- return SDB_HOST;
- else if (! strcasecmp(name, "services"))
- return SDB_SERVICE;
- else if (! strcasecmp(name, "metrics"))
- return SDB_METRIC;
- else if (! strcasecmp(name, "attributes"))
- return SDB_ATTRIBUTE;
- return -1;
-} /* sdb_store_parse_object_type_plural */
-
-int
-sdb_store_parse_field_name(const char *name)
-{
- if (! strcasecmp(name, "name"))
- return SDB_FIELD_NAME;
- else if (! strcasecmp(name, "last_update"))
- return SDB_FIELD_LAST_UPDATE;
- else if (! strcasecmp(name, "age"))
- return SDB_FIELD_AGE;
- else if (! strcasecmp(name, "interval"))
- return SDB_FIELD_INTERVAL;
- else if (! strcasecmp(name, "backend"))
- return SDB_FIELD_BACKEND;
- else if (! strcasecmp(name, "value"))
- return SDB_FIELD_VALUE;
- return -1;
-} /* sdb_store_parse_field_name */
-
sdb_store_matcher_t *
sdb_store_dis_matcher(sdb_store_matcher_t *left, sdb_store_matcher_t *right)
{