This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 49cffd0bc98 [fix](JdbcCatalog) fix that the predicate column name does
not have back quote when querying the JDBC appearance (#26479)
49cffd0bc98 is described below
commit 49cffd0bc98324d8d61c10785b0c9aaad672c2a4
Author: Tiewei Fang <[email protected]>
AuthorDate: Fri Nov 10 09:54:39 2023 +0800
[fix](JdbcCatalog) fix that the predicate column name does not have back
quote when querying the JDBC appearance (#26479)
---
.../docker-compose/mysql/init/03-create-table.sql | 5 +++++
docker/thirdparties/docker-compose/mysql/init/04-insert.sql | 3 +++
.../apache/doris/planner/external/jdbc/JdbcScanNode.java | 13 +++++++++++++
.../data/external_table_p0/jdbc/test_mysql_jdbc_catalog.out | 3 +++
.../jdbc/test_clickhouse_jdbc_catalog.groovy | 2 +-
.../external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy | 4 +++-
.../jdbc/test_mysql_jdbc_catalog_nereids.groovy | 2 +-
7 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
b/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
index ee44e1c87a2..4467851606a 100644
--- a/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
+++ b/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
@@ -308,6 +308,11 @@ CREATE TABLE doris_test.dt_null (
CREATE VIEW doris_test.mysql_view as
select 10086 as col_1, 4294967295 as col_2, tinyint_u as col_3 from
doris_test.all_types where tinyint_u=201;
+CREATE TABLE doris_test.test_key_word (
+`id` int,
+`key` int
+) ENGINE=INNODB CHARSET=utf8;
+
CREATE TABLE show_test_do_not_modify.ex_tb0 (
`id` int PRIMARY KEY,
`name` varchar(128)
diff --git a/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
b/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
index 3ff51a9a123..588f9dd9159 100644
--- a/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
+++ b/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
@@ -1153,6 +1153,9 @@ SET SESSION sql_mode=(SELECT
REPLACE(@@sql_mode,'STRICT_TRANS_TABLES',''));
INSERT INTO doris_test.dt_null
VALUES ('2023-06-17 10:00:00'),('0000-00-00 00:00:00');
+
+insert into doris_test.test_key_word values (1, 1), (2, 2);
+
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'NO_ZERO_DATE',''));
SET SESSION sql_mode=(SELECT REPLACE(@@sql_mode,'NO_ZERO_IN_DATE',''));
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/planner/external/jdbc/JdbcScanNode.java
b/fe/fe-core/src/main/java/org/apache/doris/planner/external/jdbc/JdbcScanNode.java
index 3295284da92..23a44ed6432 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/planner/external/jdbc/JdbcScanNode.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/planner/external/jdbc/JdbcScanNode.java
@@ -353,6 +353,19 @@ public class JdbcScanNode extends ExternalScanNode {
return filter;
}
+ if (expr.contains(SlotRef.class) && expr instanceof BinaryPredicate) {
+ ArrayList<Expr> children = expr.getChildren();
+ String filter;
+ if (children.get(0) instanceof SlotRef) {
+ filter = JdbcTable.databaseProperName(tableType,
children.get(0).toMySql());
+ } else {
+ filter = children.get(0).toMySql();
+ }
+ filter += " " + ((BinaryPredicate) expr).getOp().toString() + " ";
+ filter += children.get(1).toMySql();
+ return filter;
+ }
+
// only for old planner
if (expr.contains(BoolLiteral.class) &&
"1".equals(expr.getStringValue()) && expr.getChildren().isEmpty()) {
return "1 = 1";
diff --git
a/regression-test/data/external_table_p0/jdbc/test_mysql_jdbc_catalog.out
b/regression-test/data/external_table_p0/jdbc/test_mysql_jdbc_catalog.out
index 38bb7a67828..3645341c995 100644
--- a/regression-test/data/external_table_p0/jdbc/test_mysql_jdbc_catalog.out
+++ b/regression-test/data/external_table_p0/jdbc/test_mysql_jdbc_catalog.out
@@ -165,6 +165,9 @@ bca 2022-11-02 2022-11-02 8012 vivo
1.12345 1.12345 1.12345 1.12345 1.12345 1.12345
123456789012345678901234567890123.12345
12345678901234567890123456789012.12345
1234567890123456789012345678901234.12345
123456789012345678901234567890123.12345
123456789012345678901234567890123456789012345678901234567890.12345
123456789012345678901234567890123456789012345678901234567890.12345
+-- !ex_tb21 --
+2 2
+
-- !information_schema --
CHARACTER_SETS
COLLATIONS
diff --git
a/regression-test/suites/external_table_p0/jdbc/test_clickhouse_jdbc_catalog.groovy
b/regression-test/suites/external_table_p0/jdbc/test_clickhouse_jdbc_catalog.groovy
index 2d0707101fc..987cbe94027 100644
---
a/regression-test/suites/external_table_p0/jdbc/test_clickhouse_jdbc_catalog.groovy
+++
b/regression-test/suites/external_table_p0/jdbc/test_clickhouse_jdbc_catalog.groovy
@@ -88,7 +88,7 @@ suite("test_clickhouse_jdbc_catalog",
"p0,external,clickhouse,external_docker,ex
order_qt_func_push2 """select * from ts where ts <=
unix_timestamp(from_unixtime(ts,'yyyyMMdd'));"""
explain {
sql("select * from ts where ts <=
unix_timestamp(from_unixtime(ts,'yyyy-MM-dd'));")
- contains """QUERY: SELECT "id", "ts" FROM "doris_test"."ts" WHERE
(ts <= toUnixTimestamp(FROM_UNIXTIME(ts, '%Y-%m-%d')))"""
+ contains """QUERY: SELECT "id", "ts" FROM "doris_test"."ts" WHERE
("ts" <= toUnixTimestamp(FROM_UNIXTIME(ts, '%Y-%m-%d')))"""
}
sql """ drop catalog if exists ${catalog_name} """
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 f70c44057bb..f7896b66f1b 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
@@ -54,6 +54,7 @@ suite("test_mysql_jdbc_catalog",
"p0,external,mysql,external_docker,external_doc
String ex_tb18 = "ex_tb18";
String ex_tb19 = "ex_tb19";
String ex_tb20 = "ex_tb20";
+ String ex_tb21 = "test_key_word";
String test_insert = "test_insert";
String test_insert2 = "test_insert2";
String test_insert_all_types = "test_insert_all_types";
@@ -158,6 +159,7 @@ suite("test_mysql_jdbc_catalog",
"p0,external,mysql,external_docker,external_doc
order_qt_ex_tb18 """ select * from ${ex_tb18} order by num_tinyint;
"""
order_qt_ex_tb19 """ select * from ${ex_tb19} order by date_value; """
order_qt_ex_tb20 """ select * from ${ex_tb20} order by
decimal_normal; """
+ order_qt_ex_tb21 """ select `key`, `id` from ${ex_tb21} where `key` =
2 order by id;"""
order_qt_information_schema """ show tables from information_schema;
"""
order_qt_auto_default_t """insert into ${auto_default_t}(name)
values('a'); """
order_qt_dt """select * from ${dt}; """
@@ -367,7 +369,7 @@ suite("test_mysql_jdbc_catalog",
"p0,external,mysql,external_docker,external_doc
explain {
sql ("select k6, k8 from test1 where nvl(k6, null) = 1 and k8 =
1;")
- contains "QUERY: SELECT `k6`, `k8` FROM `doris_test`.`test1` WHERE
(k8 = 1)"
+ contains "QUERY: SELECT `k6`, `k8` FROM `doris_test`.`test1` WHERE
(`k8` = 1)"
}
sql """ admin set frontend config ("enable_func_pushdown" = "true");
"""
sql """ drop catalog if exists mysql_fun_push_catalog; """
diff --git
a/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog_nereids.groovy
b/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog_nereids.groovy
index a25ce87ac98..c63314b186f 100644
---
a/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog_nereids.groovy
+++
b/regression-test/suites/external_table_p0/jdbc/test_mysql_jdbc_catalog_nereids.groovy
@@ -82,7 +82,7 @@ suite("test_mysql_jdbc_catalog_nereids",
"p0,external,mysql,external_docker,exte
explain {
sql("""select id from ${ex_tb0} where id = 111;""")
- contains "WHERE (id = 111)"
+ contains "WHERE (`id` = 111)"
}
qt_ex_tb0_where """select id from ${ex_tb0} where id = 111;"""
order_qt_ex_tb0 """ select id, name from ${ex_tb0} order by id; """
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]