@@ -297,8 +297,11 @@ void register(MutableRel result, MutableRel query) {
297
297
RexNode condition , RexNode target ) {
298
298
final RexBuilder rexBuilder = simplify .rexBuilder ;
299
299
condition = simplify .simplify (condition );
300
- target = simplify .simplify (target );
301
300
RexNode condition2 = canonizeNode (rexBuilder , condition );
301
+ if (target .isAlwaysTrue ()) {
302
+ return condition2 ;
303
+ }
304
+ target = simplify .simplify (target );
302
305
RexNode target2 = canonizeNode (rexBuilder , target );
303
306
304
307
// First, try splitting into ORs.
@@ -322,7 +325,9 @@ void register(MutableRel result, MutableRel query) {
322
325
ImmutableList .of (condition2 , target2 ));
323
326
RexNode r =
324
327
canonizeNode (rexBuilder , simplify .simplifyUnknownAsFalse (x2 ));
325
- if (!r .isAlwaysFalse () && isEquivalent (condition2 , r )) {
328
+ RexNode simplifiedCond2 =
329
+ canonizeNode (rexBuilder , simplify .simplifyUnknownAsFalse (condition2 ));
330
+ if (!r .isAlwaysFalse () && isEquivalent (simplifiedCond2 , r )) {
326
331
List <RexNode > conjs = RelOptUtil .conjunctions (r );
327
332
for (RexNode e : RelOptUtil .conjunctions (target2 )) {
328
333
removeAll (conjs , e );
0 commit comments