#include <siri/db/median.h>
#include <siri/db/variance.h>
#include <siri/grammar/grammar.h>
+#include <siri/grammar/gramp.h>
#include <siri/db/re.h>
#include <vec/vec.h>
#include <stddef.h>
/* Loop over all aggregations */
while (1)
{
- gid = children->node->children->node->cl_obj->gid;
+ gid = cleri_gn(cleri_gn(children)->children)->cl_obj->gid;
switch (gid)
{
case CLERI_GID_F_LIMIT:
AGGR_NEW
{
- int64_t limit = CLERI_NODE_DATA(children->node->children->node->
- children->next->next->node);
+ int64_t limit = CLERI_NODE_DATA(
+ cleri_gn(cleri_gn(cleri_gn(children)
+ ->children)->children->next->next));
if (limit <= 0)
{
aggr->limit = limit;
- gid = children->node->children->node->children->next->
- next->next->next->node->children->node->
- cl_obj->gid;
+ gid = cleri_gn(cleri_gn(cleri_gn(
+ cleri_gn(children)->children)->children->next->
+ next->next->next)->children)->cl_obj->gid;
switch (gid)
{
AGGR_NEW
{
cleri_node_t * onode;
- if ( children->node->children->node->children->
+ if ( cleri_gn(cleri_gn(children)->children)->children->
next->next->next->next == NULL)
{
aggr->filter_opr = CEXPR_EQ;
- onode = children->node->children->node->
- children->next->next->node->
- children->node;
+ onode = cleri_gn(cleri_gn(cleri_gn(cleri_gn(children)
+ ->children)->children->next->next)->children);
}
else
{
aggr->filter_opr = cexpr_operator_fn(
- children->node->children->node->
- children->next->next->node->
- children->node);
- onode = children->node->children->node->
- children->next->next->next->node->
- children->node;
+ cleri_gn(cleri_gn(cleri_gn(cleri_gn(children)
+ ->children)->children->next->next)->children));
+ onode = cleri_gn(cleri_gn(cleri_gn(cleri_gn(children)
+ ->children)->children->next->next->next)->
+ children);
}
if (AGGREGATE_init_filter(aggr, onode, err_msg))
{
case CLERI_GID_F_DERIVATIVE:
AGGR_NEW
{
- cleri_node_t * dlist = children->node->children->
- node->children->next->next->node;
+ cleri_node_t * dlist = cleri_gn(cleri_gn(cleri_gn(children)
+ ->children)->children->next->next);
- if (dlist->children != NULL && dlist->children->node != NULL)
+ if (dlist->children != NULL && cleri_gn(dlist->children) != NULL)
{
/* result is at least positive, checked earlier */
aggr->timespan =
- (double) CLERI_NODE_DATA(dlist->children->node);
+ (double) CLERI_NODE_DATA(cleri_gn(dlist->children));
if (!aggr->timespan)
{
{
/* result is always positive */
aggr->group_by = CLERI_NODE_DATA(
- dlist->children->next->next->node);
+ cleri_gn(dlist->children->next->next));
if (!aggr->group_by)
{
case CLERI_GID_F_FIRST:
case CLERI_GID_F_LAST:
AGGR_NEW
- if (children->node->children->node->children->
- next->next->next != NULL)
+ if (cleri_gn(cleri_gn(children)->children)
+ ->children->next->next->next != NULL)
{
/* result is always positive, checked earlier */
aggr->group_by = CLERI_NODE_DATA(
- children->node->children->node->
- children->next->next->node->children->
- node);
+ cleri_gn(cleri_gn(cleri_gn(cleri_gn(children)
+ ->children)->children->next->next)->children));
if (!aggr->group_by)
{
*/
int siridb_aggregate_can_skip(cleri_children_t * children)
{
- cleri_node_t * nd = \
- children->node->children->node->children->node->children->node;
+ cleri_node_t * nd = cleri_gn(cleri_gn(cleri_gn(cleri_gn(children)
+ ->children)->children)->children);
switch (nd->cl_obj->gid)
{
MASTER_CHECK_ACCESSIBLE(siridb)
- cleri_node_t * group_node =
- query->nodes->node->children->next->node;
+ cleri_node_t * group_node = \
+ cleri_gn(query->nodes->node->children->next);
siridb_group_t * group;
char name[group_node->len - 1];
MASTER_CHECK_ACCESSIBLE(siridb)
- cleri_node_t * tag_node = query->nodes->node->children->next->node;
+ cleri_node_t * tag_node = cleri_gn(query->nodes->node->children->next);
siridb_tag_t * tag;
char name[tag_node->len - 1];
query_alter_t * q_alter = (query_alter_t *) query->data;
siridb_server_t * server = siridb_server_from_node(
siridb,
- query->nodes->node->children->next->node->children->node,
+ cleri_gn(cleri_gn(query->nodes->node->children->next)->children),
query->err_msg);
if (server == NULL)
MASTER_CHECK_ACCESSIBLE(siridb)
cleri_node_t * user_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
query_alter_t * q_alter = (query_alter_t *) query->data;
siridb_user_t * user;
MASTER_CHECK_ACCESSIBLE(siridb)
cleri_node_t * user_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
siridb_user_t * user;
char username[user_node->len - 1];
xstr_extract_string(username, user_node->str, user_node->len);
siridb_query_t * query = handle->data;
siridb_t * siridb = query->client->siridb;
query_list_t * qlist = (query_list_t *) query->data;
- int64_t limit = CLERI_NODE_DATA(query->nodes->node->children->next->node);
+ int64_t limit = CLERI_NODE_DATA(cleri_gn(query->nodes->node->children->next));
if (limit <= 0 || limit > siridb->list_limit)
{
{
siridb_query_t * query = handle->data;
query_select_t * q_select = query->data;
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
q_select->merge_as = malloc(node->len - 1);
if (q_select->merge_as == NULL)
if (IS_MASTER && query->nodes->node->children->next->next->next != NULL)
{
q_select->mlist = siridb_aggregate_list(
- query->nodes->node->children->next->next->next->node->
- children->node->children->next->node->children,
+ cleri_gn(cleri_gn(cleri_gn(
+ query->nodes->node->children->next->next->next)->
+ children)->children->next)->children,
query->err_msg);
if (q_select->mlist == NULL)
MASTER_CHECK_ACCESSIBLE(siridb)
cleri_node_t * user_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
siridb_user_t * user;
char username[user_node->len - 1];
xstr_extract_string(username, user_node->str, user_node->len);
NULL : imap_new();
/* child is always the ',' and child->next the node */
- child = query->nodes->node->children->next->node->children;
+ child = cleri_gn(query->nodes->node->children->next)->children;
skip_get_points = siridb_aggregate_can_skip(child);
child = child->next;
{
siridb_query_t * query = handle->data;
siridb_t * siridb = query->client->siridb;
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
query_alter_t * q_alter = (query_alter_t *) query->data;
if (siridb_group_update_expression(
siridb_query_t * query = handle->data;
query_wrapper_t * q_wrapper = (query_wrapper_t *) query->data;
- if ( query->nodes->node->children->next->next->node->children->node->
+ if ( cleri_gn(cleri_gn(
+ query->nodes->node->children->next->next)->children)->
cl_obj->gid == CLERI_GID_K_TRUE)
{
q_wrapper->flags |= QUERIES_IGNORE_DROP_THRESHOLD;
siridb_query_t * query = handle->data;
siridb_t * siridb = query->client->siridb;
cleri_node_t * name_node =
- query->nodes->node->children->next->next->node;
+ cleri_gn(query->nodes->node->children->next->next);
char name[name_node->len - 1];
xstr_extract_string(name, name_node->str, name_node->len);
siridb_user_t * user = ((query_alter_t *) query->data)->via.user;
cleri_node_t * pw_node =
- query->nodes->node->children->next->next->node;
+ cleri_gn(query->nodes->node->children->next->next);
char password[pw_node->len - 1];
xstr_extract_string(password, pw_node->str, pw_node->len);
siridb_query_t * query = handle->data;
query_wrapper_t * q_wrapper = query->data;
- switch (query->nodes->node->children->node->cl_obj->gid)
+ switch (cleri_gn(query->nodes->node->children)->cl_obj->gid)
{
case CLERI_GID_K_UNION:
q_wrapper->update_cb = &imap_union_ref;
MASTER_CHECK_VERSION(siridb, "2.0.38")
cleri_node_t * tag_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
siridb_tag_t * tag;
char name[tag_node->len - 1];
xstr_extract_string(name, tag_node->str, tag_node->len);
MASTER_CHECK_VERSION(siridb, "2.0.38")
cleri_node_t * tag_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
siridb_tag_t * tag;
char name[tag_node->len - 1];
{
siridb_query_t * query = handle->data;
cexpr_t * cexpr =
- cexpr_from_node(query->nodes->node->children->next->node);
+ cexpr_from_node(cleri_gn(query->nodes->node->children->next));
if (cexpr == NULL)
{
{
qp_add_raw(
query->packer,
- (const unsigned char *) columns->node->str,
- columns->node->len);
+ (const unsigned char *) cleri_gn(columns)->str,
+ cleri_gn(columns)->len);
if (vec_append_safe(
&qlist->props,
- &columns->node->children->node->cl_obj->gid))
+ &cleri_gn(cleri_gn(columns)->children)->cl_obj->gid))
{
MEM_ERR_RET
}
siridb_query_t * query = handle->data;
((query_select_t *) query->data)->start_ts =
(uint64_t *) CLERI_NODE_DATA_ADDR(
- query->nodes->node->children->next->node);
+ cleri_gn(query->nodes->node->children->next));
SIRIPARSER_NEXT_NODE
}
((query_select_t *) query->data)->end_ts =
(uint64_t *) CLERI_NODE_DATA_ADDR(
- query->nodes->node->children->next->node);
+ cleri_gn(query->nodes->node->children->next));
SIRIPARSER_NEXT_NODE
}
query_select_t * q_select = query->data;
q_select->start_ts = (uint64_t *) CLERI_NODE_DATA_ADDR(
- query->nodes->node->children->next->node);
+ cleri_gn(query->nodes->node->children->next));
q_select->end_ts = (uint64_t *) CLERI_NODE_DATA_ADDR(
- query->nodes->node->children->next->next->next->node);
+ cleri_gn(query->nodes->node->children->next->next->next));
if (*q_select->start_ts > *q_select->end_ts)
{
siridb_query_t * query = handle->data;
siridb_t * siridb = query->client->siridb;
cleri_node_t * name_nd =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
cleri_node_t * for_nd =
- query->nodes->node->children->next->next->next->node;
+ cleri_gn(query->nodes->node->children->next->next->next);
MASTER_CHECK_ACCESSIBLE(siridb)
siridb_t * siridb = query->client->siridb;
siridb_user_t * user = ((query_alter_t *) query->data)->via.user;
cleri_node_t * user_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
/* both name and packer should be NULL at this point */
assert(user->name == NULL);
MASTER_CHECK_ACCESSIBLE(siridb)
cleri_node_t * group_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
char name[group_node->len - 1];
siridb_t * siridb = query->client->siridb;
siridb_server_t * server = siridb_server_from_node(
siridb,
- query->nodes->node->children->next->node->children->node,
+ cleri_gn(cleri_gn(query->nodes->node->children->next)->children),
query->err_msg);
MASTER_CHECK_REINDEXING(siridb)
MASTER_CHECK_ACCESSIBLE(siridb)
cleri_node_t * tag_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
char name[tag_node->len - 1];
MASTER_CHECK_ACCESSIBLE(siridb)
cleri_node_t * user_node =
- query->nodes->node->children->next->node;
+ cleri_gn(query->nodes->node->children->next);
char username[user_node->len - 1];
xstr_extract_string(username, user_node->str, user_node->len);
if (q_select->series_map->len)
{
q_select->alist = siridb_aggregate_list(
- query->nodes->node->children->node->children,
+ cleri_gn(query->nodes->node->children)->children,
query->err_msg);
if (q_select->alist == NULL)
{
{
siridb_query_t * query = handle->data;
siridb_server_t * server = ((query_alter_t *) query->data)->via.server;
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
siridb_t * siridb = query->client->siridb;
if (siridb->server == server || server->client != NULL)
siridb_server_t * server = ((query_alter_t *) query->data)->via.server;
- int backup_mode = query->nodes->node->children->next->next->node->
- children->node->cl_obj->gid == CLERI_GID_K_TRUE;
+ int backup_mode = cleri_gn(cleri_gn(
+ query->nodes->node->children->next->next)->
+ children)->cl_obj->gid == CLERI_GID_K_TRUE;
if (backup_mode ^ ((server->flags & SERVER_FLAG_BACKUP_MODE) != 0))
{
MASTER_CHECK_ACCESSIBLE(siridb)
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
double drop_threshold = xstr_to_double(node->str);
MASTER_CHECK_ACCESSIBLE(siridb)
MASTER_CHECK_VERSION(siridb, "2.0.35")
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
uint64_t expiration = (uint64_t) CLERI_NODE_DATA(node);
if (IS_MASTER && expiration)
MASTER_CHECK_ACCESSIBLE(siridb)
MASTER_CHECK_VERSION(siridb, "2.0.17")
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
uint64_t limit = xstr_to_uint64(node->str, node->len);
assert (query->data != NULL);
- cleri_node_t * node =
- query->nodes->node->children->next->next->node->children->node;
+ cleri_node_t * node = cleri_gn(cleri_gn(
+ query->nodes->node->children->next->next)->children);
int log_level;
{
siridb_query_t * query = handle->data;
siridb_server_t * server = ((query_alter_t *) query->data)->via.server;
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
siridb_t * siridb = query->client->siridb;
if (siridb->server == server || server->client != NULL)
MASTER_CHECK_ACCESSIBLE(siridb)
MASTER_CHECK_VERSION(siridb, "2.0.17")
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
uint64_t limit = xstr_to_uint64(node->str, node->len);
assert (query->data != NULL);
- cleri_node_t * node =
- query->nodes->node->children->next->next->node->children->node;
+ cleri_node_t * node = cleri_gn(cleri_gn(
+ query->nodes->node->children->next->next)->children);
char pipe_name[node->len - 1];
char * p_pipe_name = NULL;
static void exit_set_timezone(uv_async_t * handle)
{
siridb_query_t * query = handle->data;
- cleri_node_t * node = query->nodes->node->children->next->next->node;
+ cleri_node_t * node = cleri_gn(query->nodes->node->children->next->next);
siridb_t * siridb = query->client->siridb;
MASTER_CHECK_ACCESSIBLE(siridb)
siridb_user_t * db_user = query->client->origin;
SIRIPARSER_MASTER_CHECK_ACCESS(db_user, SIRIDB_ACCESS_SHOW)
- cleri_children_t * children =
- query->nodes->node->children->next->node->children;
+ cleri_children_t * children = cleri_gn(
+ query->nodes->node->children->next)->children;
siridb_props_cb prop_cb;
assert (query->packer == NULL);
/* set props.h (who_am_i) to current db_name */
props_set_who_am_i(db_user->name);
- if (children == NULL || children->node == NULL)
+ if (children == NULL || cleri_gn(children) == NULL)
{
/* show all properties */
int i;
while (1)
{
/* get the callback */
- prop_cb = props_get_cb(children->node->children->node->
+ prop_cb = props_get_cb(cleri_gn(cleri_gn(children)->children)->
cl_obj->gid - KW_OFFSET);
assert (prop_cb != NULL); /* all props are implemented */
prop_cb(siridb, query->packer, 1);