请教MySQL创建函数的soname关键字使用找到这么段东西MySQL怎么实现abs:
mysql help soname
Name: 'CREATE FUNCTION'
Description:
Syntax:
CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL}
SONAME shared_library_name
A user-defined function (UDF) is a way to extend MySQL with a new
function that works like a native (built-in) MySQL function such as
ABS() or CONCAT().
function_name is the name that should be used in SQL statements to
invoke the function. The RETURNS clause indicates the type of the
function's return value. As of MySQL 5.0.3, DECIMAL is a legal value
after RETURNS, but currently DECIMAL functions return string values and
should be written like STRING functions.
shared_library_name is the basename of the shared object file that
contains the code that implements the function. The file must be
located in a directory that is searched by your system's dynamic
linker.
To create a function, you must have the INSERT and privilege for the
mysql database. This is necessary because CREATE FUNCTION adds a row to
the mysql.func system table that records the function's name, type, and
shared library name. If you do not have this table, you should run the
mysql_upgrade command to create it.
mysql udf函数怎么调用背景
在上一篇推文中,我们介绍了 MySQL Group Replication 8.0.16 支持信息碎片化功能来增强大型事务处理能力 。
如果您想在组复制中使用该功能,则任何组成员的版本都不能低于 8.0.16!
简单地说就是由于低版本协议上不支持 。MySQL 8.0.16 的组通讯开始支持新协议,简称“分段协议”,之前的版本中只有一种“压缩协议” 。
如果多个成员想加入复制组,那么在协议匹配上遵循以下原则:
现有复制组成员和新加入成员版本相同 , 加入成功 。
低版本成员想加入高版本的组会被驱逐,加入失败 。
高版本的成员想加入低版本的组 , 单独加入成功 , 多个加入失败 。
例如:
一个 MySQL Server 8.0.16 实例可以成功加入使用通信协议版本 5.7.24 的组 。
一个 MySQL Server 5.7.24 实例无法成功加入使用通信协议版本 8.0.16 的组 。
两个 MySQL Server 8.0.16 实例无法同时加入使用通信协议版本 5.7.24 的组 。
两个 MySQL Server 8.0.16 实例可以同时加入使用通信协议版本 8.0.16 的组 。
新增 UDF
为了能让高版本的复制组更便于加入低版本的成员,MySQL 8.0.16 新增两个 UDF 。
您可以使用两个新的 UDF 命令去管理组通信协议:
1. group_replication_set_communication_protocol(new_protocol)
设置组复制通讯协议版本
SELECT group_replication_set_communication_protocol("8.0.15");
填入一个所有成员都支持的版本号,即:new_protocol ≤ 所有成员的 MySQL版本 。
new_protocol 格式:major.minor.patch (主版本号.次版本号.发布版本号)例如:8.0.15 。
2. group_replication_get_communication_protocol()
获取复制中最旧成员的 MySQL 版本号
SELECT group_replication_get_communication_protocol();+------------------------------------------------+| group_replication_get_communication_protocol() |+------------------------------------------------+| 5.7.14|+------------------------------------------------+
获取的版本号可能与设置的值不一致 , 但不一致的版本之间组复制协议是一样的 。
返回结果格式:major.minor.patch (主版本号.次版本号.发布版本号)例如:8.0.15 。
以上两个 UDF 对全部组成员有效,主机或从机上均可执行 。
结论
若想使用信息碎片功能 。建议将组复制成员全部升级为 8.0.16 。
推荐阅读
- thinkphp多级内容添加,thinkphp添加数据
- mysql可以安装到u盘,mysql80怎么安装到其他盘
- mis系统和erp系统,erp与mis的区别与联系
- go语言的结构体和方法 go语言的nil
- 医疗公司如何做推广业务,医疗营销推广
- 怎么安装新笔记本电脑软件,新笔记本如何下载安装软件
- 安卓手机如何管理任务,安卓手机多任务设置方法
- vb.net马赛克识别的简单介绍
- linux停止代理命令,linux系统怎么停止服务