12.7 Neue SQL-Funktionen für die Shell – MySQL erweitern
Um gleich Missverständnisse zu diesem Abschnitt zu vermeiden, hier geht es nicht mehr um die C-API von MySQL. Es geht darum, neue – oder besser – benutzerdefinierte Funktionen in C zu erstellen und zur MySQL-Shell hinzuzufügen. MySQL wurden mittlerweile zahlreiche Funktionen z. B. mathematischer Natur (COS(), SIN() ...) oder zur Stringmanipulation (CONCAT() ...) hinzugefügt. Hier ein Beispiel anhand der mathematischen Funktion COS(), wie Sie Funktionen in der MySQL-Shell (und natürlich auch bei Ihrer Clientanwendung mit mysql_real_query()) verwenden können:
mysql> CREATE DATABASE rechnungen;
Query OK, 1 row affected (0.26 sec)
mysql> USE rechnungen;
Database changed
mysql> CREATE TABLE xyz ( erg FLOAT );
Query OK, 0 rows affected (0.01 sec)
mysql> INSERT INTO xyz (erg) VALUES ( COS(2.32) );
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO xyz (erg) VALUES ( COS(12.22) );
Query OK, 1 row affected (0.01 sec)
mysql> SELECT * FROM xyz;
+-----------+
| erg |
+-----------+
| -0.681056 |
| 0.940611 |
+-----------+
2 rows in set (0.00 sec)
Wenn Sie jetzt MySQL um eigene Funktionen erweitern wollen, haben Sie zwei Möglichkeiten:
|
Sie fügen die Funktion dynamisch zur Laufzeit über die UDF-Schnittstelle hinzu (UDF = User-Definable Function). Dabei fügen Sie die benutzerdefinierte Funktion dynamisch mit CREATE FUNCTIONS hinzu oder löschen diese wieder mit DROP FUNCTONS. Der Vorteil gegenüber der gleich folgenden zweiten Möglichkeit an benutzerdefinierten Funktionen ist, Sie können jederzeit zu Ihrer binären Distribution Funktionen hinzufügen und müssen nicht den kompletten Server-Quellcode (mysqld) verändern. Und bei einer Aktualisierung Ihrer MySQL-Distribution können Sie die zuvor installierten benutzerdefinierten Funktionen weiterhin verwenden. |
|
Die zweite Möglichkeit erfordert etwas mehr Erfahrung im Umgang mit MySQL. Sie fügen Funktionen nativ zum MySQL-Server hinzu. Das bedeutet allerdings, dass Sie den Server neu kompilieren müssen – auch bei einem Versionswechsel. Der Vorteil hierbei ist, da ja die Funktionen fest einkompiliert sind, dass Sie die Funktionen nicht extra installieren müssen und sie wie übliche MySQL-Funktionen verwenden können. |
Im Folgenden soll Ihnen anhand von recht einfachen und primitiven Beispielen gezeigt werden, wie Sie die UDF-Schnittstelle verwenden und Ihre selbst geschriebenen Funktionen in MySQL erstellen können.
|