]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dict-sql: Use SQL_DB_FLAG_ON_DUPLICATE_KEY
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 18 May 2021 14:02:30 +0000 (17:02 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 25 May 2021 09:42:16 +0000 (09:42 +0000)
Instead of hardcoding mysql check.

src/lib-dict-backend/dict-sql-private.h
src/lib-dict-backend/dict-sql.c

index 8c6ea392dc68d8aaaa788961107f3ccc9f1359f4..30136166c7cc92b11dc05fedd092ad2e3f12529f 100644 (file)
@@ -8,8 +8,6 @@ struct sql_dict {
        struct sql_db *db;
        const char *username;
        const struct dict_sql_settings *set;
-
-       bool has_on_duplicate_key:1;
 };
 
 #endif
index 720a2c1d80315c3b181d5fa81f716f68c6012510..d212a98407005b2be1d56060acfba19d5fa69d3e 100644 (file)
@@ -112,8 +112,6 @@ sql_dict_init(struct dict *driver, const char *uri,
        sql_set.driver = driver->name;
        sql_set.connect_string = dict->set->connect;
        sql_set.event_parent = set->event_parent;
-       /* currently pgsql and sqlite don't support "ON DUPLICATE KEY" */
-       dict->has_on_duplicate_key = strcmp(driver->name, "mysql") == 0;
 
        if (sql_db_cache_new(dict_sql_db_cache, &sql_set, &dict->db, error_r) < 0) {
                pool_unref(&pool);
@@ -1115,7 +1113,7 @@ static int sql_dict_set_query(struct sql_dict_transaction_context *ctx,
 
        str_append_str(prefix, suffix);
        str_append_c(prefix, ')');
-       if (!dict->has_on_duplicate_key) {
+       if ((sql_get_flags(dict->db) & SQL_DB_FLAG_ON_DUPLICATE_KEY) == 0) {
                *stmt_r = sql_dict_transaction_stmt_init(ctx, str_c(prefix), &params);
                return 0;
        }