System plugins

CREATE PLUGIN

CREATE PLUGIN plugin_name TYPE 'plugin_type' SONAME 'plugin_library'

Loads the given library (if it is not already loaded) and loads the specified plugin from it. The available plugin types include:

  • ranker
  • index_token_filter
  • query_token_filter

For more information on writing plugins, please refer to the plugins documentation.

mysql> CREATE PLUGIN myranker TYPE 'ranker' SONAME 'myplugins.so';
Query OK, 0 rows affected (0.00 sec)

CREATE BUDDY PLUGIN

Buddy plugins can extend Manticore Search's functionality and enable certain queries that are not natively supported. To learn more about creating Buddy plugins, we recommend reading this article.

To create a Buddy plugin, run the following SQL command:

CREATE PLUGIN <username/package name on https://packagist.org/> TYPE 'buddy' VERSION <package version>

You can also use an alias command specifically created for Buddy plugins, which is easier to remember:

CREATE BUDDY PLUGIN <username/package name on https://packagist.org/> VERSION <package version>

This command will install the show-hostname plugin to the plugin_dir and enable it without the need to restart the server.

‹›
  • Example
Example
📋
CREATE PLUGIN manticoresoftware/buddy-plugin-show-hostname TYPE 'buddy' VERSION 'dev-main';

CREATE BUDDY PLUGIN manticoresoftware/buddy-plugin-show-hostname VERSION 'dev-main';

DELETE PLUGIN

DROP PLUGIN plugin_name TYPE 'plugin_type'

Marks the designated plugin for unloading. The unloading process is not instantaneous, as concurrent queries may still be utilizing it. Nevertheless, following a DROP, new queries will no longer have access to the plugin. Subsequently, when all ongoing queries involving the plugin have finished, the plugin will be unloaded. If all plugins from the specified library are unloaded, the library will also be automatically unloaded.

mysql> DROP PLUGIN myranker TYPE 'ranker';
Query OK, 0 rows affected (0.00 sec)

DELETE BUDDY PLUGIN

DELETE BUDDY PLUGIN <username/package name on https://packagist.org/>

This action instantly and permanently removes the installed plugin from the plugin_dir. Once removed, the plugin's features will no longer be available.

‹›
  • Example
Example
📋
DELETE BUDDY PLUGIN manticoresoftware/buddy-plugin-show-hostname

RELOADING PLUGINS

RELOAD PLUGINS FROM SONAME 'plugin_library'

Reloads all plugins (UDFs, rankers, etc.) from a given library. In a sense, the reload process is transactional, ensuring that:

  1. all plugins are successfully updated to their new versions;
  2. the update is atomic, meaning all plugins are replaced simultaneously. This atomicity ensures that queries using multiple functions from a reloaded library will never mix old and new versions.

During the RELOAD, the set of plugins is guaranteed to be consistent; they will either be all old or all new.

The reload process is also seamless, as some version of a reloaded plugin will always be available for concurrent queries, without any temporary disruptions. This is an improvement over using a pair of DROP and CREATE statements for reloading. With those, there is a brief window between the DROP and the subsequent CREATE during which queries technically refer to an unknown plugin and will therefore fail.

If there's any failure, RELOAD PLUGINS does nothing, retains the old plugins, and reports an error.

On Windows, overwriting or deleting a DLL library currently in use can be problematic. However, you can still rename it, place a new version under the old name, and then RELOAD will work. After a successful reload, you'll also be able to delete the renamed old library.

mysql> RELOAD PLUGINS FROM SONAME 'udfexample.dll';
Query OK, 0 rows affected (0.00 sec)