[ 
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.

Reply via email to