commit 9269c1d: [Minor] Fix learns count in sqlite3 backend
Vsevolod Stakhov
vsevolod at highsecure.ru
Fri Mar 29 17:56:03 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-03-29 17:49:32 +0000
URL: https://github.com/rspamd/rspamd/commit/9269c1d0c60d52ab1885ada800f88d3dc9dbc5f1 (HEAD -> master)
[Minor] Fix learns count in sqlite3 backend
Issue: #2251
Contributed by: @beiDei8z
---
src/libstat/backends/sqlite3_backend.c | 56 ++++++++++++++++++++++++----------
1 file changed, 40 insertions(+), 16 deletions(-)
diff --git a/src/libstat/backends/sqlite3_backend.c b/src/libstat/backends/sqlite3_backend.c
index 78c22f7de..8a3dcdc0c 100644
--- a/src/libstat/backends/sqlite3_backend.c
+++ b/src/libstat/backends/sqlite3_backend.c
@@ -84,8 +84,10 @@ enum rspamd_stat_sqlite3_stmt_idx {
RSPAMD_STAT_BACKEND_TRANSACTION_ROLLBACK,
RSPAMD_STAT_BACKEND_GET_TOKEN,
RSPAMD_STAT_BACKEND_SET_TOKEN,
- RSPAMD_STAT_BACKEND_INC_LEARNS,
- RSPAMD_STAT_BACKEND_DEC_LEARNS,
+ RSPAMD_STAT_BACKEND_INC_LEARNS_LANG,
+ RSPAMD_STAT_BACKEND_INC_LEARNS_USER,
+ RSPAMD_STAT_BACKEND_DEC_LEARNS_LANG,
+ RSPAMD_STAT_BACKEND_DEC_LEARNS_USER,
RSPAMD_STAT_BACKEND_GET_LEARNS,
RSPAMD_STAT_BACKEND_GET_LANGUAGE,
RSPAMD_STAT_BACKEND_GET_USER,
@@ -169,22 +171,38 @@ static struct rspamd_sqlite3_prstmt prepared_stmts[RSPAMD_STAT_BACKEND_MAX] =
.flags = 0,
.ret = ""
},
- [RSPAMD_STAT_BACKEND_INC_LEARNS] = {
- .idx = RSPAMD_STAT_BACKEND_INC_LEARNS,
- .sql = "UPDATE languages SET learns=learns + 1 WHERE id=?1;"
- "UPDATE users SET learns=learns + 1 WHERE id=?2;",
+ [RSPAMD_STAT_BACKEND_INC_LEARNS_LANG] = {
+ .idx = RSPAMD_STAT_BACKEND_INC_LEARNS_LANG,
+ .sql = "UPDATE languages SET learns=learns + 1 WHERE id=?1;",
.stmt = NULL,
- .args = "II",
+ .args = "I",
.result = SQLITE_DONE,
.flags = 0,
.ret = ""
},
- [RSPAMD_STAT_BACKEND_DEC_LEARNS] = {
- .idx = RSPAMD_STAT_BACKEND_DEC_LEARNS,
- .sql = "UPDATE languages SET learns=MAX(0, learns - 1) WHERE id=?1;"
- "UPDATE users SET learns=MAX(0, learns - 1) WHERE id=?2;",
+ [RSPAMD_STAT_BACKEND_INC_LEARNS_USER] = {
+ .idx = RSPAMD_STAT_BACKEND_INC_LEARNS_USER,
+ .sql = "UPDATE users SET learns=learns + 1 WHERE id=?1;",
.stmt = NULL,
- .args = "II",
+ .args = "I",
+ .result = SQLITE_DONE,
+ .flags = 0,
+ .ret = ""
+ },
+ [RSPAMD_STAT_BACKEND_DEC_LEARNS_LANG] = {
+ .idx = RSPAMD_STAT_BACKEND_DEC_LEARNS_LANG,
+ .sql = "UPDATE languages SET learns=MAX(0, learns - 1) WHERE id=?1;",
+ .stmt = NULL,
+ .args = "I",
+ .result = SQLITE_DONE,
+ .flags = 0,
+ .ret = ""
+ },
+ [RSPAMD_STAT_BACKEND_DEC_LEARNS_USER] = {
+ .idx = RSPAMD_STAT_BACKEND_DEC_LEARNS_USER,
+ .sql = "UPDATE users SET learns=MAX(0, learns - 1) WHERE id=?1;",
+ .stmt = NULL,
+ .args = "I",
.result = SQLITE_DONE,
.flags = 0,
.ret = ""
@@ -890,8 +908,11 @@ rspamd_sqlite3_inc_learns (struct rspamd_task *task, gpointer runtime,
g_assert (rt != NULL);
bk = rt->db;
rspamd_sqlite3_run_prstmt (task->task_pool, bk->sqlite, bk->prstmt,
- RSPAMD_STAT_BACKEND_INC_LEARNS,
- rt->lang_id, rt->user_id);
+ RSPAMD_STAT_BACKEND_INC_LEARNS_LANG,
+ rt->lang_id);
+ rspamd_sqlite3_run_prstmt (task->task_pool, bk->sqlite, bk->prstmt,
+ RSPAMD_STAT_BACKEND_INC_LEARNS_USER,
+ rt->user_id);
if (bk->in_transaction) {
rspamd_sqlite3_run_prstmt (task->task_pool, bk->sqlite, bk->prstmt,
@@ -916,8 +937,11 @@ rspamd_sqlite3_dec_learns (struct rspamd_task *task, gpointer runtime,
g_assert (rt != NULL);
bk = rt->db;
rspamd_sqlite3_run_prstmt (task->task_pool, bk->sqlite, bk->prstmt,
- RSPAMD_STAT_BACKEND_DEC_LEARNS,
- rt->lang_id, rt->user_id);
+ RSPAMD_STAT_BACKEND_DEC_LEARNS_LANG,
+ rt->lang_id);
+ rspamd_sqlite3_run_prstmt (task->task_pool, bk->sqlite, bk->prstmt,
+ RSPAMD_STAT_BACKEND_DEC_LEARNS_USER,
+ rt->user_id);
if (bk->in_transaction) {
rspamd_sqlite3_run_prstmt (task->task_pool, bk->sqlite, bk->prstmt,
More information about the Commits
mailing list