# DSL规则管理函数
- dsl_add_rule() 描述：新增一条DSL规则，该函数仅限初始用户调用。
  参数：参数说明如[表1]所示。
  返回值类型：text
  返回值说明：DSL规则NAME。
   表1dsl_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规则的条数。
   表2dsl_del_rule函数参数说明 
  | 入参名称       | 入参类型 | 入参描述      |
  |:---|:---|:---|
  | rulename | name   | DSL规则NAME。 |
     
  示例：
  ```
  gaussdb=# SELECT dsl_del_rule('compute_const');
   dsl_del_rule 
  --------------
              1
  (1 row)
  ```
  
  
- dsl_set_rule() 描述：修改一条DSL规则（修改单个属性值），不允许修改规则本身的内容，仅系统管理员用户和初始用户使用。
  参数：参数说明如[表3]所示。
  返回值类型：integer
  返回值说明：修改DSL规则的条数。
   表3dsl_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() 描述：加载DSL规则到缓存。
  参数：参数说明如[表4]所示。
  返回值类型：text
  返回值说明：success表示加载成功，failed表示加载失败。
   表4dsl_reload_rule函数参数说明 
  | 入参名称      | 入参类型 | 入参描述              |
  |:---|:---|:---|
  | nodename | text  | 节点名称，为空表示在全部节点执行。 |
     
  示例：
  ```
  gaussdb=# SELECT dsl_reload_rule();
   dsl_reload_rule 
  -----------------
   success
  (1 row)
  ```
  
 
