[ https://issues.apache.org/jira/browse/DERBY-3872?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12629906#action_12629906 ]
Kathey Marsden commented on DERBY-3872: --------------------------------------- The stack trace changed with r662947 | bpendleton | 2008-06-03 19:44:17 -0700 (Tue, 03 Jun 2008) | 4 lines DERBY-3097: Remove unnecessary if stmt from BaseActivation.getColumnFromRow This change removes an unnecessary if statement from BaseActivation.java. My first take is that there is not a problem with removing the if statement, just that it moved the NPE to a different place. > NullPoinerException thrown when INTEGER function used as a predicate in a > WHERE clause of a SELECT .. GROUP BY .. HAVING statement > ----------------------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-3872 > URL: https://issues.apache.org/jira/browse/DERBY-3872 > Project: Derby > Issue Type: Bug > Affects Versions: 10.3.3.0 > Reporter: Stan Bradbury > Attachments: NPE_Reproduction.sql > > > Use attached SQL script to create two tables , execute the following SQL and > throw the exception and stack trace below. NOTE: removing the 'always true' > clause '.. ( integer (1.1) = 1) .." from the SQL and the query does not fail. > Releated?? > select q1."DEPTNO" from DEPTTAB q1, EMPTAB q2 where ( integer (1.1) = 1) > and ( q2."DEPT_DEPTNO" = q1."DEPTNO") > GROUP BY q1."DEPTNO" > HAVING max( q2."SALARY") >= ( select q3."SALARY" from EMPTAB q3 where ( > q3."EMPID" = q1."DEPTNO") ) > ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while > evaluating an expression. > . . .derby.iapi.error.StandardException.newException > . . .derby.iapi.error.StandardException.unexpectedUserException > . . .derby.impl.services.reflect.DirectCall.invoke > . . .derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore > . . .derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow > . . .derby.impl.jdbc.EmbedResultSet.movePosition > . . .derby.impl.jdbc.EmbedResultSet.next > . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults > . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults > . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults > . . .derby.tools.JDBCDisplayUtil.DisplayResults > . . .derby.impl.tools.ij.utilMain.displayResult > . . .derby.impl.tools.ij.utilMain.doCatch > . . .derby.impl.tools.ij.utilMain.runScriptGuts > . . .derby.impl.tools.ij.utilMain.go > . . .derby.impl.tools.ij.Main.go > . . .derby.impl.tools.ij.Main.mainCore > . . .derby.impl.tools.ij.Main14.main > . . .derby.tools.ij.main > Caused by: java.lang.NullPointerException > . . .derby.iapi.types.NumberDataType.compare > . . .derby.impl.store.access.btree.ControlRow.compareIndexRowFromPageToKey > . . .derby.impl.store.access.btree.ControlRow.searchForEntry > . . .derby.impl.store.access.btree.LeafControlRow.search > . . .derby.impl.store.access.btree.BTreeScan.positionAtStartForForwardScan > . . .derby.impl.store.access.btree.BTreeForwardScan.positionAtStartPosition > . . .derby.impl.store.access.btree.BTreeForwardScan.fetchRows > . . .derby.impl.store.access.btree.BTreeScan.fetchNext > . . .derby.impl.sql.execute.TableScanResultSet.getNextRowCore > . . .derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore > . . .derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore > . . .derby.impl.sql.execute.OnceResultSet.getNextRowCore > . . .derby.exe.ac601a400fx011cx480cx5eacx00000010d8100.g0 > . . .derby.exe.ac601a400fx011cx480cx5eacx00000010d8100.e6 > ... 17 more > ============= begin nested exception, level (1) =========== > java.lang.NullPointerException > . . .derby.iapi.types.NumberDataType.compare > . . .derby.impl.store.access.btree.ControlRow.compareIndexRowFromPageToKey > . . .derby.impl.store.access.btree.ControlRow.searchForEntry > . . .derby.impl.store.access.btree.LeafControlRow.search > . . .derby.impl.store.access.btree.BTreeScan.positionAtStartForForwardScan > . . .derby.impl.store.access.btree.BTreeForwardScan.positionAtStartPosition > . . .derby.impl.store.access.btree.BTreeForwardScan.fetchRows > . . .derby.impl.store.access.btree.BTreeScan.fetchNext > . . .derby.impl.sql.execute.TableScanResultSet.getNextRowCore > . . .derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore > . . .derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore > . . .derby.impl.sql.execute.OnceResultSet.getNextRowCore > . . .derby.exe.ac601a400fx011cx480cx5eacx00000010d8100.g0 > . . .derby.exe.ac601a400fx011cx480cx5eacx00000010d8100.e6 > . . .derby.impl.services.reflect.DirectCall.invoke > . . .derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore > . . .derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow > . . .derby.impl.jdbc.EmbedResultSet.movePosition > . . .derby.impl.jdbc.EmbedResultSet.next > . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults > . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults > . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults > . . .derby.tools.JDBCDisplayUtil.DisplayResults > . . .derby.impl.tools.ij.utilMain.displayResult > . . .derby.impl.tools.ij.utilMain.doCatch > . . .derby.impl.tools.ij.utilMain.runScriptGuts > . . .derby.impl.tools.ij.utilMain.go > . . .derby.impl.tools.ij.Main.go > . . .derby.impl.tools.ij.Main.mainCore > . . .derby.impl.tools.ij.Main14.main > . . .derby.tools.ij.main > ============= end nested exception, level (1) =========== > Cleanup action completed -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.