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 94de6a954c..a6ff053f04 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 @@ -98,15 +98,18 @@ public class CalciteProvider extends Provider { @Override public List getTables(DatasourceRequest datasourceRequest) { List tables = new ArrayList<>(); - List tablesSqls = getTablesSql(datasourceRequest); - for (String tablesSql : tablesSqls) { - try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); Statement statement = getStatement(con.getConnection(), 30); ResultSet resultSet = statement.executeQuery(tablesSql)) { + + try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); Statement statement = getStatement(con.getConnection(), 30)) { + datasourceRequest.setDsVersion(con.getConnection().getMetaData().getDatabaseMajorVersion()); + List tablesSqls = getTablesSql(datasourceRequest); + for (String tablesSql : tablesSqls) { + ResultSet resultSet = statement.executeQuery(tablesSql); while (resultSet.next()) { tables.add(getTableDesc(datasourceRequest, resultSet)); } - } catch (Exception e) { - DEException.throwException(e.getMessage()); } + } catch (Exception e) { + DEException.throwException(e.getMessage()); } return tables; } @@ -237,6 +240,7 @@ public class CalciteProvider extends Provider { ResultSet resultSet = null; try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); Statement statement = getStatement(con.getConnection(), 30)) { + datasourceRequest.setDsVersion(con.getConnection().getMetaData().getDatabaseMajorVersion()); if (datasourceRequest.getDatasource().getType().equalsIgnoreCase("mongo") || datasourceRequest.getDatasource().getType().equalsIgnoreCase("doris")) { resultSet = statement.executeQuery("select * from " + table + " limit 0 offset 0 "); return fetchResultField(resultSet); @@ -1054,7 +1058,12 @@ public class CalciteProvider extends Provider { String[] databasePrams = matcher.group(3).split("\\?"); database = databasePrams[0]; } - tableSqls.add("SELECT name, comment FROM system.tables where database='DATABASE';".replace("DATABASE", database)); + if(datasourceRequest.getDsVersion() < 22){ + tableSqls.add("SELECT name, name FROM system.tables where database='DATABASE';".replace("DATABASE", database)); + }else { + tableSqls.add("SELECT name, comment FROM system.tables where database='DATABASE';".replace("DATABASE", database)); + } + break; default: diff --git a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/dto/DatasourceRequest.java b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/dto/DatasourceRequest.java index 35ccb28633..1eb97c02a9 100644 --- a/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/dto/DatasourceRequest.java +++ b/sdk/extensions/extensions-datasource/src/main/java/io/dataease/extensions/datasource/dto/DatasourceRequest.java @@ -15,6 +15,7 @@ public class DatasourceRequest implements Serializable { protected String query; protected String table; protected DatasourceDTO datasource; + private Integer dsVersion; private Integer pageSize; private Integer page; private Integer realSize;