Als Erstes muss die Speicher-Engine den Methodenaufruf zur Erzeugung einer neuen Handler-Instanz unterstützen.
Vor dem Handlerton
muss in der Quelldatei der
Speicher-Engine ein Funktions-Header für die
Instanziierungsfunktion definiert werden. Hier ist ein Beispiel
aus der CSV
-Engine:
static handler* tina_create_handler(TABLE *table);
Wie Sie sehen, nimmt die Funktion einen Zeiger auf die Tabelle entgegen, welche der Handler verwalten soll, und liefert das Handler-Objekt zurück.
Wenn der Funktions-Header definiert ist, wird die Funktion durch
einen Funktionszeiger im
create()
-handlerton
-Element
angesprochen, um anzuzeigen, dass sie für die Erzeugung neuer
Handler-Instanzen zuständig ist.
Das folgende Beispiel zeigt die Instanziierungsfunktion der
Speicher-Engine MyISAM
:
static handler *myisam_create_handler(TABLE *table) { return new ha_myisam(table); }
Dieser Aufruf arbeitet mit dem Konstruktor der Speicher-Engine.
Das folgende Beispiel stammt von der Storage-Engine
FEDERATED
:
ha_federated::ha_federated(TABLE *table_arg) :handler(&federated_hton, table_arg), mysql(0), stored_result(0), scan_flag(0), ref_length(sizeof(MYSQL_ROW_OFFSET)), current_position(0) {}
Und hier ist ein weiteres Beispiel mit der Storage-Engine
EXAMPLE
:
ha_example::ha_example(TABLE *table_arg) :handler(&example_hton, table_arg) {}
Die zusätzlichen Elemente im
FEDERATED
-Beispiel sind
Handler-Initialisierungen. Die erforderliche
Minimalimplementierung ist die
handler()
-Initialisierung aus dem
EXAMPLE
-Beispiel.
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.