db接続を閉じる前に、luaスクリプトで開いているすべてのカーソルを閉じる適切なパターンは何ですか? 関数 end() で、カーソルを作成する複数の場所で呼び出されるヘルパー関数 rows() があり、作成されたものをすべて閉じることができるようにしたいと考えています。
function rows (sql_statement)
local cursor = assert (con:execute (sql_statement));
local closed = false;
return function ()
if (closed) then return nil end;
local row = {};
result = cursor:fetch(row);
if (result == nil) then
cursor:close();
closed = true;
return nil;
end;
return row;
end
end
function end()
-- this con:close() call fails because of open cursors
con:close();
env:close();
end