How to inhibit that subquery merging behavior

  • From: Jonathan Gennick <jonathan@xxxxxxxxxxx>
  • To: Wolfgang Breitling <oracle-l@xxxxxxxxxxxxx>
  • Date: Fri, 16 Jul 2004 20:59:44 -0400

Wolfgang,

I can reproduce the error:

SQL> SELECT *
  2  FROM ( SELECT flag, TO_NUMBER(num) num
  3         FROM subtest
  4         WHERE flag IN ('A', 'C') )
  5  WHERE num > 0;
ERROR:
ORA-01722: invalid number

However, I can't find a hint that will prevent the merging
of the subquery. I've tried Tanel's suggestions:

SQL> SELECT /*+ NO_MERGE(sub) NO_PUSH_PRED(sub) PUSH_SUBQ(sub) */ *
  2  FROM ( SELECT flag, TO_NUMBER(num) num
  3         FROM subtest
  4         WHERE flag IN ('A', 'C') ) sub
  5  WHERE num > 0;
ERROR:
ORA-01722: invalid number

I've also tried putting the hints into the subquery:

SQL> SELECT *
  2  FROM ( SELECT /*+ NO_MERGE NO_PUSH_PRED PUSH_SUBQ */
  3            flag, TO_NUMBER(num) num
  4         FROM subtest
  5         WHERE flag IN ('A', 'C') ) sub
  6  WHERE num > 0;
ERROR:
ORA-01722: invalid number

Is there a hint that will prevent the queries from being
merged?

Best regards,

Jonathan Gennick --- Brighten the corner where you are
http://Gennick.com * 906.387.1698 * mailto:jonathan@xxxxxxxxxxx

Join the Oracle-article list and receive one
article on Oracle technologies per month by 
email. To join, visit http://five.pairlist.net/mailman/listinfo/oracle-article, 
or send email to Oracle-article-request@xxxxxxxxxxx and 
include the word "subscribe" in either the subject or body.

----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to:  oracle-l-request@xxxxxxxxxxxxx
put 'unsubscribe' in the subject line.
--
Archives are at //www.freelists.org/archives/oracle-l/
FAQ is at //www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------

Other related posts: