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

kxiao 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 2c0f33a0100 [fix](jdbc catalog) fix mysql zero date (#26569) (#26837)
2c0f33a0100 is described below

commit 2c0f33a0100f03fb72f3d3faf891f45fc735e630
Author: zy-kkk <zhongy...@gmail.com>
AuthorDate: Mon Nov 13 10:29:21 2023 +0800

    [fix](jdbc catalog) fix mysql zero date (#26569) (#26837)
---
 docker/thirdparties/docker-compose/mysql/init/03-create-table.sql    | 5 +++++
 docker/thirdparties/docker-compose/mysql/init/04-insert.sql          | 5 +++++
 .../org/apache/doris/datasource/jdbc/client/JdbcMySQLClient.java     | 3 +++
 .../data/external_table_p0/jdbc/test_mysql_jdbc_catalog.out          | 4 ++++
 .../suites/external_table_p0/jdbc/test_mysql_jdbc_catalog.groovy     | 2 ++
 5 files changed, 19 insertions(+)

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 3908f73eabe..4467851606a 100644
--- a/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
+++ b/docker/thirdparties/docker-compose/mysql/init/03-create-table.sql
@@ -326,3 +326,8 @@ CREATE TABLE show_test_do_not_modify.ex_tb2 (
   id int,
   count_value varchar(20)
 );
+
+CREATE TABLE doris_test.test_zd (
+`id` int(10) unsigned NOT NULL,
+`d_z` date NOT NULL
+);
diff --git a/docker/thirdparties/docker-compose/mysql/init/04-insert.sql 
b/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
index bcf14c49275..b19765c769f 100644
--- a/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
+++ b/docker/thirdparties/docker-compose/mysql/init/04-insert.sql
@@ -1154,3 +1154,8 @@ 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',''));
+
+insert into doris_test.test_zd (id,d_z) VALUES 
(1,'0000-00-00'),(2,'2022-01-01');
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcMySQLClient.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcMySQLClient.java
index cb06722a05d..61ba2a0db47 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcMySQLClient.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcMySQLClient.java
@@ -265,6 +265,9 @@ public class JdbcMySQLClient extends JdbcClient {
             case "BIGINT":
                 return Type.BIGINT;
             case "DATE":
+                if (convertDateToNull) {
+                    fieldSchema.setAllowNull(true);
+                }
                 return ScalarType.createDateV2Type();
             case "TIMESTAMP":
             case "DATETIME": {
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 fffbcabacdf..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
@@ -241,6 +241,10 @@ VIEWS
 \N
 2023-06-17T10:00
 
+-- !test_dz --
+1      \N
+2      2022-01-01
+
 -- !test_insert1 --
 doris1 18
 
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 7677a516328..ab810e6af25 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
@@ -62,6 +62,7 @@ suite("test_mysql_jdbc_catalog", 
"p0,external,mysql,external_docker,external_doc
         String auto_default_t = "auto_default_t";
         String dt = "dt";
         String dt_null = "dt_null";
+        String test_zd = "test_zd"
 
         try_sql("DROP USER ${user}")
         sql """CREATE USER '${user}' IDENTIFIED BY '${pwd}'"""
@@ -163,6 +164,7 @@ suite("test_mysql_jdbc_catalog", 
"p0,external,mysql,external_docker,external_doc
         order_qt_auto_default_t """insert into ${auto_default_t}(name) 
values('a'); """
         order_qt_dt """select * from ${dt}; """
         order_qt_dt_null """select * from ${dt_null} order by 1; """
+        order_qt_test_dz """select * from ${test_zd} order by 1; """
 
         // test insert
         String uuid1 = UUID.randomUUID().toString();


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to