[fix](Nereids) fix fe fold constant failed when using like function (#37864)
cherry-pick: #37616
This commit is contained in:
@ -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);
|
||||
|
||||
@ -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"))
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user