summaryrefslogtreecommitdiffstats
path: root/src/libs/zbxdbhigh/db.c
diff options
context:
space:
mode:
authorsasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-08-11 12:33:48 +0000
committersasha <sasha@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2008-08-11 12:33:48 +0000
commit79954547dab0e2a87436fba02f95ee0dbcf7a1d9 (patch)
tree0feaed6696018fc1447c32ffe7c565f29145e3a7 /src/libs/zbxdbhigh/db.c
parenta00be6b72f85d6fe57de4fbb4dbf92c67bc6976a (diff)
downloadzabbix-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.c34
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, ")");
+}