diff --git a/backend/src/main/java/io/dataease/datasource/provider/DatasourceProvider.java b/backend/src/main/java/io/dataease/datasource/provider/DatasourceProvider.java index 405d4a17c5..8e7f6a0087 100644 --- a/backend/src/main/java/io/dataease/datasource/provider/DatasourceProvider.java +++ b/backend/src/main/java/io/dataease/datasource/provider/DatasourceProvider.java @@ -15,9 +15,9 @@ public abstract class DatasourceProvider { abstract public List getTables(DatasourceRequest datasourceRequest) throws Exception; - public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { - return new ArrayList<>(); - }; +// public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { +// return new ArrayList<>(); +// }; public void checkStatus(DatasourceRequest datasourceRequest) throws Exception { getData(datasourceRequest); diff --git a/backend/src/main/java/io/dataease/datasource/provider/EsProvider.java b/backend/src/main/java/io/dataease/datasource/provider/EsProvider.java index 02aab04e28..eb331990e4 100644 --- a/backend/src/main/java/io/dataease/datasource/provider/EsProvider.java +++ b/backend/src/main/java/io/dataease/datasource/provider/EsProvider.java @@ -211,17 +211,17 @@ public class EsProvider extends DatasourceProvider { return new ArrayList<>(); } - @Override - public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { - List tableFileds = new ArrayList<>(); - try { - String response = exexQuery(datasourceRequest, "desc " + datasourceRequest.getTable(), "?format=json"); - tableFileds = fetchResultField(response); - } catch (Exception e) { - DataEaseException.throwException(e); - } - return tableFileds; - } +// @Override +// public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { +// List tableFileds = new ArrayList<>(); +// try { +// String response = exexQuery(datasourceRequest, "desc " + datasourceRequest.getTable(), "?format=json"); +// tableFileds = fetchResultField(response); +// } catch (Exception e) { +// DataEaseException.throwException(e); +// } +// return tableFileds; +// } @Override public void checkStatus(DatasourceRequest datasourceRequest) throws Exception { diff --git a/backend/src/main/java/io/dataease/datasource/provider/JdbcProvider.java b/backend/src/main/java/io/dataease/datasource/provider/JdbcProvider.java index 90c8cdada7..374923730d 100644 --- a/backend/src/main/java/io/dataease/datasource/provider/JdbcProvider.java +++ b/backend/src/main/java/io/dataease/datasource/provider/JdbcProvider.java @@ -267,46 +267,53 @@ public class JdbcProvider extends DatasourceProvider { return new ArrayList<>(); } - @Override - public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { - List list = new LinkedList<>(); - Connection connection = null; - try { - connection = getConnectionFromPool(datasourceRequest); - DatabaseMetaData databaseMetaData = connection.getMetaData(); - ResultSet resultSet = databaseMetaData.getColumns(null, "%", datasourceRequest.getTable(), "%"); - while (resultSet.next()) { - String tableName = resultSet.getString("TABLE_NAME"); - String database = null; - if(datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.ck.name())){ - database = resultSet.getString("TABLE_SCHEM"); - }else { - database = resultSet.getString("TABLE_CAT"); - } - if(database != null){ - if (tableName.equals(datasourceRequest.getTable()) && database.equalsIgnoreCase(getDatabase(datasourceRequest))) { - TableFiled tableFiled = getTableFiled(resultSet, datasourceRequest); - list.add(tableFiled); - } - }else { - if (tableName.equals(datasourceRequest.getTable())) { - TableFiled tableFiled = getTableFiled(resultSet, datasourceRequest); - list.add(tableFiled); - } - } - } - resultSet.close(); - } catch (SQLException e) { - DataEaseException.throwException(e); - } catch (Exception e) { - DataEaseException.throwException(e); - } finally { - if(connection != null){ - connection.close(); - } - } - return list; - } +// @Override +// public List getTableFileds(DatasourceRequest datasourceRequest) throws Exception { +// List list = new LinkedList<>(); +// Connection connection = null; +// ResultSet resultSet = null; +// try { +// connection = getConnectionFromPool(datasourceRequest); +// DatabaseMetaData databaseMetaData = connection.getMetaData(); +// resultSet = databaseMetaData.getColumns(null, "%", datasourceRequest.getTable(), "%"); +// while (resultSet.next()) { +// String tableName = resultSet.getString("TABLE_NAME"); +// String database = null; +// if(datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.ck.name())){ +// database = resultSet.getString("TABLE_SCHEM"); +// }else { +// database = resultSet.getString("TABLE_CAT"); +// } +// if(database != null){ +// if (tableName.equals(datasourceRequest.getTable()) && database.equalsIgnoreCase(getDatabase(datasourceRequest))) { +// TableFiled tableFiled = getTableFiled(resultSet, datasourceRequest); +// list.add(tableFiled); +// } +// }else { +// if (tableName.equals(datasourceRequest.getTable())) { +// TableFiled tableFiled = getTableFiled(resultSet, datasourceRequest); +// list.add(tableFiled); +// } +// } +// } +// resultSet.close(); +// +// Statement stat = connection.createStatement(); +// resultSet = stat.executeQuery(datasourceRequest.getQuery()); +// return fetchResultField(resultSet, datasourceRequest); +// +// +// } catch (SQLException e) { +// DataEaseException.throwException(e); +// } catch (Exception e) { +// DataEaseException.throwException(e); +// } finally { +// if(connection != null){ +// connection.close(); +// } +// } +// return list; +// } private TableFiled getTableFiled(ResultSet resultSet, DatasourceRequest datasourceRequest) throws SQLException { TableFiled tableFiled = new TableFiled(); diff --git a/backend/src/main/java/io/dataease/provider/QueryProvider.java b/backend/src/main/java/io/dataease/provider/QueryProvider.java index af4a505e1e..77d0c0e6ed 100644 --- a/backend/src/main/java/io/dataease/provider/QueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/QueryProvider.java @@ -81,4 +81,8 @@ public abstract class QueryProvider { tableObj.setTableName(schema + "." + tableObj.getTableName()); } } + + public String convertTableToSql(String tableName, Datasource ds){ + return "select * from tableName"; + } } diff --git a/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java b/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java index 246145ea87..1d6e65ca01 100644 --- a/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/ck/CKQueryProvider.java @@ -724,6 +724,11 @@ public class CKQueryProvider extends QueryProvider { return createRawQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields, null); } + @Override + public String convertTableToSql(String tableName, Datasource ds){ + return "SELECT * FROM " + String.format(CKConstants.KEYWORD_TABLE, tableName); + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": diff --git a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java index 56857c03b9..0ff4902b7e 100644 --- a/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/doris/DorisQueryProvider.java @@ -10,6 +10,7 @@ import io.dataease.dto.chart.ChartViewFieldDTO; import io.dataease.dto.sqlObj.SQLObj; import io.dataease.provider.QueryProvider; import io.dataease.provider.SQLConstants; +import io.dataease.provider.ck.CKConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -698,6 +699,11 @@ public class DorisQueryProvider extends QueryProvider { return createRawQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields, null); } + @Override + public String convertTableToSql(String tableName, Datasource ds){ + return createSQLPreview("SELECT * FROM " + String.format(DorisConstants.KEYWORD_TABLE, tableName), null); + } + private String sqlFix(String sql) { if (sql.lastIndexOf(";") == (sql.length() - 1)) { sql = sql.substring(0, sql.length() - 1); diff --git a/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java b/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java index 12a02bd6bf..6aad2e9cfd 100644 --- a/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/es/EsQueryProvider.java @@ -11,6 +11,7 @@ import io.dataease.dto.chart.ChartViewFieldDTO; import io.dataease.dto.sqlObj.SQLObj; import io.dataease.provider.QueryProvider; import io.dataease.provider.SQLConstants; +import io.dataease.provider.ck.CKConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -653,6 +654,11 @@ public class EsQueryProvider extends QueryProvider { return createRawQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields, null); } + @Override + public String convertTableToSql(String tableName, Datasource ds){ + return createSQLPreview("SELECT * FROM " + String.format(EsSqlLConstants.KEYWORD_TABLE, tableName), null); + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": diff --git a/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java b/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java index 4de5fb7cc9..23ecdf7a4d 100644 --- a/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/mysql/MysqlQueryProvider.java @@ -10,6 +10,7 @@ import io.dataease.dto.chart.ChartViewFieldDTO; import io.dataease.dto.sqlObj.SQLObj; import io.dataease.provider.QueryProvider; import io.dataease.provider.SQLConstants; +import io.dataease.provider.es.EsSqlLConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -692,6 +693,11 @@ public class MysqlQueryProvider extends QueryProvider { return createRawQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields, null); } + @Override + public String convertTableToSql(String tableName, Datasource ds){ + return createSQLPreview("SELECT * FROM " + String.format(MySQLConstants.KEYWORD_TABLE, tableName), null); + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": diff --git a/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java b/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java index 888d2f3e48..a897dc0b65 100644 --- a/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/oracle/OracleQueryProvider.java @@ -13,6 +13,7 @@ import io.dataease.dto.chart.ChartViewFieldDTO; import io.dataease.dto.sqlObj.SQLObj; import io.dataease.provider.QueryProvider; import io.dataease.provider.SQLConstants; +import io.dataease.provider.mysql.MySQLConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -743,6 +744,13 @@ public class OracleQueryProvider extends QueryProvider { return MessageFormat.format("SELECT {0} FROM {1}", StringUtils.join(array, ","), " (" + sqlFix(sql) + ") DE_TMP "); } + @Override + public String convertTableToSql(String tableName, Datasource ds){ + String schema = new Gson().fromJson(ds.getConfiguration(), JdbcDTO.class).getSchema(); + schema = String.format( OracleConstants.KEYWORD_TABLE, schema); + return createSQLPreview("SELECT * FROM " + schema + "." + String.format(OracleConstants.KEYWORD_TABLE, tableName), null); + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": diff --git a/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java b/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java index f4421fcd20..04bb3e0651 100644 --- a/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/pg/PgQueryProvider.java @@ -13,6 +13,8 @@ import io.dataease.dto.chart.ChartViewFieldDTO; import io.dataease.dto.sqlObj.SQLObj; import io.dataease.provider.QueryProvider; import io.dataease.provider.SQLConstants; +import io.dataease.provider.mysql.MySQLConstants; +import io.dataease.provider.oracle.OracleConstants; import io.dataease.provider.sqlserver.SqlServerSQLConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; @@ -720,6 +722,13 @@ public class PgQueryProvider extends QueryProvider { return createRawQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields, null); } + @Override + public String convertTableToSql(String tableName, Datasource ds){ + String schema = new Gson().fromJson(ds.getConfiguration(), JdbcDTO.class).getSchema(); + schema = String.format( PgConstants.KEYWORD_TABLE, schema); + return createSQLPreview("SELECT * FROM " + schema + "." + String.format(PgConstants.KEYWORD_TABLE, tableName), null); + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": diff --git a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java index 2dc7a553ff..19ff8072f1 100644 --- a/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/sqlserver/SqlserverQueryProvider.java @@ -15,6 +15,7 @@ import io.dataease.dto.sqlObj.SQLObj; import io.dataease.provider.QueryProvider; import io.dataease.provider.SQLConstants; import io.dataease.provider.oracle.OracleConstants; +import io.dataease.provider.pg.PgConstants; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -678,6 +679,13 @@ public class SqlserverQueryProvider extends QueryProvider { return createRawQuerySQL(" (" + sqlFix(sql) + ") AS tmp ", fields, null); } + @Override + public String convertTableToSql(String tableName, Datasource ds){ + String schema = new Gson().fromJson(ds.getConfiguration(), JdbcDTO.class).getSchema(); + schema = String.format( SqlServerSQLConstants.KEYWORD_TABLE, schema); + return createSQLPreview("SELECT * FROM " + schema + "." + String.format(SqlServerSQLConstants.KEYWORD_TABLE, tableName), null); + } + public String transMysqlFilterTerm(String term) { switch (term) { case "eq": diff --git a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java index 781647b6ce..e7eab0b4b2 100644 --- a/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java +++ b/backend/src/main/java/io/dataease/service/dataset/DataSetTableService.java @@ -387,8 +387,9 @@ public class DataSetTableService { DatasourceProvider datasourceProvider = ProviderFactory.getProvider(ds.getType()); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(ds); - datasourceRequest.setTable(new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getTable()); - return datasourceProvider.getTableFileds(datasourceRequest); + QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType()); + datasourceRequest.setQuery(qp.convertTableToSql(new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getTable(), ds)); + return datasourceProvider.fetchResultField(datasourceRequest); } public Map> getFieldsFromDE(DataSetTableRequest dataSetTableRequest) throws Exception {