From d0666257ee49e66a5662ae1243151d4b01551553 Mon Sep 17 00:00:00 2001 From: taojinlong <jinlong@fit2cloud.com> Date: Thu, 8 Aug 2024 16:54:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E3=80=90=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E3=80=91StarRocks=E9=80=89=E6=8B=A9=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E8=A1=A8=E8=AF=A6=E6=83=85=E5=85=B6=E4=B8=AD=E8=A1=A8=E5=A4=87?= =?UTF-8?q?=E6=B3=A8=E6=98=AF=E5=90=A6=E5=8F=AF=E4=BB=A5=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=20#11433?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/provider/CalciteProvider.java | 327 ++++++++---------- 1 file changed, 141 insertions(+), 186 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 b5acae0241..0c90d960e1 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 @@ -221,8 +221,7 @@ public class CalciteProvider extends Provider { String table = datasourceRequest.getTable(); if (StringUtils.isEmpty(table)) { ResultSet resultSet = null; - try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); - Statement statement = getStatement(con.getConnection(), 30)) { + try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); Statement statement = getStatement(con.getConnection(), 30)) { if (DatasourceConfiguration.DatasourceType.valueOf(datasourceSchemaDTO.getType()) == DatasourceConfiguration.DatasourceType.oracle) { statement.executeUpdate("ALTER SESSION SET CURRENT_SCHEMA = " + datasourceConfiguration.getSchema()); } @@ -241,10 +240,9 @@ public class CalciteProvider extends Provider { } } else { ResultSet resultSet = null; - try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); - Statement statement = getStatement(con.getConnection(), 30)) { + 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")) { + if (datasourceRequest.getDatasource().getType().equalsIgnoreCase("mongo") || isDorisCatalog(datasourceRequest)) { resultSet = statement.executeQuery("select * from " + table + " limit 0 offset 0 "); return fetchResultField(resultSet); } @@ -278,6 +276,21 @@ public class CalciteProvider extends Provider { return datasetTableFields; } + private boolean isDorisCatalog(DatasourceRequest datasourceRequest) { + DatasourceConfiguration configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Mysql.class); + String database = ""; + if (StringUtils.isEmpty(configuration.getUrlType()) || configuration.getUrlType().equalsIgnoreCase("hostName")) { + database = configuration.getDataBase(); + } else { + Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:mysql://(.*):(\\d+)/(.*)"); + Matcher matcher = WITH_SQL_FRAGMENT.matcher(configuration.getJdbcUrl()); + matcher.find(); + String[] databasePrams = matcher.group(3).split("\\?"); + database = databasePrams[0]; + } + return datasourceRequest.getDatasource().getType().equalsIgnoreCase("doris") && database.contains("."); + } + @Override public ConnectionObj getConnection(DatasourceDTO coreDatasource) throws Exception { ConnectionObj connectionObj = new ConnectionObj(); @@ -373,8 +386,7 @@ public class CalciteProvider extends Provider { // schema ResultSet resultSet = null; - try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); - PreparedStatement statement = getPreparedStatement(con.getConnection(), datasourceConfiguration.getQueryTimeout(), datasourceRequest.getQuery())) { + try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); PreparedStatement statement = getPreparedStatement(con.getConnection(), datasourceConfiguration.getQueryTimeout(), datasourceRequest.getQuery())) { if (DatasourceConfiguration.DatasourceType.valueOf(value.getType()) == DatasourceConfiguration.DatasourceType.oracle) { statement.executeUpdate("ALTER SESSION SET CURRENT_SCHEMA = " + datasourceConfiguration.getSchema()); } @@ -418,8 +430,7 @@ public class CalciteProvider extends Provider { // schema ResultSet resultSet = null; - try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); - PreparedStatement statement = getPreparedStatement(con.getConnection(), datasourceConfiguration.getQueryTimeout(), datasourceRequest.getQuery())) { + try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); PreparedStatement statement = getPreparedStatement(con.getConnection(), datasourceConfiguration.getQueryTimeout(), datasourceRequest.getQuery())) { if (DatasourceConfiguration.DatasourceType.valueOf(value.getType()) == DatasourceConfiguration.DatasourceType.oracle) { statement.executeUpdate("ALTER SESSION SET CURRENT_SCHEMA = " + datasourceConfiguration.getSchema()); } @@ -458,8 +469,7 @@ public class CalciteProvider extends Provider { // schema ResultSet resultSet = null; - try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); - PreparedStatement statement = getPreparedStatement(con.getConnection(), datasourceConfiguration.getQueryTimeout(), datasourceRequest.getQuery())) { + try (ConnectionObj con = getConnection(datasourceRequest.getDatasource()); PreparedStatement statement = getPreparedStatement(con.getConnection(), datasourceConfiguration.getQueryTimeout(), datasourceRequest.getQuery())) { if (DatasourceConfiguration.DatasourceType.valueOf(value.getType()) == DatasourceConfiguration.DatasourceType.oracle) { statement.executeUpdate("ALTER SESSION SET CURRENT_SCHEMA = " + datasourceConfiguration.getSchema()); } @@ -660,137 +670,7 @@ public class CalciteProvider extends Provider { } } - private String getTableFiledSql(DatasourceRequest datasourceRequest) { - String sql = ""; - DatasourceConfiguration configuration = null; - String database = ""; - DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(datasourceRequest.getDatasource().getType()); - switch (datasourceType) { - case mysql: - case mongo: - case mariadb: - case TiDB: - case StarRocks: - case doris: - configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Mysql.class); - if (StringUtils.isEmpty(configuration.getUrlType()) || configuration.getUrlType().equalsIgnoreCase("hostName")) { - database = configuration.getDataBase(); - } else { - Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:mysql://(.*):(\\d+)/(.*)"); - Matcher matcher = WITH_SQL_FRAGMENT.matcher(configuration.getJdbcUrl()); - matcher.find(); - String[] databasePrams = matcher.group(3).split("\\?"); - database = databasePrams[0]; - } - sql = String.format("SELECT COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,IF(COLUMN_KEY='PRI',1,0) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s'", database, datasourceRequest.getTable()); - break; - case oracle: - configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Oracle.class); - if (StringUtils.isEmpty(configuration.getSchema())) { - DEException.throwException(Translator.get("i18n_schema_is_empty")); - } - sql = String.format("SELECT a.COLUMN_NAME , a.DATA_TYPE , b.COMMENTS ,0 FROM all_tab_columns a LEFT JOIN all_col_comments b ON a.owner = b.owner AND a.table_name = b.table_name AND a.column_name = b.column_name WHERE a.owner = '%s' AND a.table_name = '%s' ORDER BY a.table_name, a.column_id", configuration.getSchema(), datasourceRequest.getTable()); - break; - case db2: - configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Db2.class); - if (StringUtils.isEmpty(configuration.getSchema())) { - DEException.throwException(Translator.get("i18n_schema_is_empty")); - } - sql = String.format("SELECT COLNAME , TYPENAME , REMARKS FROM SYSCAT.COLUMNS WHERE TABSCHEMA = '%s' AND TABNAME = '%s' ", configuration.getSchema(), datasourceRequest.getTable()); - break; - case sqlServer: - configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Sqlserver.class); - if (StringUtils.isEmpty(configuration.getSchema())) { - DEException.throwException(Translator.get("i18n_schema_is_empty")); - } - - sql = String.format("SELECT \n" + - " c.name ,t.name ,ep.value, 0 \n" + - "FROM \n" + - " sys.columns AS c\n" + - "LEFT JOIN sys.extended_properties AS ep ON c.object_id = ep.major_id AND c.column_id = ep.minor_id\n" + - "LEFT JOIN sys.types AS t ON c.user_type_id = t.user_type_id\n" + - "LEFT JOIN sys.objects AS o ON c.object_id = o.object_id\n" + - "WHERE o.name = '%s'", datasourceRequest.getTable()); - break; - case pg: - configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Pg.class); - if (StringUtils.isEmpty(configuration.getSchema())) { - DEException.throwException(Translator.get("i18n_schema_is_empty")); - } - sql = String.format("SELECT\n" + - " a.attname AS ColumnName,\n" + - " t.typname,\n" + - " b.description AS ColumnDescription,\n" + - " 0\n" + - "FROM\n" + - " pg_class c\n" + - " JOIN pg_attribute a ON a.attrelid = c.oid\n" + - " LEFT JOIN pg_description b ON a.attrelid = b.objoid AND a.attnum = b.objsubid\n" + - " JOIN pg_type t ON a.atttypid = t.oid\n" + - "where\n" + - " \tc.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '%s') \n" + - " AND c.relname = '%s'\n" + - " AND a.attnum > 0\n" + - " AND NOT a.attisdropped\n" + - "ORDER BY\n" + - " a.attnum;", configuration.getSchema(), datasourceRequest.getTable()); - break; - case redshift: - configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), CK.class); - sql = String.format("SELECT\n" + - " a.attname AS ColumnName,\n" + - " t.typname,\n" + - " b.description AS ColumnDescription,\n" + - " 0\n" + - "FROM\n" + - " pg_class c\n" + - " JOIN pg_attribute a ON a.attrelid = c.oid\n" + - " LEFT JOIN pg_description b ON a.attrelid = b.objoid AND a.attnum = b.objsubid\n" + - " JOIN pg_type t ON a.atttypid = t.oid\n" + - "WHERE\n" + - " c.relname = '%s'\n" + - " AND a.attnum > 0\n" + - " AND NOT a.attisdropped\n" + - "ORDER BY\n" + - " a.attnum\n" + - " ", datasourceRequest.getTable()); - break; - case ck: - configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), CK.class); - - if (StringUtils.isEmpty(configuration.getUrlType()) || configuration.getUrlType().equalsIgnoreCase("hostName")) { - database = configuration.getDataBase(); - } else { - Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:clickhouse://(.*):(\\d+)/(.*)"); - Matcher matcher = WITH_SQL_FRAGMENT.matcher(configuration.getJdbcUrl()); - matcher.find(); - String[] databasePrams = matcher.group(3).split("\\?"); - database = databasePrams[0]; - } - sql = String.format(" SELECT\n" + - " name,\n" + - " type,\n" + - " comment,\n" + - " 0\n" + - "FROM\n" + - " system.columns\n" + - "WHERE\n" + - " database = '%s' \n" + - " AND table = '%s' ", database, datasourceRequest.getTable()); - break; - case impala: - sql = String.format("DESCRIBE `%s`", datasourceRequest.getTable()); - break; - default: - break; - } - - return sql; - } - - private TableField getTableFieldDesc(DatasourceRequest datasourceRequest, ResultSet resultSet) throws - SQLException { + private TableField getTableFieldDesc(DatasourceRequest datasourceRequest, ResultSet resultSet) throws SQLException { TableField tableField = new TableField(); tableField.setOriginName(resultSet.getString(1)); tableField.setType(resultSet.getString(2).toUpperCase()); @@ -1050,6 +930,103 @@ public class CalciteProvider extends Provider { return list; } + private String getTableFiledSql(DatasourceRequest datasourceRequest) { + String sql = ""; + DatasourceConfiguration configuration = null; + String database = ""; + DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(datasourceRequest.getDatasource().getType()); + switch (datasourceType) { + case StarRocks: + case doris: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Mysql.class); + if (StringUtils.isEmpty(configuration.getUrlType()) || configuration.getUrlType().equalsIgnoreCase("hostName")) { + database = configuration.getDataBase(); + } else { + Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:mysql://(.*):(\\d+)/(.*)"); + Matcher matcher = WITH_SQL_FRAGMENT.matcher(configuration.getJdbcUrl()); + matcher.find(); + String[] databasePrams = matcher.group(3).split("\\?"); + database = databasePrams[0]; + } + if (database.contains(".")) { + sql = "select * from " + datasourceRequest.getTable() + " limit 0 offset 0 "; + } else { + sql = String.format("SELECT TABLE_NAME,TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '%s' ;", database); + } + break; + case mysql: + case mongo: + case mariadb: + case TiDB: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Mysql.class); + if (StringUtils.isEmpty(configuration.getUrlType()) || configuration.getUrlType().equalsIgnoreCase("hostName")) { + database = configuration.getDataBase(); + } else { + Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:mysql://(.*):(\\d+)/(.*)"); + Matcher matcher = WITH_SQL_FRAGMENT.matcher(configuration.getJdbcUrl()); + matcher.find(); + String[] databasePrams = matcher.group(3).split("\\?"); + database = databasePrams[0]; + } + sql = String.format("SELECT COLUMN_NAME,DATA_TYPE,COLUMN_COMMENT,IF(COLUMN_KEY='PRI',1,0) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s'", database, datasourceRequest.getTable()); + break; + case oracle: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Oracle.class); + if (StringUtils.isEmpty(configuration.getSchema())) { + DEException.throwException(Translator.get("i18n_schema_is_empty")); + } + sql = String.format("SELECT a.COLUMN_NAME , a.DATA_TYPE , b.COMMENTS ,0 FROM all_tab_columns a LEFT JOIN all_col_comments b ON a.owner = b.owner AND a.table_name = b.table_name AND a.column_name = b.column_name WHERE a.owner = '%s' AND a.table_name = '%s' ORDER BY a.table_name, a.column_id", configuration.getSchema(), datasourceRequest.getTable()); + break; + case db2: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Db2.class); + if (StringUtils.isEmpty(configuration.getSchema())) { + DEException.throwException(Translator.get("i18n_schema_is_empty")); + } + sql = String.format("SELECT COLNAME , TYPENAME , REMARKS FROM SYSCAT.COLUMNS WHERE TABSCHEMA = '%s' AND TABNAME = '%s' ", configuration.getSchema(), datasourceRequest.getTable()); + break; + case sqlServer: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Sqlserver.class); + if (StringUtils.isEmpty(configuration.getSchema())) { + DEException.throwException(Translator.get("i18n_schema_is_empty")); + } + + sql = String.format("SELECT \n" + " c.name ,t.name ,ep.value, 0 \n" + "FROM \n" + " sys.columns AS c\n" + "LEFT JOIN sys.extended_properties AS ep ON c.object_id = ep.major_id AND c.column_id = ep.minor_id\n" + "LEFT JOIN sys.types AS t ON c.user_type_id = t.user_type_id\n" + "LEFT JOIN sys.objects AS o ON c.object_id = o.object_id\n" + "WHERE o.name = '%s'", datasourceRequest.getTable()); + break; + case pg: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Pg.class); + if (StringUtils.isEmpty(configuration.getSchema())) { + DEException.throwException(Translator.get("i18n_schema_is_empty")); + } + sql = String.format("SELECT\n" + " a.attname AS ColumnName,\n" + " t.typname,\n" + " b.description AS ColumnDescription,\n" + " 0\n" + "FROM\n" + " pg_class c\n" + " JOIN pg_attribute a ON a.attrelid = c.oid\n" + " LEFT JOIN pg_description b ON a.attrelid = b.objoid AND a.attnum = b.objsubid\n" + " JOIN pg_type t ON a.atttypid = t.oid\n" + "where\n" + " \tc.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '%s') \n" + " AND c.relname = '%s'\n" + " AND a.attnum > 0\n" + " AND NOT a.attisdropped\n" + "ORDER BY\n" + " a.attnum;", configuration.getSchema(), datasourceRequest.getTable()); + break; + case redshift: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), CK.class); + sql = String.format("SELECT\n" + " a.attname AS ColumnName,\n" + " t.typname,\n" + " b.description AS ColumnDescription,\n" + " 0\n" + "FROM\n" + " pg_class c\n" + " JOIN pg_attribute a ON a.attrelid = c.oid\n" + " LEFT JOIN pg_description b ON a.attrelid = b.objoid AND a.attnum = b.objsubid\n" + " JOIN pg_type t ON a.atttypid = t.oid\n" + "WHERE\n" + " c.relname = '%s'\n" + " AND a.attnum > 0\n" + " AND NOT a.attisdropped\n" + "ORDER BY\n" + " a.attnum\n" + " ", datasourceRequest.getTable()); + break; + case ck: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), CK.class); + + if (StringUtils.isEmpty(configuration.getUrlType()) || configuration.getUrlType().equalsIgnoreCase("hostName")) { + database = configuration.getDataBase(); + } else { + Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:clickhouse://(.*):(\\d+)/(.*)"); + Matcher matcher = WITH_SQL_FRAGMENT.matcher(configuration.getJdbcUrl()); + matcher.find(); + String[] databasePrams = matcher.group(3).split("\\?"); + database = databasePrams[0]; + } + sql = String.format(" SELECT\n" + " name,\n" + " type,\n" + " comment,\n" + " 0\n" + "FROM\n" + " system.columns\n" + "WHERE\n" + " database = '%s' \n" + " AND table = '%s' ", database, datasourceRequest.getTable()); + break; + case impala: + sql = String.format("DESCRIBE `%s`", datasourceRequest.getTable()); + break; + default: + break; + } + + return sql; + } + private List<String> getTablesSql(DatasourceRequest datasourceRequest) throws DEException { List<String> tableSqls = new ArrayList<>(); DatasourceConfiguration.DatasourceType datasourceType = DatasourceConfiguration.DatasourceType.valueOf(datasourceRequest.getDatasource().getType()); @@ -1058,6 +1035,22 @@ public class CalciteProvider extends Provider { switch (datasourceType) { case StarRocks: case doris: + configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Mysql.class); + if (StringUtils.isEmpty(configuration.getUrlType()) || configuration.getUrlType().equalsIgnoreCase("hostName")) { + database = configuration.getDataBase(); + } else { + Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:mysql://(.*):(\\d+)/(.*)"); + Matcher matcher = WITH_SQL_FRAGMENT.matcher(configuration.getJdbcUrl()); + matcher.find(); + String[] databasePrams = matcher.group(3).split("\\?"); + database = databasePrams[0]; + } + if (database.contains(".")) { + tableSqls.add("show tables"); + } else { + tableSqls.add(String.format("SELECT TABLE_NAME,TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '%s' ;", database)); + } + break; case mongo: tableSqls.add("show tables"); break; @@ -1096,57 +1089,19 @@ public class CalciteProvider extends Provider { if (StringUtils.isEmpty(configuration.getSchema())) { DEException.throwException(Translator.get("i18n_schema_is_empty")); } - tableSqls.add("SELECT \n" + - " t.name AS TableName, \n" + - " ep.value AS TableDescription \n" + - "FROM \n" + - " sys.tables t \n" + - "LEFT OUTER JOIN sys.schemas sc ON sc.schema_id =t.schema_id \n" + - "LEFT OUTER JOIN \n" + - " sys.extended_properties ep ON t.object_id = ep.major_id \n" + - " AND ep.minor_id = 0 \n" + - " AND ep.class = 1 \n" + - " AND ep.name = 'MS_Description'\n" + - "where sc.name ='DS_SCHEMA'" - .replace("DS_SCHEMA", configuration.getSchema())); - tableSqls.add("SELECT \n" + - " t.name AS TableName, \n" + - " ep.value AS TableDescription \n" + - "FROM \n" + - " sys.views t \n" + - "LEFT OUTER JOIN sys.schemas sc ON sc.schema_id =t.schema_id \n" + - "LEFT OUTER JOIN \n" + - " sys.extended_properties ep ON t.object_id = ep.major_id \n" + - " AND ep.minor_id = 0 \n" + - " AND ep.class = 1 \n" + - " AND ep.name = 'MS_Description'\n" + - "where sc.name ='DS_SCHEMA'" - .replace("DS_SCHEMA", configuration.getSchema())); + tableSqls.add("SELECT \n" + " t.name AS TableName, \n" + " ep.value AS TableDescription \n" + "FROM \n" + " sys.tables t \n" + "LEFT OUTER JOIN sys.schemas sc ON sc.schema_id =t.schema_id \n" + "LEFT OUTER JOIN \n" + " sys.extended_properties ep ON t.object_id = ep.major_id \n" + " AND ep.minor_id = 0 \n" + " AND ep.class = 1 \n" + " AND ep.name = 'MS_Description'\n" + "where sc.name ='DS_SCHEMA'".replace("DS_SCHEMA", configuration.getSchema())); + tableSqls.add("SELECT \n" + " t.name AS TableName, \n" + " ep.value AS TableDescription \n" + "FROM \n" + " sys.views t \n" + "LEFT OUTER JOIN sys.schemas sc ON sc.schema_id =t.schema_id \n" + "LEFT OUTER JOIN \n" + " sys.extended_properties ep ON t.object_id = ep.major_id \n" + " AND ep.minor_id = 0 \n" + " AND ep.class = 1 \n" + " AND ep.name = 'MS_Description'\n" + "where sc.name ='DS_SCHEMA'".replace("DS_SCHEMA", configuration.getSchema())); break; case pg: configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), Pg.class); if (StringUtils.isEmpty(configuration.getSchema())) { DEException.throwException(Translator.get("i18n_schema_is_empty")); } - tableSqls.add("SELECT \n" + - " relname AS TableName, \n" + - " obj_description(relfilenode::regclass, 'pg_class') AS TableDescription \n" + - "FROM \n" + - " pg_class \n" + - "WHERE \n" + - " relkind = 'r' \n" + - " AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'SCHEMA') ".replace("SCHEMA", configuration.getSchema())); + tableSqls.add("SELECT \n" + " relname AS TableName, \n" + " obj_description(relfilenode::regclass, 'pg_class') AS TableDescription \n" + "FROM \n" + " pg_class \n" + "WHERE \n" + " relkind = 'r' \n" + " AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'SCHEMA') ".replace("SCHEMA", configuration.getSchema())); break; case redshift: configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), CK.class); - tableSqls.add("SELECT \n" + - " relname AS TableName, \n" + - " obj_description(relfilenode::regclass, 'pg_class') AS TableDescription \n" + - "FROM \n" + - " pg_class \n" + - "WHERE \n" + - " relkind = 'r' \n" + - " AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'SCHEMA') ".replace("SCHEMA", configuration.getSchema())); + tableSqls.add("SELECT \n" + " relname AS TableName, \n" + " obj_description(relfilenode::regclass, 'pg_class') AS TableDescription \n" + "FROM \n" + " pg_class \n" + "WHERE \n" + " relkind = 'r' \n" + " AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'SCHEMA') ".replace("SCHEMA", configuration.getSchema())); break; case ck: configuration = JsonUtil.parseObject(datasourceRequest.getDatasource().getConfiguration(), CK.class); @@ -1159,9 +1114,9 @@ public class CalciteProvider extends Provider { String[] databasePrams = matcher.group(3).split("\\?"); database = databasePrams[0]; } - if(datasourceRequest.getDsVersion() < 22){ + if (datasourceRequest.getDsVersion() < 22) { tableSqls.add("SELECT name, name FROM system.tables where database='DATABASE';".replace("DATABASE", database)); - }else { + } else { tableSqls.add("SELECT name, comment FROM system.tables where database='DATABASE';".replace("DATABASE", database)); }