commit 432064e: [Feature] Clickhouse: Store groups data
Vsevolod Stakhov
vsevolod at highsecure.ru
Sun Sep 1 08:49:06 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-09-01 09:43:46 +0100
URL: https://github.com/rspamd/rspamd/commit/432064e1d636ec454851a70aef137cfd97e1cfee
[Feature] Clickhouse: Store groups data
---
src/plugins/lua/clickhouse.lua | 33 +++++++++++++++++++++-
.../cases/210_clickhouse/001_migration.robot | 4 ++-
2 files changed, 35 insertions(+), 2 deletions(-)
diff --git a/src/plugins/lua/clickhouse.lua b/src/plugins/lua/clickhouse.lua
index 8762de239..5c8eb5d4d 100644
--- a/src/plugins/lua/clickhouse.lua
+++ b/src/plugins/lua/clickhouse.lua
@@ -31,7 +31,7 @@ end
local data_rows = {}
local custom_rows = {}
local nrows = 0
-local schema_version = 7 -- Current schema version
+local schema_version = 8 -- Current schema version
local settings = {
limit = 1000,
@@ -131,6 +131,8 @@ CREATE TABLE rspamd
`Symbols.Names` Array(LowCardinality(String)) COMMENT 'Symbol name',
`Symbols.Scores` Array(Float32) COMMENT 'Symbol score',
`Symbols.Options` Array(String) COMMENT 'Symbol options (comma separated list)',
+ `Groups.Names` Array(LowCardinality(String)) COMMENT 'Group name',
+ `Groups.Scores` Array(Float32) COMMENT 'Group score',
ScanTimeReal UInt32 COMMENT 'Request time in milliseconds',
ScanTimeVirtual UInt32 COMMENT 'Deprecated do not use',
AuthUser String COMMENT 'Username for authenticated SMTP client',
@@ -226,6 +228,15 @@ local migrations = {
-- New version
[[INSERT INTO rspamd_version (Version) Values (7)]],
},
+ [7] = {
+ -- Add new columns
+ [[ALTER TABLE rspamd
+ ADD COLUMN `Groups.Names` Array(LowCardinality(String)) AFTER `Symbols.Options`,
+ ADD COLUMN `Groups.Scores` Array(Float32) AFTER `Groups.Names`
+ ]],
+ -- New version
+ [[INSERT INTO rspamd_version (Version) Values (8)]],
+ },
}
local predefined_actions = {
@@ -314,6 +325,14 @@ local function clickhouse_symbols_row(res)
for _,v in ipairs(fields) do table.insert(res, v) end
end
+local function clickhouse_groups_row(res)
+ local fields = {
+ 'Groups.Names',
+ 'Groups.Scores',
+ }
+ for _,v in ipairs(fields) do table.insert(res, v) end
+end
+
local function clickhouse_asn_row(res)
local fields = {
'ASN',
@@ -398,6 +417,7 @@ local function clickhouse_send_data(task, ev_base)
if settings.enable_symbols then
clickhouse_symbols_row(fields)
+ clickhouse_groups_row(fields)
end
send_data('generic data', data_rows,
@@ -787,6 +807,17 @@ local function clickhouse_collect(task)
table.insert(row, syms_tab)
table.insert(row, scores_tab)
table.insert(row, options_tab)
+
+ -- Groups data
+ local groups = task:get_groups()
+ local groups_tab = {}
+ local gr_scores_tab = {}
+ for gr,sc in pairs(groups) do
+ table.insert(groups_tab, gr)
+ table.insert(gr_scores_tab, sc)
+ end
+ table.insert(row, groups_tab)
+ table.insert(row, gr_scores_tab)
end
-- Custom data
diff --git a/test/functional/cases/210_clickhouse/001_migration.robot b/test/functional/cases/210_clickhouse/001_migration.robot
index 5abda0881..8c51a3480 100644
--- a/test/functional/cases/210_clickhouse/001_migration.robot
+++ b/test/functional/cases/210_clickhouse/001_migration.robot
@@ -36,7 +36,9 @@ Migration
# Added in schema version 7
Column should exist rspamd Helo
Column should exist rspamd SMTPRecipients
- Schema version should be 7
+ # Added in schema version 8
+ Column should exist rspamd Groups.Scores
+ Schema version should be 8
Retention
Upload new schema ${TESTDIR}/data/schema_2/schema.sql
More information about the Commits
mailing list