From cc440c4ba3d4c60c0feb6fd37562d8298ecb99f7 Mon Sep 17 00:00:00 2001 From: Markus Valentin Date: Thu, 1 Dec 2022 10:54:38 +0100 Subject: [PATCH] lib-sql: Add sql_statement_set_no_log_expanded_values() This allows to store no_log_expanded_values to sql_statement. --- src/lib-dict-backend/dict-sql.c | 2 ++ src/lib-sql/sql-api-private.h | 3 +++ src/lib-sql/sql-api.c | 8 ++++++++ src/lib-sql/sql-api.h | 2 ++ 4 files changed, 15 insertions(+) diff --git a/src/lib-dict-backend/dict-sql.c b/src/lib-dict-backend/dict-sql.c index c44330b02d..4ceee0150c 100644 --- a/src/lib-dict-backend/dict-sql.c +++ b/src/lib-dict-backend/dict-sql.c @@ -1039,6 +1039,8 @@ sql_dict_transaction_stmt_init(struct sql_dict_transaction_context *ctx, if (ctx->ctx.timestamp.tv_sec != 0) sql_statement_set_timestamp(stmt, &ctx->ctx.timestamp); + if (ctx->ctx.set.hide_log_values) + sql_statement_set_no_log_expanded_values(stmt, ctx->ctx.set.hide_log_values); return stmt; } diff --git a/src/lib-sql/sql-api-private.h b/src/lib-sql/sql-api-private.h index e26f7bc0cd..30265129a8 100644 --- a/src/lib-sql/sql-api-private.h +++ b/src/lib-sql/sql-api-private.h @@ -192,6 +192,9 @@ struct sql_statement { pool_t pool; const char *query_template; ARRAY_TYPE(const_string) args; + + /* Tell the driver to not log this query with expanded values. */ + bool no_log_expanded_values; }; struct sql_field_map { diff --git a/src/lib-sql/sql-api.c b/src/lib-sql/sql-api.c index 986332634c..cd16a5f246 100644 --- a/src/lib-sql/sql-api.c +++ b/src/lib-sql/sql-api.c @@ -250,6 +250,8 @@ default_sql_statement_init_prepared(struct sql_prepared_statement *stmt) const char *sql_statement_get_log_query(struct sql_statement *stmt) { + if (stmt->no_log_expanded_values) + return stmt->query_template; return sql_statement_get_query(stmt); } @@ -391,6 +393,12 @@ void sql_statement_set_timestamp(struct sql_statement *stmt, stmt->db->v.statement_set_timestamp(stmt, ts); } +void sql_statement_set_no_log_expanded_values(struct sql_statement *stmt, + bool no_expand) +{ + stmt->no_log_expanded_values = no_expand; +} + void sql_statement_bind_str(struct sql_statement *stmt, unsigned int column_idx, const char *value) { diff --git a/src/lib-sql/sql-api.h b/src/lib-sql/sql-api.h index 7936b98628..669a8515d2 100644 --- a/src/lib-sql/sql-api.h +++ b/src/lib-sql/sql-api.h @@ -143,6 +143,8 @@ sql_statement_init_prepared(struct sql_prepared_statement *prep_stmt); void sql_statement_abort(struct sql_statement **stmt); void sql_statement_set_timestamp(struct sql_statement *stmt, const struct timespec *ts); +void sql_statement_set_no_log_expanded_values(struct sql_statement *stmt, + bool no_expand); void sql_statement_bind_str(struct sql_statement *stmt, unsigned int column_idx, const char *value); void sql_statement_bind_binary(struct sql_statement *stmt, -- 2.47.3