db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-4388) NullPointerException in RIGHT JOIN with NOT BETWEEN
Date Mon, 05 Oct 2009 14:23:31 GMT

    [ https://issues.apache.org/jira/browse/DERBY-4388?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12762184#action_12762184

Knut Anders Hatlen commented on DERBY-4388:

BetweenOperatorNode.eliminateNots() rewrites T1.X NOT BETWEEN 0 AND 4 to T1.X < 0 OR T1.X
> 4. I compared the optimized tree for a NOT BETWEEN query with a query manually rewritten
to the equivalent less-than/greater-than form and saw that the structure of the column references
was different.

Looking at how other nodes implement eliminateNots(), I found that InListOperatorNode is similar
to BetweenOperatorNode, except that it always clones the left operand if it is a ColumnReference.
A comment told that the cloning was necessary because the reference could be remapped during
optimization, and then the different nodes would need a separate instance. Changing BetweenOperatorNode
to clone ColumnReferences appears to fix the NPE.

> NullPointerException in RIGHT JOIN with NOT BETWEEN
> ---------------------------------------------------
>                 Key: DERBY-4388
>                 URL: https://issues.apache.org/jira/browse/DERBY-4388
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions:,,,,,,
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
> ij> create table t1(x int);
> 0 rows inserted/updated/deleted
> ij> create table t2(x int);
> 0 rows inserted/updated/deleted
> ij> insert into t2 values (1);
> 1 row inserted/updated/deleted
> ij> select * from t1 right join t2 on t1.x = t2.x where t1.x not between 0 and 4;
> X          |X          
> -----------------------
> ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while evaluating
an expression.
> ERROR XJ001: Java exception: ': java.lang.NullPointerException'.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message