In mancher Hinsicht ähnelt die Plug-In-API der älteren UDF-API, die sie ersetzen soll, aber sie bietet eine Reihe von Vorteilen gegenüber ihrer Vorläuferin:
Das Plug-In-Framework ist erweiterbar, sodass es verschiedene Arten von Plug-Ins aufnehmen kann.
Manche Aspekte hat die Plug-In-API mit allen Plug-Ins gemeinsam, aber sie gestattet darüber hinaus auch typspezifische Schnittstellenelemente, sodass unterschiedliche Arten von Plug-Ins erstellt werden können. Ein Plug-In, das einem bestimmten Zweck dient, kann somit die für seine Erfordernisse geeignetste Schnittstelle haben, anstatt sich an den Bedürfnissen eines anderen Plug-In-Typs zu orientieren.
Auch wenn zurzeit nur die Schnittstelle für Volltext-Parser-Plug-Ins implementiert ist, können noch andere hinzukommen, wie beispielsweise eine Schnittsstelle für UDF-Plug-Ins.
Zur Plug-In-API gehören auch Versionsinformationen.
Durch die Versionsinformationen der Plug-In-API kann sich eine Plug-In-Bibliothek sowie jedes in ihr enthaltene Plug-In selbst identifizieren, und zwar mithilfe der API-Version, die zur Erstellung der Bibliothek benutzt wurde. Wenn sich die API mit der Zeit ändert, ändern sich auch die Versionsnummern, aber der Server kann immer anhand der Versionsinformationen einer konkreten Plug-In-Bibliothek herausfinden, ob er die Plug-Ins dieser Bibliothek unterstützt.
Es gibt zwei Arten von Versionsnummern. Die erste ist die Version des allgemeinen Plug-In-Frameworks selbst. Jede Plug-In-Bibliothek enthält diese Art von Versionsnummer. Die zweite ist die Nummer des einzelnen Plug-Ins. Jeder spezifische Typ von Plug-In in einer Bibliothek hat für seine Schnittstelle eine Versionsnummer, sodass jedes Plug-In in einer Bibliothek eine typspezifische Versionsnummer besitzt. So hat beispielsweise eine Bibliothek, in der ein Volltext-Parser-Plug-In liegt, eine allgemeine Plug-In-API-Versionsnummer und das einzelne Plug-In hat seinerseits eine Versionsnummer, die für ebendiese Volltext-Plug-In-Schnittstelle spezifisch ist.
Die Sicherheit der Plug-Ins wurde gegenüber der alten UDF-Schnittstelle verbessert.
Die ältere Schnittstelle zur Erstellung von UDFs ohne Plug-In ermöglichte es, Bibliotheken aus jedem Verzeichnis zu laden, das der dynamische Linker des Systems durchsuchte, und die Symbole zur Identifikation der UDF-Bibliothek waren relativ unspezifisch. Die neueren Regeln sind strenger. Eine Plug-In-Bibliothek muss in einem speziellen dedizierten Verzeichnis installiert sein, dessen Speicherort vom Server kontrolliert wird und zur Laufzeit nicht geändert werden kann. Außerdem muss die Bibliothek bestimmte Symbole enthalten, die sie als Plug-In-Bibliothek kennzeichnen. Der Server wird nichts als Plug-In laden, das nicht als Plug-In gebaut wurde.
Die neuere Plug-In-Schnittstelle löst die Sicherheitsprobleme der älteren UDF-Schnittstelle. Wenn ein UDF-Plug-In-Typ implementiert wird, können Nicht-Plug-In-UDFs in das neue Framework überführt werden und die alte Schnittstelle kann auslaufen.
Die Plug-In-Implementierung besteht aus folgenden Komponenten:
Quelldateien (die angegebenen Speicherorte gelten für eine MySQL-Quelldistribution):
include/plugin.h
stellt die
öffentliche Plug-In-API zur Verfügung. Jeder, der eine
Plug-In-Bibliothek schreiben möchte, sollte sich diese
Datei anschauen.
sql/sql_plugin.h
und
sql/sql_plugin.cc
enthalten die interne
Plug-In-Implementierung. Diese Dateien müssen Verfasser von
Plug-Ins sich nicht anschauen. Nur wenn Sie mehr darüber
erfahren möchten, wie der Server mit Plug-Ins umgeht, sind
diese Dateien für Sie interessant.
Systemtabelle:
Die plugin
-Tabelle in der
mysql
-Datenbank listet alle installierten
Plug-Ins auf und ist für die Nutzung von Plug-Ins
erforderlich. Neuere MySQL-Versionen legen diese Tabelle bei
der Installation an. Wenn Sie von einer älteren Version als
MySQL 5.1 aufrüsten, sollten Sie mit
mysql_fix_privilege_tables Ihre
Systemtabellen aktualisieren und die
plugin
-Tabelle anlegen.
SQL-Anweisungen:
INSTALL PLUGIN
registriert ein Plug-In in
der plugin
-Tabelle und lädt den
Plug-In-Code.
UNINSTALL PLUGIN
deregistriert ein
Plug-In bei der plugin
-Tabelle und und
entlädt den Plug-In-Code.
Die WITH PARSER
-Klausel für die
Erstellung von Volltextindizes verbindet ein
Volltext-Parser-Plug-In mit einem gegebenen
FULLTEXT
-Index.
SHOW PLUGIN
zeigt Informationen über
bekannte Plug-Ins an. Die PLUGINS
-Tabelle
in INFORMATION_SCHEMA
liefert ebenfalls
Informationen über Plug-Ins.
Systemvariable:
plugin_dir
zeigt an, wo im Verzeichnis
alle Plug-Ins installiert werden müssen. Den Wert dieser
Variablen können Sie beim Serverstart mit der Option
--plugin_dir=
angeben.
path
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.