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

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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 04b840713b3 branch-2.1: [fix](jdbc catalog) Use factory methods to 
return mapped types instead (#46698)
04b840713b3 is described below

commit 04b840713b3141c41be31c7887764d4cd82d793b
Author: zy-kkk <[email protected]>
AuthorDate: Thu Jan 9 18:12:03 2025 +0800

    branch-2.1: [fix](jdbc catalog) Use factory methods to return mapped types 
instead (#46698)
    
    cherry-pick #46623
---
 .../java/org/apache/doris/datasource/jdbc/client/JdbcClient.java | 4 ++--
 .../org/apache/doris/datasource/jdbc/client/JdbcDB2Client.java   | 9 ++-------
 .../org/apache/doris/datasource/jdbc/client/JdbcGbaseClient.java | 6 +-----
 .../org/apache/doris/datasource/jdbc/client/JdbcMySQLClient.java | 6 ++----
 .../doris/datasource/jdbc/client/JdbcPostgreSQLClient.java       | 5 +----
 .../apache/doris/datasource/jdbc/client/JdbcSapHanaClient.java   | 5 +----
 .../org/apache/doris/datasource/jdbc/client/JdbcTrinoClient.java | 5 +----
 .../jdbc/type_test/tvf/test_mysql_all_types_tvf.out              | 8 ++++----
 8 files changed, 14 insertions(+), 34 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java
index bfa22b25ea6..05110e174b0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClient.java
@@ -368,8 +368,8 @@ public abstract class JdbcClient {
         return tableSchema;
     }
 
-    public List<Column> getColumnsFromJdbc(String localDbName, String 
localTableName) {
-        List<JdbcFieldSchema> jdbcTableSchema = 
getJdbcColumnsInfo(localDbName, localTableName);
+    public List<Column> getColumnsFromJdbc(String remoteDbName, String 
remoteTableName) {
+        List<JdbcFieldSchema> jdbcTableSchema = 
getJdbcColumnsInfo(remoteDbName, remoteTableName);
         List<Column> dorisTableSchema = 
Lists.newArrayListWithCapacity(jdbcTableSchema.size());
         for (JdbcFieldSchema field : jdbcTableSchema) {
             dorisTableSchema.add(new Column(field.getColumnName(),
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcDB2Client.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcDB2Client.java
index a353b7ac361..666b2b0f2a9 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcDB2Client.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcDB2Client.java
@@ -17,7 +17,6 @@
 
 package org.apache.doris.datasource.jdbc.client;
 
-import org.apache.doris.catalog.PrimitiveType;
 import org.apache.doris.catalog.ScalarType;
 import org.apache.doris.catalog.Type;
 import org.apache.doris.datasource.jdbc.util.JdbcFieldSchema;
@@ -84,14 +83,10 @@ public class JdbcDB2Client extends JdbcClient {
             case "REAL":
                 return Type.FLOAT;
             case "CHAR":
-                ScalarType charType = 
ScalarType.createType(PrimitiveType.CHAR);
-                charType.setLength(fieldSchema.getColumnSize().orElse(0));
-                return charType;
+                return 
ScalarType.createCharType(fieldSchema.requiredColumnSize());
             case "VARCHAR":
             case "LONG VARCHAR":
-                ScalarType varcharType = 
ScalarType.createType(PrimitiveType.VARCHAR);
-                varcharType.setLength(fieldSchema.getColumnSize().orElse(0));
-                return varcharType;
+                return 
ScalarType.createVarcharType(fieldSchema.requiredColumnSize());
             case "DATE":
                 return ScalarType.createDateV2Type();
             case "TIMESTAMP": {
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcGbaseClient.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcGbaseClient.java
index 086a8a5f393..6121ef2dbfc 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcGbaseClient.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcGbaseClient.java
@@ -17,7 +17,6 @@
 
 package org.apache.doris.datasource.jdbc.client;
 
-import org.apache.doris.catalog.PrimitiveType;
 import org.apache.doris.catalog.ScalarType;
 import org.apache.doris.catalog.Type;
 import org.apache.doris.common.util.Util;
@@ -143,10 +142,7 @@ public class JdbcGbaseClient extends JdbcClient {
                 return ScalarType.createDatetimeV2Type(scale);
             }
             case Types.CHAR:
-                ScalarType charType = 
ScalarType.createType(PrimitiveType.CHAR);
-                charType.setLength(fieldSchema.getColumnSize()
-                        .orElseThrow(() -> new 
IllegalArgumentException("Length not present")));
-                return charType;
+                return 
ScalarType.createCharType(fieldSchema.requiredColumnSize());
             case Types.TIME:
             case Types.VARCHAR:
             case Types.LONGVARCHAR:
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 f4c331cf357..d69740a9269 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
@@ -257,11 +257,9 @@ public class JdbcMySQLClient extends JdbcClient {
                 return createDecimalOrStringType(precision, scale);
             }
             case "CHAR":
-                ScalarType charType = 
ScalarType.createType(PrimitiveType.CHAR);
-                charType.setLength(fieldSchema.requiredColumnSize());
-                return charType;
+                return 
ScalarType.createCharType(fieldSchema.requiredColumnSize());
             case "VARCHAR":
-                return 
ScalarType.createVarcharType(fieldSchema.getColumnSize().orElse(0));
+                return 
ScalarType.createVarcharType(fieldSchema.requiredColumnSize());
             case "BIT":
                 if (fieldSchema.requiredColumnSize() == 1) {
                     return Type.BOOLEAN;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcPostgreSQLClient.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcPostgreSQLClient.java
index e6694ffdc67..268c576df4b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcPostgreSQLClient.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcPostgreSQLClient.java
@@ -17,7 +17,6 @@
 
 package org.apache.doris.datasource.jdbc.client;
 
-import org.apache.doris.catalog.PrimitiveType;
 import org.apache.doris.catalog.ScalarType;
 import org.apache.doris.catalog.Type;
 import org.apache.doris.datasource.jdbc.util.JdbcFieldSchema;
@@ -56,9 +55,7 @@ public class JdbcPostgreSQLClient extends JdbcClient {
             case "float8":
                 return Type.DOUBLE;
             case "bpchar":
-                ScalarType charType = 
ScalarType.createType(PrimitiveType.CHAR);
-                charType.setLength(fieldSchema.getColumnSize().orElse(0));
-                return charType;
+                return 
ScalarType.createCharType(fieldSchema.requiredColumnSize());
             case "timestamp":
             case "timestamptz": {
                 // postgres can support microsecond
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcSapHanaClient.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcSapHanaClient.java
index f10d082bada..e89b6268b90 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcSapHanaClient.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcSapHanaClient.java
@@ -17,7 +17,6 @@
 
 package org.apache.doris.datasource.jdbc.client;
 
-import org.apache.doris.catalog.PrimitiveType;
 import org.apache.doris.catalog.ScalarType;
 import org.apache.doris.catalog.Type;
 import org.apache.doris.datasource.jdbc.util.JdbcFieldSchema;
@@ -80,9 +79,7 @@ public class JdbcSapHanaClient extends JdbcClient {
                 return Type.BOOLEAN;
             case "CHAR":
             case "NCHAR":
-                ScalarType charType = 
ScalarType.createType(PrimitiveType.CHAR);
-                charType.setLength(fieldSchema.getColumnSize().orElse(0));
-                return charType;
+                return 
ScalarType.createCharType(fieldSchema.requiredColumnSize());
             case "TIME":
             case "VARCHAR":
             case "NVARCHAR":
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcTrinoClient.java
 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcTrinoClient.java
index eac97580574..6c818a41cb6 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcTrinoClient.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcTrinoClient.java
@@ -18,7 +18,6 @@
 package org.apache.doris.datasource.jdbc.client;
 
 import org.apache.doris.catalog.ArrayType;
-import org.apache.doris.catalog.PrimitiveType;
 import org.apache.doris.catalog.ScalarType;
 import org.apache.doris.catalog.Type;
 import org.apache.doris.datasource.jdbc.util.JdbcFieldSchema;
@@ -65,9 +64,7 @@ public class JdbcTrinoClient extends JdbcClient {
         }
 
         if (trinoType.startsWith("char")) {
-            ScalarType charType = ScalarType.createType(PrimitiveType.CHAR);
-            charType.setLength(fieldSchema.getColumnSize().orElse(0));
-            return charType;
+            return ScalarType.createCharType(fieldSchema.requiredColumnSize());
         }
 
         if (trinoType.startsWith("timestamp")) {
diff --git 
a/regression-test/data/external_table_p0/jdbc/type_test/tvf/test_mysql_all_types_tvf.out
 
b/regression-test/data/external_table_p0/jdbc/type_test/tvf/test_mysql_all_types_tvf.out
index dacd255426a..33f085b9550 100644
--- 
a/regression-test/data/external_table_p0/jdbc/type_test/tvf/test_mysql_all_types_tvf.out
+++ 
b/regression-test/data/external_table_p0/jdbc/type_test/tvf/test_mysql_all_types_tvf.out
@@ -34,12 +34,12 @@ datetime    datetime        Yes     true    \N      NONE
 timestamp1     datetime        Yes     true    \N      NONE
 timestamp2     datetime(3)     Yes     true    \N      NONE
 timestamp3     datetime(6)     Yes     true    \N      NONE
-char   char(6) Yes     true    \N      NONE
+char   char(5) Yes     true    \N      NONE
 varchar        varchar(10)     Yes     true    \N      NONE
 text   text    Yes     true    \N      NONE
 blob   text    Yes     true    \N      NONE
 json   text    Yes     true    \N      NONE
-set    char(6) Yes     true    \N      NONE
+set    char(23)        Yes     true    \N      NONE
 bit    text    Yes     true    \N      NONE
 binary text    Yes     true    \N      NONE
 varbinary      text    Yes     true    \N      NONE
@@ -86,12 +86,12 @@ datetime    datetime        Yes     true    \N      NONE
 timestamp1     datetime        Yes     true    \N      NONE
 timestamp2     datetime(3)     Yes     true    \N      NONE
 timestamp3     datetime(6)     Yes     true    \N      NONE
-char   char(6) Yes     true    \N      NONE
+char   char(5) Yes     true    \N      NONE
 varchar        varchar(10)     Yes     true    \N      NONE
 text   text    Yes     true    \N      NONE
 blob   text    Yes     true    \N      NONE
 json   text    Yes     true    \N      NONE
-set    char(6) Yes     true    \N      NONE
+set    char(23)        Yes     true    \N      NONE
 bit    text    Yes     true    \N      NONE
 binary text    Yes     true    \N      NONE
 varbinary      text    Yes     true    \N      NONE


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to