
# 常见问题处理
#### ERROR: syntax error at 'XXXX'.
- 场景一：关键字使用错误示例。
  ```
  gaussdb=# SELECT dsl_add_rule(
  'compute_const',
  'JOIN<> {ARGS: $expr: *}
  =>
  FILTER<> {ARGS: (expr_compute $expr)
  }',
  3,
  true);
  ERROR:  syntax error at 'JOIN'  --
  LINE 3: 'JOIN<> {ARGS: $expr: *}
           ^
  CONTEXT:  referenced column: dsl_add_rule
  ```
  根因分析：JOIN关键字使用错误，不能用于模板入口语法关键词，关键字使用请参考[语法关键词](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0724.html#ZH-CN_TOPIC_0000002620640187__table13131115518377)语法规范。
  
- 场景二：函数未使用'（''）'进行分隔错误场景示例。
  ```
  gaussdb=# SELECT dsl_add_rule(
  'compute_const',
  'FILTER<> {ARGS: $expr: *}
  =>
  FILTER<> {ARGS: expr_compute $expr
  }',
  3,
  true);
  ERROR:  syntax error at 'expr_compute'
  LINE 5: FILTER<> {ARGS: expr_compute $expr
                          ^
  CONTEXT:  referenced column: dsl_add_rule
  ```
  根因分析：函数关键字及其入参变量未使用'（''）'进行分隔，函数使用请参考[函数](https://support.huaweicloud.com/distributed-devg-v10-gaussdb/gaussdb-12-0724.html#ZH-CN_TOPIC_0000002620640187__table13131115518377)语法规范。
  
 
#### ERROR: Duplicate key value violates unique constraint "gs_dsl_rewriterule_rulename_index".
场景：添加规则rulename重复错误示例。
```
-- 添加rulename为‘compute_const’的规则
gaussdb=# SELECT dsl_add_rule(
'compute_const',
'FILTER<> {ARGS: $expr: *}
=>
FILTER<> {ARGS: (expr_compute $expr)
}',
3,
true);
 dsl_add_rule  
---------------
 compute_const
(1 row)
-- 再次添加rulename为‘compute_const’的规则报错
gaussdb=# SELECT dsl_add_rule(
gaussdb(# 'compute_const',
gaussdb(# 'FILTER<> {ARGS: $expr : *}
gaussdb'# =>
gaussdb'# FILTER<> {ARGS: (expr_compute $expr)
gaussdb'# }',
gaussdb(# 3,
gaussdb;
ERROR:  Duplicate key value violates unique constraint "gs_dsl_rewriterule_rulename_index".
DETAIL:  Key (rulename)=(compute_const) already exists.
CONTEXT:  referenced column: dsl_add_rule
```
根因分析：rulename需全局唯一，相关约束请查看以下章节的相关说明：
- 非透明多写特性：请参见《参考》中"系统表和系统视图 \> 系统表 \> 基于DSL的规则引擎"章节。
 
