[
https://issues.apache.org/jira/browse/DERBY-4651?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Rick Hillegas reassigned DERBY-4651:
------------------------------------
Assignee: Rick Hillegas
> 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
> Attachments: derby-4651-01-aa-verificationTest.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.