Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 78105 invoked from network); 8 Sep 2009 14:53:17 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 8 Sep 2009 14:53:17 -0000 Received: (qmail 24903 invoked by uid 500); 8 Sep 2009 14:53:17 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 24871 invoked by uid 500); 8 Sep 2009 14:53:17 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 24782 invoked by uid 99); 8 Sep 2009 14:53:16 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Sep 2009 14:53:16 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 08 Sep 2009 14:53:13 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 114092388874; Tue, 8 Sep 2009 14:52:52 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r812536 - in /db/derby/code/branches/10.5: ./ java/engine/org/apache/derby/impl/sql/compile/ java/testing/org/apache/derbyTesting/functionTests/master/ java/testing/org/apache/derbyTesting/functionTests/tests/lang/ Date: Tue, 08 Sep 2009 14:52:51 -0000 To: derby-commits@db.apache.org From: kahatlen@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090908145252.114092388874@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: kahatlen Date: Tue Sep 8 14:52:50 2009 New Revision: 812536 URL: http://svn.apache.org/viewvc?rev=812536&view=rev Log: DERBY-4284: All Columns become Nullable when Using left join Merged fix from trunk (revision 810860). Added: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/lang/JoinTest.java - copied unchanged from r810860, db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/JoinTest.java Modified: db/derby/code/branches/10.5/ (props changed) db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/FromList.java db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml148.out db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml162.out db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java Propchange: db/derby/code/branches/10.5/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Tue Sep 8 14:52:50 2009 @@ -1 +1 @@ -/db/derby/code/trunk:769596,769602,769606,769962,772090,772337,772449,772534,774281,777105,779681,782991,785131,785139,785163,785570,785662,788369,788670,788674,788968,789264,790218,792434,793089,793588,794106,794303,794955,795166,796020,796027,796316,796372,797147,798347,798742,800523,803548,803948,805696,808494,808850,809643 +/db/derby/code/trunk:769596,769602,769606,769962,772090,772337,772449,772534,774281,777105,779681,782991,785131,785139,785163,785570,785662,788369,788670,788674,788968,789264,790218,792434,793089,793588,794106,794303,794955,795166,796020,796027,796316,796372,797147,798347,798742,800523,803548,803948,805696,808494,808850,809643,810860 Modified: db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/FromList.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/FromList.java?rev=812536&r1=812535&r2=812536&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/FromList.java (original) +++ db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/FromList.java Tue Sep 8 14:52:50 2009 @@ -385,27 +385,6 @@ } /** - * Returns true if any Outer joins present. Used to set Nullability - * - * @return True if has any outer joins. False otherwise. - */ - public boolean hasOuterJoins() - throws StandardException - { - FromTable fromTable; - - int size = size(); - for (int index = 0; index < size; index++) - { - fromTable = (FromTable) elementAt(index); - if (fromTable instanceof HalfOuterJoinNode) - return true; - } - - return false; - } - - /** * Expand a "*" into the appropriate ResultColumnList. If the "*" * is unqualified it will expand into a list of all columns in all * of the base tables in the from list at the current nesting level; Modified: db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java?rev=812536&r1=812535&r2=812536&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java (original) +++ db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/JoinNode.java Tue Sep 8 14:52:50 2009 @@ -572,6 +572,17 @@ throw StandardException.newException(SQLState.LANG_AMBIGUOUS_COLUMN_NAME, columnReference.getSQLColumnName()); } + + // All columns on the logical right side of a "half" outer join + // can contain nulls. The correct nullability is set by + // bindResultColumns()/buildRCL(). However, if bindResultColumns() + // has not been called yet, the caller of this method will see + // the wrong nullability. This problem is logged as DERBY-2916. + // Until that's fixed, set the nullability here too. + if (this instanceof HalfOuterJoinNode) { + rightRC.setNullability(true); + } + resultColumn = rightRC; } Modified: db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java?rev=812536&r1=812535&r2=812536&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java (original) +++ db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/compile/SelectNode.java Tue Sep 8 14:52:50 2009 @@ -635,10 +635,6 @@ { throw StandardException.newException(SQLState.LANG_TOO_MANY_ELEMENTS); } - - /* Fix nullability in case of any outer joins in the fromList */ - if (fromList.hasOuterJoins()) - resultColumns.setNullability(true); } /** Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml148.out URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml148.out?rev=812536&r1=812535&r2=812536&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml148.out (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml148.out Tue Sep 8 14:52:50 2009 @@ -162,13 +162,13 @@ FROM SEVEN_TYPES right outer JOIN HU.STAFF ON GRADE IN (10, 11, 13) AND EMPNUM = T_CHAR ORDER BY EMPNAME, T_INT; -T_INT |T_CHAR |EMPNAME |EMP&|GRADE ------------------------------------------------------- -NULL |NULL |Alice |E1 |12 -2 |E2 |Betty |E2 |10 -NULL |NULL |Carmen |E3 |13 -NULL |NULL |Don |E4 |12 -NULL |NULL |Ed |E5 |13 +T_INT |T_CHAR |EMPNAME |EM&|GRADE +----------------------------------------------------- +NULL |NULL |Alice |E1 |12 +2 |E2 |Betty |E2 |10 +NULL |NULL |Carmen |E3 |13 +NULL |NULL |Don |E4 |12 +NULL |NULL |Ed |E5 |13 ij> -- PASS:0844 If 5 rows selected with ordered rows and column values ? -- PASS:0844 NULL NULL Alice E1 12 ? -- PASS:0844 2 E2 Betty E2 10 ? Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml162.out URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml162.out?rev=812536&r1=812535&r2=812536&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml162.out (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/dml162.out Tue Sep 8 14:52:50 2009 @@ -45,21 +45,21 @@ SELECT * FROM HU.STAFF LEFT OUTER JOIN HU.WORKS ON (HU.STAFF.EMPNUM=HU.WORKS.EMPNUM); -EMP&|EMPNAME |GRADE|CITY |EMP&|PNUM|HOURS ----------------------------------------------------------------- -E1 |Alice |12 |Deale |E1 |P1 |40 -E1 |Alice |12 |Deale |E1 |P2 |20 -E1 |Alice |12 |Deale |E1 |P3 |80 -E1 |Alice |12 |Deale |E1 |P4 |20 -E1 |Alice |12 |Deale |E1 |P5 |12 -E1 |Alice |12 |Deale |E1 |P6 |12 -E2 |Betty |10 |Vienna |E2 |P1 |40 -E2 |Betty |10 |Vienna |E2 |P2 |80 -E3 |Carmen |13 |Vienna |E3 |P2 |20 -E4 |Don |12 |Deale |E4 |P2 |20 -E4 |Don |12 |Deale |E4 |P4 |40 -E4 |Don |12 |Deale |E4 |P5 |80 -E5 |Ed |13 |Akron |NULL|NULL|NULL +EM&|EMPNAME |GRADE|CITY |EMP&|PNUM|HOURS +--------------------------------------------------------------- +E1 |Alice |12 |Deale |E1 |P1 |40 +E1 |Alice |12 |Deale |E1 |P2 |20 +E1 |Alice |12 |Deale |E1 |P3 |80 +E1 |Alice |12 |Deale |E1 |P4 |20 +E1 |Alice |12 |Deale |E1 |P5 |12 +E1 |Alice |12 |Deale |E1 |P6 |12 +E2 |Betty |10 |Vienna |E2 |P1 |40 +E2 |Betty |10 |Vienna |E2 |P2 |80 +E3 |Carmen |13 |Vienna |E3 |P2 |20 +E4 |Don |12 |Deale |E4 |P2 |20 +E4 |Don |12 |Deale |E4 |P4 |40 +E4 |Don |12 |Deale |E4 |P5 |80 +E5 |Ed |13 |Akron |NULL|NULL|NULL ij> -- PASS:0863 If 13 rows are returned? COMMIT WORK; Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out?rev=812536&r1=812535&r2=812536&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/outerjoin.out Tue Sep 8 14:52:50 2009 @@ -136,13 +136,13 @@ NULL NULL ij> select a.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1; -1 |2 ---------- -a |b +1|2 +--- +a|b ij> select b.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1; -1 |2 ---------- -c |d +1|2 +--- +c|d ij> select c.* from ((values ('a', 'b')) a inner join (values ('c', 'd')) b on 1=1) left outer join (values ('e', 'f')) c on 1=1; 1 |2 --------- Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out?rev=812536&r1=812535&r2=812536&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/master/wisconsin.out Tue Sep 8 14:52:50 2009 @@ -28980,11 +28980,9 @@ start position: >= on first 1 column(s). Ordered null semantics on the following columns: -0 stop position: > on first 1 column(s). Ordered null semantics on the following columns: -0 qualifiers: None Right result set: Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java?rev=812536&r1=812535&r2=812536&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java Tue Sep 8 14:52:50 2009 @@ -69,6 +69,7 @@ suite.addTest(GrantRevokeTest.suite()); suite.addTest(GroupByExpressionTest.suite()); suite.addTest(InsertTest.suite()); + suite.addTest(JoinTest.suite()); suite.addTest(LangScripts.suite()); suite.addTest(MathTrigFunctionsTest.suite()); suite.addTest(PrepareExecuteDDL.suite());