Code

data: Use a predefined format for sdb_strftime().
[sysdb.git] / src / parser / analyzer.c
index 28d312142ddca8a33b580d06b1503d4d2248de7d..9bbd9ba7c9fe31c1575a1160f3ffd218c6ba04fa 100644 (file)
@@ -320,7 +320,7 @@ analyze_value(int context, sdb_ast_value_t *v, sdb_strbuf_t *errbuf)
        }
 
        if (context != UNSPEC_CONTEXT) {
-               /* skip this check if we don't know the context; it's up to the
+               /* 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)) {
@@ -328,6 +328,11 @@ analyze_value(int context, sdb_ast_value_t *v, sdb_strbuf_t *errbuf)
                                        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 */
@@ -563,8 +568,8 @@ analyze_timeseries(sdb_ast_timeseries_t *ts, sdb_strbuf_t *errbuf)
        }
        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;