DSL规则管理函数
- dsl_add_rule()
参数:参数说明如表1所示。
返回值类型:text
返回值说明:DSL规则NAME。
表1 dsl_add_rule函数参数说明 入参名称
入参类型
是否必选
参数描述
rulename
name
Y
DSL规则名称。格式要求:字母开头,不支持中文;支持字母、数字、下划线、中划线组合;不支持其他特殊字符;长度不超过64个字节。
ruletext
text
Y
DSL规则文本内容。
priority
integer
Y
DSL规则优先级(取值范围:1-9999),全局唯一, 数字越大优先级越低。
enabled
boolean
N
是否开启规则,默认值为:FALSE。
ruledesc
name
N
DSL规则描述,可以为空值,长度不超过64个字节。
ruledbcompatibility
text
N
DSL规则在数据库的兼容模式。
支持类型:ORA、MYSQL、TD、PG、M、ANY;
分别表示兼容O、MY、TD、POSTGRES、M-Compatibility和全部兼容;
支持设置多个兼容模式,兼容模式间用 | 隔开,比如A|PG表示同时支持O和PG兼容;
默认值:ANY。
planmode
text
N
规则支持的计划类型,可选:Stream/RemoteQuery/ANY;默认值:ANY。
示例:
gaussdb=# SELECT dsl_add_rule( 'compute_const', 'Filter<> {args: $expr: *} => Filter<> {args: (expr_compute $expr) }', 3, true); dsl_add_rule --------------- compute_const (1 row) - dsl_del_rule()
描述:删除一条DSL规则,该函数仅限系统管理员用户及初始用户调用。
参数:参数说明如表2所示。
返回值类型:integer
返回值说明:删除DSL规则的条数。
示例:
gaussdb=# SELECT dsl_del_rule('compute_const'); dsl_del_rule -------------- 1 (1 row) - dsl_set_rule()
描述:修改一条DSL规则(修改单个属性值),不允许修改规则本身的内容,仅系统管理员用户和初始用户使用。
参数:参数说明如表3所示。
返回值类型:integer
返回值说明:修改DSL规则的条数。
表3 dsl_set_rule函数参数说明 入参名称
入参类型
入参描述
rulename
name
DSL规则NAME。
attrname
text
属性名称,目前支持的属性有:enabled,priority,ruledesc,dbcompatibility,planmode。
attrval
text
属性值。
示例:
gaussdb=# SELECT dsl_set_rule('compute_const', 'priority', '8'); dsl_set_rule -------------- 1 (1 row) gaussdb=# \x Expanded display is on. gaussdb=# SELECT * FROM GS_DSL_REWRITERULE WHERE rulename = 'compute_const'; -[ RECORD 1 ]---+------------------------------------- enabled | t externalrule | t costbased | f priority | 8 --规则优先级被设置为8 dbcompatibility | 31 planmode | 3 createtime | xxxx-xx-xx 16:43:18.766029+08 lastupdatetime | xxdsl_reload_rule函数参数说明xx-xx-xx 16:44:55.785637+08 rulename | compute_const rulehash | 8576886722021209825 ruletext | Filter<> {args: $expr: *} | => | Filter<> {args: (expr_compute $expr) | } ruledesc | - dsl_reload_rule()
参数:参数说明如表4所示。
返回值类型:text
返回值说明:success表示加载成功,failed表示加载失败。
示例:
gaussdb=# SELECT dsl_reload_rule(); dsl_reload_rule ----------------- success (1 row)