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]