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];