Software / code / prosody
Comparison
util/sql.lua @ 8186:becb593ed86d
util.sql: Greedily read all rows so we can close queries early (fixes #391)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 04 Aug 2017 18:52:15 +0100 |
| parent | 8084:655837e9eeeb |
| child | 8288:e9ac2d93de18 |
comparison
equal
deleted
inserted
replaced
| 8184:dbcae15b4282 | 8186:becb593ed86d |
|---|---|
| 173 | 173 |
| 174 function engine:execute_query(sql, ...) | 174 function engine:execute_query(sql, ...) |
| 175 sql = self:prepquery(sql); | 175 sql = self:prepquery(sql); |
| 176 local stmt = assert(self.conn:prepare(sql)); | 176 local stmt = assert(self.conn:prepare(sql)); |
| 177 assert(stmt:execute(...)); | 177 assert(stmt:execute(...)); |
| 178 return stmt:rows(); | 178 local result = {}; |
| 179 for row in stmt:rows() do result[#result + 1] = row; end | |
| 180 stmt:close(); | |
| 181 local i = 0; | |
| 182 return function() i=i+1; return result[i]; end; | |
| 179 end | 183 end |
| 180 function engine:execute_update(sql, ...) | 184 function engine:execute_update(sql, ...) |
| 181 sql = self:prepquery(sql); | 185 sql = self:prepquery(sql); |
| 182 local prepared = self.prepared; | 186 local prepared = self.prepared; |
| 183 local stmt = prepared[sql]; | 187 local stmt = prepared[sql]; |