есть lua, есть lua-sql-postgres, работает это всё в сферическом nginx в вакууме.
есть функция, которая возвращает указатель (userdata) на выполненный запрос для получения результата:
function _M.query(connection, query)
-- determine conn --
if not connection then connection = ngx.ctx.default_connection end
if not connection then return false end
local ret, pointer
ret, pointer = pcall(assert, connection:execute(query))
-- safe call
if ret then return pointer else return false end
end
который используется примерно так:
local connection = sql.connect(..)
local query = sql.query(sql.escape("update from users set variable = 'value'"))
local query = nil -- тут очищаем значение, но это не помогает!
так вот, с каждым запросом «утекает» примерно 8 байт памяти, если не «закрыть» указатель luasql:
query:close() -- если делаем так, никаких утечек 8 байт даже через 1000 запросов
вопрос - нормально ли это? куда уходит память, если мы явно обнуляем переменную query?