DROP PLUGIN plugin_name TYPE 'plugin_type'
标记指定的插件以便卸载。卸载过程不是即时的,因为并发查询可能仍在使用它。然而,在执行 DROP 后,新查询将不再能够访问该插件。随后,当所有正在进行的涉及该插件的查询完成后,插件将被卸载。如果指定库中的所有插件都被卸载,该库也将被自动卸载。
mysql> DROP PLUGIN myranker TYPE 'ranker';
Query OK, 0 rows affected (0.00 sec)
DELETE BUDDY PLUGIN <username/package name on https://packagist.org/>
注意:DELETE BUDDY PLUGIN 需要 Manticore Buddy。如果无法使用,请确保已安装 Buddy。
此操作会立即且永久地从 plugin_dir 中移除已安装的插件。移除后,插件的功能将不再可用。
DELETE BUDDY PLUGIN manticoresoftware/buddy-plugin-show-hostname
Last modified: August 28, 2025
为了简化对 Buddy 插件的控制,特别是在开发新插件或修改现有插件时,提供了启用和禁用 Buddy 插件的命令。这些命令在运行时临时生效,重启守护进程或执行 Buddy 重置后将恢复默认状态。要永久禁用插件,必须将其移除。
您需要插件的完全限定包名来启用或禁用它。要查找该名称,可以运行 SHOW BUDDY PLUGINS 查询,并在 package 字段中查找完全限定名称。例如,SHOW 插件的完全限定名称是 manticoresoftware/buddy-plugin-show。
ENABLE BUDDY PLUGIN <username/package name on https://packagist.org/>
注意:ENABLE BUDDY PLUGIN 需要 Manticore Buddy。如果无法使用,请确保已安装 Buddy。
此命令重新激活先前禁用的 Buddy 插件,使其能够再次处理您的请求。
ENABLE BUDDY PLUGIN manticoresoftware/buddy-plugin-show
DISABLE BUDDY PLUGIN <username/package name on https://packagist.org/>
此命令停用一个活动的 Buddy 插件,阻止其处理任何后续请求。
DISABLE BUDDY PLUGIN manticoresoftware/buddy-plugin-show
禁用后,如果尝试执行 SHOW QUERIES 命令,将会遇到错误,因为该插件已被禁用。
Last modified: August 28, 2025
RELOAD PLUGINS FROM SONAME 'plugin_library'
从给定的库重新加载所有插件(UDF、排序器等)。从某种意义上说,重新加载过程是事务性的,确保:
- 所有插件都成功更新到它们的新版本;
- 更新是原子的,意味着所有插件同时被替换。此原子性确保使用重新加载库中多个函数的查询永远不会混用旧版本和新版本。
在 RELOAD 期间,插件集合保证是一致的;它们要么全部是旧的,要么全部是新的。
重新加载过程也是无缝的,因为某个版本的重新加载插件将始终可用于并发查询,没有任何临时中断。这比使用一对 DROP 和 CREATE 语句重新加载要好得多。使用后者,在 DROP 和随后的 CREATE 之间存在一个短暂的窗口期,在此期间查询技术上引用的是未知插件,因此会失败。
如果发生任何失败,RELOAD PLUGINS 不执行任何操作,保留旧插件,并报告错误。
在 Windows 上,覆盖或删除当前正在使用的 DLL 库可能会有问题。但是,您仍然可以重命名它,将新版本放在旧名称下,然后 RELOAD 将起作用。成功重新加载后,您还可以删除重命名的旧库。
mysql> RELOAD PLUGINS FROM SONAME 'udfexample.dll';
Query OK, 0 rows affected (0.00 sec)
Last modified: August 28, 2025
Ranker 插件允许您实现一个自定义的 ranker,该 ranker 接收文档中匹配的所有关键词出现,并计算一个 WEIGHT() 值。它们可以按如下方式调用:
SELECT id, attr1 FROM test WHERE match('hello') OPTION ranker=myranker('option1=1');
调用流程如下:
XXX_init() 在每个查询每个表开始时调用一次。通过 SPH_RANKER_INIT 结构传递多个查询范围的选项,包括用户选项字符串(例如,上面示例中的 "option1=1")。
XXX_update() 对每个匹配的文档调用多次,每次传入一个匹配的关键词出现,作为其参数,即 SPH_RANKER_HIT 结构。保证每个文档内的出现按 hit->hit_pos 值升序传递。
XXX_finalize() 在没有更多关键词出现时,对每个匹配的文档调用一次。它必须返回 WEIGHT() 值。此函数是唯一必需的。
XXX_deinit() 在每个查询结束时调用一次。
Last modified: August 28, 2025