当前位置: 首页 > 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.gsyq.cn/news/7822.html

相关文章:

  • 2025年文件摆渡系统哪个品牌好推荐
  • DevExpress WPF中文教程:DataGrid - 服务器数据和大型数据源
  • http连接(webFlux vs tomcat)
  • 英语_阅读_Generative AI_待读
  • 深入解析:Kafa面试经典题--Kafka为什么吞吐量大,速度快
  • JL-32 土壤速测仪 手持便携 大容量 多参数可同时监测
  • 推荐几家国外的AI模型应用网站
  • 长园智能装备遇上利驰SuperHarness-3D,实现充电桩线束设计效率与精度双提升!
  • 学习笔记:操作分块 / 根号重构
  • url测试脚本3
  • 解决方案架构师是做什么
  • Java 接口详解
  • The 2024 ICPC Asia East Continent Online Contest (I) 4/12 A/F/G/M
  • Python上课
  • 深入解析:SSH带外管理
  • Windows 系统部署 Mosquitto MQTT broker 完整指南
  • [Linux] shell脚本 - 实践
  • 2025年- H146-Lc459. 重复的子字符串(字符串)--Java版 - 实践
  • mssql创建字段依赖
  • SVG动画优化全攻略:从设计到性能提升
  • MX 练石 2026 NOIP #7
  • 多元积性函数
  • OpenCvSharp基于颜色反差规避FBA面单贴标
  • Torrent File Editor 1.0.0
  • US$49 Multi-languages Smart Zed-Bull With Mini Type No Tokens Needed
  • AI CodeReview + Devops协同
  • 【API接口】最新可用IP地址查询接口
  • 磁盘分析工具推荐(Wiztree)
  • Markbook Day03
  • 数组,java学习第五天