if (SUCCEED != expand_expression_macros(tr->eval_ctx, um_handle, db_event, hostids->values, hostids->values_num,
#include "zbxcacheconfig.h"
#include "zbxcachevalue.h"
#include "zbx_trigger_constants.h"
#include "zbx_item_constants.h"
#include "zbx_host_constants.h"
#include "zbxexpression.h"
static void zbx_extract_functionids(zbx_vector_uint64_t *functionids, zbx_vector_dc_trigger_t *triggers)
zabbix_log(LOG_LEVEL_DEBUG, "In %s() tr_num:%d", __func__, triggers->values_num);
zbx_vector_uint64_reserve(functionids, triggers->values_num);
for (int i = 0; i < triggers->values_num; i++)
zbx_dc_trigger_t *tr = triggers->values[i];
if (NULL != tr->new_error)
zbx_eval_get_functionids(tr->eval_ctx, functionids);
if (TRIGGER_RECOVERY_MODE_RECOVERY_EXPRESSION == tr->recovery_mode)
zbx_eval_get_functionids(tr->eval_ctx_r, functionids);
zbx_vector_uint64_sort(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
zbx_vector_uint64_uniq(functionids, ZBX_DEFAULT_UINT64_COMPARE_FUNC);
zabbix_log(LOG_LEVEL_DEBUG, "End of %s() functionids_num:%d", __func__, functionids->values_num);
zbx_dc_trigger_t *trigger;
zbx_trigger_func_position_t;
ZBX_PTR_VECTOR_DECL(trigger_func_position, zbx_trigger_func_position_t *)
ZBX_PTR_VECTOR_IMPL(trigger_func_position, zbx_trigger_func_position_t *)
static int expand_normal_trigger_macros(zbx_eval_context_t *ctx, const zbx_db_event *event, char *error,
for (i = 0; i < ctx->stack.values_num; i++)
zbx_eval_token_t *token = &ctx->stack.values[i];
if (ZBX_EVAL_TOKEN_VAR_MACRO != token->type && ZBX_EVAL_TOKEN_VAR_STR != token->type)
if (ZBX_VARIANT_STR != token->value.type)
if (FAIL == substitute_simple_macros_impl(NULL, event, NULL, NULL, NULL, NULL, NULL, NULL, NULL,