Skip to content

Commit 06e779d

Browse files
committed
Fix issues 792 NullPointerException
1 parent 097900a commit 06e779d

2 files changed

Lines changed: 39 additions & 31 deletions

File tree

chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/PostgreSQLMetaData.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,10 @@ public List<TableIndex> indexes(Connection connection, String databaseName, Stri
230230
TableIndex tableIndex = map.get(keyName);
231231
if (tableIndex != null) {
232232
List<TableIndexColumn> columnList = tableIndex.getColumnList();
233+
if(columnList == null){
234+
columnList = new ArrayList<>();
235+
tableIndex.setColumnList(columnList);
236+
}
233237
columnList.add(getTableIndexColumn(resultSet));
234238
columnList = columnList.stream().sorted(Comparator.comparing(TableIndexColumn::getOrdinalPosition))
235239
.collect(Collectors.toList());

chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DlTemplateServiceImpl.java

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -392,43 +392,47 @@ private String getUpdateSql(UpdateSelectResultParam param, List<String> row, Lis
392392
}
393393

394394
private List<Header> setColumnInfo(List<Header> headers, String tableName, String schemaName, String databaseName) {
395-
TableQueryParam tableQueryParam = new TableQueryParam();
396-
tableQueryParam.setTableName(MetaNameUtils.getMetaName(tableName));
397-
tableQueryParam.setSchemaName(schemaName);
398-
tableQueryParam.setDatabaseName(databaseName);
399-
tableQueryParam.setRefresh(true);
400-
List<TableColumn> columns = tableService.queryColumns(tableQueryParam);
401-
if (CollectionUtils.isEmpty(columns)) {
402-
return headers;
403-
}
404-
Map<String, TableColumn> columnMap = columns.stream().collect(Collectors.toMap(TableColumn::getName, tableColumn -> tableColumn));
405-
406-
List<TableIndex> tableIndices = tableService.queryIndexes(tableQueryParam);
407-
if (!CollectionUtils.isEmpty(tableIndices)) {
408-
for (TableIndex tableIndex : tableIndices) {
409-
if ("PRIMARY".equalsIgnoreCase(tableIndex.getType())) {
410-
List<TableIndexColumn> columnList = tableIndex.getColumnList();
411-
if (!CollectionUtils.isEmpty(columnList)) {
412-
for (TableIndexColumn tableIndexColumn : columnList) {
413-
TableColumn tableColumn = columnMap.get(tableIndexColumn.getColumnName());
414-
if (tableColumn != null) {
415-
tableColumn.setPrimaryKey(true);
395+
try {
396+
TableQueryParam tableQueryParam = new TableQueryParam();
397+
tableQueryParam.setTableName(MetaNameUtils.getMetaName(tableName));
398+
tableQueryParam.setSchemaName(schemaName);
399+
tableQueryParam.setDatabaseName(databaseName);
400+
tableQueryParam.setRefresh(true);
401+
List<TableColumn> columns = tableService.queryColumns(tableQueryParam);
402+
if (CollectionUtils.isEmpty(columns)) {
403+
return headers;
404+
}
405+
Map<String, TableColumn> columnMap = columns.stream().collect(Collectors.toMap(TableColumn::getName, tableColumn -> tableColumn));
406+
List<TableIndex> tableIndices = tableService.queryIndexes(tableQueryParam);
407+
if (!CollectionUtils.isEmpty(tableIndices)) {
408+
for (TableIndex tableIndex : tableIndices) {
409+
if ("PRIMARY".equalsIgnoreCase(tableIndex.getType())) {
410+
List<TableIndexColumn> columnList = tableIndex.getColumnList();
411+
if (!CollectionUtils.isEmpty(columnList)) {
412+
for (TableIndexColumn tableIndexColumn : columnList) {
413+
TableColumn tableColumn = columnMap.get(tableIndexColumn.getColumnName());
414+
if (tableColumn != null) {
415+
tableColumn.setPrimaryKey(true);
416+
}
416417
}
417418
}
418419
}
419420
}
420421
}
421-
}
422-
for (Header header : headers) {
423-
TableColumn tableColumn = columnMap.get(header.getName());
424-
if (tableColumn != null) {
425-
header.setPrimaryKey(tableColumn.getPrimaryKey());
426-
header.setComment(tableColumn.getComment());
427-
header.setDefaultValue(tableColumn.getDefaultValue());
428-
header.setNullable(tableColumn.getNullable());
429-
header.setColumnSize(tableColumn.getColumnSize());
430-
header.setDecimalDigits(tableColumn.getDecimalDigits());
422+
for (Header header : headers) {
423+
TableColumn tableColumn = columnMap.get(header.getName());
424+
if (tableColumn != null) {
425+
header.setPrimaryKey(tableColumn.getPrimaryKey());
426+
header.setComment(tableColumn.getComment());
427+
header.setDefaultValue(tableColumn.getDefaultValue());
428+
header.setNullable(tableColumn.getNullable());
429+
header.setColumnSize(tableColumn.getColumnSize());
430+
header.setDecimalDigits(tableColumn.getDecimalDigits());
431+
}
431432
}
433+
434+
}catch (Exception e){
435+
log.error("setColumnInfo error:",e);
432436
}
433437
return headers;
434438
}

0 commit comments

Comments
 (0)