function read_query( packet ) if string.byte(packet) == proxy.COM_QUERY then if 'show processlist' == string.sub(packet, 2):lower() then proxy.queries:append(1, packet, { resultset_is_needed = true }) return proxy.PROXY_SEND_QUERY end end end function read_query_result(inj) select_time = 0; delete_time = 0; for row in inj.resultset.rows do if "bug44618" == row[4] then for n = 1, #inj.resultset.fields do if row[8]:lower():match('^select') then if select_time < tonumber(row[6]) then select_time = tonumber(row[6]); end end if row[8]:lower():match('^delete') then if delete_time < tonumber(row[6]) then delete_time = tonumber(row[6]); end end end end end proxy.response.type = proxy.MYSQLD_PACKET_OK if select_time > delete_time then local res = {} local fields = {} for row in inj.resultset.rows do res[#res + 1] = row end proxy.response = { resultset = { rows = res } } for n = 1, #inj.resultset.fields do fields[#fields + 1] = { type = inj.resultset.fields[n].type, name = inj.resultset.fields[n].name, } end proxy.response.resultset.fields = fields else if 0 == select_time then if 0 == delete_time then proxy.response.type = proxy.MYSQLD_PACKET_ERR proxy.response.errmsg = "End" end end end print("Select time: " .. select_time .. ", delete time: " .. delete_time .. "\n"); return proxy.PROXY_SEND_RESULT end