Software / code / prosody
Comparison
plugins/mod_storage_sql.lua @ 3975:aa5e93e61760
mod_storage_sql: Call commit() after all SQL statements, including SELECT, to get SQLite to drop its locks.
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Mon, 27 Dec 2010 06:10:35 +0500 |
| parent | 3974:af40a7ce4f77 |
| child | 3976:16170a66e140 |
comparison
equal
deleted
inserted
replaced
| 3974:af40a7ce4f77 | 3975:aa5e93e61760 |
|---|---|
| 53 local ok = assert(stmt:execute()); | 53 local ok = assert(stmt:execute()); |
| 54 local count = stmt:fetch()[1]; | 54 local count = stmt:fetch()[1]; |
| 55 if count == 0 then | 55 if count == 0 then |
| 56 local stmt = assert(connection:prepare("CREATE TABLE `Prosody` (`host` TEXT, `user` TEXT, `store` TEXT, `key` TEXT, `subkey` TEXT, `type` TEXT, `value` TEXT);")); | 56 local stmt = assert(connection:prepare("CREATE TABLE `Prosody` (`host` TEXT, `user` TEXT, `store` TEXT, `key` TEXT, `subkey` TEXT, `type` TEXT, `value` TEXT);")); |
| 57 assert(stmt:execute()); | 57 assert(stmt:execute()); |
| 58 assert(connection:commit()); | |
| 59 module:log("debug", "Initialized new SQLite3 database"); | 58 module:log("debug", "Initialized new SQLite3 database"); |
| 60 end | 59 end |
| 60 assert(connection:commit()); | |
| 61 --print("===", json.stringify()) | 61 --print("===", json.stringify()) |
| 62 end | 62 end |
| 63 end | 63 end |
| 64 | 64 |
| 65 local function serialize(value) | 65 local function serialize(value) |
| 130 result[a] = b; | 130 result[a] = b; |
| 131 end | 131 end |
| 132 end | 132 end |
| 133 end | 133 end |
| 134 end | 134 end |
| 135 return haveany and result or nil; | 135 return commit(haveany and result or nil); |
| 136 end | 136 end |
| 137 function keyval_store:set(username, data) | 137 function keyval_store:set(username, data) |
| 138 user,store = username,self.store; | 138 user,store = username,self.store; |
| 139 -- start transaction | 139 -- start transaction |
| 140 local affected, err = setsql("DELETE FROM `Prosody` WHERE `host`=? AND `user`=? AND `store`=? AND `subkey`=''"); | 140 local affected, err = setsql("DELETE FROM `Prosody` WHERE `host`=? AND `user`=? AND `store`=? AND `subkey`=''"); |
| 180 result[a] = b; | 180 result[a] = b; |
| 181 end | 181 end |
| 182 end | 182 end |
| 183 end | 183 end |
| 184 end | 184 end |
| 185 return haveany and result or nil; | 185 return commit(haveany and result or nil); |
| 186 end | 186 end |
| 187 function map_store:set(username, key, data) | 187 function map_store:set(username, key, data) |
| 188 user,store = username,self.store; | 188 user,store = username,self.store; |
| 189 -- start transaction | 189 -- start transaction |
| 190 local affected, err = setsql("DELETE FROM `Prosody` WHERE `host`=? AND `user`=? AND `store`=? AND `key`=?", key or ""); | 190 local affected, err = setsql("DELETE FROM `Prosody` WHERE `host`=? AND `user`=? AND `store`=? AND `key`=?", key or ""); |