From: Timo Sirainen Date: Tue, 18 May 2021 14:00:44 +0000 (+0300) Subject: lib-sql: Add SQL_DB_FLAG_ON_DUPLICATE_KEY flag for MySQL X-Git-Tag: 2.3.16~107 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0d8acaeae22fc84cddbaf8c9b6b4f97ce5be3afb;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: Add SQL_DB_FLAG_ON_DUPLICATE_KEY flag for MySQL --- diff --git a/src/lib-sql/driver-mysql.c b/src/lib-sql/driver-mysql.c index 78510eabf4..b8308cc1ab 100644 --- a/src/lib-sql/driver-mysql.c +++ b/src/lib-sql/driver-mysql.c @@ -763,7 +763,8 @@ driver_mysql_escape_blob(struct sql_db *_db ATTR_UNUSED, const struct sql_db driver_mysql_db = { .name = "mysql", - .flags = SQL_DB_FLAG_BLOCKING | SQL_DB_FLAG_POOLED, + .flags = SQL_DB_FLAG_BLOCKING | SQL_DB_FLAG_POOLED | + SQL_DB_FLAG_ON_DUPLICATE_KEY, .v = { .init_full = driver_mysql_init_full_v, diff --git a/src/lib-sql/driver-test.c b/src/lib-sql/driver-test.c index 44dd7b4b14..f267c14a36 100644 --- a/src/lib-sql/driver-test.c +++ b/src/lib-sql/driver-test.c @@ -85,6 +85,7 @@ const char *driver_test_result_get_error(struct sql_result *result); const struct sql_db driver_test_mysql_db = { .name = "mysql", + .flags = SQL_DB_FLAG_BLOCKING | SQL_DB_FLAG_ON_DUPLICATE_KEY, .v = { .init = driver_test_mysql_init, diff --git a/src/lib-sql/sql-api.h b/src/lib-sql/sql-api.h index e98a155b73..1478b1268b 100644 --- a/src/lib-sql/sql-api.h +++ b/src/lib-sql/sql-api.h @@ -15,6 +15,8 @@ enum sql_db_flags { the functions can still be used, but they're just internally convered into regular statements. */ SQL_DB_FLAG_PREP_STATEMENTS = 0x04, + /* Database supports INSERT .. ON DUPLICATE KEY syntax. */ + SQL_DB_FLAG_ON_DUPLICATE_KEY = 0x08, }; enum sql_field_type {