6
function read_query( packet )
7
if packet:byte() == proxy.COM_QUERY then
8
proxy.queries:append(1, packet, { resultset_is_needed = true } )
9
return proxy.PROXY_SEND_QUERY
16
function read_query_result(inj)
17
local fields = inj.resultset.fields
18
collectgarbage("collect") -- trigger a full GC
20
assert(type(fields) == "userdata")
21
assert(type(fields[1]) == "userdata") -- if the GC removed the underlying c-struct, fields[1] will be nil
24
type = proxy.MYSQLD_PACKET_OK,
31
proxy.response.resultset.fields[1] = {
32
name = fields[1].name, type = fields[1].type
34
proxy.response.resultset.fields[2] = {
35
name = fields[2].name, type = fields[2].type
37
for row in inj.resultset.rows do
38
collectgarbage("collect") -- trigger a full GC
41
-- if something goes wrong 'row' will reference a free()ed old resultset now
42
-- leading to nil here
43
proxy.response.resultset.rows[#proxy.response.resultset.rows + 1] = { row[1], row[2] }
46
return proxy.PROXY_SEND_RESULT