From fe940c7d3d9d72f0196b9cd847dd0160603dcbe9 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Sun, 2 Dec 2018 13:22:53 +0000 Subject: [PATCH] [Feature] Support ClickHouse database Issue: #2655 --- lualib/lua_clickhouse.lua | 20 +++++++++++++++----- src/plugins/lua/clickhouse.lua | 1 + 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/lualib/lua_clickhouse.lua b/lualib/lua_clickhouse.lua index e14518ca6..bdb096d04 100644 --- a/lualib/lua_clickhouse.lua +++ b/lualib/lua_clickhouse.lua @@ -222,7 +222,9 @@ exports.select = function (upstream, settings, params, query, ok_cb, fail_cb) connect_prefix = 'https://' end local ip_addr = upstream:get_addr():to_string(true) - http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow' + local database = params.database or 'default' + http_params.url = string.format('%s%s/?database=%s&default_format=JSONEachRow', + connect_prefix, ip_addr, escape_spaces(database)) end return rspamd_http.request(http_params) @@ -271,7 +273,9 @@ exports.select_sync = function (upstream, settings, params, query, ok_cb, fail_c connect_prefix = 'https://' end local ip_addr = upstream:get_addr():to_string(true) - http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow' + local database = params.database or 'default' + http_params.url = string.format('%s%s/?database=%s&default_format=JSONEachRow', + connect_prefix, ip_addr, escape_spaces(database)) end local err, response = rspamd_http.request(http_params) @@ -333,9 +337,11 @@ exports.insert = function (upstream, settings, params, query, rows, connect_prefix = 'https://' end local ip_addr = upstream:get_addr():to_string(true) - http_params.url = string.format('%s%s/?query=%s%%20FORMAT%%20TabSeparated', + local database = params.database or 'default' + http_params.url = string.format('%s%s/?database=%s&query=%s%%20FORMAT%%20TabSeparated', connect_prefix, ip_addr, + escape_spaces(database), escape_spaces(query)) end @@ -383,7 +389,9 @@ exports.generic = function (upstream, settings, params, query, connect_prefix = 'https://' end local ip_addr = upstream:get_addr():to_string(true) - http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow' + local database = params.database or 'default' + http_params.url = string.format('%s%s/?database=%s&default_format=JSONEachRow', + connect_prefix, ip_addr, escape_spaces(database)) end return rspamd_http.request(http_params) @@ -426,7 +434,9 @@ exports.generic_sync = function (upstream, settings, params, query) connect_prefix = 'https://' end local ip_addr = upstream:get_addr():to_string(true) - http_params.url = connect_prefix .. ip_addr .. '/?default_format=JSONEachRow' + local database = params.database or 'default' + http_params.url = string.format('%s%s/?database=%s&default_format=JSONEachRow', + connect_prefix, ip_addr, escape_spaces(database)) end return rspamd_http.request(http_params) diff --git a/src/plugins/lua/clickhouse.lua b/src/plugins/lua/clickhouse.lua index 68a435c6c..5fc642760 100644 --- a/src/plugins/lua/clickhouse.lua +++ b/src/plugins/lua/clickhouse.lua @@ -50,6 +50,7 @@ local settings = { full_urls = false, from_tables = nil, enable_symbols = false, + database = 'default', use_https = false, use_gzip = true, allow_local = false, -- 2.39.5