Processing math: 100%
当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
45 Star 55 Fork 126

openGauss/openGauss-workbench
暂停

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
.gitee
.vscode
.注意openGauss社区已经正式迁移至 Gitcode 平台
ApiTest
lib
openGauss-datakit
plugins
alert-monitor
base-ops
compatibility-assessment
src/main
web-ui
.gitignore
README.md
pom.xml
container-management-plugin
data-migration
data-studio
intelligent-parameter-tuning
oauth-login
observability-instance
observability-log-search
observability-sql-diagnosis
openGauss-tools-monitor
.gitignore
LICENSE
README.md
build.sh
pom.xml
run.sh
克隆/下载
贡献代码
同步代码
Loading...
README

compatibility-assessment

工具介绍

openGauss兼容性评估工具,支持从多个场景下获取sql语句进行兼容性评估,并输出评估报告。 (1)SQL输入类型选择file,则上传.zip文件,文件类型包括:SQL文件、MySQL数据库生成的general log日志、MySQL数据库生成的slow log日志、mybatis的.xml映射文件

(2)SQL输入类型选择collect,则直接连接到待评估数据库上采集SQL,需要填写待评估数据库信息

(3)SQL输入类型选择Attach_Application,则需要选择被附着进程任务获取SQL

评估前准备

在进行评估前,需要安装openGauss数据库节点,并保证该节点能加载到assessment插件,可选插件为dolphin插件。

社区提供的数据库构建包中已包含对应插件。若需要手动编译插件,可参考

https://gitee.com/opengauss/Plugin/tree/master/contrib/assessment

源码安装

通过git命令下载源代码:

进入compatibility-assessment目录,执行sh build.sh进行编译获得可执行jar包compatibility-assessment-5.1.0-exec.jar。

java版本:open JDK11及以上

maven版本:3.6.3及以上

安装说明

  • #下载源码:
    
    #进入根目录
    cd compatibility-assessment
    #编译打包
    mvn clean package -Dmaven.test.skip
    
    
  • 打包完成后在compatibility-assessment/target目录中找到compatibility-assessment-7.0.0-RC2-repackage.jar即为插件安装包。

  • 打开并登陆openGauss一体化平台,点击插件管理-安装插件,将上诉步骤获得的安装包上传并安装。

注意事项

1、评估sql文件,文件中的sql以分号加回车分隔。若sql本身包含分号,限制在sql语句前后加上delimiter //和delimiter ;以保证正确解析sql语句。示例:

select * from t1;
select * from
t2;
delimiter //
create procedure showWebsite1() begin select * from website; end
delimiter ;

2、从mybatis的mapper文件中提取sql,原始xml文件中占位符#{}使用1,2...进行替换,占位符${field}直接替换为filed。对于动态sql标签,沿用mybatis原本的提取规则,但并不对动态标签属性进行类型的校验,仅提取静态sql片段。提取规则及举例如下:

(1). foreach标签
<select id="queryDataByIds" resultType="com.wang.test.demo.entity.User">
   select * from user where id in
    <foreach collection="list" item="item" open="(" separator="," close=")">
        #{item}
    </foreach>
</select>
提取结果:select * from user where id in ($0)
(2). if标签

对if标签的提取规则为:将每个if标签中的sql片段提取后进行拼接得到最终的sql。

<select id="queryDataBySearch" resultType="com.wang.test.demo.entity.User">
   select * from user
   where stage = 'A'
   <if test="age != null and age != ''">
       and age =#{age}
   </if>
   <if test="name != null and name != ''">
       and name =#{name}
   </if>
</select>
提取结果:select * from user where stage = 'A' and age = $0 and name = $1
(3). choose、when、otherwise标签

提取choose标签中首个when标签的内容。

<select id="queryDataBySearchNew" resultType="com.wang.test.demo.entity.User">
    select * from user
    <where>
        <choose>
            <when test="age != null and age != ''">
                and age =#{age}
            </when>
            <when test="name != null and name != ''">
                and name =#{name}
            </when>
            <otherwise>
                stage = 'A'
            </otherwise>
        </choose>
    </where>
</select>
提取结果:select * from user where age = $1
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/opengauss/openGauss-workbench.git
git@gitee.com:opengauss/openGauss-workbench.git
opengauss
openGauss-workbench
openGauss-workbench
master

搜索帮助