oceanbase4.2.1社区版本,触发器里调用自定义函数入参不能直接传枚举类型字段?

DELIMITER $$

CREATE
TRIGGER trigger_insert_test_table AFTER INSERT ON test_table
FOR EACH ROW
BEGIN
DECLARE str LONGTEXT DEFAULT ‘’;
SET str = ‘’;
SET str = getDiffJson(‘input_type’,’-’,new.input_type,str);

END;
$$

DELIMITER ;

其中函数getDiffJson的对应入参是LONGTEXT类型,如果test_table的input_type字段是enum类型,在向表test_table插入数据触发器执行就会报错而导致插入失败,这种情况在mysql中是允许的并且正常执行

目前暂时的解决方式,先赋值给变量再调用函数:
DECLARE input_type VARCHAR(50) DEFAULT ‘’;
SET input_type = new.input_type;
SET str = getDiffJson(‘input_type’,’-’,input_type,str);

这个问题是内核的bad case,会在下一个版本上修复。

好的谢谢!枚举类型字段也无法在触发器中IF条件里直接比对,不知道是否是同一问题

方便把case贴出来吗

DELIMITER $$

CREATE
TRIGGER trigger_update_table_test AFTER UPDATE ON table_test
FOR EACH ROW BEGIN
DECLARE str VARCHAR(2000) DEFAULT ‘’;
IF old.review_status != new.review_status THEN
SET str = ‘’;
END IF;
END;
$$

DELIMITER ;

当review_status字段为枚举,保存会报错;如果是varchar类型就正常

错误代码: 4016
Internal error
trace_log.txt (23.4 KB)

已经收到你的case 先看看

已经确定 是版本的bug 后期会修复支持