diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index 68548e3884..7a921d9214 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -151,6 +151,10 @@ public class Config extends ConfigBase { + "The default is * to allow all, if set to empty, all are not allowed"}) public static String jdbc_driver_secure_path = "*"; + @ConfField(description = {"MySQL Jdbc Catalog mysql 不支持下推的函数", + "MySQL Jdbc Catalog mysql does not support pushdown functions"}) + public static String[] jdbc_mysql_unsupported_pushdown_functions = {"date_trunc", "money_format", "negative"}; + @ConfField(mutable = true, masterOnly = true, description = {"broker load 时,单个节点上 load 执行计划的默认并行度", "The default parallelism of the load execution plan on a single node when the broker load is submitted"}) public static int default_load_parallelism = 8; diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/source/JdbcFunctionPushDownRule.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/source/JdbcFunctionPushDownRule.java index 13c0d474ee..a765681c40 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/source/JdbcFunctionPushDownRule.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/source/JdbcFunctionPushDownRule.java @@ -22,6 +22,7 @@ import org.apache.doris.analysis.FunctionCallExpr; import org.apache.doris.analysis.FunctionName; import org.apache.doris.analysis.TimestampArithmeticExpr; import org.apache.doris.catalog.TableIf.TableType; +import org.apache.doris.common.Config; import org.apache.doris.thrift.TOdbcTableType; import com.google.common.base.Preconditions; @@ -29,6 +30,7 @@ import com.google.common.collect.Maps; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.TreeSet; @@ -41,6 +43,8 @@ public class JdbcFunctionPushDownRule { static { MYSQL_UNSUPPORTED_FUNCTIONS.add("date_trunc"); MYSQL_UNSUPPORTED_FUNCTIONS.add("money_format"); + MYSQL_UNSUPPORTED_FUNCTIONS.add("negative"); + MYSQL_UNSUPPORTED_FUNCTIONS.addAll(Arrays.asList(Config.jdbc_mysql_unsupported_pushdown_functions)); } private static final TreeSet CLICKHOUSE_SUPPORTED_FUNCTIONS = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); diff --git a/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy b/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy index 906e2ff93d..f74151e07f 100644 --- a/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy +++ b/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy @@ -386,6 +386,11 @@ suite("test_mysql_jdbc_catalog", "p0,external,mysql,external_docker,external_doc contains "QUERY: SELECT `k8` FROM `doris_test`.`test1`" } + explain { + sql("select k12 from test1 where negative(k12) = 1;") + + contains "QUERY: SELECT `k12` FROM `doris_test`.`test1`" + } explain { sql ("SELECT timestamp0 from dt where DATE_TRUNC(date_sub(timestamp0,INTERVAL 9 HOUR),'hour') > '2011-03-03 17:39:05';")