[fix](Nereids) fix fe fold constant failed when using like function (#37864)

cherry-pick: #37616
This commit is contained in:
LiBinfeng
2024-07-16 16:02:29 +08:00
committed by GitHub
parent c1b1437fc3
commit cb2f95ee2e
2 changed files with 10 additions and 7 deletions

View File

@ -43,7 +43,6 @@ import org.apache.doris.nereids.trees.expressions.InPredicate;
import org.apache.doris.nereids.trees.expressions.IsNull;
import org.apache.doris.nereids.trees.expressions.LessThan;
import org.apache.doris.nereids.trees.expressions.LessThanEqual;
import org.apache.doris.nereids.trees.expressions.Like;
import org.apache.doris.nereids.trees.expressions.Not;
import org.apache.doris.nereids.trees.expressions.NullSafeEqual;
import org.apache.doris.nereids.trees.expressions.Or;
@ -403,11 +402,6 @@ public class FoldConstantRuleOnFE extends AbstractExpressionRewriteRule
}
}
@Override
public Expression visitLike(Like like, ExpressionRewriteContext context) {
return like;
}
@Override
public Expression visitCast(Cast cast, ExpressionRewriteContext context) {
cast = rewriteChildren(cast, context);

View File

@ -19,6 +19,7 @@ suite("test_fold_constant_by_fe") {
sql 'set enable_nereids_planner=true'
sql 'set enable_fallback_to_original_planner=false'
sql 'set enable_fold_nondeterministic_fn=true'
sql 'set enable_fold_constant_by_be=false'
def results = sql 'select uuid(), uuid()'
assertFalse(Objects.equals(results[0][0], results[0][1]))
@ -154,4 +155,12 @@ suite("test_fold_constant_by_fe") {
res = res.split('VUNION')[1]
assertFalse(res.contains("unix"))
}
}
// test null like string cause of fe need to fold constant like that to enable not null derive
res = sql """explain select null like '%123%'"""
assertFalse(res.contains("like"))
// now fe fold constant still can not deal with this case
res = sql """explain select "12" like '%123%'"""
assertTrue(res.contains("like"))
}