[ 
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

Reply via email to