From c5af3aee3e651187a3a582045dbe269e1b61fe4d Mon Sep 17 00:00:00 2001 From: Matthew Wild Date: Fri, 4 Aug 2017 18:52:15 +0100 Subject: util.sql: Greedily read all rows so we can close queries early (fixes #391) --- util/sql.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'util') diff --git a/util/sql.lua b/util/sql.lua index 15749911..61d6af41 100644 --- a/util/sql.lua +++ b/util/sql.lua @@ -175,7 +175,11 @@ function engine:execute_query(sql, ...) sql = self:prepquery(sql); local stmt = assert(self.conn:prepare(sql)); assert(stmt:execute(...)); - return stmt:rows(); + local result = {}; + for row in stmt:rows() do result[#result + 1] = row; end + stmt:close(); + local i = 0; + return function() i=i+1; return result[i]; end; end function engine:execute_update(sql, ...) sql = self:prepquery(sql); -- cgit v1.2.3