[enhancement](paimon)support predict for null and notnull (#29134)

This commit is contained in:
wuwenchi
2024-01-03 12:53:39 +08:00
committed by GitHub
parent 79eb575d7c
commit 2a9b4a0f76
3 changed files with 22 additions and 2 deletions

View File

@ -21,6 +21,7 @@ import org.apache.doris.analysis.CastExpr;
import org.apache.doris.analysis.CompoundPredicate;
import org.apache.doris.analysis.Expr;
import org.apache.doris.analysis.FunctionCallExpr;
import org.apache.doris.analysis.IsNullPredicate;
import org.apache.doris.analysis.LiteralExpr;
import org.apache.doris.analysis.SlotRef;
import org.apache.doris.thrift.TExprOpcode;
@ -70,10 +71,16 @@ public class PaimonPredicateConverter {
switch (compoundPredicate.getOp()) {
case AND: {
return PredicateBuilder.and(left, right);
if (left != null && right != null) {
return PredicateBuilder.and(left, right);
}
return null;
}
case OR: {
return PredicateBuilder.or(left, right);
if (left != null && right != null) {
return PredicateBuilder.or(left, right);
}
return null;
}
default:
return null;
@ -120,6 +127,12 @@ public class PaimonPredicateConverter {
if (name.equals("like") && !s.startsWith("%") && s.endsWith("%")) {
return builder.startsWith(idx, BinaryString.fromString(s.substring(0, s.length() - 1)));
}
} else if (dorisExpr instanceof IsNullPredicate) {
if (((IsNullPredicate) dorisExpr).isNotNull()) {
return builder.isNotNull(idx);
} else {
return builder.isNull(idx);
}
}
return null;
default: