[ 
https://issues.apache.org/jira/browse/DERBY-4651?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen closed DERBY-4651.
-------------------------------------

    Fix Version/s: 10.6.1.1
                   10.7.0.0
       Resolution: Fixed

> Hidden assumptions in FromVTI.makeRestriction()
> -----------------------------------------------
>
>                 Key: DERBY-4651
>                 URL: https://issues.apache.org/jira/browse/DERBY-4651
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.6.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Rick Hillegas
>            Priority: Minor
>             Fix For: 10.6.1.1, 10.7.0.0
>
>         Attachments: derby-4651-01-aa-verificationTest.diff, 
> derby-4651-02-aa-fixBug.diff, no_cast.diff
>
>
> FromVTI.makeRestriction() has this code to strip away Boolean constants from 
> AND and OR expressions:
>             // strip off trailing vacuous constant if present
>             if ( andOperator.getRightOperand() instanceof BooleanConstantNode 
> )
>             { return makeRestriction( andOperator.getLeftOperand(), 
> columnNameMap ); }
> and
>             // strip off trailing vacuous constant if present
>             if ( orOperator.getRightOperand() instanceof BooleanConstantNode )
>             { return makeRestriction( orOperator.getLeftOperand(), 
> columnNameMap ); }
> The code for AND will only work as expected if the right operand is TRUE. The 
> code for OR only works correctly if the right operand is FALSE.
> I'm not sure if this can ever result in user-visible bugs, since Boolean 
> constants are usually removed before we get to this point in the code. The 
> predicate has probably been transformed to conjunctive normal form, in which 
> Boolean constants in the right operand of an AndNode or an OrNode in fact is 
> always TRUE or FALSE, respectively.
> I think this code either should be changed to work regardless of the value of 
> the constant in the right operand, or the assumption that the predicate is on 
> conjunctive normal form should be documented in the comments (and perhaps 
> also checked in an assert statement).

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

Reply via email to