db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta A. Satoor (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3872) NullPoinerException thrown when INTEGER function used as a predicate in a WHERE clause of a SELECT .. GROUP BY .. HAVING statement
Date Tue, 07 Oct 2008 18:28:44 GMT

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


Mime
View raw message