Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Common Subquery Elimination in 8.1.7 causes incorrect

Re: Common Subquery Elimination in 8.1.7 causes incorrect

From: Larry Strickland <stricklandl_at_voyager.spjc.cc.fl.us>
Date: Fri, 06 Apr 2001 04:17:50 -0700
Message-ID: <F001.002E3C98.20010406041622@fatcity.com>

Bruce,

Here's the quote from MetaLink:

"this is bug 1651014 and is fixed in 9i. the workaround is to set optimizer_features_enabled=8.1.6."

They were less than forthcoming on any other known bugs in 8.1.7... probably not to anyone's surprise.

larry

Reardon, Bruce (CALBBAY) wrote:

> Larry,
> 
> Thanks for the information.
> Do you have a bug number reference for the other problem you mention?
> 
> Thanks,
> Bruce
> 
> -----Original Message-----
> Sent: Friday, 6 April 2001 14:45
> 
> I would strongly suggest the:
> 
> optimizer_features_enable = 8.1.6
> 
> because it also cures another problem with 8.1.7 wherein a complex query 
> with multiple OR and AND conditions will return the wrong number of rows if 
> you are using CBO (and/or any statistics are on the resultant table).
> 
> larry
> 
> At 07:55 PM 4/5/2001 -0800, you wrote:
> 

>> Hi,
>>
>> There is a note on Metalink (137430.1 reproduced below) describing a
> 
> generic
> 

>> 817 optimiser problem that will result in incorrect results when using
>> certain query types.
>>
>> We are currently running 81511 on NT but testing an upgrade to 81711 on NT
>> at the moment.
>>
>> The note suggests 2 workarounds, and my question to others is
>>
>> Should we set "optimizer_features_enable = 8.1.6"
>> -or-
>> should we set "_eliminate_common_subexpr = false"
>>
>> Which method does the list suggest, and what are the implications of each?
>>
>> Thanks,
>> Bruce Reardon
>> mailto:bruce.reardon_at_comalco.riotinto.com.au
>>
>>
>>
>> Doc ID: Note:137430.1
>> results
>> Type: ALERT
>> Status: PUBLISHED
>> Content Type: TEXT/PLAIN
>> Creation Date: 23-MAR-2001
>> Last Revision Date: 28-MAR-2001
>>
>>
>> Common Subquery Elimination in 8.1.7 causes incorrect results
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> Versions Affected
>> ~~~~~~~~~~~~~~~~~
>> Oracle Server releases 8.1.7.0 and 8.1.7.1
>>
>> Fixed in 8.1.7.2 and 9.0.0.0
>>
>> Platforms Affected
>> ~~~~~~~~~~~~~~~~~~
>> GENERIC
>>
>> Description
>> ~~~~~~~~~~~
>> The bug is that rows may be returned when none are expected with the
> 
> query
> 

>> below.
>> Other queries may return more or less rows than expected depending on
> 
> the
> 

>> predicates used.
>>
>>
>> select * from tab1
>> where (tab1.col1 = 1 and exists (select * from tab2))
>> or (tab1.col1 = 2 and exists (select * from tab3))"
>>
>>
>> There are several variations on this.
>> Eg:
>> select /*+ ALL_ROWS */ * from tab1
>> where (tab1.col1 = 1 and col1 in (select col1 from tab2))
>> or (tab1.col1 = 2 and col1 in (select col1 from tab3))
>> ;
>>
>>
>>
>>
>> Note: The use of the two parts of the WHERE clause separated by an OR
>> operator,
>> each clause containing a non-correlated subquery.
>>
>>
>> The problem is that common subquery elimination treats un-correlated
>> subqueries
>> as identical even when they are not.
>>
>>
>>
>> Likelihood of Occurrence
>> ~~~~~~~~~~~~~~~~~~~~~~~~
>>
>> Any time the above construct is used.
>> This construct is common in queries used by some third party
> 
> applications
> 

>> including
>> People Soft.
>>
>> This problem only occurs on database versions 8.1.7.0 and 8.1.7.1.
>> Earlier versions are not affected.
>>
>>
>> Possible Symptoms
>> ~~~~~~~~~~~~~~~~~
>> No error is raised.
>> Unless the user is aware of incorrect results the problem will be
>> undetected.
>>
>>
>>
>>
>> Workaround
>> ~~~~~~~~~~
>> As the problem is caused by a new optimizer feature introduced in 8.1.7,
>> the workaround is to set a parameter in the init<SID>.ora to disable the
>> feature.
>>
>>
>> Either set:
>>
>>
>> "optimizer_features_enable = 8.1.6"
>> -or-
>> "_eliminate_common_subexpr = false"
>>
>>
>> Patches
>> ~~~~~~~
>> This is expected to be fixed in the 8.1.7.2 Patch Set.
>> The problem is fixed in Oracle9i.
>> No single one off patches are currently available.
>>
>>
>>
>>
>> References
>> ~~~~~~~~~~
>> QUERY RETURNING ROWS IN 8.1.7 WHEN NO ROWS EXPECTED [BUG:1578644]
>
-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: Larry Strickland
  INET: stricklandl_at_voyager.spjc.cc.fl.us

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
Received on Fri Apr 06 2001 - 06:17:50 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US