<div id="docs-body">
 <div class="section">
  <div class="titlepage">
   <div>
    <div>
     <h2 class="title">
      <a name="server-loadable-functions">
      </a>
      7.7 MySQL Server Loadable Functions
     </h2>
    </div>
   </div>
  </div>
  <div class="toc">
   <dl class="toc">
    <dt>
     <span class="section">
      <a href="function-loading.html">
       7.7.1 Installing and Uninstalling Loadable Functions
      </a>
     </span>
    </dt>
    <dt>
     <span class="section">
      <a href="obtaining-loadable-function-information.html">
       7.7.2 Obtaining Information About Loadable Functions
      </a>
     </span>
    </dt>
   </dl>
  </div>
  <a class="indexterm" name="idm46045254244496">
  </a>
  <a class="indexterm" name="idm46045254243424">
  </a>
  <a class="indexterm" name="idm46045254241936">
  </a>
  <p>
   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
   <a class="xref" href="loadable-function-reference.html" title="14.2 Loadable Function Reference">
    Section 14.2, “Loadable Function Reference”
   </a>
   .
    Loadable functions contrast with built-in (native) functions, which
    are implemented as part of the server and are always available; for
    a table, see
   <a class="xref" href="built-in-function-reference.html" title="14.1 Built-In Function and Operator Reference">
    Section 14.1, “Built-In Function and Operator Reference”
   </a>
   .
  </p>
  <div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
   <div class="admon-title">
    Note
   </div>
   <p>
    Loadable functions previously were known as user-defined functions
      (UDFs). That terminology was something of a misnomer because
    <span class="quote">
     “
     <span class="quote">
      user-defined
     </span>
     ”
    </span>
    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.
   </p>
  </div>
  <p>
   MySQL distributions include loadable functions that implement, in
    whole or in part, these server capabilities:
  </p>
  <div class="itemizedlist">
   <ul class="itemizedlist" style="list-style-type: disc; ">
    <li class="listitem">
     <p>
      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
      <a class="xref" href="group-replication.html" title="Chapter 20 Group Replication">
       Chapter 20,
       <i>
        Group Replication
       </i>
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      MySQL Enterprise Edition includes functions that perform encryption operations
        based on the OpenSSL library. See
      <a class="xref" href="enterprise-encryption.html" title="8.6 MySQL Enterprise Encryption">
       Section 8.6, “MySQL Enterprise Encryption”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      MySQL Enterprise Edition includes functions that provide an SQL-level API for
        masking and de-identification operations. See
      <a class="xref" href="data-masking.html" title="8.5 MySQL Enterprise Data Masking and De-Identification">
       Section 8.5, “MySQL Enterprise Data Masking and De-Identification”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      MySQL Enterprise Edition includes audit logging for monitoring and logging of
        connection and query activity. See
      <a class="xref" href="audit-log.html" title="8.4.5 MySQL Enterprise Audit">
       Section 8.4.5, “MySQL Enterprise Audit”
      </a>
      ,
        and
      <a class="xref" href="audit-api-message-emit.html" title="8.4.6 The Audit Message Component">
       Section 8.4.6, “The Audit Message Component”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      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
      <a class="xref" href="firewall.html" title="8.4.7 MySQL Enterprise Firewall">
       Section 8.4.7, “MySQL Enterprise Firewall”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      A query rewriter examines statements received by MySQL Server
        and possibly rewrites them before the server executes them. See
      <a class="xref" href="rewriter-query-rewrite-plugin.html" title="7.6.4 The Rewriter Query Rewrite Plugin">
       Section 7.6.4, “The Rewriter Query Rewrite Plugin”
      </a>
     </p>
    </li>
    <li class="listitem">
     <p>
      Version Tokens enables creation of and synchronization around
        server tokens that applications can use to prevent accessing
        incorrect or out-of-date data. See
      <a class="xref" href="version-tokens.html" title="7.6.6 Version Tokens">
       Section 7.6.6, “Version Tokens”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      The MySQL Keyring provides secure storage for sensitive
        information. See
      <a class="xref" href="keyring.html" title="8.4.4 The MySQL Keyring">
       Section 8.4.4, “The MySQL Keyring”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      A locking service provides a locking interface for application
        use. See
      <a class="xref" href="locking-service.html" title="7.6.9.1 The Locking Service">
       Section 7.6.9.1, “The Locking Service”
      </a>
      .
     </p>
    </li>
    <li class="listitem">
     <p>
      A function provides access to query attributes. See
      <a class="xref" href="query-attributes.html" title="11.6 Query Attributes">
       Section 11.6, “Query Attributes”
      </a>
      .
     </p>
    </li>
   </ul>
  </div>
  <p>
   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.
  </p>
  <p>
   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.
  </p>
  <a class="indexterm" name="idm46045254217280">
  </a>
  <p>
   For information about writing loadable functions, see
   <a class="ulink" href="/doc/extending-mysql/8.4/en/adding-functions.html" target="_top">
    Adding Functions to MySQL
   </a>
   .
  </p>
 </div>
 <br/>
</div>
