[
https://issues.apache.org/jira/browse/DERBY-4798?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908526#action_12908526
]
Dag H. Wanvik edited comment on DERBY-4798 at 9/12/10 3:03 PM:
---------------------------------------------------------------
Thanks for the idea, Bryan! :) Unfortunately, the patch breaks e.g.
OuterJoinTest. By tracing, it looks
like to me to be hitting a lot more cases, than are eventually bailed out by
the removed code in BaseActivation. In the example, there are 16 cases, all for
result set 5, that require the bail out.
I presume the cut-off in your experiment hits cases that would eventually fill
the current row, as so misses some code that needs to to be run, cf the
failures in OuterJoinTest I see, but I am barely starting to understand what's
going on here.. I would like to understand why this "cut-off" (as in your
experiment) is *not* normally needed (or is harmful), but *is* for this
particular RS ("deeply nested join rs", if comments are to be believed).
was (Author: dagw):
Thanks for the idea, Bryan! :) Unfortunately, the patch breaks e.g.
OuterJoinTest. By tracing, it looks
like to me to be hitting a lot more cases, than are eventually bailed out by
the removed code in BaseActivation. In the example, there are 16 cases, all for
result set 5, that require the bail out.
I presume the cut-off in your experiment hits cases that would eventually fill
the current row, as no misses some code that needs to to be run, cf the
failures in OuterJoinTest I see, but I am barely starting to understand what's
going on here.. I would like to understand why this "cut-off" (as in your
experiment) is *not* normally needed, but *is* for this particular RS ("deeply
nested join rs", if comments are to be believed).
> NPE in nested outer join
> ------------------------
>
> Key: DERBY-4798
> URL: https://issues.apache.org/jira/browse/DERBY-4798
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.5.1.1, 10.5.2.0, 10.5.3.0, 10.6.1.0
> Reporter: Dag H. Wanvik
> Attachments: experiment.diff
>
>
> Using the schema from DERBY-4712 and running the original randomized query
> generator used to find DERBY-4712,
> http://code.google.com/p/h2database/source/browse/trunk/h2/src/test/org/h2/test/db/TestNestedJoins.java,
> I have uncovered yet another bug (NPE), which appears to be a different
> beast. This one is a regression in 10.5 (works in 10.4 and older). This is
> the failing query:
> SELECT t0.x0,
> t1.x1,
> t2.x2,
> t3.x3,
> t4.x4,
> t5.x5,
> t6.x6,
> t7.x7
> FROM ((t0
> LEFT OUTER JOIN ((t1
> LEFT OUTER JOIN (t2
> LEFT OUTER JOIN t3
> ON t2.x2 = t3.x3 )
> ON t1.x1 = t2.x2 )
> LEFT OUTER JOIN (t4
> INNER JOIN (t5
> LEFT OUTER JOIN t6
> ON t5.x5 = t6.x6 )
> ON t4.x4 = t5.x5 )
> ON t1.x1 = t5.x5 )
> ON t0.x0 = t5.x5 )
> LEFT OUTER JOIN t7
> ON t3.x3 = t7.x7 );
> Relevant part of the stack trace (using 10.5 trunk @ svn 995846):
> Caused by: java.lang.NullPointerException
> at
> org.apache.derby.impl.sql.execute.BaseActivation.getColumnFromRow(BaseActivation.java:1458)
> at
> org.apache.derby.exe.ac4ac48095x012axfc73x9c5dx000003d485d847.e19(Unknown
> Source)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.derby.impl.services.reflect.ReflectMethod.invoke(ReflectMethod.java:46)
> at
> org.apache.derby.impl.sql.execute.GenericQualifier.getOrderable(GenericQualifier.java:96)
> at
> org.apache.derby.impl.sql.execute.NoPutResultSetImpl.clearOrderableCache(NoPutResultSetImpl.java:307)
> at
> org.apache.derby.impl.sql.execute.HashScanResultSet.resetProbeVariables(HashScanResultSet.java:359)
> at
> org.apache.derby.impl.sql.execute.HashScanResultSet.openCore(HashScanResultSet.java:322)
> at
> org.apache.derby.impl.sql.execute.JoinResultSet.openRight(JoinResultSet.java:283)
> at
> org.apache.derby.impl.sql.execute.JoinResultSet.openCore(JoinResultSet.java:152)
> at
> org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.openCore(ProjectRestrictResultSet.java:181)
> at
> org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.open(BasicNoPutResultSetImpl.java:251)
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:416)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.