0

選択クエリをキャッシュするためにlua スクリプト https://github.com/clofresh/mysql-proxy-cacheを使用しています。しかし、select ステートメントを検出する方法に問題があります。次のコードを使用しています

return query:sub(1,6):lower() == 'select'

選択クエリがネストされている場合、これは機能しません()。例:

(SELECT * from tbl_name);

mysql プロキシで余分な () を削除する方法はありますか?

または選択クエリを検出するより良い方法はありますか?

4

2 に答える 2

0

クエリは実際には文字列の内部ではなく、括弧の内部にありますか?プラグインを使用しても、正しく解析されないはずです。文字列内にある場合は単に使用します:sub(2, 7)が、そうでない場合は文字列内に配置します。文字列に入れることを除いて、基本的に関数を再現する関数を作成します。例:

function mysqlQuery(mysqlString)
    loadstring(mysqlString)(); 
    return mysqlString;
end
mysqlQuery("SELECT * from tbl");
于 2013-01-01T16:19:41.080 に答える
0

I would try to write a normalizing script using the String Library that detect common patterns and replaces them with equivalent normalized sql.

One example is your parenteses but also queries where the where parts have been moved around could benefit from this.

于 2013-01-01T08:27:00.260 に答える