This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new c355adb7b2e [branch-2.0](JdbcCatalog) fix that the predicate column 
name does not have back quote when querying the JDBC appearance (#26479) 
(#26560)
c355adb7b2e is described below

commit c355adb7b2ecc988ca701f1305d589561ff3d77b
Author: Tiewei Fang <[email protected]>
AuthorDate: Thu Nov 9 12:07:50 2023 +0800

    [branch-2.0](JdbcCatalog) fix that the predicate column name does not have 
back quote when querying the JDBC appearance (#26479) (#26560)
    
    master pr: #26479
---
 .../docker-compose/mysql/init/03-create-table.sql           |  4 ++++
 docker/thirdparties/docker-compose/mysql/init/04-insert.sql |  2 ++
 .../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, 27 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 484391f8a19..3908f73eabe 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,10 @@ 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,
diff --git a/docker/thirdparties/docker-compose/mysql/init/04-insert.sql 
b/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
index 93ae8c9b63e..bcf14c49275 100644
--- a/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
+++ b/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
@@ -1152,3 +1152,5 @@ VALUES ('2023-06-17 10:00:00', '2023-06-17 10:00:01.1', 
'2023-06-17 10:00:02.22'
 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);
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 d5cc90fa80f..93e75364219 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 8fb0f323992..b0480028b6a 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
@@ -80,7 +80,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 771a272e9b3..b55ea5f47b9 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 auto_default_t = "auto_default_t";
@@ -115,6 +116,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}; """
@@ -307,7 +309,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