From: Timo Sirainen Date: Tue, 15 Aug 2017 11:46:10 +0000 (+0300) Subject: dict-sql: Initial change to use sql_statement API X-Git-Tag: 2.3.0.rc1~1065 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a789b3fb40aa00dbd4f7732c04572436dd637195;p=thirdparty%2Fdovecot%2Fcore.git dict-sql: Initial change to use sql_statement API sql_statement_bind_*() will be followed by later changes. --- diff --git a/src/lib-dict/dict-sql.c b/src/lib-dict/dict-sql.c index 17c433a557..e468bc7422 100644 --- a/src/lib-dict/dict-sql.c +++ b/src/lib-dict/dict-sql.c @@ -433,7 +433,9 @@ static int sql_dict_lookup(struct dict *_dict, pool_t pool, const char *key, if (sql_lookup_get_query(dict, key, query, &map, error_r) < 0) return -1; - result = sql_query_s(dict->db, str_c(query)); + struct sql_statement *stmt = + sql_statement_init(dict->db, str_c(query)); + result = sql_statement_query_s(&stmt); ret = sql_result_next_row(result); if (ret < 0) { *error_r = t_strdup_printf("dict sql lookup failed: %s", @@ -500,8 +502,9 @@ sql_dict_lookup_async(struct dict *_dict, const char *key, ctx->callback = callback; ctx->context = context; ctx->map = map; - sql_query(dict->db, str_c(query), - sql_dict_lookup_async_callback, ctx); + struct sql_statement *stmt = + sql_statement_init(dict->db, str_c(query)); + sql_statement_query(&stmt, sql_dict_lookup_async_callback, ctx); } } @@ -642,13 +645,17 @@ static int sql_dict_iterate_next_query(struct sql_dict_iterate_context *ctx) ctx->error = p_strdup_printf(ctx->pool, "sql dict iterate failed for %s: %s", ctx->paths[path_idx], error); - } else if ((ctx->flags & DICT_ITERATE_FLAG_ASYNC) == 0) { - ctx->result = sql_query_s(dict->db, str_c(query)); + return -1; + } + + struct sql_statement *stmt = + sql_statement_init(dict->db, str_c(query)); + if ((ctx->flags & DICT_ITERATE_FLAG_ASYNC) == 0) { + ctx->result = sql_statement_query_s(&stmt); } else { i_assert(ctx->result == NULL); ctx->synchronous_result = TRUE; - sql_query(dict->db, str_c(query), - sql_dict_iterate_callback, ctx); + sql_statement_query(&stmt, sql_dict_iterate_callback, ctx); ctx->synchronous_result = FALSE; } return ret; @@ -1084,7 +1091,9 @@ static void sql_dict_set_real(struct dict_transaction_context *_ctx, ctx->error = i_strdup_printf("dict-sql: Failed to set %s=%s: %s", key, value, error); } else { - sql_update(ctx->sql_ctx, query); + struct sql_statement *stmt = + sql_statement_init(dict->db, query); + sql_update_stmt(ctx->sql_ctx, &stmt); } } @@ -1120,7 +1129,9 @@ static void sql_dict_unset(struct dict_transaction_context *_ctx, ctx->error = i_strdup_printf( "dict-sql: Failed to delete %s: %s", key, error); } else { - sql_update(ctx->sql_ctx, str_c(query)); + struct sql_statement *stmt = + sql_statement_init(dict->db, str_c(query)); + sql_update_stmt(ctx->sql_ctx, &stmt); } } @@ -1170,8 +1181,10 @@ static void sql_dict_atomic_inc_real(struct sql_dict_transaction_context *ctx, ctx->error = i_strdup_printf( "dict-sql: Failed to increase %s: %s", key, error); } else { - sql_update_get_rows(ctx->sql_ctx, query, - sql_dict_next_inc_row(ctx)); + struct sql_statement *stmt = + sql_statement_init(dict->db, query); + sql_update_stmt_get_rows(ctx->sql_ctx, &stmt, + sql_dict_next_inc_row(ctx)); } } @@ -1280,7 +1293,9 @@ static void sql_dict_set(struct dict_transaction_context *_ctx, ctx->error = i_strdup_printf( "dict-sql: Failed to set %s: %s", key, error); } else { - sql_update(ctx->sql_ctx, query); + struct sql_statement *stmt = + sql_statement_init(dict->db, query); + sql_update_stmt(ctx->sql_ctx, &stmt); } i_free_and_null(ctx->prev_set_value); i_free_and_null(ctx->prev_set_key); @@ -1342,8 +1357,10 @@ static void sql_dict_atomic_inc(struct dict_transaction_context *_ctx, ctx->error = i_strdup_printf( "dict-sql: Failed to increase %s: %s", key, error); } else { - sql_update_get_rows(ctx->sql_ctx, query, - sql_dict_next_inc_row(ctx)); + struct sql_statement *stmt = + sql_statement_init(dict->db, query); + sql_update_stmt_get_rows(ctx->sql_ctx, &stmt, + sql_dict_next_inc_row(ctx)); } i_free_and_null(ctx->prev_inc_key);