Software / code / prosody
Comparison
plugins/mod_storage_sql.lua @ 7178:5953f415c815
mod_storage_sql: Treat non-existent archive IDs as beyound the end of the archive (fixes #624) (tested on sqlite3 only)
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 22 Feb 2016 15:23:27 +0100 |
| parent | 7175:3e7c69190193 |
| child | 7273:7e659f87973d |
comparison
equal
deleted
inserted
replaced
| 7177:1295e14614f4 | 7178:5953f415c815 |
|---|---|
| 233 end | 233 end |
| 234 local function archive_where_id_range(query, args, where) | 234 local function archive_where_id_range(query, args, where) |
| 235 local args_len = #args | 235 local args_len = #args |
| 236 -- Before or after specific item, exclusive | 236 -- Before or after specific item, exclusive |
| 237 if query.after then -- keys better be unique! | 237 if query.after then -- keys better be unique! |
| 238 where[#where+1] = "`sort_id` > (SELECT `sort_id` FROM `prosodyarchive` WHERE `key` = ? AND `host` = ? AND `user` = ? AND `store` = ? LIMIT 1)" | 238 where[#where+1] = "`sort_id` > COALESCE((SELECT `sort_id` FROM `prosodyarchive` WHERE `key` = ? AND `host` = ? AND `user` = ? AND `store` = ? LIMIT 1), 0)" |
| 239 args[args_len+1], args[args_len+2], args[args_len+3], args[args_len+4] = query.after, args[1], args[2], args[3]; | 239 args[args_len+1], args[args_len+2], args[args_len+3], args[args_len+4] = query.after, args[1], args[2], args[3]; |
| 240 args_len = args_len + 4 | 240 args_len = args_len + 4 |
| 241 end | 241 end |
| 242 if query.before then | 242 if query.before then |
| 243 where[#where+1] = "`sort_id` < (SELECT `sort_id` FROM `prosodyarchive` WHERE `key` = ? AND `host` = ? AND `user` = ? AND `store` = ? LIMIT 1)" | 243 where[#where+1] = "`sort_id` < COALESCE((SELECT `sort_id` FROM `prosodyarchive` WHERE `key` = ? AND `host` = ? AND `user` = ? AND `store` = ? LIMIT 1), (SELECT MAX(`sort_id`)+1 FROM `prosodyarchive`))" |
| 244 args[args_len+1], args[args_len+2], args[args_len+3], args[args_len+4] = query.before, args[1], args[2], args[3]; | 244 args[args_len+1], args[args_len+2], args[args_len+3], args[args_len+4] = query.before, args[1], args[2], args[3]; |
| 245 end | 245 end |
| 246 end | 246 end |
| 247 | 247 |
| 248 function archive_store:find(username, query) | 248 function archive_store:find(username, query) |