向MySQL添加功能
有三种向MySQL添加函数的方法:
通过用户定义函数(UDF)界面。用户定义的函数被编译为库文件,然后使用
CREATE FUNCTION
andDROP FUNCTION
语句动态添加到服务器或从服务器中删除。请参见第13.7.4.1节“用户定义的函数的CREATE FUNCTION语法”。在某些情况下,UDF包含在插件或组件库文件中,并且在安装或卸载插件或组件时会自动加载和卸载UDF。通过创建本机(内置)MySQL函数。本机函数被编译到mysqld服务器中,并永久可用。
通过创建存储的函数。这些是使用SQL语句而不是通过编译目标代码编写的。此处不介绍编写存储函数的语法。请参见第24.2节“使用存储的例程”。
创建编译函数的每种方法都有优点和缺点:
如果编写用户定义的函数,则除了服务器本身之外,还必须安装目标文件。如果将函数编译到服务器中,则无需这样做。
本机函数需要您修改源分发。UDF不这样做。您可以将UDF添加到二进制MySQL发行版中。无需访问MySQL源。
如果升级MySQL发行版,则可以继续使用以前安装的UDF,除非升级到UDF接口更改的较新版本。对于本机功能,您必须在每次升级时重复进行修改。
无论您使用哪种方法添加函数,都可以像本地函数(例如ABS()
或)一样在SQL语句中调用它们SOUNDEX()
。
有关描述服务器如何解释对不同类型函数的引用的规则,请参见第9.2.5节“函数名称解析和解析”。
以下各节描述了UDF接口的功能,提供了编写UDF的说明,讨论了MySQL为防止UDF滥用而采取的安全预防措施,并描述了如何添加本机MySQL函数。
例如,说明如何编写UDF的源代码,请看一下sql/udf_example.cc
MySQL源代码发行版中提供的文件。
MySQL源代码包含使用Doxygen编写的内部文档。该文档对于从开发人员的角度了解MySQL的工作方式很有用。生成的Doxygen内容可从https://dev.mysql.com/doc/index-other.html获得。使用第2.9.10节“生成MySQL Doxygen文档内容”中的说明,还可以从MySQL源分发本地生成此内容。