## 5.7 MySQL Server Loadable Functions

[5.7.1 Installing and Uninstalling Loadable Functions](function-loading.html)
[5.7.2 Obtaining Information About Loadable Functions](obtaining-loadable-function-information.html)

[]()[]()[]()

 MySQL supports loadable functions, that is, functions that are not built in but can be loaded at runtime (either during startup or later) to extend server capabilities, or unloaded to remove capabilities. For a table describing the available loadable functions, see [Section 12.2, “Loadable Function Reference”](loadable-function-reference.html). Loadable functions contrast with built-in (native) functions, which are implemented as part of the server and are always available; for a table, see [Section 12.1, “Built-In Function and Operator Reference”](built-in-function-reference.html).

Note

 Loadable functions previously were known as user-defined functions (UDFs). That terminology was something of a misnomer because “user-defined” also can apply to other types of functions, such as stored functions (a type of stored object written using SQL) and native functions added by modifying the server source code.

 MySQL distributions include loadable functions that implement, in whole or in part, these server capabilities:

* Group Replication enables you to create a highly available distributed MySQL service across a group of MySQL server instances, with data consistency, conflict detection and resolution, and group membership services all built-in. See [Chapter 18, *Group Replication*](group-replication.html).

* MySQL Enterprise Edition includes functions that perform encryption operations based on the OpenSSL library. See [Section 6.6, “MySQL Enterprise Encryption”](enterprise-encryption.html).

* MySQL Enterprise Edition includes functions that provide an SQL-level API for masking and de-identification operations. See [Section 6.5.1, “MySQL Enterprise Data Masking and De-Identification Elements”](data-masking-elements.html).

* MySQL Enterprise Edition includes audit logging for monitoring and logging of connection and query activity. See [Section 6.4.5, “MySQL Enterprise Audit”](audit-log.html), and [Section 6.4.6, “The Audit Message Component”](audit-api-message-emit.html).

* MySQL Enterprise Edition includes a firewall capability that implements an application-level firewall to enable database administrators to permit or deny SQL statement execution based on matching against patterns for accepted statement. See [Section 6.4.7, “MySQL Enterprise Firewall”](firewall.html).

* A query rewriter examines statements received by MySQL Server and possibly rewrites them before the server executes them. See [Section 5.6.4, “The Rewriter Query Rewrite Plugin”](rewriter-query-rewrite-plugin.html)

* Version Tokens enables creation of and synchronization around server tokens that applications can use to prevent accessing incorrect or out-of-date data. See [Section 5.6.6, “Version Tokens”](version-tokens.html).

* The MySQL Keyring provides secure storage for sensitive information. See [Section 6.4.4, “The MySQL Keyring”](keyring.html).

* A locking service provides a locking interface for application use. See [Section 5.6.9.1, “The Locking Service”](locking-service.html).

* A function provides access to query attributes. See [Section 9.6, “Query Attributes”](query-attributes.html).

 The following sections describe how to install and uninstall loadable functions, and how to determine at runtime which loadable functions are installed and obtain information about them.

 In some cases, a loadable function is loaded by installing the component that implements the function, rather than by loading the function directly. For details about a particular loadable function, see the installation instructions for the server feature that includes it.

[]()

 For information about writing loadable functions, see [Adding Functions to MySQL](https://dev.mysql.com/doc/extending-mysql/8.0/en/adding-functions.html).

