c ++ - MySQL plugin arkitektur

Indlæg af Hanne Mølgaard Plasc

Problem



Når du lægger et MySQL-plugin på Windows 10 (ved hjælp af MySQL-skalet), skal du kun angive DLL-navnet, som i følgende eksempel:


INSTALL PLUGIN daemon\_example SONAME ‘libdaemon\_example.dll’;


Da der ikke er krav om at henvise til den tilknyttede import lib (.lib) -fil, regnede jeg med, at der skulle være GetProcAddress() og LoadLibrary() opkald i MySQL-kilden til Windows. Jeg fandt imidlertid ikke disse opkald i kilden.


Kan nogen oplyse mig om, hvordan plugin loading er opnået i MySQL?

Bedste reference


Ref: https://dev.mysql.com/doc/refman/8.0/en/writing-plugins.html[4]


28.2.4.1 Oversigt over pluginskrivning



  1. I plugin-kildefilen skal du inkludere de headerfiler, som plugin-biblioteket har brug for. Plugin.h-filen er påkrævet, og biblioteket kræver muligvis også andre filer. For eksempel:


    #include < stdlib.h >

    #include < ctype.h >

    #include < mysql/plugin.h >

  2. Konfigurer beskrivelsesoplysningerne til plugin-bibliotekets fil. For server-plugins skal du skrive biblioteksbeskrivelsen, som skal indeholde den generelle pluginbeskrivelse for hvert server-plugin i filen. Yderligere oplysninger findes i Afsnit 28.2.4.2.1, 'Server Plugin Library og Plugin Descriptors'. Desuden skal du konfigurere den typespecifikke deskriptor for hvert server plugin i biblioteket. Hver plugin s generelle deskriptor peger på dens typespecifikke deskriptor.



For klientprogrammer skal du skrive klientbeskrivelsen. Yderligere oplysninger findes i Afsnit 28.2.4.2.3, 'Klientpluginbeskrivelser'.



  1. Skriv plugin-grænsefladefunktionerne for hvert plugin. For eksempel peger hver plugins generelle plugin-deskriptor på initialiserings- og deinitialiseringsfunktionerne, som serveren skal påberåbe sig, når den indlæser og losser plugin'et. Plugins typespecifikke beskrivelse kan også pege på grænsefladefunktioner.

  2. For server-plugins skal du oprette status- og systemvariablerne, hvis der er nogen.

  3. Kompilér plugin biblioteket som et delt bibliotek og installer det i plugin mappen. Yderligere oplysninger findes i Afsnit 28.2.4.3, 'Kompilering og installation af pluginbiblioteker'.

  4. For server-plugins skal du registrere plugin'et med serveren. Yderligere oplysninger finder du under Afsnit 5.6.1, 'Installation og afinstallation af plugins'.

  5. Test plugin'et for at kontrollere, at det fungerer korrekt.



Ref. https://yandex.ru/search/?text=MySQL\%205\%20Plugin\%20Development\%20buy[5]


Også:



  • [6] https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL/blob/master/handlersocket/database.cpp

  • [7] https://www.linuxtopia.org/online\_books/database\_guides/mysql\_5.1\_database\_reference\_guide/plugin-creating.html

  • [8] http://www.rldp.ru/mysql/mysql80/extend.htm