diff options
Diffstat (limited to 'src/zabbix_server')
-rw-r--r-- | src/zabbix_server/trapper/nodehistory.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/zabbix_server/trapper/nodehistory.c b/src/zabbix_server/trapper/nodehistory.c index 6b597309..44d34713 100644 --- a/src/zabbix_server/trapper/nodehistory.c +++ b/src/zabbix_server/trapper/nodehistory.c @@ -69,6 +69,10 @@ static int process_record(int nodeid, char *record) zbx_uint64_t value_uint; int res = FAIL; + char value_esc[MAX_STRING_LEN]; + + + zabbix_log( LOG_LEVEL_DEBUG, "In process_record [%s]", record); @@ -84,6 +88,12 @@ static int process_record(int nodeid, char *record) value=atof(tmp); res = DBadd_history(itemid, value, timestamp); + + DBexecute("update items set lastvalue='" ZBX_FS_DBL "', lastclock=%d where itemid=" ZBX_FS_UI64, + value, + timestamp, + itemid); + } else if(table == ZBX_TABLE_HISTORY_UINT) { @@ -95,6 +105,11 @@ static int process_record(int nodeid, char *record) sscanf(tmp,ZBX_FS_UI64,&value_uint); res = DBadd_history_uint(itemid, value_uint, timestamp); + + DBexecute("update items set lastvalue='" ZBX_FS_UI64 "', lastclock=%d where itemid=" ZBX_FS_UI64, + value_uint, + timestamp, + itemid); } else if(table == ZBX_TABLE_HISTORY_STR) { @@ -105,6 +120,13 @@ static int process_record(int nodeid, char *record) zbx_get_field(record,tmp,3,ZBX_DM_DELIMITER); res = DBadd_history_str(itemid, tmp, timestamp); + + DBescape_string(tmp,value_esc,MAX_STRING_LEN); + + DBexecute("update items set lastvalue='%s', lastclock=%d where itemid=" ZBX_FS_UI64, + tmp, + timestamp, + itemid); } return res; |