[
https://issues.apache.org/jira/browse/DERBY-3872?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12637586#action_12637586
]
Mamta A. Satoor commented on DERBY-3872:
----------------------------------------
Following is where we end up generating the code for HAVING clause which uses
RSN 3 for the DEPTNO column
Thread [main] (Suspended)
ColumnReference.generateExpression(ExpressionClassBuilder,
MethodBuilder) line: 920
BinaryRelationalOperatorNode.generateExpressionOperand(Optimizable,
int, ExpressionClassBuilder, MethodBuilder) line: 496
Predicate.generateExpressionOperand(Optimizable, int,
ExpressionClassBuilder, MethodBuilder) line: 670
PredicateList.generateSetColumn(ExpressionClassBuilder, MethodBuilder,
int, Predicate, Optimizable, LocalField, boolean) line: 3524
PredicateList.generateStartKey(ExpressionClassBuilderInterface,
MethodBuilder, Optimizable) line: 3348
NestedLoopJoinStrategy(BaseJoinStrategy).fillInScanArgs1(TransactionController,
MethodBuilder, Optimizable, OptimizablePredicateList,
ExpressionClassBuilderInterface, MethodBuilder) line: 109
NestedLoopJoinStrategy.getScanArgs(TransactionController,
MethodBuilder, Optimizable, OptimizablePredicateList, OptimizablePredicateList,
ExpressionClassBuilderInterface, int, MethodBuilder, int, int, int, boolean,
int, int, boolean) line: 248
FromBaseTable.getScanArguments(ExpressionClassBuilder, MethodBuilder)
line: 3448
FromBaseTable.generateResultSet(ExpressionClassBuilder, MethodBuilder)
line: 3138
FromBaseTable.generate(ActivationClassBuilder, MethodBuilder) line:
3065
IndexToBaseRowNode.generate(ActivationClassBuilder, MethodBuilder)
line: 234
ProjectRestrictNode.generateMinion(ExpressionClassBuilder,
MethodBuilder, boolean) line: 1385
ProjectRestrictNode.generate(ActivationClassBuilder, MethodBuilder)
line: 1336
ProjectRestrictNode.generateMinion(ExpressionClassBuilder,
MethodBuilder, boolean) line: 1472
ProjectRestrictNode.generate(ActivationClassBuilder, MethodBuilder)
line: 1336
SubqueryNode.generateExpression(ExpressionClassBuilder, MethodBuilder)
line: 1879
BinaryRelationalOperatorNode(BinaryOperatorNode).generateExpression(ExpressionClassBuilder,
MethodBuilder) line: 590
AndNode(BinaryLogicalOperatorNode).generateExpression(ExpressionClassBuilder,
MethodBuilder) line: 157
ProjectRestrictNode.generateMinion(ExpressionClassBuilder,
MethodBuilder, boolean) line: 1516
ProjectRestrictNode.generate(ActivationClassBuilder, MethodBuilder)
line: 1336
ScrollInsensitiveResultSetNode.generate(ActivationClassBuilder,
MethodBuilder) line: 109
CursorNode.generate(ActivationClassBuilder, MethodBuilder) line: 564
CursorNode(StatementNode).generate(ByteArray) line: 347
GenericStatement.prepMinion(LanguageConnectionContext, boolean,
Object[], SchemaDescriptor, boolean) line: 447
GenericStatement.prepare(LanguageConnectionContext, boolean) line: 88
GenericLanguageConnectionContext.prepareInternalStatement(SchemaDescriptor,
String, boolean, boolean) line: 796
EmbedStatement40(EmbedStatement).execute(String, boolean, boolean, int,
int[], String[]) line: 606
EmbedStatement40(EmbedStatement).execute(String) line: 555
ij.executeImmediate(String) line: 329
utilMain.doCatch(String) line: 508
utilMain.runScriptGuts() line: 350
utilMain.go(LocalizedInput[], LocalizedOutput, Properties) line: 248
Main.go(LocalizedInput, LocalizedOutput, Properties) line: 215
Main.mainCore(String[], Main) line: 181
Main.main(String[]) line: 73
ij.main(String[]) line: 59
> 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
> Assignee: Mamta A. Satoor
> Attachments: NPE_Reproduction.sql, QueryWithoutTruePred.out,
> QueryWithTruePred.out
>
>
> 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.