Code

parser: Let the TIMESERIES command accept optional data-source names.
[sysdb.git] / src / parser / ast.c
index dcfe7862bd0b73c891ea017796a28cc626cf0589..1db342cadf6e6b796fafd8ed05c39d985efce23b 100644 (file)
@@ -141,6 +141,13 @@ timeseries_destroy(sdb_object_t *obj)
                free(timeseries->hostname);
        if (timeseries->metric)
                free(timeseries->metric);
+       if (timeseries->data_names) {
+               size_t i;
+               for (i = 0; i < timeseries->data_names_len; i++)
+                       free(timeseries->data_names[i]);
+               free(timeseries->data_names);
+               timeseries->data_names = NULL;
+       }
        timeseries->hostname = timeseries->metric = NULL;
 } /* timeseries_destroy */
 
@@ -347,7 +354,8 @@ sdb_ast_lookup_create(int obj_type, sdb_ast_node_t *matcher,
 sdb_ast_node_t *
 sdb_ast_store_create(int obj_type, char *hostname,
                int parent_type, char *parent, char *name, sdb_time_t last_update,
-               char *store_type, char *store_id, sdb_data_t value)
+               char *store_type, char *store_id, sdb_time_t store_last_update,
+               sdb_data_t value)
 {
        sdb_ast_store_t *store;
        store = SDB_AST_STORE(sdb_object_create("STORE", st_type));
@@ -364,12 +372,14 @@ sdb_ast_store_create(int obj_type, char *hostname,
        store->last_update = last_update;
        store->store_type = store_type;
        store->store_id = store_id;
+       store->store_last_update = store_last_update;
        store->value = value;
        return SDB_AST_NODE(store);
 } /* sdb_ast_store_create */
 
 sdb_ast_node_t *
 sdb_ast_timeseries_create(char *hostname, char *metric,
+               char **data_names, size_t data_names_len,
                sdb_time_t start, sdb_time_t end)
 {
        sdb_ast_timeseries_t *timeseries;
@@ -381,6 +391,8 @@ sdb_ast_timeseries_create(char *hostname, char *metric,
 
        timeseries->hostname = hostname;
        timeseries->metric = metric;
+       timeseries->data_names = data_names;
+       timeseries->data_names_len = data_names_len;
        timeseries->start = start;
        timeseries->end = end;
        return SDB_AST_NODE(timeseries);