更新时间:2024-12-06 GMT+08:00
分享

ALTER BLOCK RULE

功能描述

修改查询过滤规则属性,包括查询过滤规则名称、绑定的客户端名称、客户端IP、用户以及匹配方式等。

该语法仅9.1.0.100及以上集群版本支持。

注意事项

  • 只有拥有数据库所有者权限的用户或者授予gs_role_block角色权限的用户才能执行ALTER BLOCK RULE命令,系统管理员默认拥有此权限。
  • DEFAULT语法用于对某一属性进行重置,但仅适用于非必选项。

语法格式

1
2
3
4
5
6
7
ALTER BLOCK RULE block_name
    [ [ TO user_name@'host' ] | [ TO user_name ] | [ TO 'host' ] | [ TO DEFAULT ] ] |
    [ FOR UPDATE | SELECT | INSERT | DELETE | MERGE | DEFAULT ] |
    FILTER BY
    { SQL ( 'text' ) | TEMPLATE ( template_parameter = value ) }
    [ WITH ( { with_parameter = value }, [, ... ] ) ];
ALTER BLOCK RULE block_name RENAME to new_block_name;

参数说明

  • block_name

    需要修改属性的查询过滤规则名称。

    取值范围:字符串,需符合标识符的命名规范。

  • user_name

    查询过滤规则适用的用户。

    取值范围:字符串,有效的用户名。

  • host

    查询过滤规则适用的客户端IP。

    取值范围:字符串,有效的IP地址。

  • SQL

    查询过滤规则正则匹配语句。

    取值范围:字符串,正则表达式。

  • template_parameter

    查询过滤规则匹配模板。

    取值范围:unique_sql_id/sql_hash,其值为字符串,其中unique_sql_id必须为全数字。

  • with_parameter

    查询过滤规则选项参数。

    取值范围:

    • application_name,客户端名称。
    • query_band
    • table_num,语句扫描表个数。
    • partition_num,算子预估扫描的最大分区数。
    • estimate_row,算子预估扫描的最大表行数,
    • resource_pool,需要切换到的资源池名称。
    • max_active_num,规则对应语句的最大并发数。
    • is_warning,控制拦截到语句的行为是告警还是报错。

示例

创建查询规则query_block:

1
CREATE BLOCK RULE query_block FILTER BY SQL('update table_table set a=1');

修改查询规则query_block的属性:

1
ALTER BLOCK RULE query_block TO user1@'192.168.x.x' FOR SELECT FILTER BY SQL('select * from table_name')WITH(application_name='gsql',query_band='test1',table_num='2',partition_num='3',estimate_row='1000',resource_pool='rsp1',max_active_num='3',is_warning='off');

对查询规则query_block进行重命名:

1
ALTER BLOCK RULE query_block RENAME TO query_block_new;

相关文档