【标题】(请简要描述下实现的内容)
支持sql_mode ERROR_FOR_DIVISION_BY_ZERO,除0不报错
【实现内容】:
支持除0不报错。通过sql_mode控制,结合严格模式区分SELECT和IUD功能,表现参考MySQL:
严格模式+没有ERROR_FOR_DIVISION_BY_ZERO
select 1/0 -> 无报错,无告警
insert into t_int values(1/0) -> 无报错,无告警
宽松模式+没有ERROR_FOR_DIVISION_BY_ZERO
select 1/0 -> 无报错,无告警
insert into t_int values(1/0) -> 无报错,无告警
严格模式+ERROR_FOR_DIVISION_BY_ZERO
select 1/0 -> 告警
insert into t_int values(1/0) -> 报错
宽松模式+ERROR_FOR_DIVISION_BY_ZERO
select 1/0 -> 告警
insert into t_int values(1/0) -> 告警
【根因分析】:
【实现方案】:
在除0报错的地方,根据sql_mode中的ERROR_FOR_DIVISION_BY_ZERO以及严格模式,确定是否报警、报error等。表现参考mysql
【关联需求或issue】:
https://e.gitee.com/opengaussorg/issues/table?issue=I82O75
【开发自验报告】:
- 请附上自验结果(内容或者截图)
- 是否可以添加fastcheck测试用例,如是,请补充fastcheck用例
是,已添加 - 是否涉及资料修改,如是,在docs仓库补充资料
是, https://gitee.com/opengauss/docs/pulls/5708/ - 是否考虑支撑升级和在线扩容等扩展场景
不涉及 - 是否考虑异常场景/并发场景/前向兼容/性能场景
不涉及 - 是否对其他模块产生影响
不涉及
【其他说明】:
contrib/dolphin/plugin_vector/vecprimitive/varchar.inl 文件是对比server代码时发现的差异,顺便同步下server的代码,对本PR无实际影响