From 77d8a4588723e97c6f6a3cfef584a6ef5516b951 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 7 Aug 2018 15:36:12 +0100 Subject: [PATCH] [Minor] Various fixes to Clickhouse exporter --- lualib/lua_clickhouse.lua | 17 +++++++++++++---- src/plugins/lua/clickhouse.lua | 12 +++++++----- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lualib/lua_clickhouse.lua b/lualib/lua_clickhouse.lua index 37c9ebb7a..3f3c4de40 100644 --- a/lualib/lua_clickhouse.lua +++ b/lualib/lua_clickhouse.lua @@ -27,6 +27,15 @@ local function escape_spaces(query) return query:gsub('%s', '%%20') end +local function ch_number(a) + if (a+2^52)-2^52 == a then + -- Integer + return tostring(math.floor(a)) + end + + return tostring(a) +end + local function clickhouse_quote(str) if str then return str:gsub('[\'\\]', '\\%1'):lower() @@ -40,8 +49,8 @@ local function array_to_string(ar) for i,elt in ipairs(ar) do if type(elt) == 'string' then ar[i] = '\'' .. clickhouse_quote(elt) .. '\'' - else - ar[i] = tostring(elt) + elseif type(elt) == 'number' then + ar[i] = ch_number(elt) end end @@ -54,8 +63,8 @@ local function row_to_tsv(row) for i,elt in ipairs(row) do if type(elt) == 'table' then row[i] = '[' .. array_to_string(elt) .. ']' - else - row[i] = tostring(elt) -- Assume there are no tabs there + elseif type(elt) == 'number' then + row[i] = ch_number(elt) end end diff --git a/src/plugins/lua/clickhouse.lua b/src/plugins/lua/clickhouse.lua index b54c1a216..444465814 100644 --- a/src/plugins/lua/clickhouse.lua +++ b/src/plugins/lua/clickhouse.lua @@ -488,6 +488,7 @@ local function clickhouse_collect(task) }) local action = task:get_metric_action('default') + local digest = task:get_digest() table.insert(main_rows, { today(timestamp), @@ -552,7 +553,7 @@ local function clickhouse_collect(task) if #attachments_fnames > 0 then table.insert(attachment_rows, { today(timestamp), - task:get_digest(), + digest, attachments_fnames, attachments_ctypes, attachments_lengths, @@ -577,7 +578,7 @@ local function clickhouse_collect(task) if #urls_tlds > 0 then table.insert(urls_rows, { today(timestamp), - task:get_digest(), + digest, urls_tlds, urls_urls }) @@ -595,7 +596,7 @@ local function clickhouse_collect(task) if #emails > 0 then table.insert(emails_rows, { today(timestamp), - task:get_digest(), + digest, emails, }) end @@ -618,7 +619,7 @@ local function clickhouse_collect(task) end table.insert(asn_rows, { today(timestamp), - task:get_digest(), + digest, asn, country, ipnet @@ -639,12 +640,13 @@ local function clickhouse_collect(task) if s.options then table.insert(options_tab, table.concat(s.options, ',')) else - table.insert(options_tab, "''"); + table.insert(options_tab, ''); end end table.insert(symbols_rows, { today(timestamp), + digest, syms_tab, scores_tab, options_tab -- 2.39.5