Details
-
Sub-task
-
Status: Closed
-
Minor
-
Resolution: Duplicate
-
10.0.2.0
-
None
-
None
-
generic
-
Low
Description
I am separating this part of the bug from DERBY-808. This part of the fix can go into 10.2 release, while I would like to submit the first part of DERBY-808 to both 10.1 and trunk branches.
Coding error in PredicateList.searchClauseTransitiveClosure. Also note, when the operands are switched, the type of the operation needs to change. For example, <ConstantNode> <LessThan> <ColumnReference> should change to <ColumnReference> <GreaterThan> <Constant>. Current code doesn's seem to do that either.
if (left instanceof ColumnReference && right instanceof ConstantNode)
{ searchClauses.addElement(predicate); }else if (right instanceof ConstantNode && left instanceof ColumnReference)
{ // put the ColumnReference on the left to simplify things bcon.swapOperands(); searchClauses.addElement(predicate); }The second part of the check is incorrect. It should instead be like:
else if (left instanceof ConstantNode && right instanceof ColumnReference)
and while handling ParameterNodes. Also the swaping logic is not complete.
Attachments
Attachments
Issue Links
- duplicates
-
DERBY-2282 Incorrect "transitive closure" logic leads to inconsistent behavior for binary comparison predicates.
- Closed