[ 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
