Index: include/db.h =================================================================== --- include/db.h (revision 32936) +++ include/db.h (working copy) @@ -435,6 +435,7 @@ #define DB_NODE "%s" #define DBnode_local(fieldid) DBnode(fieldid, CONFIG_NODEID) const char *DBnode(const char *fieldid, int nodeid); +const char *DBnode_only(const char *fieldid, int nodeid); #define DBis_node_local_id(id) DBis_node_id(id, CONFIG_NODEID) int DBis_node_id(zbx_uint64_t id, int nodeid); Index: src/zabbix_server/trapper/nodehistory.c =================================================================== --- src/zabbix_server/trapper/nodehistory.c (revision 32936) +++ src/zabbix_server/trapper/nodehistory.c (working copy) @@ -117,7 +117,7 @@ " where 1=1" DB_NODE, table->recid, table->table, - DBnode(table->recid, nodeid)); + DBnode_only(table->recid, nodeid)); buffer_offset= 0; result = DBselect("%s", buffer); Index: src/libs/zbxdbhigh/db.c =================================================================== --- src/libs/zbxdbhigh/db.c (revision 32936) +++ src/libs/zbxdbhigh/db.c (working copy) @@ -62,6 +62,26 @@ return dbnode; } +const char *DBnode_only(const char *fieldid, int nodeid) +{ + static char dbnode_only[128]; + + if (-1 != nodeid) + { + zbx_uint64_t min, max; + + min = (zbx_uint64_t)__UINT64_C(100000000000000) * (zbx_uint64_t)nodeid; + max = min + (zbx_uint64_t)__UINT64_C(99999999999); + + zbx_snprintf(dbnode_only, sizeof(dbnode_only), " and %s between " ZBX_FS_UI64 " and " ZBX_FS_UI64, + fieldid, min, max); + } + else + *dbnode_only = '\0'; + + return dbnode_only; +} + int DBis_node_id(zbx_uint64_t id, int nodeid) { zbx_uint64_t min, max;