#include "checks_calculated.h"
#include "zbxexpression.h"
int get_value_calculated(zbx_dc_item_t *dc_item, AGENT_RESULT *result)
zbx_expression_eval_t eval;
zbx_dc_um_handle_t *um_handle;
zabbix_log(LOG_LEVEL_DEBUG, "In %s() key:'%s' expression:'%s'", __func__, dc_item->key_orig, dc_item->params);
um_handle = zbx_dc_open_user_macros();
if (NULL == dc_item->formula_bin)
zabbix_log(LOG_LEVEL_DEBUG, "%s() serialized formula is not set", __func__);
SET_MSG_RESULT(result, zbx_strdup(NULL, "Cannot evaluate calculated item:"
" serialized formula is not set"));
zbx_eval_deserialize(&ctx, dc_item->params, ZBX_EVAL_PARSE_CALC_EXPRESSION, dc_item->formula_bin);
if (SUCCEED != zbx_eval_substitute_macros(&ctx, &error, zbx_db_trigger_recovery_user_and_func_macro_eval_resolv,
um_handle, &dc_item->host.hostid, 1))
SET_MSG_RESULT(result, zbx_dsprintf(NULL, "Cannot evaluate calculated item: %s", error));
zbx_expression_eval_init(&eval, ZBX_EXPRESSION_AGGREGATE, &ctx);
zbx_expression_eval_resolve_item_hosts(&eval, dc_item);
zbx_expression_eval_resolve_filter_macros(&eval, dc_item);
if (SUCCEED != zbx_expression_eval_execute(&eval, &ts, &value, &error))