From fe0a42dc8e46364ddf4fa0809022ba562d44fe8b Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 3 Jan 2025 16:05:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20doris=E8=A1=A8?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=8F=8F=E8=BF=B0=E6=B2=A1=E6=9C=89=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E6=98=BE=E7=A4=BA=20#13879?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/provider/CalciteProvider.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java index c0c1bbd33d..1b0bb99f36 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/CalciteProvider.java @@ -271,13 +271,17 @@ public class CalciteProvider extends Provider { ResultSet resultSet = null; try (Connection con = getConnectionFromPool(datasourceRequest.getDatasource().getId()); Statement statement = getStatement(con, 30)) { datasourceRequest.setDsVersion(con.getMetaData().getDatabaseMajorVersion()); - if (datasourceRequest.getDatasource().getType().equalsIgnoreCase("mongo") || isDorisCatalog(datasourceRequest)) { + if (datasourceRequest.getDatasource().getType().equalsIgnoreCase("mongo")) { resultSet = statement.executeQuery("select * from " + String.format(" `%s`", table) + " limit 0 offset 0 "); return fetchResultField(resultSet); } - resultSet = statement.executeQuery(getTableFiledSql(datasourceRequest)); + if (isDorisCatalog(datasourceRequest)) { + resultSet = statement.executeQuery("desc " + String.format(" `%s`", table)); + } else { + resultSet = statement.executeQuery(getTableFiledSql(datasourceRequest)); + } while (resultSet.next()) { - TableField tableFieldDesc = getTableFieldDesc(datasourceRequest, resultSet); + TableField tableFieldDesc = getTableFieldDesc(datasourceRequest, resultSet, 3); boolean repeat = false; for (TableField ele : datasetTableFields) { if (StringUtils.equalsIgnoreCase(ele.getOriginName(), tableFieldDesc.getOriginName())) { @@ -700,7 +704,7 @@ public class CalciteProvider extends Provider { } } - private TableField getTableFieldDesc(DatasourceRequest datasourceRequest, ResultSet resultSet) throws SQLException { + private TableField getTableFieldDesc(DatasourceRequest datasourceRequest, ResultSet resultSet, int commentIndex) throws SQLException { TableField tableField = new TableField(); tableField.setOriginName(resultSet.getString(1)); tableField.setType(resultSet.getString(2).toUpperCase()); @@ -708,7 +712,7 @@ public class CalciteProvider extends Provider { int deType = FieldUtils.transType2DeType(tableField.getType()); tableField.setDeExtractType(deType); tableField.setDeType(deType); - tableField.setName(resultSet.getString(3)); + tableField.setName(resultSet.getString(commentIndex)); try { tableField.setPrimary(resultSet.getInt(4) > 0); } catch (Exception e) {