跳到主要内容
版本: 最新版本-3.5

ADD SQLBLACKLIST

ADD SQLBLACKLIST 向 SQL 黑名单添加正则表达式,以禁止某些 SQL 模式。启用 SQL 黑名单功能后,StarRocks 会将所有要执行的 SQL 语句与黑名单中的 SQL 正则表达式进行比较。StarRocks 不会执行与黑名单中任何正则表达式匹配的 SQL,并返回错误。这可以防止某些 SQL 触发集群崩溃或意外行为。

有关 SQL 黑名单的更多信息,请参阅 管理 SQL 黑名单

提示
  • 此操作需要 SYSTEM 级别的 BLACKLIST 权限。您可以按照 GRANT 中的说明授予此权限。
  • 目前,StarRocks 支持将 SELECT 语句添加到 SQL 黑名单。

语法

ADD SQLBLACKLIST "<sql_reg_expr>"

参数

sql_reg_expr:用于指定特定 SQL 模式的正则表达式。为了区分 SQL 语句中的特殊字符和正则表达式中的特殊字符,您需要使用转义字符 \ 作为 SQL 语句中特殊字符的前缀,例如 ()+。鉴于 () 经常在 SQL 语句中使用,StarRocks 可以直接识别 SQL 语句中的 ()。您无需对 () 使用转义字符。

示例

示例 1:将 count(\*) 添加到 SQL 黑名单。

mysql> ADD SQLBLACKLIST "select count(\\*) from .+";

示例 2:将 count(distinct ) 添加到 SQL 黑名单。

mysql> ADD SQLBLACKLIST "select count(distinct .+) from .+";

示例 3:将 order by limit x, y, 1 <= x <=7, 5 <=y <=7 添加到 SQL 黑名单。

mysql> ADD SQLBLACKLIST "select id_int from test_all_type_select1 
order by id_int
limit [1-7], [5-7]";

示例 4:将复杂的 SQL 正则表达式添加到 SQL 黑名单。此示例演示如何在 SQL 语句中使用转义字符 *-

mysql> ADD SQLBLACKLIST 
"select id_int \\* 4, id_tinyint, id_varchar
from test_all_type_nullable
except select id_int, id_tinyint, id_varchar
from test_basic
except select (id_int \\* 9 \\- 8) \\/ 2, id_tinyint, id_varchar
from test_all_type_nullable2
except select id_int, id_tinyint, id_varchar
from test_basic_nullable";