ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Bug7374278的解决方案

Bug7374278的解决方案

原创 Linux操作系统 作者:驻跸映辉A 时间:2012-04-20 23:02:01 0 删除 编辑
[i=s] 本帖最后由 驻跸映辉A 于 2011-12-22 14:39 编辑

在一个SQL的检索言文中的where中含有多个空格如下面的例子:DBracle 10.2.0.4


A.)测试环境:   
create table tbl01 (col1 char(9),col2 char(9),col3 char(9));   
insert into tbl01 values ('1234567','abc','a');     
insert into tbl01 values ('2345','aaa','b');     
insert into tbl01 values ('345678910','abcdefghi','cde');     
create table tbl02 as select * from tbl01;   
B.) SELECT tbl01.col1, tbl01.col2, aaa.col3 FROM tbl01        
    ,(SELECT
               substr(col1||'      ',0,9) col1,
              col2,           
       col3         
    FROM tbl02
           UNION ALL
        SELECT * from tbl01) aaa
          WHERE tbl01.col1 = '1234567'
          and tbl01.col1 = aaa.col1;   
C.) 结果0行返回(结果错误)
        正确结果:
        COL1     COL2 COL3
        -------- ----  ----
       1234567  abc  a
        1234567  abc  a
 解决方法:
  SQL> alter session/system set "_optimizer_cost_based_transformation"=off;  
  SQL> alter session/system set "_optimizer_push_pred_cost_based"=false;  
  SQL> alter session/system set "_optimizer_enhanced_filter_push"=false; 
 或者升级到10.2.0.5

原因:Bug7374278以前已经修正,但PSR10.2.0.4的regression机能导入后,这个错误再次发生。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26552866/viewspace-721854/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-04-07

  • 博文量
    12
  • 访问量
    17711