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片段。提取规则及举例如下:
<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)
对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
提取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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。