diff options
-rw-r--r-- | src/libs/zbxdbhigh/trigger.c | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/src/libs/zbxdbhigh/trigger.c b/src/libs/zbxdbhigh/trigger.c index 6aad2e06f85..b927fa765bb 100644 --- a/src/libs/zbxdbhigh/trigger.c +++ b/src/libs/zbxdbhigh/trigger.c @@ -731,30 +731,42 @@ static void db_trigger_get_expression(const zbx_eval_context_t *ctx, char **expr DCconfig_get_functions_by_functionids(&function, &functionid, &err_func, 1); - if (SUCCEED != err_func) - continue; + if (SUCCEED == err_func) + { + DCconfig_get_items_by_itemids(&item, &function.itemid, &err_item, 1); - DCconfig_get_items_by_itemids(&item, &function.itemid, &err_item, 1); + if (SUCCEED == err_item) + { + char *func = NULL; + size_t func_alloc = 0, func_offset = 0; - if (SUCCEED == err_item) - { - char *func = NULL; - size_t func_alloc = 0, func_offset = 0; + zbx_snprintf_alloc(&func, &func_alloc, &func_offset, "%s(/%s/%s", + function.function, item.host.host, item.key_orig); - zbx_snprintf_alloc(&func, &func_alloc, &func_offset, "%s(/%s/%s", - function.function, item.host.host, item.key_orig); + if ('\0' != *function.parameter) + zbx_snprintf_alloc(&func, &func_alloc, &func_offset, ",%s", function.parameter); - if ('\0' != *function.parameter) - zbx_snprintf_alloc(&func, &func_alloc, &func_offset, ",%s", function.parameter); + zbx_chrcpy_alloc(&func, &func_alloc, &func_offset,')'); - zbx_chrcpy_alloc(&func, &func_alloc, &func_offset,')'); + zbx_variant_clear(&token->value); + zbx_variant_set_str(&token->value, func); + DCconfig_clean_items(&item, &err_item, 1); + } + else + { + zbx_variant_clear(&token->value); + zbx_variant_set_error(&token->value, zbx_dsprintf(NULL, "item id:" ZBX_FS_UI64 + " deleted", function.itemid)); + } + DCconfig_clean_functions(&function, &err_func, 1); + } + else + { zbx_variant_clear(&token->value); - zbx_variant_set_str(&token->value, func); - DCconfig_clean_items(&item, &err_item, 1); + zbx_variant_set_error(&token->value, zbx_dsprintf(NULL, "function id:" ZBX_FS_UI64 " deleted", + functionid)); } - - DCconfig_clean_functions(&function, &err_func, 1); } zbx_eval_compose_expression(&local_ctx, expression); |