[ 
https://issues.apache.org/jira/browse/DERBY-2218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12463693
 ] 

Yip Ng commented on DERBY-2218:
-------------------------------

Attaching patch derby2218-trunk-diff02.txt to resolve the EXISTS subquery issue 
also.  It turns out that the EXISTS subquery will get transform from:  

... EXISTS (SELECT * FROM t1 ...)

to

... EXISTS (SELECT TRUE FROM t1...)

So prior this transformation, the bind phase in Subquery node need to check for 
untyped NULL and throw the appropriate exception.

derbyall + junit suite passes.



> Null Pointer Exception when an IN list contains an untyped NULL subquery 
> ("values null").
> -----------------------------------------------------------------------------------------
>
>                 Key: DERBY-2218
>                 URL: https://issues.apache.org/jira/browse/DERBY-2218
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.1.3.2, 10.2.2.1, 10.2.3.0, 10.3.0.0
>            Reporter: A B
>         Assigned To: Yip Ng
>            Priority: Minor
>         Attachments: derby2218-trunk-diff01.txt, derby2218-trunk-diff02.txt, 
> derby2218-trunk-stat01.txt, derby2218-trunk-stat02.txt
>
>
> If a query specifies an IN list that contains a subquery which returns an 
> untyped NULL value, Derby will throw an NPE at bind time.
> ij> create table t1 (i int);
> 0 rows inserted/updated/deleted
> ij> select * from t1 where i in (1, 2, (values null));
> ERROR XJ001: Java exception: ': java.lang.NullPointerException'.
> I verified the error against the latest 10.2 and 10.3 trunks; it could very 
> well exist in earlier versions, too, but I haven't checked.
> Stack trace (from 10.2.2) is:
> java.lang.NullPointerException
>       at 
> org.apache.derby.impl.sql.compile.SubqueryNode.setDataTypeServices(SubqueryNode.java:2289)
>       at 
> org.apache.derby.impl.sql.compile.SubqueryNode.bindExpression(SubqueryNode.java:529)
>       at 
> org.apache.derby.impl.sql.compile.ValueNodeList.bindExpression(ValueNodeList.java:130)
>       at 
> org.apache.derby.impl.sql.compile.BinaryListOperatorNode.bindExpression(BinaryListOperatorNode.java:161)
>       at 
> org.apache.derby.impl.sql.compile.SelectNode.bindExpressions(SelectNode.java:540)
>       at 
> org.apache.derby.impl.sql.compile.DMLStatementNode.bindExpressions(DMLStatementNode.java:249)
>       at 
> org.apache.derby.impl.sql.compile.DMLStatementNode.bind(DMLStatementNode.java:162)
>       at 
> org.apache.derby.impl.sql.compile.CursorNode.bind(CursorNode.java:253)
>       at 
> org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:345)
>       at 
> org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:119)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to