[ https://issues.apache.org/jira/browse/DERBY-3033?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bryan Pendleton updated DERBY-3033: ----------------------------------- Attachment: repro2.java Attached is 'repro2.java'. I spent a bunch of time trying to write a "from scratch" reproduction program to demonstrate the bug, but with no success. In the debugger, I can see that the compiler erroneously inserts the transitive join closure predicate, but I haven't been able to force the optimizer to end up with a query plan where the bad predicate matters. I was thinking I might try to use the optimizer overrides feature to force the join plan that I want, but I need to go study that feature first. In the meantime, I attached the first version of the repro program in case somebody else can see how to trick it into reproducing the bug. > select query results in nullpointer exception in skipScan() > ----------------------------------------------------------- > > Key: DERBY-3033 > URL: https://issues.apache.org/jira/browse/DERBY-3033 > Project: Derby > Issue Type: Bug > Components: SQL > Affects Versions: 10.2.2.0 > Environment: Windows XP, Java 5.0, JDBC, Derby 10.2.2.0 > Reporter: Haolan Qin > Assignee: Bryan Pendleton > Attachments: bug4736.sql, d3033-sane-ij-session-10.3.1.5.txt, > generatedActivation.txt, noClosureOfNotExists.diff, query_plan.new, > query_plan.old, queryPlanRS.txt, repro2.java, test.rar, test.zip, > viewer_10_1.zip > > > The following error was repeatedly thrown when we tried to run a select query > via JDBC. Strangely, the exact same select query did not trigger any error > when run from the command line console. After we added an index, the error > went away completely. > java.lang.NullPointerException > at org.apache.derby.impl.sql.execute.NoPutResultSetImpl.skipScan(Unknown > Source) > at org.apache.derby.impl.sql.execute.TableScanResultSet.openCore(Unknown > Source) > at > org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.openCore(Unknown > Source) > at > org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown > Source) > at org.apache.derby.impl.sql.execute.JoinResultSet.openRight(Unknown Source) > at org.apache.derby.impl.sql.execute.JoinResultSet.openCore(Unknown Source) > at > org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown > Source) > at org.apache.derby.impl.sql.execute.SortResultSet.openCore(Unknown Source) > at > org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(Unknown > Source) > at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(Unknown > Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source) > at > org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown > Source) > at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown Source) > at org.apache.derby.impl.drda.DRDAStatement.execute(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown Source) > at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.