if (io_dir == 0) {
db->connect_state = "connected";
timeout_remove(&db->to_connect);
+ if (PQserverVersion(db->pg) >= 90500) {
+ /* v9.5+ */
+ db->api.flags |= SQL_DB_FLAG_ON_CONFLICT_DO;
+ }
driver_pgsql_set_state(db, SQL_DB_STATE_IDLE);
if (db->ioloop != NULL) {
/* driver_pgsql_sync_init() waiting for connection to
const struct sql_db driver_sqlite_db = {
.name = "sqlite",
- .flags = SQL_DB_FLAG_BLOCKING,
+ .flags =
+#if SQLITE_VERSION_NUMBER >= 3024000
+ SQL_DB_FLAG_ON_CONFLICT_DO |
+#endif
+ SQL_DB_FLAG_BLOCKING,
.v = {
.init_full = driver_sqlite_init_full_v,
const struct sql_db driver_test_sqlite_db = {
.name = "sqlite",
+ .flags = SQL_DB_FLAG_ON_CONFLICT_DO | SQL_DB_FLAG_BLOCKING,
.v = {
.init = driver_test_sqlite_init,
SQL_DB_FLAG_PREP_STATEMENTS = 0x04,
/* Database supports INSERT .. ON DUPLICATE KEY syntax. */
SQL_DB_FLAG_ON_DUPLICATE_KEY = 0x08,
+ /* Database supports INSERT .. ON CONFLICT DO UPDATE syntax. */
+ SQL_DB_FLAG_ON_CONFLICT_DO = 0x10,
};
enum sql_field_type {