mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2025-08-02 13:34:07 +08:00
Fixed the problem of direct query table data error due to characters
This commit is contained in:
@ -21,6 +21,7 @@ import ai.chat2db.spi.model.TableMeta;
|
||||
import ai.chat2db.spi.sql.SQLExecutor;
|
||||
import ai.chat2db.spi.util.SortUtils;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
public class DB2MetaData extends DefaultMetaService implements MetaData {
|
||||
|
||||
@ -156,5 +157,9 @@ public class DB2MetaData extends DefaultMetaService implements MetaData {
|
||||
.defaultValues(DB2DefaultValueEnum.getDefaultValues())
|
||||
.build();
|
||||
}
|
||||
@Override
|
||||
public String getMetaDataName(String... names) {
|
||||
return Arrays.stream(names).filter(name -> StringUtils.isNotBlank(name)).map(name -> "\"" + name + "\"").collect(Collectors.joining("."));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.ResultSetMetaData;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import ai.chat2db.plugin.h2.builder.H2SqlBuilder;
|
||||
import ai.chat2db.spi.MetaData;
|
||||
@ -14,6 +15,7 @@ import ai.chat2db.spi.model.*;
|
||||
import ai.chat2db.spi.sql.SQLExecutor;
|
||||
import ai.chat2db.spi.util.SortUtils;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
public class H2Meta extends DefaultMetaService implements MetaData {
|
||||
|
||||
@ -198,4 +200,9 @@ public class H2Meta extends DefaultMetaService implements MetaData {
|
||||
return new H2SqlBuilder();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getMetaDataName(String... names) {
|
||||
return Arrays.stream(names).filter(name -> StringUtils.isNotBlank(name)).map(name -> "\"" + name + "\"").collect(Collectors.joining("."));
|
||||
}
|
||||
}
|
||||
|
@ -2,8 +2,19 @@ package ai.chat2db.plugin.mongodb;
|
||||
|
||||
import ai.chat2db.spi.MetaData;
|
||||
import ai.chat2db.spi.jdbc.DefaultMetaService;
|
||||
import ai.chat2db.spi.model.Database;
|
||||
import ai.chat2db.spi.sql.SQLExecutor;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
|
||||
public class MongodbMetaData extends DefaultMetaService implements MetaData {
|
||||
|
||||
@Override
|
||||
public List<Database> databases(Connection connection) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"dbType": "MONGODB",
|
||||
"supportDatabase": true,
|
||||
"supportDatabase": false,
|
||||
"supportSchema": true,
|
||||
"driverConfigList": [
|
||||
{
|
||||
|
@ -4,4 +4,6 @@ import ai.chat2db.spi.MetaData;
|
||||
import ai.chat2db.spi.jdbc.DefaultMetaService;
|
||||
|
||||
public class OceanBaseMetaData extends DefaultMetaService implements MetaData {
|
||||
|
||||
|
||||
}
|
||||
|
@ -302,4 +302,8 @@ public class PostgreSQLMetaData extends DefaultMetaService implements MetaData {
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMetaDataName(String... names) {
|
||||
return Arrays.stream(names).filter(name -> StringUtils.isNotBlank(name)).map(name -> "\"" + name + "\"").collect(Collectors.joining("."));
|
||||
}
|
||||
}
|
||||
|
@ -96,11 +96,9 @@
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-context</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.manticore-projects.jsqlformatter</groupId>
|
||||
<artifactId>jsqlformatter</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<groupId>com.github.vertical-blank</groupId>
|
||||
<artifactId>sql-formatter</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
@ -23,6 +23,7 @@ import ai.chat2db.server.web.api.controller.rdb.vo.ExecuteResultVO;
|
||||
import ai.chat2db.server.web.api.http.GatewayClientService;
|
||||
import ai.chat2db.server.web.api.http.request.SqlExecuteHistoryCreateRequest;
|
||||
import ai.chat2db.server.web.api.util.ApplicationContextUtil;
|
||||
import ai.chat2db.spi.MetaData;
|
||||
import ai.chat2db.spi.model.ExecuteResult;
|
||||
import ai.chat2db.spi.sql.Chat2DBContext;
|
||||
import com.google.common.collect.Lists;
|
||||
@ -124,8 +125,9 @@ public class RdbDmlController {
|
||||
if (DataSourceTypeEnum.MONGODB.getCode().equals(type)) {
|
||||
param.setSql("db." + request.getTableName() + ".find()");
|
||||
} else {
|
||||
MetaData metaData = Chat2DBContext.getMetaData();
|
||||
// 拼接`tableName`,避免关键字被占用问题
|
||||
param.setSql("select * from " +"`"+ request.getTableName()+"`");
|
||||
param.setSql("select * from " + metaData.getMetaDataName(request.getTableName()));
|
||||
}
|
||||
return dlTemplateService.execute(param)
|
||||
.map(rdbWebConverter::dto2vo);
|
||||
|
@ -3,7 +3,7 @@ package ai.chat2db.server.web.api.controller.sql;
|
||||
import ai.chat2db.server.tools.base.wrapper.result.DataResult;
|
||||
import ai.chat2db.server.web.api.aspect.ConnectionInfoAspect;
|
||||
import ai.chat2db.server.web.api.controller.sql.request.SqlFormatRequest;
|
||||
import com.manticore.jsqlformatter.JSQLFormatter;
|
||||
import com.github.vertical_blank.sqlformatter.SqlFormatter;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
@ -27,7 +27,7 @@ public class SqlController {
|
||||
public DataResult<String> list(@Valid SqlFormatRequest sqlFormatRequest) {
|
||||
String sql = sqlFormatRequest.getSql();
|
||||
try {
|
||||
sql = JSQLFormatter.format(sql);
|
||||
sql = SqlFormatter.format(sql);
|
||||
} catch (Exception e) {
|
||||
// ignore
|
||||
}
|
||||
|
@ -313,7 +313,11 @@
|
||||
<artifactId>bson</artifactId>
|
||||
<version>4.11.1</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.vertical-blank</groupId>
|
||||
<artifactId>sql-formatter</artifactId>
|
||||
<version>2.0.4</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
|
||||
|
Reference in New Issue
Block a user