]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict-sql: Flush pending atomic_inc on set, and pending set on atomic_inc
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Sat, 26 Aug 2017 20:27:21 +0000 (23:27 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 27 Sep 2017 10:37:02 +0000 (13:37 +0300)
src/lib-dict/dict-sql.c

index 1195c03785ef43b0f23ebda011a5bd0b3d97aa51..ddeeb6cbe278d17aa6b864d79667762a2499ab36 100644 (file)
@@ -1333,6 +1333,9 @@ static void sql_dict_set(struct dict_transaction_context *_ctx,
        if (ctx->failed)
                return;
 
+       if (ctx->prev_inc_map != NULL)
+               sql_dict_prev_inc_flush(ctx);
+
        map = sql_dict_find_map(dict, key, &values);
        if (map == NULL) {
                ctx->failed = TRUE;
@@ -1393,6 +1396,9 @@ static void sql_dict_atomic_inc(struct dict_transaction_context *_ctx,
        const struct dict_sql_map *map;
        ARRAY_TYPE(const_string) values;
 
+       if (ctx->prev_set_map != NULL)
+               sql_dict_prev_set_flush(ctx);
+
        map = sql_dict_find_map(dict, key, &values);
        if (map == NULL) {
                i_error("sql dict atomic inc: Invalid/unmapped key: %s", key);