2012-07-06 7 views
7

मैं इस पाया शामिल हों से Oracle 11g रिलीज़ 1 उन्नयन 2.ओरेकल 11g रिलीज़ 1 बनाम 2 - वाम बाहरी के विभिन्न व्यवहार

सबसे अच्छा रिलीज करने के बाद मैं इसे संक्षेप में प्रस्तुत कर सकते हैं अभी है कि किसी क्वेरी के एक LEFT OUTER JOIN निरंतर "नकली" कॉलम और WHERE क्लॉज के साथ दो ओरेकल रिलीज में अलग-अलग परिणाम उत्पन्न होते हैं। रिलीज 2 में, "फर्जी" कॉलम बेजोड़ पंक्तियों में दिखाई देता है:

TEST1  TEST2 
=====  ===== 
A B  A B 
- ---  - --- 
1 bar  1 hello 
2 baz 

> SELECT * FROM test1 LEFT OUTER JOIN test2 ON test1.a = test2.a; 
    A B A_1 B_1 
    - --- --- ----- 
    1 bar 1 hello 
    2 baz 

अभी तक, बहुत अच्छा है। उपरोक्त सभी रिले पर समान काम करता है। 1 और 2 अब, एक 'झूठे' निरंतर स्तंभ एक्स जोड़ने के लिए, और चीजों को अपेक्षा के अनुरूप काम:

> SELECT * 
    FROM test1 
    LEFT OUTER JOIN (SELECT test2.*, 'X' AS X 
         FROM test2) test3 
     ON test1.a = test3.a; 

    A B A_1 B_1 X 
    - --- --- ----- - 
    1 bar 1 hello X 
    2 baz 

अब, पहले मेज पर एक WHERE खंड जोड़ने और अलग परिणाम:

> SELECT * 
    FROM test1 
    LEFT OUTER JOIN (SELECT test2.*, 'X' AS X 
         FROM test2) test3 
     ON test1.a = test3.a 
    WHERE test1.b LIKE 'ba%'; 

    Release 11.1.0.7.0  Release 11.2.0.2.0  
    ==================  ================== 
    A B A_1 B_1 X   A B A_1 B_1 X 
    - --- --- ----- -   - --- --- ----- - 
    1 bar 1 hello X   1 bar 1 hello X 
    2 baz      2 baz   X <--- WHAT'S THIS?! 

इसके अलावा यह उलझन: यदि कहां हालत संख्यात्मक है (जैसे, WHERE test1.a < 5, परिणाम एक ही हैं

अद्यतन (मेरे वास्तविक प्रश्न को स्पष्ट करने के लिए): मैं क्या गलत कर रहा हूँ? क्या मेरी अंतिम क्वेरी किसी भी तरह से एक अपरिभाषित व्यवहार का आह्वान कर रही है जिससे ओरेकल के लिए एक रिलीज से अगले में वापस लौटने के लिए यह ठीक हो गया है? यदि नहीं, तो यह एक ओरेकल बग है?

+0

यदि यह एक प्रश्न है, तो यह वास्तव में स्पष्ट नहीं है। –

+0

@dystroy, मैंने अपना प्रश्न स्पष्ट करने की कोशिश कर एक अद्यतन जोड़ा है। – Arkady

+0

विस्तार का यह स्तर डीबीए स्टैक एक्सचेंज के लिए बेहतर अनुकूल हो सकता है। –

उत्तर

0

तो मैं अपने स्वयं के प्रश्न का उत्तर देने जा रहा हूं, अर्थात्: "क्या मैं कुछ गलत कर रहा हूं या यह ओरेकल बग है?" के साथ यह एक ओरेकल बग है।

मैं के रूप में @AdamHawkes से कहा आप पर निर्भर इसे छोड़ पागलपन support.oracle.com रूप में जाना जाता नेविगेट करने के लिए है, लेकिन, इस बग शायद हाल ही में एक Oracle पैच सेट में संबोधित है। 11.2.0.3 को रिलीज नोट्स में कुछ बग्स मेरी समस्या के समान प्रतीत होते हैं, हालांकि बिल्कुल वही नहीं।

मैं यहां वापस आने की कोशिश करूंगा और जब मुझे नवीनतम पैच लागू होते हैं तो जवाब अपडेट करें (मैं ऐसे माहौल में हूं जहां मैं इस पर नियंत्रण नहीं कर रहा हूं)।

0

बस अन्य पाठकों के लिए कुछ संबंधित पोस्ट में जोड़ने ..

https://forums.oracle.com/forums/thread.jspa?threadID=1113096

Strange behaviour of full outer join in Oracle - how it could be explained?

मुख्य रूप से सत्र विशिष्ट अनुकूलन बंद करने के लिए फेरबदल सुझाव देता है। सत्र सेट "_optimizer_join_elimination_enabled" = झूठी; सत्र सेट "_optimizer_native_full_outer_join" = बंद;

मैं उनके बजाय स्वचालित परीक्षण करता था जो सरल चीजों को साबित करता था और इन बग को पहले स्थान पर नहीं पेश करता था।

संबंधित मुद्दे