Suche Anschluss an Gruppe von Programmierern für UDF's zur Erweiterung von MySql



  • Hallo würde mich gerne in nächster Zeit mit dem programmieren von UDF's für MySql beschäftigen. Jedoch bräuchte ich dazu ein paar Tipps von jemand der sich damit auskennt. Wie fange ich da am besten an. Denke ich brauche da den Quellcode vom Server. Welchen Compiler bezutze ich da am besten. Was hat das mit dem dynamischen Compilieren auf sich. Falls ich jemand mit UDF's zur Datenbankprogrammierung auskennt bitte posten. Freue mich über jeden Tipp und jede Connection.

    Cu

    Lazarus



  • Ich weiss zwar nicht, wie's bei MySql ist, aber generell ist es so, dass UDFs nicht in den Datenbank-Code gehackt werden müssen. Es gibt normalerweise einen SQL-Befehl, mit dem du deine UDFs deklarierst: CREATE FUNCTION. Je nach Datenbank kannst du deine UDF in verschiedenen Sprachen schreiben. SQL, C, Java sind so die üblichen Möglichkeiten. Bei meiner DB sind auch UDFs in OLE und Cobol möglich.

    Externe UDFs (z.B. in C++) werden einfach als Bibliothek (DLL, keine Ahnung wie die unter Linux heissen, .a?) compiliert. Beim CREATE FUNCTION gibt man dann die Datei und den Exportieren Namen der Funktion an.

    Je nach Datenbank unterscheidet sich das CREATE FUNCTION. Musst mal in die Doku schauen. Bei meiner DB sieht die Definition einer C++ UDF z.B. so aus:

    CREATE FUNCTION YEARS_BETWEEN (DATE, DATE)
       RETURNS DOUBLE
       SPECIFIC YR_BETW
       FENCED
       DETERMINISTIC
       NO SQL
       NO EXTERNAL ACTION
       LANGUAGE C
       NULL CALL
       PARAMETER STYLE DB2SQL
       EXTERNAL NAME 'udf!years_between';
    

    Dasselbe Prinzip gilt auch für Stored Prcodures.



  • Was bedeutet das exportierter Name?



  • Die Deklaration der Funktion mache ich die über die Query genauso wie eine Anfrage?



  • Der xportierte Name ist normalerweise der Name deiner Funktion (in C++ extern "C" nicht vergessen), solange du dem linker nichts sagst, dass er einen anderen Namen nehmen soll.

    Und das CREATE FUNCTION ist ein ganz normales SQL-Statement, das man verwendet wie jedes andere Statement auch.



  • Und wie funtkioniert das mit der dll. Ich nehme quasi in einer Entwicklungsumgebung, ein Projekt dll. Dann compiliere ich meinen Quellcode und bekomme eine dll raus. Muss ich die in irgend einem besonderen Verzeichnis haben?

    Danke schon mal für die Tips


Anmelden zum Antworten