Skip to content

Commit e3d4795

Browse files
committed
[Bug](fold) skip INET6_ATON function in fold by BE (apache#53423)
### What problem does this PR solve? Problem Summary: Now the Java StringLiteral can't handle binary data from C++, it's will cause the result incorrect. before the ipv6_string_to_num_or_default and INET6_ATON could fold by BE, after this PR, this two function will not fold by be.
1 parent daa97ed commit e3d4795

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnBE.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
import org.apache.doris.nereids.trees.expressions.functions.BoundFunction;
4141
import org.apache.doris.nereids.trees.expressions.functions.generator.TableGeneratingFunction;
4242
import org.apache.doris.nereids.trees.expressions.functions.scalar.FromBase64;
43+
import org.apache.doris.nereids.trees.expressions.functions.scalar.Ipv6StringToNumOrDefault;
44+
import org.apache.doris.nereids.trees.expressions.functions.scalar.Ipv6StringToNumOrNull;
4345
import org.apache.doris.nereids.trees.expressions.functions.scalar.NonNullable;
4446
import org.apache.doris.nereids.trees.expressions.functions.scalar.Nullable;
4547
import org.apache.doris.nereids.trees.expressions.functions.scalar.Sleep;
@@ -231,8 +233,9 @@ private static boolean shouldSkipFold(Expression expr) {
231233
return true;
232234
}
233235

234-
// Skip from_base64 function to avoid incorrect binary data processing during constant folding
235-
if (expr instanceof FromBase64) {
236+
// Skip those function to avoid incorrect binary data processing during constant folding
237+
if (expr instanceof FromBase64 || expr instanceof Ipv6StringToNumOrNull
238+
|| expr instanceof Ipv6StringToNumOrDefault) {
236239
return true;
237240
}
238241

regression-test/suites/nereids_p0/expression/fold_constant/fold_constant_by_be.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,14 @@ suite("fold_constant_by_be") {
8686
"from table_200_undef_partitions2_keys3_properties4_distributed_by53;")
8787
notContains("mask")
8888
}
89+
90+
sql 'set enable_fold_constant_by_be=true;'
91+
explain {
92+
sql "select IS_IPV4_MAPPED(NULLABLE(INET6_ATON('192.168.1.1')));"
93+
contains "192.168.1.1"
94+
}
95+
explain {
96+
sql "select IS_IPV4_MAPPED(NULLABLE(ipv6_string_to_num_or_default('192.168.1.1')));"
97+
contains "192.168.1.1"
98+
}
8999
}

0 commit comments

Comments
 (0)