更新时间:2026-07-28 GMT+08:00
常见问题处理
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关键字使用错误,不能用于模板入口语法关键词,关键字使用请参考语法关键词语法规范。
- 场景二:函数未使用‘(’‘)’进行分隔错误场景示例。
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根因分析:函数关键字及其入参变量未使用‘(’‘)’进行分隔,函数使用请参考函数语法规范。
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(# true); 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的规则引擎”章节。
父主题: 基于DSL的规则引擎