From 5a76bf499b3c749c703f027ec1da5a8f9bc785e2 Mon Sep 17 00:00:00 2001 From: zgq <203083679@qq.com> Date: Mon, 29 Jan 2024 20:51:25 +0800 Subject: [PATCH 1/2] fix mysql buildCreateTableSql error --- .../plugin/mysql/builder/MysqlSqlBuilder.java | 65 +++++++------------ 1 file changed, 25 insertions(+), 40 deletions(-) diff --git a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/builder/MysqlSqlBuilder.java b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/builder/MysqlSqlBuilder.java index 1a97c843b..8cd23dcc6 100644 --- a/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/builder/MysqlSqlBuilder.java +++ b/chat2db-server/chat2db-plugins/chat2db-mysql/src/main/java/ai/chat2db/plugin/mysql/builder/MysqlSqlBuilder.java @@ -14,6 +14,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.stream.Collectors; public class MysqlSqlBuilder extends DefaultSqlBuilder implements SqlBuilder { @@ -26,53 +27,37 @@ public String buildCreateTableSql(Table table) { } script.append("`").append(table.getName()).append("`").append(" (").append("\n"); - // append column - for (TableColumn column : table.getColumnList()) { - if (StringUtils.isBlank(column.getName()) || StringUtils.isBlank(column.getColumnType())) { - continue; - } - MysqlColumnTypeEnum typeEnum = MysqlColumnTypeEnum.getByType(column.getColumnType()); - script.append("\t").append(typeEnum.buildCreateColumnSql(column)).append(",\n"); + // Append columns + String columnsScript = table.getColumnList().stream() + .filter(column -> StringUtils.isNotBlank(column.getName()) && StringUtils.isNotBlank(column.getColumnType())) + .map(column -> "\t" + MysqlColumnTypeEnum.getByType(column.getColumnType()).buildCreateColumnSql(column)) + .collect(Collectors.joining(",\n")); + if (StringUtils.isNotBlank(columnsScript)) { + script.append(columnsScript); } - - // append primary key and index - for (TableIndex tableIndex : table.getIndexList()) { - if (StringUtils.isBlank(tableIndex.getName()) || StringUtils.isBlank(tableIndex.getType())) { - continue; - } - MysqlIndexTypeEnum mysqlIndexTypeEnum = MysqlIndexTypeEnum.getByType(tableIndex.getType()); - script.append("\t").append("").append(mysqlIndexTypeEnum.buildIndexScript(tableIndex)).append(",\n"); + // Append primary key and index + String indexesScript = table.getIndexList().stream() + .filter(index -> StringUtils.isNotBlank(index.getName()) && StringUtils.isNotBlank(index.getType())) + .map(index -> "\t" + MysqlIndexTypeEnum.getByType(index.getType()).buildIndexScript(index)) + .collect(Collectors.joining(",\n")); + + if (StringUtils.isNotBlank(indexesScript)) { + script.append(indexesScript); + // Remove trailing comma and newline + script.setLength(script.length() - 2); } - script = new StringBuilder(script.substring(0, script.length() - 2)); script.append("\n)"); + // Append table options + script.append(StringUtils.isNotBlank(table.getEngine()) ? " ENGINE=" + table.getEngine() : ""); + script.append(StringUtils.isNotBlank(table.getCharset()) ? " DEFAULT CHARACTER SET=" + table.getCharset() : ""); + script.append(StringUtils.isNotBlank(table.getCollate()) ? " COLLATE=" + table.getCollate() : ""); + script.append(table.getIncrementValue() != null ? " AUTO_INCREMENT=" + table.getIncrementValue() : ""); + script.append(StringUtils.isNotBlank(table.getComment()) ? " COMMENT='" + table.getComment() + "'" : ""); + script.append(StringUtils.isNotBlank(table.getPartition()) ? " \n" + table.getPartition() : ""); - if (StringUtils.isNotBlank(table.getEngine())) { - script.append(" ENGINE=").append(table.getEngine()); - } - - if (StringUtils.isNotBlank(table.getCharset())) { - script.append(" DEFAULT CHARACTER SET=").append(table.getCharset()); - } - - if (StringUtils.isNotBlank(table.getCollate())) { - script.append(" COLLATE=").append(table.getCollate()); - } - - if (table.getIncrementValue() != null) { - script.append(" AUTO_INCREMENT=").append(table.getIncrementValue()); - } - - if (StringUtils.isNotBlank(table.getComment())) { - script.append(" COMMENT='").append(table.getComment()).append("'"); - } - - if (StringUtils.isNotBlank(table.getPartition())) { - script.append(" \n").append(table.getPartition()); - } script.append(";"); - return script.toString(); } From 022618f3996dc4600709e4bbbc5573f3d9abc095 Mon Sep 17 00:00:00 2001 From: zgq <203083679@qq.com> Date: Tue, 20 Feb 2024 13:24:08 +0800 Subject: [PATCH 2/2] issue #1163 --- .../ai/chat2db/server/domain/core/impl/TableServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TableServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TableServiceImpl.java index 1454772d8..f5b4d6912 100644 --- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TableServiceImpl.java +++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/TableServiceImpl.java @@ -423,7 +423,7 @@ private long addDBCache(Long dataSourceId, String databaseName, String schemaNam Connection connection = Chat2DBContext.getConnection(); long n = 0; try (ResultSet resultSet = connection.getMetaData().getTables(databaseName, schemaName, null, - new String[]{"TABLE", "SYSTEM TABLE"})) { + new String[]{"TABLE", "SYSTEM TABLE","PARTITIONED TABLE"})) { List cacheDOS = new ArrayList<>(); while (resultSet.next()) { TableCacheDO tableCacheDO = new TableCacheDO();