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]

Reply via email to