This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-3.0 in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-3.0 by this push: new 8e3146732da branch-3.0: [improvement](jdbc catalog) Optimize the acquisition of indentity type in SQLServer #51285 (#51317) 8e3146732da is described below commit 8e3146732da41d0b607eaaa920aafcf8a44def76 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> AuthorDate: Wed Jun 11 10:37:10 2025 +0800 branch-3.0: [improvement](jdbc catalog) Optimize the acquisition of indentity type in SQLServer #51285 (#51317) Cherry-picked from #51285 Co-authored-by: zy-kkk <zhongy...@gmail.com> --- .../docker-compose/sqlserver/init/03-create-table.sql | 7 ++++++- .../docker-compose/sqlserver/init/04-insert.sql | 2 ++ .../datasource/jdbc/client/JdbcSQLServerClient.java | 9 ++++++++- .../jdbc/test_sqlserver_jdbc_catalog.out | Bin 5638 -> 5667 bytes .../jdbc/test_sqlserver_jdbc_catalog.groovy | 2 ++ 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/docker/thirdparties/docker-compose/sqlserver/init/03-create-table.sql b/docker/thirdparties/docker-compose/sqlserver/init/03-create-table.sql index 09f4aed394e..8d62085b1b3 100644 --- a/docker/thirdparties/docker-compose/sqlserver/init/03-create-table.sql +++ b/docker/thirdparties/docker-compose/sqlserver/init/03-create-table.sql @@ -271,4 +271,9 @@ CREATE TABLE dbo.extreme_test_multi_block IPv4_Nullable VARCHAR(15) NULL, IPv6_Col VARCHAR(39) NOT NULL, -- e.g., 'FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF' IPv6_Nullable VARCHAR(39) NULL -); \ No newline at end of file +); + +CREATE TABLE dbo.test_identity_decimal ( + id decimal(18,0) IDENTITY(1,1), + col int +); diff --git a/docker/thirdparties/docker-compose/sqlserver/init/04-insert.sql b/docker/thirdparties/docker-compose/sqlserver/init/04-insert.sql index ba1ddc9e66f..aadacd884a3 100644 --- a/docker/thirdparties/docker-compose/sqlserver/init/04-insert.sql +++ b/docker/thirdparties/docker-compose/sqlserver/init/04-insert.sql @@ -121,3 +121,5 @@ insert into dbo.extreme_test_multi_block select * from dbo.extreme_test_multi_bl insert into dbo.extreme_test_multi_block select * from dbo.extreme_test_multi_block; insert into dbo.extreme_test_multi_block select * from dbo.extreme_test_multi_block; insert into dbo.extreme_test_multi_block select * from dbo.extreme_test; + +INSERT INTO dbo.test_identity_decimal(col) select 1; diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcSQLServerClient.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcSQLServerClient.java index 1bb3ece7f09..e737d5fd236 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcSQLServerClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcSQLServerClient.java @@ -32,7 +32,14 @@ public class JdbcSQLServerClient extends JdbcClient { String originSqlserverType = fieldSchema.getDataTypeName().orElse("unknown"); // For sqlserver IDENTITY type, such as 'INT IDENTITY' // originSqlserverType is "int identity", so we only get "int". + // For types with parameters like 'decimal(18,0) IDENTITY(1,1)', we need to extract the base type String sqlserverType = originSqlserverType.split(" ")[0]; + + // Handle types with parentheses like decimal(18,0), varchar(50), etc. + if (sqlserverType.contains("(")) { + sqlserverType = sqlserverType.substring(0, sqlserverType.indexOf("(")); + } + switch (sqlserverType) { case "bit": return Type.BOOLEAN; @@ -55,7 +62,7 @@ public class JdbcSQLServerClient extends JdbcClient { case "numeric": { int precision = fieldSchema.getColumnSize().orElse(0); int scale = fieldSchema.getDecimalDigits().orElse(0); - return ScalarType.createDecimalV3Type(precision, scale); + return createDecimalOrStringType(precision, scale); } case "date": return ScalarType.createDateV2Type(); diff --git a/regression-test/data/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.out b/regression-test/data/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.out index 2f3d33633ef..af2b6f9d2b3 100644 Binary files a/regression-test/data/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.out and b/regression-test/data/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.out differ diff --git a/regression-test/suites/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.groovy b/regression-test/suites/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.groovy index edbf243f4c5..b693cd0cad4 100644 --- a/regression-test/suites/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.groovy +++ b/regression-test/suites/external_table_p0/jdbc/test_sqlserver_jdbc_catalog.groovy @@ -83,6 +83,8 @@ suite("test_sqlserver_jdbc_catalog", "p0,external,sqlserver,external_docker,exte order_qt_all_types_tvf """ select * from query('catalog' = '${catalog_name}', 'query' = 'select * from all_type;') order by 1""" + order_qt_identity_decimal """ select * from test_identity_decimal order by id; """ + sql """ drop catalog if exists ${catalog_name} """ sql """ create catalog if not exists ${catalog_name} properties( --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org