NullPointer Exception (NPE) from query with IN predicate containing two values 
and joining a view with a large table.  ERROR 38000: The exception 
'java.lang.NullPointerException' was thrown while evaluating an expression.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: DERBY-3253
                 URL: https://issues.apache.org/jira/browse/DERBY-3253
             Project: Derby
          Issue Type: Bug
    Affects Versions: 10.3.1.4, 10.4.0.0
            Reporter: Stan Bradbury


With a single value in the IN clause the query does not fail.
 > Run the following query in the attached database (v 10.3 db).  

SELECT A.TIMESTAMP, B.F_NAMEADDR, B.TOTAL_F,
B.TOTAL_FS, B.TOTAL_FT, B.TOTAL_FX
FROM  TIME A, THE_VIEW B
WHERE B.T_ID = A.T_ID AND B.F_NAMEADDR IN 
('one.two.three.oscar','one.two.three.kathy')
ORDER BY A.TIMESTAMP ASC;

> result

ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while 
evaluating an expression.
ERROR XJ001: Java exception: ': java.lang.NullPointerException'.

Stack trace:
 Failed Statement is: SELECT A.TIMESTAMP, B.F_NAMEADDR, B.TOTAL_F,
B.TOTAL_FS, B.TOTAL_FT, B.TOTAL_FX
FROM  TIME A, THE_VIEW B
WHERE B.T_ID = A.T_ID AND B.F_NAMEADDR IN 
('one.two.three.oscar','one.two.three.kathy')
ORDER BY A.TIMESTAMP ASC
ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while 
evaluating an expression.
        at org.apache.derby.iapi.error.StandardException.newException(Unknown 
Source)
        at 
org.apache.derby.iapi.error.StandardException.unexpectedUserException(Unknown 
Source)
        at org.apache.derby.impl.services.reflect.DirectCall.invoke(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown
 Source)
        at 
org.apache.derby.impl.sql.execute.NestedLoopJoinResultSet.getNextRowCore(Unknown
 Source)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown
 Source)
        at 
org.apache.derby.impl.sql.execute.SortResultSet.getRowFromResultSet(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.SortResultSet.getNextRowFromRS(Unknown Source)
        at org.apache.derby.impl.sql.execute.SortResultSet.loadSorter(Unknown 
Source)
        at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
        at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
        at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
        at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
        at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main14.main(Unknown Source)
        at org.apache.derby.tools.ij.main(Unknown Source)
Caused by: java.lang.NullPointerException
        at 
org.apache.derby.exe.ac601a400fx0116xa813xc2f7x00000010a3602.e8(Unknown Source)
        ... 21 more
============= begin nested exception, level (1) ===========
java.lang.NullPointerException
        at 
org.apache.derby.exe.ac601a400fx0116xa813xc2f7x00000010a3602.e8(Unknown Source)
        at org.apache.derby.impl.services.reflect.DirectCall.invoke(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown
 Source)
        at 
org.apache.derby.impl.sql.execute.NestedLoopJoinResultSet.getNextRowCore(Unknown
 Source)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(Unknown
 Source)
        at 
org.apache.derby.impl.sql.execute.SortResultSet.getRowFromResultSet(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.SortResultSet.getNextRowFromRS(Unknown Source)
        at org.apache.derby.impl.sql.execute.SortResultSet.loadSorter(Unknown 
Source)
        at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown 
Source)
        at 
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown Source)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
        at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
        at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
        at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
        at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
        at org.apache.derby.impl.tools.ij.Main14.main(Unknown Source)
        at org.apache.derby.tools.ij.main(Unknown Source)
============= end nested exception, level (1) ===========

Schema info:

CREATE TABLE TIME ("T_ID" BIGINT NOT NULL, "TIMESTAMP" TIMESTAMP NOT NULL, 
"DAY" INTEGER NOT NULL, "WEEK" INTEGER NOT NULL, "MONTH" INTEGER NOT NULL, 
"YEAR_COL" INTEGER NOT NULL);

CREATE TABLE F  ("F_ID" BIGINT NOT NULL, "T_ID" BIGINT NOT NULL, "F_NAMEADDR" 
VARCHAR(250) NOT NULL, "TOTAL_F" BIGINT NOT NULL, "TOTAL_FS" BIGINT NOT NULL, 
"TOTAL_FT" BIGINT NOT NULL, "TOTAL_FX" BIGINT NOT NULL);

CREATE VIEW the_view AS SELECT  T.T_ID  AS T_ID ,   T.F_NAMEADDR AS F_NAMEADDR,
 T.TOTAL_F AS TOTAL_F,  T.TOTAL_FS AS TOTAL_FS,  T.TOTAL_FT AS TOTAL_FT  , 
T.TOTAL_FX AS TOTAL_FX 
   FROM    F AS T 
    WHERE   T.T_ID = (SELECT MAX(T_ID) FROM F);


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to