मैं इस पाया शामिल हों से 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
, परिणाम एक ही हैं
अद्यतन (मेरे वास्तविक प्रश्न को स्पष्ट करने के लिए): मैं क्या गलत कर रहा हूँ? क्या मेरी अंतिम क्वेरी किसी भी तरह से एक अपरिभाषित व्यवहार का आह्वान कर रही है जिससे ओरेकल के लिए एक रिलीज से अगले में वापस लौटने के लिए यह ठीक हो गया है? यदि नहीं, तो यह एक ओरेकल बग है?
यदि यह एक प्रश्न है, तो यह वास्तव में स्पष्ट नहीं है। –
@dystroy, मैंने अपना प्रश्न स्पष्ट करने की कोशिश कर एक अद्यतन जोड़ा है। – Arkady
विस्तार का यह स्तर डीबीए स्टैक एक्सचेंज के लिए बेहतर अनुकूल हो सकता है। –