当前位置: 首页 > news >正文

达梦 两个bug json 导致数据库crash 和 优化器解析or 导致结果不一样

##sample1   

无法解析 json 数据库直接crash. 分析函数,定位到BUG

升级数据库软件,问题得到规避 

 

 

########sample 2  优化器解析or 导致结果不一样

 

--测试1 原有的查询顺序,查到空行。

SQL> SELECT coltablename,DONO,colupdateable,colupdateable

  FROM SEBMDEV.DATAOBJECT_LIBRARY

  WHERE DONO = 'addRoleTaskList'

  AND (colupdateable is null or coltablename is null)   

   AND (colupdateable is null or colupdateable = '1');

no rows

 

used time: 1.484(ms). Execute id is 632801.

SQL> set autotrace on

SQL> SELECT coltablename,DONO,colupdateable,colupdateable

2  FROM SEBMDEV.DATAOBJECT_LIBRARY

3  WHERE DONO = 'addRoleTaskList'

4  AND (colupdateable is null or coltablename is null)   

5   AND (colupdateable is null or colupdateable = '1');

 

0  | CSCN2 | DATAOBJECT_LIBRARY | INDEX33555513 | 1

 

used time: 1.306(ms). Execute id is 0.

 

 

--测试2 SQL2 调整了 and 执行顺序,可以查到5条记录,开发想知道差异在哪里

 

try 。可以临时规避,看起来跟连接先后顺序有关:

SELECT coltablename,DONO,colupdateable,colupdateable

FROM SEBMDEV.DATAOBJECT_LIBRARY

WHERE DONO = 'addRoleTaskList'

 AND (colupdateable is null or colupdateable = '1')  <-

AND (colupdateable is null or coltablename is null)   <-

;

SQL> SELECT coltablename,DONO,colupdateable,colupdateable

  FROM SEBMDEV.DATAOBJECT_LIBRARY

  WHERE DONO = 'addRoleTaskList'

   AND (colupdateable is null or colupdateable = '1')

  AND (colupdateable is null or coltablename is null)

  ;

 

0  | CSCN2 | DATAOBJECT_LIBRARY | INDEX33555513 | 1

 

used time: 1.255(ms). Execute id is 0.

 

 

SQL> set autotrace off

SQL> SELECT coltablename,DONO,colupdateable,colupdateable

2   FROM SEBMDEV.DATAOBJECT_LIBRARY

3    WHERE DONO = 'addRoleTaskList'

4     AND (colupdateable is null or colupdateable = '1')

5    AND (colupdateable is null or coltablename is null)

6  ;

 

LINEID   COLTABLENAME DONO      COLUPDATEABLE COLUPDATEABLE

---------- ------------ --------------- ------------- -------------

1     r      addRoleTaskList NULL     NULL

2     r      addRoleTaskList NULL     NULL

3     r      addRoleTaskList NULL     NULL

4     r      addRoleTaskList NULL     NULL

5     p      addRoleTaskList NULL     NULL

 

used time: 1.443(ms). Execute id is 632804.

 

 

 

官方回复:

应该是已知问题,调整下OPTIMIZER_OR_NBEXP,不要包含16就行

OPTIMIZER_OR_NBEXP

 

 

select name,value,sys_value,file_value,type,description from v$parameter 

where name='OPTIMIZER_OR_NBEXP';

NAME VALUE SYS_VALUE FILE_VALUE TYPE DESCRIPTION

0 OPTIMIZER_OR_NBEXP 29 29 29 SESSION Flag of or-expression optimization method

 

 

SP_SET_PARA_VALUE(1,'OPTIMIZER_OR_NBEXP',13);

 

 

达梦厂家分析后如下:此问题为已知的BUG问题,

 

 参数OPTIMIZER_OR_NBEXP包含16时,在生成计划上出现逻辑错误导致结果集错误

 

--OPTIMIZER_OR_NBEXP参数值中不包含16时,能正常返回结果集

 

目前达梦方已修改代码。除了外层判断,内层优化时也需要判断,屏蔽不可优化的nbexp。##可以修改参数OPTIMIZER_OR_NBEXP 不包含16可规避此问题##

 

后续达梦已在25年版本上已修复此BUG。

 

 
http://www.hskmm.com/?act=detail&tid=9381

相关文章:

  • MySQL迁移至GreatSQL后,timestamp字段插入报错解析
  • 2025年文件摆渡系统哪个品牌好推荐
  • Python中使用列表、map和filter函数配合lambda表达式来操作集合
  • 大模型decoder中权重矩阵的理解 - 实践
  • 文件安全外发平台用哪个,最佳选择是什么?
  • 【初赛】数 - Slayer
  • http连接(webFlux vs tomcat)
  • 英语_阅读_Generative AI_待读
  • P8500 [NOI2022] 冒泡排序 题解
  • 【初赛】链表 - Slayer
  • 纷享销客CRM系统自定义APL代码破解企业深度定制难题
  • 第2章 zynq开发板FSBL的生成和NAND烧录
  • 工具大全
  • RocketMQ vs kafka
  • JL-32 土壤速测仪 手持便携 大容量 多参数可同时监测
  • 直播录制神器!一款多平台直播流自动录制客户端!
  • 101.计组--二章
  • LobeChat搭建
  • 推荐几家国外的AI模型应用网站
  • 长园智能装备遇上利驰SuperHarness-3D,实现充电桩线束设计效率与精度双提升!
  • 学习笔记:操作分块 / 根号重构
  • url测试脚本2
  • 运动控制教学——5分钟学会机器人运动学! - 实践
  • url测试脚本3
  • 深入解析:linux基本知识
  • 解决方案架构师是做什么
  • 鸿蒙应用开发从入门到实战(九):ArkTS渲染控制
  • C# 2025年6-9月TIOBE排名增长及未来展望
  • 一个基于 .NET 开源、简易、轻量级的进销存管理系统
  • 采用tree命令导出文件夹/文件的目录树(linux)