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 700350015a..2024851bde 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 @@ -1057,7 +1057,27 @@ public class CalciteProvider extends Provider { 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()); + sql = String.format("SELECT\n" + + " a.attname AS ColumnName,\n" + + " t.typname,\n" + + " b.description AS ColumnDescription,\n" + + " CASE\n" + + " WHEN d.indisprimary THEN 1\n" + + " ELSE 0\n" + + " END\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" + + " LEFT JOIN pg_index d ON d.indrelid = a.attrelid AND d.indisprimary AND a.attnum = ANY(d.indkey)\n" + + "where\n" + + " c.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); diff --git a/core/core-frontend/src/views/visualized/data/datasource/index.vue b/core/core-frontend/src/views/visualized/data/datasource/index.vue index 6eda7fa541..2a4935d5c2 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/index.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/index.vue @@ -1582,6 +1582,12 @@ const getMenuList = (val: boolean) => { + + +