Source
unsigned char priority, zbx_uint64_t flags, unsigned char value, unsigned char state, int lastchange,
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
** without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
** See the GNU Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
/******************************************************************************
* *
* Purpose: save the trigger changes to database *
* *
* Parameters: trigger_diff - [IN] the trigger changeset *
* *
******************************************************************************/
void zbx_db_save_trigger_changes(const zbx_vector_trigger_diff_ptr_t *trigger_diff)
{
int i;
char *sql = NULL;
size_t sql_alloc = 0, sql_offset = 0;
const zbx_trigger_diff_t *diff;
zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __func__);
for (i = 0; i < trigger_diff->values_num; i++)
{
char delim = ' ';
diff = trigger_diff->values[i];
if (0 == (diff->flags & ZBX_FLAGS_TRIGGER_DIFF_UPDATE))
continue;
zbx_strcpy_alloc(&sql, &sql_alloc, &sql_offset, "update triggers set");
if (0 != (diff->flags & ZBX_FLAGS_TRIGGER_DIFF_UPDATE_LASTCHANGE))
{
zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%clastchange=%d", delim, diff->lastchange);
delim = ',';
}
if (0 != (diff->flags & ZBX_FLAGS_TRIGGER_DIFF_UPDATE_VALUE))
{
zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%cvalue=%d", delim, diff->value);
delim = ',';
}
if (0 != (diff->flags & ZBX_FLAGS_TRIGGER_DIFF_UPDATE_STATE))
{
zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "%cstate=%d", delim, diff->state);
delim = ',';
}
if (0 != (diff->flags & ZBX_FLAGS_TRIGGER_DIFF_UPDATE_ERROR))