-
Notifications
You must be signed in to change notification settings - Fork 172
V3.0.1 #68
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
V3.0.1 #68
Conversation
升级Nacos数据源插件至v3.0.1并优化多数据库适配变更概述新功能
重构
数据库变更
依赖更新
安全增强
配置调整
变更文件
时序图sequenceDiagram
participant BCM as BaseConfigMigrateMapper
participant DMD as DaMengDatabaseDialect
participant KBD as KingbaseDatabaseDialect
participant OG as OpenGaussDatabaseDialect
BCM->>DMD: getFunction("NOW()")
BCM->>KBD: getPrimaryKeyGeneratedKeys()
BCM->>OG: getLimitPageSqlWithOffset()
DMD-->>BCM: 返回Dameng专用函数SYSDATE()
KBD-->>BCM: 返回自增主键策略
OG-->>BCM: 返回分页查询优化后的SQL语句
💡 小贴士与 lingma-agents 交流的方式📜 直接回复评论
📜 在代码行处标记
📜 在讨论中提问
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔎 代码评审报告
🎯 评审意见概览
| 严重度 | 数量 | 说明 |
|---|---|---|
| 🔴 Blocker | 2 | 阻断性问题,需立即修复。例如:系统崩溃、关键功能不可用或严重安全漏洞。 |
| 🟠 Critical | 6 | 严重问题,高优先级修复。例如:核心功能异常或性能瓶颈影响用户体验。 |
| 🟡 Major | 5 | 主要问题,建议修复。例如:非核心功能缺陷或代码维护性较差。 |
| 🟢 Minor | 5 | 次要问题,酬情优化。例如:代码格式不规范或注释缺失。 |
总计: 18 个问题
⚠️ 需要立即关注的阻断性问题
nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/DaMengDatabaseDialect.java
- 修复枚举类引用的包路径错误 (L21)
nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoGrayMapper.java
- 类重命名导致继承关系断裂 (L19-L29)
📋 评审意见详情
💡 代码实现建议
以下是文件级别的代码建议,聚焦于代码的可读性、可维护性和潜在问题。
☕ nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoMapper.java (1 💬)
- 修复SQL拼接中的语法错误和参数化问题 (L119-L121)
☕ nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigTagsRelationMapper.java (1 💬)
- 修复IN子句参数处理的潜在SQL注入风险 (L145-L147)
☕ nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/DaMengDatabaseDialect.java (1 💬)
- 修复枚举类引用的包路径错误 (L21)
🛢️ nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/resources/schema/nacos-dm.sql (2 💬)
- TENANT_ID字段默认值设置不统一 (L31)
- HIS_CONFIG_INFO表缺少外键约束 (L171-L172)
☕ nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/enums/TrustedKingbaseFunctionEnum.java (1 💬)
- 函数名称查找未处理大小写差异,可能导致未找到函数的情况。 (L34-L39)
☕ nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoBetaMapperByKingbase.java (1 💬)
🛢️ nacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/resources/schema/nacos-mssql.sql (1 💬)
- SQL表字段约束缺失导致数据合法性风险 (L117-L207)
☕ nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoGrayMapper.java (1 💬)
- 类重命名导致继承关系断裂 (L19-L29)
☕ nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoMapper.java (1 💬)
- 修复拼写错误的数据库类型常量名称 (L33)
☕ nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigTagsRelationMapper.java (1 💬)
- 修正类注释中的数据库类型描述错误 (L22-L40)
☕ nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussTenantInfoMapper.java (1 💬)
- 修复数据库类型常量拼写错误 (L31)
☕ nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/TenantCapacityMapperByOracle.java (1 💬)
- 硬编码默认租户ID存在维护风险 (L36-L39)
🛢️ nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/resources/schema/nacos-oracle.sql (3 💬)
- 修正注释中的拼写错误,将'秘钥'改为'密钥' (L67)
- 补充权限表字段注释 (L448-L450)
- 修正tenant_info表的时间字段类型 (L552-L553)
🛢️ nacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/resources/schema/nacos-pg.sql (2 💬)
- 注释中的拼写错误需要修正 (L104)
- tenant_info表的gmt_create/gmt_modified字段数据类型错误 (L245-L246)
🚀 架构设计建议
以下是对代码架构和设计的综合分析,聚焦于跨文件交互、系统一致性和潜在优化空间。
🔍1. 跨数据库schema字段类型与约束不一致
不同数据库的tenant_info表中gmt_create/gmt_modified字段类型不一致(Oracle为BIGINT,其他为TIMESTAMP),且部分表缺少外键约束。例如:达梦数据库的HIS_CONFIG_INFO表未设置外键关联主表CONFIG_INFO的ID字段,可能导致数据完整性风险。需统一各数据库字段类型定义并补充外键约束。
📌 关键代码
CREATE TABLE HIS_CONFIG_INFO ... ID BIGINT NOT NULL
gmt_create BIGINT NOT NULL, gmt_modified BIGINT NOT NULL
数据类型不一致可能导致跨数据库迁移失败,缺少外键约束可能引发孤儿数据问题
🔍2. 租户ID默认值设置不统一
各数据库schema中tenant_id字段的默认值设置不统一。例如达梦数据库设置为'',而Kingbase和PostgreSQL中使用 DEFAULT '',但Oracle使用 DEFAULT 'PUBLIC'。需统一默认值为空字符串并修正注释中的不一致描述。
📌 关键代码
TENANT_ID VARCHAR(128) DEFAULT ''
tenant_id varchar2(128) DEFAULT 'PUBLIC'
多租户功能因默认值差异导致配置隔离失效
🔍3. 函数名大小写处理未统一
Kingbase数据库的TrustedKingbaseFunctionEnum枚举类未处理函数名大小写差异,可能导致因数据库版本差异引发的函数查找失败。需补充函数名大小写标准化处理逻辑
📌 关键代码
未实现函数名大小写转换逻辑不同Kingbase版本可能因函数大小写写法不同导致SQL注入漏洞或功能异常
🔍4. 基础Mapper类继承关系断裂
OpenGauss的OpenGaussConfigInfoMapper类未正确继承新的BaseConfigInfoMapper基类,导致部分通用功能缺失。需检查所有数据库实现是否继承最新基类
📌 关键代码
public class OpenGaussConfigInfoMapper extends AbstractMapperByGaussdb遗漏基类通用方法导致分页查询等核心功能失效
🔍5. 重复实现主键生成方法
多个Kingbase Mapper类重复实现getPrimaryKeyGeneratedKeys方法(违反DRY原则),应在基类统一实现该逻辑
📌 关键代码
public String[] getPrimaryKeyGeneratedKeys() { ... }代码冗余增加维护成本,可能导致不同实现产生不一致行为
🔍6. 枚举类函数映射未全覆盖
达梦数据库的TrustedDamengFunctionEnum仅包含NOW()映射,而其他数据库如Oracle/PostgreSQL的枚举类包含更多函数映射,需确保所有支持函数都有可信枚举覆盖
📌 关键代码
NOW("NOW()", "SYSDATE()")未覆盖函数可能导致SQL注入风险或数据库兼容性问题
🔍7. 历史配置表缺少外键约束
所有数据库的his_config_info表均未设置与config_info表的外键关联,可能导致数据不一致。需补充外键约束确保数据完整性
📌 关键代码
CREATE TABLE HIS_CONFIG_INFO ... ID BIGINT NOT NULL
主表删除数据时历史表残留孤儿记录
🔍8. 配置聚合表被废弃但未清理
配置聚合表config_info_aggr在多个数据库schema中仍然存在,但新代码已删除其Mapper实现。需彻底清理废弃表结构
遗留表结构可能导致schema冲突或存储冗余数据
🔍9. 加密依赖管理不一致
OpenGauss插件在pom.xml中注释掉了加密依赖,而其他数据库仍保留。需统一加密功能依赖管理策略
📌 关键代码
<!-- 注释掉的加密依赖 -->加密功能缺失可能导致敏感配置明文存储
🔍10. 时区处理不统一
各数据库的timestamp字段时区处理方式不同(达梦使用DATETIME(3),Oracle使用TIMESTAMP,PostgreSQL使用TIMESTAMP),需统一时区存储策略
📌 关键代码
gmt_create DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3)
跨数据库时间比较可能出现时区转换错误
审查详情
📒 文件清单 (76 个文件)
✅ 新增: 11 个文件
❌ 删除: 4 个文件
🔄 重命名: 6 个文件
📝 变更: 55 个文件
✅ 新增文件:
nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigMigrateMapper.javanacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseHistoryConfigInfoMapper.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigMigrateMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/enums/TrustedKingbaseFunctionEnum.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoGrayMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigMigrateMapperByKingbase.javanacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mssql/ConfigMigrateMapperBySqlServer.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigMigrateMapper.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoGrayMapperByOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigMigrateMapperByOracle.javanacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/postgresql/ConfigMigrateMapperByPostgresql.java
❌ 删除文件:
nacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mssql/ConfigInfoAggrMapperBySqlServer.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoAggrMapper.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/AbstractOracleMapper.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoAggrMapperByOracle.java
🔄 重命名文件:
nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoAggrMapper.java→nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoGrayMapper.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/emums/TrustedDaMengFunctionEnum.java→nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/enums/TrustedDamengFunctionEnum.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoAggrMapperByDaMeng.java→nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoGrayMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoAggrMapperByKingbase.java→nacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mssql/ConfigInfoGrayMapperBySqlServer.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/AbstractMapperByGaussdb.java→nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoGrayMapper.javanacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/postgresql/ConfigInfoAggrMapperByPostgresql.java→nacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/postgresql/ConfigInfoGrayMapperByPostgresql.java
📝 变更文件:
nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoBetaMapper.javanacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoMapper.javanacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoTagMapper.javanacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigTagsRelationMapper.javanacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseGroupCapacityMapper.javanacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseTenantCapacityMapper.javanacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseTenantInfoMapper.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/DaMengDatabaseDialect.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoBetaMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoTagMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigTagsRelationMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/GroupCapacityMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/HistoryConfigInfoMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/TenantCapacityMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/TenantInfoMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mappernacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/resources/schema/nacos-dm.sqlnacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/KingbaseDatabaseDialect.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoBetaMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoTagMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigTagsRelationMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/GroupCapacityMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/HistoryConfigInfoMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/TenantCapacityMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/TenantInfoMapperByKingbase.javanacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mappernacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/resources/schema/nacos-kingbase.sqlnacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mappernacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/resources/schema/nacos-mssql.sqlnacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/pom.xmlnacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/GaussdbDatabaseDialect.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoBetaMapper.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoMapper.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoTagMapper.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigTagsRelationMapper.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussGroupCapacityMapper.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussHistoryConfigInfoMapper.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussTenantCapacityMapper.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussTenantInfoMapper.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mappernacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoBetaMapperByOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoMapperByOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoTagMapperByOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigTagsRelationMapperByOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/GroupCapacityMapperByOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/HistoryConfigInfoMapperOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/TenantCapacityMapperByOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/TenantInfoMapperByOracle.javanacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mappernacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/resources/schema/nacos-oracle.sqlnacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mappernacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/resources/schema/nacos-pg.sqlpom.xml
💡 小贴士
与 lingma-agents 交流的方式
📜 直接回复评论
直接回复本条评论,lingma-agents 将自动处理您的请求。例如:
-
在当前代码中添加详细的注释说明。
-
请详细介绍一下你说的 LRU 改造方案,并使用伪代码加以说明。
📜 在代码行处标记
在文件的特定位置创建评论并 @lingma-agents。例如:
-
@lingma-agents 分析这个方法的性能瓶颈并提供优化建议。
-
@lingma-agents 对这个方法生成优化代码。
📜 在讨论中提问
在任何讨论中 @lingma-agents 来获取帮助。例如:
-
@lingma-agents 请总结上述讨论并提出解决方案。
-
@lingma-agents 请根据讨论内容生成优化代码。
| "SELECT id,data_id,group_id,tenant_id,app_name," + (needContent ? "content," : "") | ||
| + "md5,gmt_modified,type,encrypted_data_key FROM config_info WHERE id > ? ORDER BY id ASC ", | ||
| startRow, pageSize); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修复SQL拼接中的语法错误和参数化问题
🟠 Critical | 🔓 Vulnerabilities
📋 问题详情
在findAllConfigInfoFragment方法中,SQL拼接的content字段条件处理存在语法风险。原代码直接拼接字符串而未使用参数化查询,可能导致SQL注入风险。此外,needContent ? "content," : ""导致字段逗号多余问题,可能引发语法错误。
💡 解决方案
修改SQL拼接逻辑,避免逗号多余问题并规范参数化:
- "SELECT id,data_id,group_id,tenant_id,app_name," + (needContent ? "content," : "") + "md5,gmt_modified,type,encrypted_data_key FROM config_info WHERE id > ? ORDER BY id ASC "
+ "SELECT id,data_id,group_id,tenant_id,app_name" + (needContent ? ",content" : "") + ",md5,gmt_modified,type,encrypted_data_key FROM config_info WHERE id > ? ORDER BY id ASC"您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
| where.append(" AND a.type in (?)"); | ||
| paramList.add(types); | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修复IN子句参数处理的潜在SQL注入风险
🟠 Critical | 🔓 Vulnerabilities
📋 问题详情
在findConfigInfoLike4PageFetchRows方法中,types参数直接拼接到IN子句中,未使用参数化处理,存在SQL注入风险。
💡 解决方案
修改为安全的参数化处理方式:
- where.append(" AND type in (?)");
- paramList.add(types);
+ where.append(" AND type IN (" + databaseDialect.getArrayPlaceHolder(types.length) + ")");
+ paramList.addAll(Arrays.asList(types));您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
| import com.alibaba.nacos.plugin.datasource.constants.DatabaseTypeConstant; | ||
| import com.alibaba.nacos.plugin.datasource.constants.PrimaryKeyConstant; | ||
| import com.alibaba.nacos.plugin.datasource.emums.TrustedDaMengFunctionEnum; | ||
| import com.alibaba.nacos.plugin.datasource.enums.TrustedDamengFunctionEnum; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修复枚举类引用的包路径错误
🔴 Blocker | 🐞 Bugs
📋 问题详情
原代码引用了已重命名的枚举类TrustedDaMengFunctionEnum,但包路径仍指向旧的emnums包,导致编译失败。
💡 解决方案
更新包名和类名:
-import com.alibaba.nacos.plugin.datasource.emums.TrustedDaMengFunctionEnum;
+import com.alibaba.nacos.plugin.datasource.enums.TrustedDamengFunctionEnum;您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
| SRC_USER CLOB, | ||
| SRC_IP VARCHAR(50) DEFAULT NULL, | ||
| APP_NAME VARCHAR(128) DEFAULT NULL, | ||
| TENANT_ID VARCHAR(128) DEFAULT '', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TENANT_ID字段默认值设置不统一
🟡 Major | 🧹 Code Smells
📋 问题详情
在CONFIG_INFO表TENANT_ID字段使用DEFAULT '',而GROUP_CAPACITY表中同样字段使用DEFAULT '' NULL,存在配置不一致风险
💡 解决方案
补充NOT NULL约束保持字段约束一致性:
-TENANT_ID VARCHAR(128) DEFAULT '',
+TENANT_ID VARCHAR(128) DEFAULT '' NOT NULL,需同步检查其他表的TENANT_ID字段约束设置,确保全表约束统一。
您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
| CREATE TABLE HIS_CONFIG_INFO ( | ||
| ID BIGINT NOT NULL, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| COMMENT ON COLUMN config_info.effect IS '配置生效的描述'; | ||
| COMMENT ON COLUMN config_info.type IS '配置的类型'; | ||
| COMMENT ON COLUMN config_info.c_schema IS '配置的模式'; | ||
| COMMENT ON COLUMN config_info.encrypted_data_key IS '密钥'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修正注释中的拼写错误,将'秘钥'改为'密钥'
🟢 Minor | 🧹 Code Smells
📋 问题详情
在config_info表的encrypted_data_key字段注释中,发现注释内容为'秘钥',存在汉字拼写错误。'密钥'是正确的术语,使用错误的汉字可能引起理解混淆,影响代码可维护性和文档准确性。
💡 解决方案
将注释中的错别字修正:
-COMMENT ON COLUMN config_info.encrypted_data_key IS '秘钥';
+COMMENT ON COLUMN config_info.encrypted_data_key IS '密钥';您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
| COMMENT ON COLUMN permissions.role IS 'role'; | ||
| COMMENT ON COLUMN permissions.resource IS 'resource'; | ||
| COMMENT ON COLUMN permissions.action IS 'action'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
补充权限表字段注释
🟢 Minor | 🧹 Code Smells
📋 问题详情
在permissions表中,role、resource、action字段缺少中文注释,仅存在英文注释。建议补充中文注释以符合代码规范。
💡 解决方案
补充中文注释说明:
-COMMENT ON COLUMN permissions.role IS 'role';
+COMMENT ON COLUMN permissions.role IS '角色名称';
-COMMENT ON COLUMN permissions.resource IS 'resource';
+COMMENT ON COLUMN permissions.resource IS '资源路径';
-COMMENT ON COLUMN permissions.action IS 'action';
+COMMENT ON COLUMN permissions.action IS '操作类型';您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
| kp VARCHAR2(128) NOT NULL, | ||
| tenant_id VARCHAR2(128) DEFAULT '', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
修正tenant_info表的时间字段类型
🟡 Major | 🧹 Code Smells
📋 问题详情
在tenant_info表中,gmt_create和gmt_modified字段使用NUMBER(20)类型存储时间,但Oracle推荐使用TIMESTAMP类型存储时间信息。使用数值类型可能导致时间解析复杂度增加,且不符合数据库设计规范。
💡 解决方案
修改字段类型为TIMESTAMP:
-gmt_create NUMBER(20) NOT NULL,
-gmt_modified NUMBER(20) NOT NULL
+gmt_create TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
+gmt_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
| COMMENT ON COLUMN config_info_gray.tenant_id IS 'tenant_id'; | ||
| COMMENT ON COLUMN config_info_gray.gray_name IS 'gray_name'; | ||
| COMMENT ON COLUMN config_info_gray.gray_rule IS 'gray_rule'; | ||
| COMMENT ON COLUMN config_info_gray.encrypted_data_key IS 'encrypted_data_key'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
注释中的拼写错误需要修正
🟢 Minor | 🧹 Code Smells
📋 问题详情
在config_info表的encrypted_data_key列注释中,旧代码使用了'秘钥',新代码中修正为'密钥',但其他表如config_info_gray的同名字段注释仍存在拼写错误。建议统一使用'密钥'作为标准注释。
💡 解决方案
修改encrypted_data_key列的注释:
-COMMENT ON COLUMN config_info_gray.encrypted_data_key IS 'encrypted_data_key';
+COMMENT ON COLUMN config_info_gray.encrypted_data_key IS '密钥';您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
| id BIGSERIAL NOT NULL, | ||
| kp VARCHAR(128) NOT NULL, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tenant_info表的gmt_create/gmt_modified字段数据类型错误
🟠 Critical | 🐞 Bugs
📋 问题详情
旧代码中tenant_info表的gmt_create和gmt_modified字段使用BIGINT类型存储时间戳,而新代码改为BIGSERIAL类型,可能导致存储格式错误(BIGSERIAL是自增序列,而非时间戳)。建议恢复为TIMESTAMP类型。
💡 解决方案
修改字段类型为TIMESTAMP:
-gmt_create BIGINT NOT NULL,
-gmt_modified BIGINT NOT NULL
+gmt_create TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+gmt_modified TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)
|
@shilyaziw OpenGauss 已经由原作者适配完毕了, 麻烦同步一下新代码, 解决一下冲突。 |
更新datasource插件到nacos v3.0.1,除dm外,其余datasource需要测试