MYSQL サーバーと MYSQL-PROXY があり、SELECT クエリへの応答としてクライアントに送信する結果を操作しようとしています。私はluaでこのコードを書きました:
function string.starts(String,Start)
return string.sub(String,1,string.len(Start))==Start
end
function read_query_result(inj)
local fn = 1
local fields = inj.resultset.fields
while fields[fn] do
fn = fn + 1
end
fn = fn - 1
print("FIELD NUMBER: " .. fn)
for row in inj.resultset.rows do
print ("--------------")
for i = 1, fn do
if (string.starts(fields[i].name,"TEST")) then
row[i]="TESTED"
end
print ("DATA: " .. fields[i].name .. " -> " .. row[i])
end
end
return proxy.PROXY_SEND_RESULT
end
フィールド名と値を正しく読み取ることができます。結果を変更したい状況を検出できますが、クライアントに送信されたデータを取得できません。
2 つの問題があります。
- ローカル行変数に値を設定していますが、実際の結果セット (inj.Resultset.row[i] など) を設定する方法が見つかりません。
return proxy.PROXY_SEND_RESULT
その文にコメントするたびに結果が表示され、コメントを外すとエラーが発生するため、何か問題があります。
参考になるコード例が見つかりませんでした。