Skip to content

Conversation

@shilyaziw
Copy link

更新datasource插件到nacos v3.0.1,除dm外,其余datasource需要测试

@CLAassistant
Copy link

CLAassistant commented Jun 30, 2025

CLA assistant check
All committers have signed the CLA.

@lingma-agents
Copy link

lingma-agents bot commented Jun 30, 2025

升级Nacos数据源插件至v3.0.1并优化多数据库适配

变更概述

新功能

  • 新增config_info_grayconfig_tags_relationhis_config_info等核心配置表的多数据库适配结构,支持Dameng/Kingbase/Oracle/PostgreSQL等数据库的SQL语法差异
  • 新增ConfigMigrateMapper接口及其各数据库实现类,完善配置迁移功能模块

重构

  • BaseConfigInfoAggrMapper重命名为BaseConfigInfoGrayMapper,并统一各数据库实现类的命名规范
  • 重构ConfigInfoMapper等基础类的数据库方言处理逻辑,通过DatabaseDialectManager统一管理方言特性

数据库变更

  • 更新所有支持数据库的schema定义,新增config_info_gray表结构并添加唯一约束UK_CONFIG_INFO_GRAY
  • 优化GROUP_CAPACITYTENANT_CAPACITY表的索引策略,添加自增主键和分页查询优化字段
  • 调整config_info表的租户字段默认值逻辑,使用NamespaceUtil统一处理命名空间

依赖更新

  • 升级Nacos核心依赖版本至3.0.1
  • 移除nacos-aes-encryption-plugin的冗余依赖声明

安全增强

  • 新增TrustedDamengFunctionEnumTrustedKingbaseFunctionEnum等枚举类,限制SQL函数注入风险
  • 统一各数据库方言对NOW()等内置函数的规范化处理

配置调整

  • 更新META-INF/services映射配置,新增ConfigMigrateMapper等接口实现类的注册
  • 调整数据库方言初始化逻辑,通过枚举类集中管理可信函数列表
变更文件
文件路径 变更说明
nacos-datasource-plugin-ext/​nacos-dm-datasource-plugin-ext/​src/​main/​java/​com/​alibaba/​nacos/​plugin/​datasource/​impl/​dm/​ConfigInfoGrayMapperByDaMeng.​java 新增支持Dameng数据库的灰度配置映射实现
nacos-datasource-plugin-ext/​nacos-dm-datasource-plugin-ext/​src/​main/​resources/​schema/​nacos-dm.​sql 创建config_info_gray等核心表结构,添加唯一约束和索引优化
nacos-datasource-plugin-ext/​nacos-datasource-plugin-ext-base/​src/​main/​java/​com/​alibaba/​nacos/​plugin/​datasource/​impl/​base/​BaseConfigInfoMapper.​java 优化租户字段处理逻辑,使用NamespaceUtil统一默认值
nacos-datasource-plugin-ext/​nacos-opengauss-datasource-plugin-ext/​src/​main/​java/​com/​alibaba/​nacos/​plugin/​datasource/​impl/​opengauss/​OpenGaussConfigMigrateMapper.​java 新增OpenGauss数据库的配置迁移映射实现
nacos-datasource-plugin-ext/​nacos-oracle-datasource-plugin-ext/​src/​main/​resources/​schema/​nacos-oracle.​sql 重构Oracle表结构定义,添加序列和触发器实现自增主键
pom.xml 升级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语句
Loading

💡 小贴士

与 lingma-agents 交流的方式

📜 直接回复评论
直接回复本条评论,lingma-agents 将自动处理您的请求。例如:

  • 在当前代码中添加详细的注释说明。

  • 请详细介绍一下你说的 LRU 改造方案,并使用伪代码加以说明。

📜 在代码行处标记
在文件的特定位置创建评论并 @lingma-agents。例如:

  • @lingma-agents 分析这个方法的性能瓶颈并提供优化建议。

  • @lingma-agents 对这个方法生成优化代码。

📜 在讨论中提问
在任何讨论中 @lingma-agents 来获取帮助。例如:

  • @lingma-agents 请总结上述讨论并提出解决方案。

  • @lingma-agents 请根据讨论内容生成优化代码。

Copy link

@lingma-agents lingma-agents bot left a 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

nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoGrayMapper.java

📋 评审意见详情
💡 代码实现建议
以下是文件级别的代码建议,聚焦于代码的可读性、可维护性和潜在问题。
☕ nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoMapper.java (1 💬)
☕ nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigTagsRelationMapper.java (1 💬)
☕ nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/DaMengDatabaseDialect.java (1 💬)
🛢️ nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/resources/schema/nacos-dm.sql (2 💬)
☕ nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/enums/TrustedKingbaseFunctionEnum.java (1 💬)
☕ 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 💬)
☕ nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoGrayMapper.java (1 💬)
☕ nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoMapper.java (1 💬)
☕ nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigTagsRelationMapper.java (1 💬)
☕ nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussTenantInfoMapper.java (1 💬)
☕ nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/TenantCapacityMapperByOracle.java (1 💬)
🛢️ nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/resources/schema/nacos-oracle.sql (3 💬)
🛢️ nacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/resources/schema/nacos-pg.sql (2 💬)
🚀 架构设计建议
以下是对代码架构和设计的综合分析,聚焦于跨文件交互、系统一致性和潜在优化空间。
🔍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.java
  • nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseHistoryConfigInfoMapper.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigMigrateMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/enums/TrustedKingbaseFunctionEnum.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoGrayMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigMigrateMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mssql/ConfigMigrateMapperBySqlServer.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigMigrateMapper.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoGrayMapperByOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigMigrateMapperByOracle.java
  • nacos-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.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoAggrMapper.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/AbstractOracleMapper.java
  • nacos-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.javanacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoGrayMapper.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/emums/TrustedDaMengFunctionEnum.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/enums/TrustedDamengFunctionEnum.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoAggrMapperByDaMeng.javanacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoGrayMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoAggrMapperByKingbase.javanacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/mssql/ConfigInfoGrayMapperBySqlServer.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/AbstractMapperByGaussdb.javanacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoGrayMapper.java
  • nacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/postgresql/ConfigInfoAggrMapperByPostgresql.javanacos-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.java
  • nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoMapper.java
  • nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigInfoTagMapper.java
  • nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseConfigTagsRelationMapper.java
  • nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseGroupCapacityMapper.java
  • nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseTenantCapacityMapper.java
  • nacos-datasource-plugin-ext/nacos-datasource-plugin-ext-base/src/main/java/com/alibaba/nacos/plugin/datasource/impl/base/BaseTenantInfoMapper.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/DaMengDatabaseDialect.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoBetaMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigInfoTagMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/ConfigTagsRelationMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/GroupCapacityMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/HistoryConfigInfoMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/TenantCapacityMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/dm/TenantInfoMapperByDaMeng.java
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper
  • nacos-datasource-plugin-ext/nacos-dm-datasource-plugin-ext/src/main/resources/schema/nacos-dm.sql
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/KingbaseDatabaseDialect.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoBetaMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigInfoTagMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/ConfigTagsRelationMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/GroupCapacityMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/HistoryConfigInfoMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/TenantCapacityMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/kingbase/TenantInfoMapperByKingbase.java
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper
  • nacos-datasource-plugin-ext/nacos-kingbase-datasource-plugin-ext/src/main/resources/schema/nacos-kingbase.sql
  • nacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper
  • nacos-datasource-plugin-ext/nacos-mssql-datasource-plugin-ext/src/main/resources/schema/nacos-mssql.sql
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/pom.xml
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/dialect/GaussdbDatabaseDialect.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoBetaMapper.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoMapper.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigInfoTagMapper.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussConfigTagsRelationMapper.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussGroupCapacityMapper.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussHistoryConfigInfoMapper.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussTenantCapacityMapper.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/opengauss/OpenGaussTenantInfoMapper.java
  • nacos-datasource-plugin-ext/nacos-opengauss-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoBetaMapperByOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoMapperByOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigInfoTagMapperByOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/ConfigTagsRelationMapperByOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/GroupCapacityMapperByOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/HistoryConfigInfoMapperOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/TenantCapacityMapperByOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/java/com/alibaba/nacos/plugin/datasource/impl/oracle/TenantInfoMapperByOracle.java
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper
  • nacos-datasource-plugin-ext/nacos-oracle-datasource-plugin-ext/src/main/resources/schema/nacos-oracle.sql
  • nacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper
  • nacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/resources/schema/nacos-pg.sql
  • pom.xml

💡 小贴士

与 lingma-agents 交流的方式

📜 直接回复评论
直接回复本条评论,lingma-agents 将自动处理您的请求。例如:

  • 在当前代码中添加详细的注释说明。

  • 请详细介绍一下你说的 LRU 改造方案,并使用伪代码加以说明。

📜 在代码行处标记
在文件的特定位置创建评论并 @lingma-agents。例如:

  • @lingma-agents 分析这个方法的性能瓶颈并提供优化建议。

  • @lingma-agents 对这个方法生成优化代码。

📜 在讨论中提问
在任何讨论中 @lingma-agents 来获取帮助。例如:

  • @lingma-agents 请总结上述讨论并提出解决方案。

  • @lingma-agents 请根据讨论内容生成优化代码。

Comment on lines +119 to +121
"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);
Copy link

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"

您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)

有用意见👍无用意见👎错误意见❌

Comment on lines +145 to +147
where.append(" AND a.type in (?)");
paramList.add(types);
}
Copy link

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;
Copy link

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 '',
Copy link

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字段约束设置,确保全表约束统一。


您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)

有用意见👍无用意见👎错误意见❌

Comment on lines +171 to +172
CREATE TABLE HIS_CONFIG_INFO (
ID BIGINT NOT NULL,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HIS_CONFIG_INFO表缺少外键约束

🟡 Major | 🧹 Code Smells

📋 问题详情

HIS_CONFIG_INFO表的ID字段引用CONFIG_INFO表的ID,但未建立外键约束,可能导致数据不一致

💡 解决方案

添加外键约束确保数据关联性:

-  ID BIGINT NOT NULL,
+  ID BIGINT NOT NULL REFERENCES CONFIG_INFO(ID),

这将保证历史记录与主配置表的数据一致性。


您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)

有用意见👍无用意见👎错误意见❌

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 '密钥';
Copy link

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 lines +448 to +450
COMMENT ON COLUMN permissions.role IS 'role';
COMMENT ON COLUMN permissions.resource IS 'resource';
COMMENT ON COLUMN permissions.action IS 'action';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

补充权限表字段注释

🟢 Minor | 🧹 Code Smells

📋 问题详情

permissions表中,roleresourceaction字段缺少中文注释,仅存在英文注释。建议补充中文注释以符合代码规范。

💡 解决方案

补充中文注释说明:

-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 '操作类型';

您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)

有用意见👍无用意见👎错误意见❌

Comment on lines +552 to +553
kp VARCHAR2(128) NOT NULL,
tenant_id VARCHAR2(128) DEFAULT '',
Copy link

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_creategmt_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';
Copy link

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 '密钥';

您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)

有用意见👍无用意见👎错误意见❌

Comment on lines +245 to +246
id BIGSERIAL NOT NULL,
kp VARCHAR(128) NOT NULL,
Copy link

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_creategmt_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

您的反馈对我们很重要!(建议右键在新标签页中打开以下链接)

有用意见👍无用意见👎错误意见❌

@KomachiSion
Copy link
Contributor

@shilyaziw OpenGauss 已经由原作者适配完毕了, 麻烦同步一下新代码, 解决一下冲突。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants