УРААААА...я похоже нашел проблему)
ошибка в libs/zbxdbhigh/host.c в функции DBcopy_graph_to_host:
при проверке имеется ли график с такими же элементами
сначала берется chd_templateid из chd_graph_data[12], по которому позже проверяется требуется обновлять график или добавлять новый, но далее, если chd_templateid не равняется нулю то происходит выход из цикла, но в chd_graphid остается уже id графика, поэтому нужно строку
ZBX_STR2UINT64(chd_graphid, chd_graph_data[0]); поставить после if ( chd_templateid != 0 ) continue;
не уверен, что это правильное решение, может что то упустил, но решение работает
+ в этой же функции далее сравниваются элементы графиков if(DBcmp_graphitems(&new_gitems[i], &chd_gitem)) continue;, т.е. если имеются одинаковые элементы, то продолжить, НО в функции DBcmp_graphitems, если элементы не равны возвращается значение больше нуля, если же что равны, то возвращается нуль. Таким образом получается что если элементы не одинаковы, то продолжить и тем самым нарастить счетчик одинаковых элементов О_О. Может я что то путаю
и C наоборот if(false), то {}.
ошибка в libs/zbxdbhigh/host.c в функции DBcopy_graph_to_host:
при проверке имеется ли график с такими же элементами
сначала берется chd_templateid из chd_graph_data[12], по которому позже проверяется требуется обновлять график или добавлять новый, но далее, если chd_templateid не равняется нулю то происходит выход из цикла, но в chd_graphid остается уже id графика, поэтому нужно строку
ZBX_STR2UINT64(chd_graphid, chd_graph_data[0]); поставить после if ( chd_templateid != 0 ) continue;
Code:
- ZBX_STR2UINT64(chd_graphid, chd_graph_data[0]); ZBX_STR2UINT64(chd_templateid, chd_graph_data[12]); if ( chd_templateid != 0 ) continue; + ZBX_STR2UINT64(chd_graphid, chd_graph_data[0]);

+ в этой же функции далее сравниваются элементы графиков if(DBcmp_graphitems(&new_gitems[i], &chd_gitem)) continue;, т.е. если имеются одинаковые элементы, то продолжить, НО в функции DBcmp_graphitems, если элементы не равны возвращается значение больше нуля, если же что равны, то возвращается нуль. Таким образом получается что если элементы не одинаковы, то продолжить и тем самым нарастить счетчик одинаковых элементов О_О. Может я что то путаю
и C наоборот if(false), то {}.
Еще хотелось бы уточнить сравнение элементов if(DBcmp_graphitems(&gitems[i], &chd_gitem)) continue верно? О_О
:
Comment