Commit a110ec2de3ec4e76c7cf45fd9670620500d15f2b
Committed by
Gitee
!1486 perf: 优化数据库兼容性
Merge pull request !1486 from 半栈幼儿员/hotfix/db
Showing
9 changed files
with
10 additions
and
11 deletions
yudao-framework/yudao-spring-boot-starter-biz-data-permission/src/main/java/cn/iocoder/yudao/framework/datapermission/core/rule/dept/DeptDataPermissionRule.java
| @@ -136,7 +136,7 @@ public class DeptDataPermissionRule implements DataPermissionRule { | @@ -136,7 +136,7 @@ public class DeptDataPermissionRule implements DataPermissionRule { | ||
| 136 | JsonUtils.toJsonString(loginUser), tableName, tableAlias, JsonUtils.toJsonString(deptDataPermission)); | 136 | JsonUtils.toJsonString(loginUser), tableName, tableAlias, JsonUtils.toJsonString(deptDataPermission)); |
| 137 | // throw new NullPointerException(String.format("LoginUser(%d) Table(%s/%s) 构建的条件为空", | 137 | // throw new NullPointerException(String.format("LoginUser(%d) Table(%s/%s) 构建的条件为空", |
| 138 | // loginUser.getId(), tableName, tableAlias.getName())); | 138 | // loginUser.getId(), tableName, tableAlias.getName())); |
| 139 | - return EXPRESSION_NULL; | 139 | + return new EqualsTo(null, null); // WHERE null = null,可以保证返回的数据为空 |
| 140 | } | 140 | } |
| 141 | if (deptExpression == null) { | 141 | if (deptExpression == null) { |
| 142 | return userExpression; | 142 | return userExpression; |
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/chat/AiChatMessageDO.java
| @@ -27,7 +27,7 @@ import java.util.List; | @@ -27,7 +27,7 @@ import java.util.List; | ||
| 27 | * @since 2024/4/14 17:35 | 27 | * @since 2024/4/14 17:35 |
| 28 | */ | 28 | */ |
| 29 | @TableName(value = "ai_chat_message", autoResultMap = true) | 29 | @TableName(value = "ai_chat_message", autoResultMap = true) |
| 30 | -@KeySequence("ai_chat_conversation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | 30 | +@KeySequence("ai_chat_message_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 |
| 31 | @Data | 31 | @Data |
| 32 | @Builder | 32 | @Builder |
| 33 | @NoArgsConstructor | 33 | @NoArgsConstructor |
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/dataobject/model/AiApiKeyDO.java
| @@ -14,7 +14,7 @@ import lombok.*; | @@ -14,7 +14,7 @@ import lombok.*; | ||
| 14 | * @author 芋道源码 | 14 | * @author 芋道源码 |
| 15 | */ | 15 | */ |
| 16 | @TableName("ai_api_key") | 16 | @TableName("ai_api_key") |
| 17 | -@KeySequence("ai_chat_conversation_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | 17 | +@KeySequence("ai_api_key_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 |
| 18 | @Data | 18 | @Data |
| 19 | @Builder | 19 | @Builder |
| 20 | @NoArgsConstructor | 20 | @NoArgsConstructor |
yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/dal/mysql/knowledge/AiKnowledgeSegmentMapper.java
| @@ -51,8 +51,7 @@ public interface AiKnowledgeSegmentMapper extends BaseMapperX<AiKnowledgeSegment | @@ -51,8 +51,7 @@ public interface AiKnowledgeSegmentMapper extends BaseMapperX<AiKnowledgeSegment | ||
| 51 | MPJLambdaWrapper<AiKnowledgeSegmentDO> wrapper = new MPJLambdaWrapperX<AiKnowledgeSegmentDO>() | 51 | MPJLambdaWrapper<AiKnowledgeSegmentDO> wrapper = new MPJLambdaWrapperX<AiKnowledgeSegmentDO>() |
| 52 | .selectAs(AiKnowledgeSegmentDO::getDocumentId, AiKnowledgeSegmentProcessRespVO::getDocumentId) | 52 | .selectAs(AiKnowledgeSegmentDO::getDocumentId, AiKnowledgeSegmentProcessRespVO::getDocumentId) |
| 53 | .selectCount(AiKnowledgeSegmentDO::getId, "count") | 53 | .selectCount(AiKnowledgeSegmentDO::getId, "count") |
| 54 | - .select("COUNT(CASE WHEN vector_id > '" + AiKnowledgeSegmentDO.VECTOR_ID_EMPTY | ||
| 55 | - + "' THEN 1 ELSE NULL END) AS embeddingCount") | 54 | + .select("COUNT(CASE WHEN vector_id IS NOT NULL AND vector_id <> '" + AiKnowledgeSegmentDO.VECTOR_ID_EMPTY + "' THEN 1 ELSE NULL END) AS embeddingCount") |
| 56 | .in(AiKnowledgeSegmentDO::getDocumentId, documentIds) | 55 | .in(AiKnowledgeSegmentDO::getDocumentId, documentIds) |
| 57 | .groupBy(AiKnowledgeSegmentDO::getDocumentId); | 56 | .groupBy(AiKnowledgeSegmentDO::getDocumentId); |
| 58 | return selectJoinList(AiKnowledgeSegmentProcessRespVO.class, wrapper); | 57 | return selectJoinList(AiKnowledgeSegmentProcessRespVO.class, wrapper); |
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileCreateReqVO.java
| @@ -28,6 +28,6 @@ public class FileCreateReqVO { | @@ -28,6 +28,6 @@ public class FileCreateReqVO { | ||
| 28 | private String type; | 28 | private String type; |
| 29 | 29 | ||
| 30 | @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED) | 30 | @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED) |
| 31 | - private Integer size; | 31 | + private Long size; |
| 32 | 32 | ||
| 33 | } | 33 | } |
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/file/vo/file/FileRespVO.java
| @@ -28,7 +28,7 @@ public class FileRespVO { | @@ -28,7 +28,7 @@ public class FileRespVO { | ||
| 28 | private String type; | 28 | private String type; |
| 29 | 29 | ||
| 30 | @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED) | 30 | @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED) |
| 31 | - private Integer size; | 31 | + private Long size; |
| 32 | 32 | ||
| 33 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) | 33 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) |
| 34 | private LocalDateTime createTime; | 34 | private LocalDateTime createTime; |
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/dal/dataobject/file/FileDO.java
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/db/DatabaseTableServiceImpl.java
| @@ -59,9 +59,9 @@ public class DatabaseTableServiceImpl implements DatabaseTableService { | @@ -59,9 +59,9 @@ public class DatabaseTableServiceImpl implements DatabaseTableService { | ||
| 59 | strategyConfig.addInclude(name); | 59 | strategyConfig.addInclude(name); |
| 60 | } else { | 60 | } else { |
| 61 | // 移除工作流和定时任务前缀的表名 | 61 | // 移除工作流和定时任务前缀的表名 |
| 62 | - strategyConfig.addExclude("ACT_[\\S\\s]+|QRTZ_[\\S\\s]+|FLW_[\\S\\s]+"); | 62 | + strategyConfig.addExclude("ACT_[\\S\\s]+|QRTZ_[\\S\\s]+|FLW_[\\S\\s]+|act_[\\S\\s]+|qrtz_[\\S\\s]+|flw_[\\S\\s]+"); |
| 63 | // 移除 ORACLE 相关的系统表 | 63 | // 移除 ORACLE 相关的系统表 |
| 64 | - strategyConfig.addExclude("IMPDP_[\\S\\s]+|ALL_[\\S\\s]+|HS_[\\S\\\s]+"); | 64 | + strategyConfig.addExclude("IMPDP_[\\S\\s]+|ALL_[\\S\\s]+|HS_[\\S\\s]+|impdp_[\\S\\s]+|all_[\\S\\s]+|hs_[\\S\s]+"); |
| 65 | strategyConfig.addExclude("[\\S\\s]+\\$[\\S\\s]+|[\\S\\s]+\\$"); // 表里不能有 $,一般有都是系统的表 | 65 | strategyConfig.addExclude("[\\S\\s]+\\$[\\S\\s]+|[\\S\\s]+\\$"); // 表里不能有 $,一般有都是系统的表 |
| 66 | } | 66 | } |
| 67 | 67 |
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/service/file/FileServiceImpl.java
| @@ -88,7 +88,7 @@ public class FileServiceImpl implements FileService { | @@ -88,7 +88,7 @@ public class FileServiceImpl implements FileService { | ||
| 88 | // 3. 保存到数据库 | 88 | // 3. 保存到数据库 |
| 89 | fileMapper.insert(new FileDO().setConfigId(client.getId()) | 89 | fileMapper.insert(new FileDO().setConfigId(client.getId()) |
| 90 | .setName(name).setPath(path).setUrl(url) | 90 | .setName(name).setPath(path).setUrl(url) |
| 91 | - .setType(type).setSize(content.length)); | 91 | + .setType(type).setSize((long) content.length)); |
| 92 | return url; | 92 | return url; |
| 93 | } | 93 | } |
| 94 | 94 |