diff --git a/.github/workflows/release_test.yml b/.github/workflows/release_test.yml
index d71beff8..14867d07 100644
--- a/.github/workflows/release_test.yml
+++ b/.github/workflows/release_test.yml
@@ -7,6 +7,8 @@ on:
push:
branches:
- "release_test"
+ - "release_test_2"
+ - "release_test_3"
# Workflow's jobs
# 一共需要3台电脑运行
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 167fb756..75195c6f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,59 +1,68 @@
+# 2.0.14
+
+## 🐞 Bug Fixes
+
+- Fix the issue of 'Oracle' query 'Blob' reporting errors
+- Modify the paging logic and fix some SQL queries that cannot be queried
+
+## 🐞 问题修复
+
+- 修复 `Oracle` 查询 `Blob` 报错的问题
+- 修改分页逻辑,修复部分 SQL 无法查询
+
# 2.0.13
## ⭐ New Features
## 🐞 Bug Fixes
-- Fixed a bug where sql formatting was not selected
-- Fixed open view lag issue
+
+- Fixed a bug where sql formatting was not selected
+- Fixed open view lag issue
- Solve the white screen problem of connected non-relational databases (non-relational databases are not supported)
## ⭐ 新特性
-
-
## 🐞 问题修复
-- 修复不选中sql格式化的bug
+
+- 修复不选中 sql 格式化的 bug
- 修复打开视图卡顿问题
- 解决已连接的非关系型数据库打开白屏问题(暂不支持非关系性数据库)
-
# 2.0.12
## ⭐ New Features
-- 🔥Supports viewing views, functions, triggers, and procedures
-- Support selected sql formatting
+- 🔥Supports viewing views, functions, triggers, and procedures
+- Support selected sql formatting
- Added new dark themes
## 🐞 Bug Fixes
- Fixed sql formatting failure issue
-- Fixed an issue where locally stored theme colors and background colors are incompatible with the new version, causing page crashes
+- Fixed an issue where locally stored theme colors and background colors are incompatible with the new version, causing
+ page crashes
- Logs desensitize sensitive data
-- Fix the issue of 'CLOB' not displaying specific content [Issue #440](https://github.com/chat2db/Chat2DB/issues/440)
+- Fix the issue of 'CLOB' not displaying specific content [Issue #440](https://github.com/chat2db/Chat2DB/issues/440)
- Fix the problem that non-Select does not display query results
- Fix the problem that Oracle cannot query without schema
- Fix the problem of special type of SQL execution error reporting
- Fix the problem that the test link is successful, but the error is reported when saving the link
-
-
-
## ⭐ 新特性
-- 🔥支持查看视图、函数、触发器、存储过程
-- 支持选中sql格式化
+- 🔥 支持查看视图、函数、触发器、存储过程
+- 支持选中 sql 格式化
- 增加新的暗色主题
## 🐞 问题修复
-- 修复sql格式化会失败问题
+- 修复 sql 格式化会失败问题
- 修复本地存储的主题色、背景色与新版本不兼容时会导致页面崩溃问题
- 日志对敏感数据进行脱敏
-- 修复 `CLOB` 不展示具体内容的问题 [Issue #440](https://github.com/chat2db/Chat2DB/issues/440)
-- 修复非Select不展示查询结果的问题
-- 修复Oracle不带schema无法查询的问题
-- 修复特殊类型的SQL执行报错的问题
+- 修复 `CLOB` 不展示具体内容的问题 [Issue #440](https://github.com/chat2db/Chat2DB/issues/440)
+- 修复非 Select 不展示查询结果的问题
+- 修复 Oracle 不带 schema 无法查询的问题
+- 修复特殊类型的 SQL 执行报错的问题
- 修复测试链接成功,但保存链接报错的问题
# 2.0.11
@@ -81,11 +90,11 @@
## 🐞 问题修复
-- 新建、开打console时激活最新操作的console、记录最后一次使用的console
-- edge等浏览器复制功能无法正常使用
-- table搜索后导出ddl报错
+- 新建、开打 console 时激活最新操作的 console、记录最后一次使用的 console
+- edge 等浏览器复制功能无法正常使用
+- table 搜索后导出 ddl 报错
- 增加表注释以及列字段类型和注释
-- 当数据源添加了database默认选择第一个database
+- 当数据源添加了 database 默认选择第一个 database
# 2.0.9
@@ -95,18 +104,18 @@
## 🐞 问题修复
-- 修复windows闪退的问题
+- 修复 windows 闪退的问题
# 2.0.8
## 🐞 Bug Fixes
-- Repair the Scientific notation in some databases [Issue #378](https://github.com/chat2db/Chat2DB/issues/378)
+- Repair the Scientific notation in some databases [Issue #378](https://github.com/chat2db/Chat2DB/issues/378)
- Fix some cases where data is not displayed
## 🐞 问题修复
-- 修复部分数据库出现科学计数法的情况 [Issue #378](https://github.com/chat2db/Chat2DB/issues/378)
+- 修复部分数据库出现科学计数法的情况 [Issue #378](https://github.com/chat2db/Chat2DB/issues/378)
- 修复部分情况数据不展示
# 2.0.7
@@ -125,18 +134,18 @@
## 🐞 问题修复
-- 修复ai配置 [Issue #346](https://github.com/chat2db/Chat2DB/issues/346)
+- 修复 ai 配置 [Issue #346](https://github.com/chat2db/Chat2DB/issues/346)
# 2.0.6
## 🐞 Bug Fixes
- Fixed: When there are too many tables under the selected library, the "New Console" button at the bottom
- disappears [Issue #314](https://github.com/chat2db/Chat2DB/issues/314)
+ disappears [Issue #314](https://github.com/chat2db/Chat2DB/issues/314)
## 🐞 问题修复
-- Fixed: 当选择的库下面表过多时最下面的“新建控制台”按钮消失 [Issue #314](https://github.com/chat2db/Chat2DB/issues/314)
+- Fixed: 当选择的库下面表过多时最下面的“新建控制台”按钮消失 [Issue #314](https://github.com/chat2db/Chat2DB/issues/314)
# 2.0.5
diff --git a/README.md b/README.md
index ea6cc509..ba1562cc 100644
--- a/README.md
+++ b/README.md
@@ -192,6 +192,8 @@ Follow our WeChat public account.
+ Click and join discord server
+
## ❤️ Acknowledgements
Thanks to all the students who contributed to Chat2DB~
diff --git a/README_CN.md b/README_CN.md
index 110885dc..749357b5 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -14,21 +14,15 @@
-
分享 Chat2DB
-
-
-
-
-
-
-
-
-**许可说明**: Chat2DB 开源内容仅供个人免费使用,如想将该项目用于商业用途,请先联系该项目作者。
-
-Languages: 中文 [English](README.md)
+ Languages: 中文 [English](README.md)
+
+如果觉得 Chat2DB 对您有帮助的话,请帮忙

+的右上角点个⭐ Star 和 Fork,您的支持是 Chat2DB 变得更好最大的动力
+
+
## 案例视频
https://github.com/chat2db/Chat2DB/assets/22975773/b58db908-5768-4a71-aa30-135d202e505f
diff --git a/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMMetaData.java b/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMMetaData.java
index 009d12e1..f6555f64 100644
--- a/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMMetaData.java
+++ b/chat2db-server/chat2db-plugins/chat2db-dm/src/main/java/ai/chat2db/plugin/dm/DMMetaData.java
@@ -34,7 +34,7 @@ public class DMMetaData extends DefaultMetaService implements MetaData {
}
private static String ROUTINES_SQL
- = "SELECT OWNER, NAME, TEXT FROM ALL_SOURCE WHERE TYPE = '%s' AND NAME = '%s' AND NAME = '%s' ORDER BY LINE";
+ = "SELECT OWNER, NAME, TEXT FROM ALL_SOURCE WHERE TYPE = '%s' AND OWNER = '%s' AND NAME = '%s' ORDER BY LINE";
@Override
public Function function(Connection connection, @NotEmpty String databaseName, String schemaName,
diff --git a/chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/java/ai/chat2db/plugin/sqlserver/SqlServerMetaData.java b/chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/java/ai/chat2db/plugin/sqlserver/SqlServerMetaData.java
index 35af5786..d83b3135 100644
--- a/chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/java/ai/chat2db/plugin/sqlserver/SqlServerMetaData.java
+++ b/chat2db-server/chat2db-plugins/chat2db-sqlserver/src/main/java/ai/chat2db/plugin/sqlserver/SqlServerMetaData.java
@@ -68,6 +68,10 @@ public class SqlServerMetaData extends DefaultMetaService implements MetaData {
= "SELECT type_desc, OBJECT_NAME(object_id) AS FunctionName, OBJECT_DEFINITION(object_id) AS "
+ "definition FROM sys.objects WHERE type_desc IN(%s) and name = '%s' ;";
+
+ private static String OBJECT_SQL
+ = "SELECT name FROM sys.objects WHERE type = '%s' and SCHEMA_ID = SCHEMA_ID('%s');";
+
@Override
public Function function(Connection connection, @NotEmpty String databaseName, String schemaName,
String functionName) {
@@ -87,8 +91,22 @@ public class SqlServerMetaData extends DefaultMetaService implements MetaData {
@Override
public List functions(Connection connection, String databaseName, String schemaName) {
- List functions = SQLExecutor.getInstance().functions(connection, databaseName, schemaName);
- return functions.stream().map(function -> removeVersion(function)).collect(Collectors.toList());
+ List functions = new ArrayList<>();
+// List functions = SQLExecutor.getInstance().functions(connection, databaseName, schemaName);
+// return functions.stream().map(function -> removeVersion(function)).collect(Collectors.toList());
+ String sql = String.format(OBJECT_SQL,"FN", schemaName);
+ return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
+ while (resultSet.next()) {
+ Function function = new Function();
+ function.setDatabaseName(databaseName);
+ function.setSchemaName(schemaName);
+ if (resultSet.next()) {
+ function.setFunctionName(resultSet.getString("name"));
+ }
+ functions.add(function);
+ }
+ return functions;
+ });
}
private Function removeVersion(Function function) {
@@ -103,8 +121,20 @@ public class SqlServerMetaData extends DefaultMetaService implements MetaData {
@Override
public List procedures(Connection connection, String databaseName, String schemaName) {
- List procedures = SQLExecutor.getInstance().procedures(connection, databaseName, schemaName);
- return procedures.stream().map(procedure -> removeVersion(procedure)).collect(Collectors.toList());
+ List procedures = new ArrayList<>();
+ String sql = String.format(OBJECT_SQL,"P", schemaName);
+ return SQLExecutor.getInstance().execute(connection, sql, resultSet -> {
+ while (resultSet.next()) {
+ Procedure procedure = new Procedure();
+ procedure.setDatabaseName(databaseName);
+ procedure.setSchemaName(schemaName);
+ if (resultSet.next()) {
+ procedure.setProcedureName(resultSet.getString("name"));
+ }
+ procedures.add(procedure);
+ }
+ return procedures;
+ });
}
private Procedure removeVersion(Procedure procedure) {
diff --git a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DatabaseServiceImpl.java b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DatabaseServiceImpl.java
index bdf1cf8b..589bbc7f 100644
--- a/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DatabaseServiceImpl.java
+++ b/chat2db-server/chat2db-server-domain/chat2db-server-domain-core/src/main/java/ai/chat2db/server/domain/core/impl/DatabaseServiceImpl.java
@@ -87,12 +87,42 @@ public class DatabaseServiceImpl implements DatabaseService {
(key) -> param.isRefresh(), (key) -> {
Connection connection = param.getConnection() == null ? Chat2DBContext.getConnection()
: param.getConnection();
- MetaData metaData = Chat2DBContext.getMetaData();
- return metaData.schemas(connection, param.getDataBaseName());
+ return getSchemaList(param.getDataBaseName(), connection);
});
return ListResult.of(schemas);
}
+
+ private List getSchemaList(String databaseName, Connection connection) {
+ MetaData metaData = Chat2DBContext.getMetaData();
+ List schemas = metaData.schemas(connection,databaseName);
+ sortSchema(schemas,connection);
+ return schemas;
+ }
+
+ private void sortSchema(List schemas,Connection connection) {
+ if (CollectionUtils.isEmpty(schemas)) {
+ return;
+ }
+ String ulr = null;
+ try {
+ ulr = connection.getMetaData().getURL();
+ } catch (SQLException e) {
+ log.error("get url error", e);
+ }
+ // If the database name contains the name of the current database, the current database is placed in the first place
+ int num = -1;
+ for (int i = 0; i < schemas.size(); i++) {
+ if (StringUtils.isNotBlank(ulr) && ulr.contains(schemas.get(i).getName())) {
+ num = i;
+ break;
+ }
+ }
+ if (num != -1 && num != 0) {
+ Collections.swap(schemas, num, 0);
+ }
+ }
+
@Override
public DataResult queryDatabaseSchema(MetaDataQueryParam param) {
MetaSchema metaSchema = new MetaSchema();
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 0ed82aa4..c61644bc 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
@@ -34,7 +34,6 @@ import ai.chat2db.spi.util.SqlUtils;
import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
-import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
@@ -67,7 +66,7 @@ public class DlTemplateServiceImpl implements DlTemplateService {
ListResult listResult = ListResult.of(result);
// 执行sql
for (String originalSql : sqlList) {
- ExecuteResult executeResult = executeSQL(originalSql,dbType,param);
+ ExecuteResult executeResult = executeSQL(originalSql, dbType, param);
result.add(executeResult);
if (!executeResult.getSuccess()) {
listResult.setSuccess(false);
@@ -78,53 +77,44 @@ public class DlTemplateServiceImpl implements DlTemplateService {
return listResult;
}
- private ExecuteResult executeSQL(String originalSql,DbType dbType,DlExecuteParam param) {
- String sql = originalSql;
- int pageNo = 0;
+ private ExecuteResult executeSQL(String originalSql, DbType dbType, DlExecuteParam param) {
+ int pageNo = 1;
int pageSize = 0;
+ Integer offset = null;
+ Integer count = null;
String sqlType = SqlTypeEnum.UNKNOWN.getCode();
// 解析sql分页
SQLStatement sqlStatement;
- boolean autoLimit = false;
try {
- sqlStatement = SQLUtils.parseSingleStatement(sql, dbType);
+ sqlStatement = SQLUtils.parseSingleStatement(originalSql, dbType);
// 是否需要代码帮忙分页
if (sqlStatement instanceof SQLSelectStatement) {
- // 不是查询全部数据 而且 用户自己没有传分页
- autoLimit = BooleanUtils.isNotTrue(param.getPageSizeAll()) && SQLUtils.getLimit(sqlStatement,
- dbType)
- == null;
- if (autoLimit) {
- pageNo = Optional.ofNullable(param.getPageNo()).orElse(1);
- pageSize = Optional.ofNullable(param.getPageSize()).orElse(EasyToolsConstant.MAX_PAGE_SIZE);
- int offset = (pageNo - 1) * pageSize;
- try {
- sql = PagerUtils.limit(sql, dbType, offset, pageSize);
- } catch (Exception e) {
- autoLimit = false;
- }
- }
+ pageNo = Optional.ofNullable(param.getPageNo()).orElse(1);
+ pageSize = Optional.ofNullable(param.getPageSize()).orElse(EasyToolsConstant.MAX_PAGE_SIZE);
+ offset = (pageNo - 1) * pageSize;
+ count = pageSize;
sqlType = SqlTypeEnum.SELECT.getCode();
}
} catch (ParserException e) {
- log.warn("解析sql失败:{}", sql, e);
+ log.warn("解析sql失败:{}", originalSql, e);
}
- ExecuteResult executeResult = execute(sql);
+ ExecuteResult executeResult = execute(originalSql, offset, count);
executeResult.setSqlType(sqlType);
executeResult.setOriginalSql(originalSql);
- // 自动分页
- if (autoLimit) {
+
+ if (SqlTypeEnum.SELECT.getCode().equals(sqlType)) {
executeResult.setPageNo(pageNo);
executeResult.setPageSize(pageSize);
executeResult.setHasNextPage(
CollectionUtils.size(executeResult.getDataList()) >= executeResult.getPageSize());
} else {
- executeResult.setPageNo(1);
+ executeResult.setPageNo(pageNo);
executeResult.setPageSize(CollectionUtils.size(executeResult.getDataList()));
executeResult.setHasNextPage(Boolean.FALSE);
}
+
// Splice row numbers
List newHeaderList = new ArrayList<>();
newHeaderList.add(Header.builder()
@@ -150,9 +140,6 @@ public class DlTemplateServiceImpl implements DlTemplateService {
return executeResult;
}
-
-
-
private String calculateFuzzyTotal(int pageNo, int pageSize, ExecuteResult executeResult) {
int dataSize = CollectionUtils.size(executeResult.getDataList());
if (pageSize <= 0) {
@@ -179,7 +166,7 @@ public class DlTemplateServiceImpl implements DlTemplateService {
throw new BusinessException("dataSource.sqlAnalysisError");
}
sql = PagerUtils.count(sql, dbType);
- ExecuteResult executeResult = execute(sql);
+ ExecuteResult executeResult = execute(sql, null, null);
List> dataList = executeResult.getDataList();
if (CollectionUtils.isEmpty(dataList)) {
@@ -194,10 +181,10 @@ public class DlTemplateServiceImpl implements DlTemplateService {
return DataResult.of(Long.valueOf(count));
}
- private ExecuteResult execute(String sql) {
+ private ExecuteResult execute(String sql, Integer offset, Integer count) {
ExecuteResult executeResult;
try {
- executeResult = SQLExecutor.getInstance().execute(Chat2DBContext.getConnection(), sql);
+ executeResult = SQLExecutor.getInstance().execute(sql, Chat2DBContext.getConnection(), true, offset, count);
} catch (SQLException e) {
log.warn("执行sql:{}异常", sql, e);
executeResult = ExecuteResult.builder()
diff --git a/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/util/EasyIntegerUtils.java b/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/util/EasyIntegerUtils.java
new file mode 100644
index 00000000..1e64099d
--- /dev/null
+++ b/chat2db-server/chat2db-server-tools/chat2db-server-tools-common/src/main/java/ai/chat2db/server/tools/common/util/EasyIntegerUtils.java
@@ -0,0 +1,25 @@
+package ai.chat2db.server.tools.common.util;
+
+public class EasyIntegerUtils {
+
+ /**
+ * 判断2个布尔值是否相同
+ *
+ * @param b1
+ * @param b2
+ * @param defaultValue 默认值 ,假设b1 b2为空的情况下 取哪个默认值
+ * @return
+ */
+ public static boolean equals(Integer b1, Integer b2, Integer defaultValue) {
+ if (b1 == b2) {
+ return true;
+ }
+ if (b1 == null) {
+ b1 = defaultValue;
+ }
+ if (b2 == null) {
+ b2 = defaultValue;
+ }
+ return b1 == b2;
+ }
+}
diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/ChatController.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/ChatController.java
index 634ac703..89ceb821 100644
--- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/ChatController.java
+++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/ChatController.java
@@ -89,7 +89,7 @@ public class ChatController {
/**
* chat的超时时间
*/
- private static final Long CHAT_TIMEOUT = Duration.ofMinutes(10).toMillis();
+ private static final Long CHAT_TIMEOUT = Duration.ofMinutes(50).toMillis();
/**
* 提示语最大token数
diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/listener/RestAIEventSourceListener.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/listener/RestAIEventSourceListener.java
index 8f6aa47d..657c458f 100644
--- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/listener/RestAIEventSourceListener.java
+++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/ai/listener/RestAIEventSourceListener.java
@@ -54,7 +54,7 @@ public class RestAIEventSourceListener extends EventSourceListener {
}
Message message = new Message();
if (StringUtils.isNotBlank(data)) {
- message.setContent(data);
+ message.setContent(data.replace("\"", ""));
sseEmitter.send(SseEmitter.event()
.id(id)
.data(message)
diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ColumnRequest.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ColumnRequest.java
index d0c30cd4..308faf17 100644
--- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ColumnRequest.java
+++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/request/ColumnRequest.java
@@ -35,7 +35,7 @@ public class ColumnRequest {
/**
* 是否为空
*/
- private Boolean nullable;
+ private Integer nullable;
/**
* 是否主键
diff --git a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ColumnVO.java b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ColumnVO.java
index a6f4b90b..c8757b6f 100644
--- a/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ColumnVO.java
+++ b/chat2db-server/chat2db-server-web/chat2db-server-web-api/src/main/java/ai/chat2db/server/web/api/controller/rdb/vo/ColumnVO.java
@@ -38,7 +38,7 @@ public class ColumnVO {
/**
* 是否为空
*/
- private Boolean nullable;
+ private Integer nullable;
/**
* 是否主键
diff --git a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultMetaService.java b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultMetaService.java
index e37b9189..002af04c 100644
--- a/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultMetaService.java
+++ b/chat2db-server/chat2db-spi/src/main/java/ai/chat2db/spi/jdbc/DefaultMetaService.java
@@ -3,7 +3,6 @@ package ai.chat2db.spi.jdbc;
import java.sql.Connection;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
import ai.chat2db.spi.MetaData;
import ai.chat2db.spi.model.Database;
@@ -15,7 +14,6 @@ import ai.chat2db.spi.model.TableColumn;
import ai.chat2db.spi.model.TableIndex;
import ai.chat2db.spi.model.Trigger;
import ai.chat2db.spi.sql.SQLExecutor;
-import org.apache.commons.beanutils.BeanUtils;
/**
* @author jipengfei
@@ -24,25 +22,12 @@ import org.apache.commons.beanutils.BeanUtils;
public class DefaultMetaService implements MetaData {
@Override
public List databases(Connection connection) {
- List dataBases = SQLExecutor.getInstance().databases(connection);
- return dataBases.stream().map(str -> Database.builder().name(str).build()).collect(Collectors.toList());
-
+ return SQLExecutor.getInstance().databases(connection);
}
@Override
public List schemas(Connection connection,String databaseName) {
- List