diff --git a/src/parser/analyzer.c b/src/parser/analyzer.c
index f352a0d630cf2ae5d7e69534658e4493724a1e3e..9bbd9ba7c9fe31c1575a1160f3ffd218c6ba04fa 100644 (file)
--- a/src/parser/analyzer.c
+++ b/src/parser/analyzer.c
return -1;
}
- if ((context != SDB_ATTRIBUTE) && (v->type == SDB_FIELD_VALUE)) {
- sdb_strbuf_sprintf(errbuf, "Invalid expression %s.value",
- SDB_FIELD_TO_NAME(v->type));
- return -1;
+ if (context != UNSPEC_CONTEXT) {
+ /* skip these checks if we don't know the context; it's up to the
+ * caller to check again once the right context information is
+ * available */
+ if ((context != SDB_ATTRIBUTE) && (v->type == SDB_FIELD_VALUE)) {
+ sdb_strbuf_sprintf(errbuf, "Invalid expression %s.value",
+ SDB_FIELD_TO_NAME(context));
+ return -1;
+ }
+ if ((context != SDB_METRIC) && (v->type == SDB_FIELD_TIMESERIES)) {
+ sdb_strbuf_sprintf(errbuf, "Invalid expression %s.timeseries",
+ SDB_FIELD_TO_NAME(context));
+ return -1;
+ }
}
return 0;
} /* analyze_value */
}
if (ts->end <= ts->start) {
char start_str[64], end_str[64];
- sdb_strftime(start_str, sizeof(start_str), "%F %T Tz", ts->start);
- sdb_strftime(end_str, sizeof(end_str), "%F %T Tz", ts->end);
+ sdb_strftime(start_str, sizeof(start_str), ts->start);
+ sdb_strftime(end_str, sizeof(end_str), ts->end);
sdb_strbuf_sprintf(errbuf, "Start time (%s) greater than "
"end time (%s) in STORE command", start_str, end_str);
return -1;