Oracle 也不是绝对完美

在Oracle 11.2版本中,用户发现了一个关于NAAJ(Nested Aggregate Anti Join)算法的正确性bug,该问题可能导致查询结果不正确。虽然官方网址列出了已知的Oracle正确性bug,但未明确说明最新版本是否已修复此特定问题。此案例涉及创建和插入数据到FF1和FF2两个表,然后执行了一个可能存在错误的查询。
摘要由CSDN通过智能技术生成

用下面的 case 在 Oracle 11.2 上执行,发现 Oracle 实现的 NAAJ 算法有正确性 bug。不知最新版本修复了没有?

CREATE TABLE FF1 (A1 INT, B1 INT);
CREATE TABLE FF2 (A2 INT, B2 INT);

INSERT INTO FF1 SELECT LEVEL,LEVEL FROM DUAL CONNECT BY LEVEL <= 10;
INSERT INTO FF2 SELECT LEVEL,LEVEL FROM DUAL CONNECT BY LEVEL <= 66;

INSERT INTO FF2 SELECT 1,1 FROM DUAL CONNECT BY LEVEL <= 10;
INSERT INTO FF2 SELECT 2,2 FROM DUAL CONNECT BY LEVEL <= 10;

SELECT /*+ monitor*/ COUNT(*) FROM FF2 WHERE B2 NOT IN (SELECT  L.A1 FROM FF1 L RIGHT JOIN FF2 R ON R.A2 = L.A1 AND L.A1 IS NOT NULL );

在这里插入图片描述

尽管有错,但 Oracle 有一点做得特别好:

这个网址里列出了所有已知的 Oracle 正确性 bug:https://oracleblog.org/working-case/bug-issues-known-to-cause-wrong-results/
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值