]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict-sql: Initial change to use sql_statement API
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 15 Aug 2017 11:46:10 +0000 (14:46 +0300)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Fri, 8 Sep 2017 10:18:32 +0000 (13:18 +0300)
sql_statement_bind_*() will be followed by later changes.

src/lib-dict/dict-sql.c

index 17c433a5574528c21dbd4f377dcb2bd0585d7d56..e468bc7422c5644a23f434aedb6ff711c3aa2985 100644 (file)
@@ -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);