diff --git a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java index ef1413fa..57efaa78 100644 --- a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java +++ b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java @@ -230,6 +230,10 @@ public class PostgreSQLMetaData extends DefaultMetaService implements MetaData { TableIndex tableIndex = map.get(keyName); if (tableIndex != null) { List columnList = tableIndex.getColumnList(); + if(columnList == null){ + columnList = new ArrayList<>(); + tableIndex.setColumnList(columnList); + } columnList.add(getTableIndexColumn(resultSet)); columnList = columnList.stream().sorted(Comparator.comparing(TableIndexColumn::getOrdinalPosition)) .collect(Collectors.toList()); diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DlTemplateServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DlTemplateServiceImpl.java index 800078b0..8dd0df63 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DlTemplateServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DlTemplateServiceImpl.java @@ -392,43 +392,47 @@ public class DlTemplateServiceImpl implements DlTemplateService { } private List
setColumnInfo(List
headers, String tableName, String schemaName, String databaseName) { - TableQueryParam tableQueryParam = new TableQueryParam(); - tableQueryParam.setTableName(MetaNameUtils.getMetaName(tableName)); - tableQueryParam.setSchemaName(schemaName); - tableQueryParam.setDatabaseName(databaseName); - tableQueryParam.setRefresh(true); - List columns = tableService.queryColumns(tableQueryParam); - if (CollectionUtils.isEmpty(columns)) { - return headers; - } - Map columnMap = columns.stream().collect(Collectors.toMap(TableColumn::getName, tableColumn -> tableColumn)); - - List tableIndices = tableService.queryIndexes(tableQueryParam); - if (!CollectionUtils.isEmpty(tableIndices)) { - for (TableIndex tableIndex : tableIndices) { - if ("PRIMARY".equalsIgnoreCase(tableIndex.getType())) { - List columnList = tableIndex.getColumnList(); - if (!CollectionUtils.isEmpty(columnList)) { - for (TableIndexColumn tableIndexColumn : columnList) { - TableColumn tableColumn = columnMap.get(tableIndexColumn.getColumnName()); - if (tableColumn != null) { - tableColumn.setPrimaryKey(true); + try { + TableQueryParam tableQueryParam = new TableQueryParam(); + tableQueryParam.setTableName(MetaNameUtils.getMetaName(tableName)); + tableQueryParam.setSchemaName(schemaName); + tableQueryParam.setDatabaseName(databaseName); + tableQueryParam.setRefresh(true); + List columns = tableService.queryColumns(tableQueryParam); + if (CollectionUtils.isEmpty(columns)) { + return headers; + } + Map columnMap = columns.stream().collect(Collectors.toMap(TableColumn::getName, tableColumn -> tableColumn)); + List tableIndices = tableService.queryIndexes(tableQueryParam); + if (!CollectionUtils.isEmpty(tableIndices)) { + for (TableIndex tableIndex : tableIndices) { + if ("PRIMARY".equalsIgnoreCase(tableIndex.getType())) { + List columnList = tableIndex.getColumnList(); + if (!CollectionUtils.isEmpty(columnList)) { + for (TableIndexColumn tableIndexColumn : columnList) { + TableColumn tableColumn = columnMap.get(tableIndexColumn.getColumnName()); + if (tableColumn != null) { + tableColumn.setPrimaryKey(true); + } } } } } } - } - for (Header header : headers) { - TableColumn tableColumn = columnMap.get(header.getName()); - if (tableColumn != null) { - header.setPrimaryKey(tableColumn.getPrimaryKey()); - header.setComment(tableColumn.getComment()); - header.setDefaultValue(tableColumn.getDefaultValue()); - header.setNullable(tableColumn.getNullable()); - header.setColumnSize(tableColumn.getColumnSize()); - header.setDecimalDigits(tableColumn.getDecimalDigits()); + for (Header header : headers) { + TableColumn tableColumn = columnMap.get(header.getName()); + if (tableColumn != null) { + header.setPrimaryKey(tableColumn.getPrimaryKey()); + header.setComment(tableColumn.getComment()); + header.setDefaultValue(tableColumn.getDefaultValue()); + header.setNullable(tableColumn.getNullable()); + header.setColumnSize(tableColumn.getColumnSize()); + header.setDecimalDigits(tableColumn.getDecimalDigits()); + } } + + }catch (Exception e){ + log.error("setColumnInfo error:",e); } return headers; }