MySQL 代理查询重写
我想用 SELECT COUNT(1)
更改所有 SELECT COUNT(*)
查询(对于此用例)。
我有以下 lua 脚本,但它无法正常工作:
function read_query( packet )
if string.byte(packet) == proxy.COM_QUERY then
local query = string.sub(packet, 2)
local replacing = false
if string.match(string.upper(query), 'COUNT(*)') then
query = string.gsub(query,'COUNT(*)', 'COUNT(1)')
replacing = true
end
if (replacing) then
proxy.queries:append(1, string.char(proxy.COM_QUERY) .. query )
return proxy.PROXY_SEND_QUERY
end
end
end
我做错了什么?
I would like to change all SELECT COUNT(*)
queries with SELECT COUNT(1)
(for this use case).
I have the following lua script, but it does not work somehow:
function read_query( packet )
if string.byte(packet) == proxy.COM_QUERY then
local query = string.sub(packet, 2)
local replacing = false
if string.match(string.upper(query), 'COUNT(*)') then
query = string.gsub(query,'COUNT(*)', 'COUNT(1)')
replacing = true
end
if (replacing) then
proxy.queries:append(1, string.char(proxy.COM_QUERY) .. query )
return proxy.PROXY_SEND_QUERY
end
end
end
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您正在搜索字符串“COUNT(*)”,请记住第二个参数是一个模式而不是一个简单的字符串,您可以使用
抑制正则表达式魔术字符 ^$()%.[]*+ 对 字符串进行转义-?)
在每个非字母数字字符 (%W) 前面加上 % 转义字符,其中 %% 是 % 转义字符,%1 是原始字符,
因此
If you are searching for the string "COUNT(*)" remember the second parameter is a pattern and not a simple string, you could escape the string using
Inhibit Regular Expression magic characters ^$()%.[]*+-?)
Prefix every non-alphanumeric character (%W) with a % escape character,where %% is the % escape, and %1 is original character
so