diff options
author | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-08-11 12:33:48 +0000 |
---|---|---|
committer | sasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-08-11 12:33:48 +0000 |
commit | 79954547dab0e2a87436fba02f95ee0dbcf7a1d9 (patch) | |
tree | 0feaed6696018fc1447c32ffe7c565f29145e3a7 /src/libs/zbxdbhigh/db.c | |
parent | a00be6b72f85d6fe57de4fbb4dbf92c67bc6976a (diff) | |
download | zabbix-79954547dab0e2a87436fba02f95ee0dbcf7a1d9.tar.gz zabbix-79954547dab0e2a87436fba02f95ee0dbcf7a1d9.tar.xz zabbix-79954547dab0e2a87436fba02f95ee0dbcf7a1d9.zip |
- [DEV-137] Misc bugs and improvements
[improved processing of proxy configuration]
git-svn-id: svn://svn.zabbix.com/trunk@5892 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/libs/zbxdbhigh/db.c')
-rw-r--r-- | src/libs/zbxdbhigh/db.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/libs/zbxdbhigh/db.c b/src/libs/zbxdbhigh/db.c index d188d873..a887d252 100644 --- a/src/libs/zbxdbhigh/db.c +++ b/src/libs/zbxdbhigh/db.c @@ -2139,3 +2139,37 @@ void DBproxy_add_history_log(zbx_uint64_t itemid, char *value, int clock, int ti } } +void DBadd_condition_alloc(char **sql, int *sql_alloc, int *sql_offset, const char *fieldname, const zbx_uint64_t *values, const int num) +{ +#define MAX_EXPRESSIONS 950 + int i; + + if (0 == num) + return; + + zbx_snprintf_alloc(sql, sql_alloc, sql_offset, 2, " "); + if (num > MAX_EXPRESSIONS) + zbx_snprintf_alloc(sql, sql_alloc, sql_offset, 2, "("); + + for (i = 0; i < num; i++) + { + if (0 == (i % MAX_EXPRESSIONS)) + { + if (0 != i) + { + (*sql_offset)--; + zbx_snprintf_alloc(sql, sql_alloc, sql_offset, 8, ") or "); + } + zbx_snprintf_alloc(sql, sql_alloc, sql_offset, 128, "%s in (", + fieldname); + } + zbx_snprintf_alloc(sql, sql_alloc, sql_offset, 128, ZBX_FS_UI64 ",", + values[i]); + } + + (*sql_offset)--; + zbx_snprintf_alloc(sql, sql_alloc, sql_offset, 2, ")"); + + if (num > MAX_EXPRESSIONS) + zbx_snprintf_alloc(sql, sql_alloc, sql_offset, 2, ")"); +} |