
【我和openGauss的故事】浅尝 openGauss v5.0.0 的 MySQL 语法兼容性
在 openGauss 中,以下简称 og5 ,提供了一个名为 Dolphin 的插件,并以此来提供 MySQL 的兼容性。
本文将以 openGauss v5.0.0 版本为基础,对照 PostgreSQL v15.2 和 MariaDB 10.7.3 来演示 Dolphin 插件的基础功能。
openGauss提供dolphin Extension(版本为dolphin-1.0.0)。dolphin Extension是openGauss的MySQL兼容性数据库(dbcompatibility=‘B’)扩展,从关键字、数据类型、常量与宏、函数和操作符、表达式、类型转换、DDL/DML/DCL语法、存储过程/自定义函数、系统视图等方面兼容MySQL数据库。
环境准备
为验证本文中所使用的 SQL 语句,特意准备了一套实验环境,并为了做对照实验,还准备了 PostgreSQL 和 MariaDB 。
分别连接到 DB 后,屏幕信息展示如下。
启用 Dolphin 插件
在 og5 中,新创建一个数据库,安装 Dophin 插件,并将参数开关打开:
校验以下,可以看到插件已经安装,兼容模式已经开启:
这里也出现了第一个兼容说明,可以像在mysql中查看插件一样,在og中使用 show plugins 语法
兼容性测试
启用兼容模式后,意味着兼容 MySQL 语法,但并不代表完全兼容,可能是完全兼容、部分兼容,或者不兼容。
下面具体举例来看。
DDL
在 mysql 中,创建 schema 之后,可以使用 use 切换,而在 pg 中需要 set search_path.
在 og 中,同样可以使用 use,并且功能同 search_path 切换。
- mariadb
- pg
- og
再看下创建表:
og/pg 不支持 create or replcace,
但是都支持 create table if not exists,
在 pg 中查询建表语句不是很方便,只能自己写方法或者借助第三方工具,在 MariaDB 中只需 show create table 即可,
来看下 og 的表现:
更多 DDL 语法可参考文档:DDL语法一览表
进程信息
在 pg 中,可以通过系统表 pg_stat_activity 查看活跃的进程信息,效果如下:
而在 mysql 中可以使用 show processlist, 如:
那么在 og 中,也兼容了该语法,只是会将内部线程和外部会话都显示出来:
这当前这个演示示例中,我们看到了一个命令为 HeidiSQL 的进程,此时我们想杀掉这个会话,
那么在 pg 中需要使用 select pg_terminate_backend(pid);
而在兼容 mysql 的 og 里可以使用 kill <id>
命令来处理:
再次查询进程信息,发现对应 id 的进程已经消失。
字符处理
dophin 对个别数据类型,及四则运算都有一定程度的改动,由于篇幅有限,详细内容请参考文档。
这里演示一下 format 函数的使用, pg 中不支持,
在 og 中的效果如下,与mairadb中的表现一致:
但需要说明的是,og 中默认使用 en_US 格式,还可以指定其他格式,如:
德语的数字标点和英文中的有所区别。
总结
关于 Dophin 插件还有很多特性有待探索,比如最基础的数据类型比对,后期有时间可以专门出个长篇与大家分享。
openGauss 作为国产数据库的标杆产品,有着庞大的资源投入与关注度,希望 openGauss 可以持续发力,为国产数据库事业添砖加瓦。
文章转载自公众号:openGauss
