Software / code / prosody
Comparison
plugins/mod_storage_sql.lua @ 13154:6cf5c215825d
mod_storage_sql: Enable UPSERT with PostgreSQL
Tested. Works.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 16 Jun 2023 13:03:34 +0200 |
| parent | 13151:7ebb3d6afcd1 |
| child | 13155:9a7523ea45cb |
comparison
equal
deleted
inserted
replaced
| 13153:88879f83b5b4 | 13154:6cf5c215825d |
|---|---|
| 216 WHERE "host"=? AND "user"=? AND "store"=? AND "key"=? | 216 WHERE "host"=? AND "user"=? AND "store"=? AND "key"=? |
| 217 LIMIT 1; | 217 LIMIT 1; |
| 218 ]]; | 218 ]]; |
| 219 for key, data in pairs(keydatas) do | 219 for key, data in pairs(keydatas) do |
| 220 -- TODO Test UPSERT in PostgreSQL before enabling it. | 220 -- TODO Test UPSERT in PostgreSQL before enabling it. |
| 221 if type(key) == "string" and key ~= "" and engine.params.driver == "SQLite3" and data ~= self.remove then | 221 if type(key) == "string" and key ~= "" and engine.params.driver ~= "MySQL" and data ~= self.remove then |
| 222 local t, value = assert(serialize(data)); | 222 local t, value = assert(serialize(data)); |
| 223 engine:insert(upsert_sql, host, username or "", self.store, key, t, value, t, value); | 223 engine:insert(upsert_sql, host, username or "", self.store, key, t, value, t, value); |
| 224 elseif type(key) == "string" and key ~= "" then | 224 elseif type(key) == "string" and key ~= "" then |
| 225 engine:delete(delete_sql, | 225 engine:delete(delete_sql, |
| 226 host, username or "", self.store, key); | 226 host, username or "", self.store, key); |