db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Manish Khettry (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-578) Grouped select from temporary table raises null pointer exception in byte code generator
Date Mon, 19 Jun 2006 22:16:31 GMT
    [ http://issues.apache.org/jira/browse/DERBY-578?page=comments#action_12416814 ] 

Manish Khettry commented on DERBY-578:
--------------------------------------

Thanks for taking time to review the fix. The xaHelper is not related to this but when I was
debugging using ij, this bit of code would always throw a NPE in the debugger. 

You are right about 2. Earlier, we would set the indexName field in DistinctScanResult to
the conglomerate name (cd.getName()) used to scan the table. If the conglomerate was the base
table itself then this was just plain wrong. The change, for this patch, passes null if no
index is being used. This in turn ended up causing all the diffs to the master files. I really
wish we had assert tests; all the test output wants to check in this case is that a distinct
scan is performed and not have all the other cruft output by runtime stats.

The change to FromBaseTable is similar to the code in BaseJoinStrategy:fillInScanArgs2. I
was tempted to try and have all the differfent code paths (DistinctScan, specialMaxScan) share
the same code when it comes to filling in the scan args but I took the easy way out for this
bug for now.





> Grouped select from temporary table raises null pointer exception in byte code generator
> ----------------------------------------------------------------------------------------
>
>          Key: DERBY-578
>          URL: http://issues.apache.org/jira/browse/DERBY-578
>      Project: Derby
>         Type: Bug

>   Components: SQL, Services
>     Reporter: Rick Hillegas
>     Assignee: Manish Khettry
>  Attachments: 578.diff.new.txt, 578.diff.txt, predicatePushdown.out.patch
>
> The last statement in the following script:
> autocommit off;
> declare global temporary table session.ztemp
> ( orderID varchar( 50 ) )
> not logged;
> select orderID from session.ztemp group by orderID;
> raises the following stack trace in the trunk:
> java.lang.NullPointerException
> 	at java.util.Hashtable.get(Hashtable.java:333)
> 	at org.apache.derby.iapi.services.classfile.ClassHolder.findMatchingEntry(ClassHolder.java:656)
> 	at org.apache.derby.iapi.services.classfile.ClassHolder.addUtf8Entry(ClassHolder.java:482)
> 	at org.apache.derby.iapi.services.classfile.ClassHolder.addString(ClassHolder.java:506)
> 	at org.apache.derby.iapi.services.classfile.ClassHolder.addConstant(ClassHolder.java:302)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.push(BCMethod.java:452)
> 	at org.apache.derby.impl.sql.compile.FromBaseTable.generateDistinctScan(FromBaseTable.java:3216)
> 	at org.apache.derby.impl.sql.compile.FromBaseTable.generateResultSet(FromBaseTable.java:3032)
> 	at org.apache.derby.impl.sql.compile.FromBaseTable.generate(FromBaseTable.java:2978)
> 	at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1196)
> 	at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1145)
> 	at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1196)
> 	at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1145)
> 	at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1196)
> 	at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1145)
> 	at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1196)
> 	at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1145)
> 	at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(ScrollInsensitiveResultSetNode.java:109)
> 	at org.apache.derby.impl.sql.compile.ReadCursorNode.generate(ReadCursorNode.java:118)
> 	at org.apache.derby.impl.sql.compile.CursorNode.generate(CursorNode.java:546)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:232)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:433)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:107)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:704)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:533)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:480)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:299)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:433)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:310)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:203)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:169)
> 	at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:55)
> 	at org.apache.derby.tools.ij.main(ij.java:60)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message