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

zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 5d8808dda4 [Fix-15760][datasource-plugin] fix sql task split error 
(#15760) (#15794)
5d8808dda4 is described below

commit 5d8808dda40a5718df14a3ff703f07dfa253203c
Author: songwenyong <[email protected]>
AuthorDate: Wed Apr 3 16:31:03 2024 +0800

    [Fix-15760][datasource-plugin] fix sql task split error (#15760) (#15794)
    
    * Fix the bug in SQL splitting by completing the task in two steps: 1. 
removeComment 2. split
    
    * Add a unit test for Hive SQL splitting.
---
 .../api/datasource/AbstractDataSourceProcessor.java  |  3 ++-
 .../param/ClickHouseDataSourceProcessor.java         |  3 ++-
 .../dameng/param/DamengDataSourceProcessor.java      |  3 ++-
 .../datasource/db2/param/Db2DataSourceProcessor.java |  3 ++-
 .../hive/param/HiveDataSourceProcessor.java          |  3 ++-
 .../hive/param/HiveDataSourceProcessorTest.java      | 20 ++++++++++++++++++++
 .../mysql/param/MySQLDataSourceProcessor.java        |  3 ++-
 .../param/OceanBaseDataSourceProcessor.java          |  3 ++-
 .../param/PostgreSQLDataSourceProcessor.java         |  3 ++-
 .../param/SQLServerDataSourceProcessor.java          |  3 ++-
 .../trino/param/TrinoDataSourceProcessor.java        |  3 ++-
 11 files changed, 40 insertions(+), 10 deletions(-)

diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/AbstractDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/AbstractDataSourceProcessor.java
index db357e9d5c..98222a2c5a 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/AbstractDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/AbstractDataSourceProcessor.java
@@ -134,6 +134,7 @@ public abstract class AbstractDataSourceProcessor 
implements DataSourceProcessor
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.other);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.other);
+        return SQLParserUtils.split(cleanSQL, com.alibaba.druid.DbType.other);
     }
 }
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-clickhouse/src/main/java/org/apache/dolphinscheduler/plugin/datasource/clickhouse/param/ClickHouseDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-clickhouse/src/main/java/org/apache/dolphinscheduler/plugin/datasource/clickhouse/param/ClickHouseDataSourceProcessor.java
index a613806460..81a4415f5d 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-clickhouse/src/main/java/org/apache/dolphinscheduler/plugin/datasource/clickhouse/param/ClickHouseDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-clickhouse/src/main/java/org/apache/dolphinscheduler/plugin/datasource/clickhouse/param/ClickHouseDataSourceProcessor.java
@@ -129,7 +129,8 @@ public class ClickHouseDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.clickhouse);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.clickhouse);
+        return SQLParserUtils.split(cleanSQL, 
com.alibaba.druid.DbType.clickhouse);
     }
 
     private String transformOther(Map<String, String> otherMap) {
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dameng/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dameng/param/DamengDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dameng/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dameng/param/DamengDataSourceProcessor.java
index 1af61facd3..bc31bdcd49 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dameng/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dameng/param/DamengDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dameng/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dameng/param/DamengDataSourceProcessor.java
@@ -135,7 +135,8 @@ public class DamengDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.dm);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.dm);
+        return SQLParserUtils.split(cleanSQL, com.alibaba.druid.DbType.dm);
     }
 
     private String transformOther(Map<String, String> paramMap) {
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-db2/src/main/java/org/apache/dolphinscheduler/plugin/datasource/db2/param/Db2DataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-db2/src/main/java/org/apache/dolphinscheduler/plugin/datasource/db2/param/Db2DataSourceProcessor.java
index 2d67d91843..1d7c448355 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-db2/src/main/java/org/apache/dolphinscheduler/plugin/datasource/db2/param/Db2DataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-db2/src/main/java/org/apache/dolphinscheduler/plugin/datasource/db2/param/Db2DataSourceProcessor.java
@@ -129,7 +129,8 @@ public class Db2DataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.db2);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.db2);
+        return SQLParserUtils.split(cleanSQL, com.alibaba.druid.DbType.db2);
     }
 
     private String transformOther(Map<String, String> otherMap) {
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java
index 36330c17c8..09d9f4b963 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java
@@ -152,7 +152,8 @@ public class HiveDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.hive);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.hive);
+        return SQLParserUtils.split(cleanSQL, com.alibaba.druid.DbType.hive);
     }
 
     private String transformOther(Map<String, String> otherMap) {
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessorTest.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessorTest.java
index 1da0cbadda..ef5e71729c 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessorTest.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/test/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessorTest.java
@@ -23,6 +23,7 @@ import 
org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
 import org.apache.dolphinscheduler.spi.enums.DbType;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.junit.jupiter.api.Assertions;
@@ -94,4 +95,23 @@ public class HiveDataSourceProcessorTest {
         Assertions.assertEquals(DataSourceConstants.HIVE_VALIDATION_QUERY,
                 hiveDatasourceProcessor.getValidationQuery());
     }
+
+    @Test
+    void splitAndRemoveComment() {
+        String sql = "create table if not exists test_ods.tb_test(\n" +
+                "  `id` bigint COMMENT 'id',   -- auto increment\n" +
+                "  `user_name` string COMMENT 'username',\n" +
+                "  `birthday` string COMMENT 'birthday',\n" +
+                "  `gender` int COMMENT '1 male 2 female'\n" +
+                ") COMMENT 'user information table' PARTITIONED BY (`date_id` 
string);\n" +
+                "\n" +
+                "-- insert\n" +
+                "insert\n" +
+                "  overwrite table test_ods.tb_test partition(date_id = 
'2024-03-28') -- partition\n" +
+                "values\n" +
+                "  (1, 'Magic', '1990-10-01', '1');";
+        List<String> list = hiveDatasourceProcessor.splitAndRemoveComment(sql);
+        Assertions.assertEquals(list.size(), 2);
+
+    }
 }
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/mysql/param/MySQLDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/mysql/param/MySQLDataSourceProcessor.java
index b954defdd1..0c93b98212 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/mysql/param/MySQLDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/mysql/param/MySQLDataSourceProcessor.java
@@ -177,7 +177,8 @@ public class MySQLDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.mysql);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.mysql);
+        return SQLParserUtils.split(cleanSQL, com.alibaba.druid.DbType.mysql);
     }
 
     private static boolean checkKeyIsLegitimate(String key) {
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oceanbase/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oceanbase/param/OceanBaseDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oceanbase/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oceanbase/param/OceanBaseDataSourceProcessor.java
index b07b543c42..4d89f28eab 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oceanbase/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oceanbase/param/OceanBaseDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oceanbase/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oceanbase/param/OceanBaseDataSourceProcessor.java
@@ -192,6 +192,7 @@ public class OceanBaseDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.oceanbase);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.oceanbase);
+        return SQLParserUtils.split(cleanSQL, 
com.alibaba.druid.DbType.oceanbase);
     }
 }
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/postgresql/param/PostgreSQLDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/postgresql/param/PostgreSQLDataSourceProcessor.java
index 2835d357ab..28a0aa2945 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/postgresql/param/PostgreSQLDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/postgresql/param/PostgreSQLDataSourceProcessor.java
@@ -131,7 +131,8 @@ public class PostgreSQLDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.postgresql);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.postgresql);
+        return SQLParserUtils.split(cleanSQL, 
com.alibaba.druid.DbType.postgresql);
     }
 
     private String transformOther(Map<String, String> otherMap) {
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sqlserver/src/main/java/org/apache/dolphinscheduler/plugin/datasource/sqlserver/param/SQLServerDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sqlserver/src/main/java/org/apache/dolphinscheduler/plugin/datasource/sqlserver/param/SQLServerDataSourceProcessor.java
index 264f92c2b9..c3b73580dd 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sqlserver/src/main/java/org/apache/dolphinscheduler/plugin/datasource/sqlserver/param/SQLServerDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sqlserver/src/main/java/org/apache/dolphinscheduler/plugin/datasource/sqlserver/param/SQLServerDataSourceProcessor.java
@@ -128,7 +128,8 @@ public class SQLServerDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.sqlserver);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.sqlserver);
+        return SQLParserUtils.split(cleanSQL, 
com.alibaba.druid.DbType.sqlserver);
     }
 
     private String transformOther(Map<String, String> otherMap) {
diff --git 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino/src/main/java/org/apache/dolphinscheduler/plugin/datasource/trino/param/TrinoDataSourceProcessor.java
 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino/src/main/java/org/apache/dolphinscheduler/plugin/datasource/trino/param/TrinoDataSourceProcessor.java
index 77b10b5162..bd53acaaf8 100644
--- 
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino/src/main/java/org/apache/dolphinscheduler/plugin/datasource/trino/param/TrinoDataSourceProcessor.java
+++ 
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino/src/main/java/org/apache/dolphinscheduler/plugin/datasource/trino/param/TrinoDataSourceProcessor.java
@@ -131,7 +131,8 @@ public class TrinoDataSourceProcessor extends 
AbstractDataSourceProcessor {
 
     @Override
     public List<String> splitAndRemoveComment(String sql) {
-        return SQLParserUtils.splitAndRemoveComment(sql, 
com.alibaba.druid.DbType.trino);
+        String cleanSQL = SQLParserUtils.removeComment(sql, 
com.alibaba.druid.DbType.trino);
+        return SQLParserUtils.split(cleanSQL, com.alibaba.druid.DbType.trino);
     }
 
     private String transformOther(Map<String, String> otherMap) {

Reply via email to