#define HELP_OFFSET CLERI_GID_HELP_ACCESS
#define HELP_COUNT CLERI_GID_HELP_TIMEZONES + 1 - HELP_OFFSET
+
+
+#if CLERI_VERSION_MINOR >= 12
+#define CLERI_NODE_DATA(__node) ((intptr_t)(__node)->data)
+#define CLERI_NODE_DATA_ADDR(__node) ((intptr_t *) &(__node)->data)
+#else
+#define CLERI_NODE_DATA(__node) ((intptr_t *)(__node)->result)
+#define CLERI_NODE_DATA_ADDR(__node) ((intptr_t *) &(__node)->result)
+#endif
+
#endif /* SIRI_GRAMP_H_ */
* Note that debian alpha packages should use versions like this:
* 2.0.34-0alpha0
*/
-#define SIRIDB_VERSION_PRE_RELEASE "-alpha-0"
+#define SIRIDB_VERSION_PRE_RELEASE "-alpha-1"
#ifndef NDEBUG
#define SIRIDB_VERSION_BUILD_RELEASE "+debug"
#include <stddef.h>
#include <math.h>
#include <siri/grammar/grammar.h>
+#include <siri/grammar/gramp.h>
#include <logger/logger.h>
#include <siri/db/series.h>
#include <siri/db/shard.h>
/* this is an integer or time expression, we can set the result
* and the condition.
*/
- (*condition)->int64 = node->result;
+ (*condition)->int64 = CLERI_NODE_DATA(node);
SET_CONDITION_AND_RETURN
case CLERI_TP_CHOICE:
/* in case of a string, set the value and return */
case CLERI_GID_F_LIMIT:
AGGR_NEW
{
- int64_t limit = children->node->children->node->
- children->next->next->node->result;
+ int64_t limit = CLERI_NODE_DATA(children->node->children->node->
+ children->next->next->node);
if (limit <= 0)
{
{
/* result is at least positive, checked earlier */
aggr->timespan =
- (double) dlist->children->node->result;
+ (double) CLERI_NODE_DATA(dlist->children->node);
if (!aggr->timespan)
{
if (dlist->children->next != NULL)
{
/* result is always positive */
- aggr->group_by = dlist->children->next->next->
- node->result;
+ aggr->group_by = CLERI_NODE_DATA(
+ dlist->children->next->next->node);
if (!aggr->group_by)
{
next->next->next != NULL)
{
/* result is always positive, checked earlier */
- aggr->group_by = children->node->children->node->
+ aggr->group_by = CLERI_NODE_DATA(
+ children->node->children->node->
children->next->next->node->children->
- node->result;
+ node);
if (!aggr->group_by)
{
siridb_query_t * query = handle->data;
siridb_t * siridb = query->client->siridb;
query_list_t * qlist = (query_list_t *) query->data;
- int64_t limit = query->nodes->node->children->next->node->result;
+ int64_t limit = CLERI_NODE_DATA(query->nodes->node->children->next->node);
if (limit <= 0 || limit > siridb->list_limit)
{
{
siridb_query_t * query = handle->data;
((query_select_t *) query->data)->start_ts =
- (uint64_t *) &query->nodes->node->children->next->node->result;
+ (uint64_t *) CLERI_NODE_DATA_ADDR(
+ query->nodes->node->children->next->node);
SIRIPARSER_NEXT_NODE
}
siridb_query_t * query = handle->data;
((query_select_t *) query->data)->end_ts =
- (uint64_t *) &query->nodes->node->children->next->node->result;
+ (uint64_t *) CLERI_NODE_DATA_ADDR(
+ query->nodes->node->children->next->node);
SIRIPARSER_NEXT_NODE
}
siridb_query_t * query = handle->data;
query_select_t * q_select = query->data;
- q_select->start_ts = (uint64_t *)
- &query->nodes->node->children->next->node->result;
+ q_select->start_ts = (uint64_t *) CLERI_NODE_DATA_ADDR(
+ query->nodes->node->children->next->node);
- q_select->end_ts = (uint64_t *)
- &query->nodes->node->children->next->next->next->node->result;
+ q_select->end_ts = (uint64_t *) CLERI_NODE_DATA_ADDR(
+ query->nodes->node->children->next->next->next->node);
if (*q_select->start_ts > *q_select->end_ts)
{
if (!query->factor)
{
- qp_add_int64(query->packer, calc_node->result);
+ qp_add_int64(query->packer, CLERI_NODE_DATA(calc_node));
}
else
{
double factor = (double) query->factor;
- qp_add_int64(query->packer, (int64_t) (calc_node->result * factor));
+ qp_add_int64(
+ query->packer,
+ (int64_t) ((CLERI_NODE_DATA(calc_node) * factor)));
}
SIRIPARSER_ASYNC_NEXT_NODE
#include <siri/net/pkg.h>
#include <siri/net/clserver.h>
#include <siri/siri.h>
+#include <siri/grammar/gramp.h>
#include <xstr/xstr.h>
#include <string.h>
#include <sys/time.h>
buffer[EXPR_MAX_SIZE - size] = 0;
/* evaluate the expression */
- if ((rc = expr_parse(&node->result, buffer)))
+ if ((rc = expr_parse(CLERI_NODE_DATA_ADDR(node), buffer)))
{
return rc;
}
/* check if timestamp is valid */
- if (!siridb_int64_valid_ts(walker->siridb->time, node->result))
+ if (!siridb_int64_valid_ts(walker->siridb->time, CLERI_NODE_DATA(node)))
{
return EXPR_TIME_OUT_OF_RANGE;
}
buffer[EXPR_MAX_SIZE - size] = 0;
/* evaluate the expression */
- if ((rc = expr_parse(&node->result, buffer)))
+ if ((rc = expr_parse(CLERI_NODE_DATA_ADDR(node), buffer)))
{
return rc;
}
buf + max_size - *size,
*size,
"%" PRId64 " ",
- node->result);
+ CLERI_NODE_DATA(node));
if (n >= (ssize_t) *size)
{
return QUERY_TOO_LONG;
{
case STREAM_PIPE_CLIENT:
case STREAM_TCP_CLIENT: /* listens to client connections */
+ log_debug("client connection lost");
if (client->origin != NULL)
{
siridb_user_t * user = client->origin;