擴展 MySQL 9.0  /  ...  /  外掛程式撰寫概觀

4.4.1 外掛程式撰寫概觀

以下條件適用於外掛程式撰寫

  • 外掛程式使用的 MySQL 標頭檔包含 C++ 程式碼,因此外掛程式必須編譯為 C++ 程式碼。

  • 您必須使用完整的伺服器原始碼來編譯外掛程式,而不僅僅是程式庫和標頭檔。

  • 編譯後的外掛程式在不同伺服器版本之間不相容。針對 MySQL 9.0.X 編譯的外掛程式,無法保證其在未針對 MySQL 9.0.Y 重新編譯的情況下,能在 MySQL 9.0.Y 伺服器上運作。

  • 外掛程式會動態載入和卸載,因此您的作業系統必須支援動態載入,而且您必須已動態編譯(而非靜態編譯)呼叫應用程式。對於伺服器外掛程式,這表示 mysqld 必須動態連結。

以下程序提供建立外掛程式庫所需步驟的概觀。下一節將提供有關設定外掛程式資料結構和撰寫特定類型外掛程式的更多詳細資訊。

  1. 在外掛程式原始碼檔案中,包含外掛程式庫需要的標頭檔。plugin.h 檔案為必要檔案,而且該程式庫可能也需要其他檔案。例如:

    #include <stdlib.h>
    #include <ctype.h>
    #include <mysql/plugin.h>
  2. 為外掛程式庫檔案設定描述符資訊。對於伺服器外掛程式,撰寫程式庫描述符,其中必須包含檔案中每個伺服器外掛程式的一般外掛程式描述符。如需更多資訊,請參閱第 4.4.2.1 節,「伺服器外掛程式庫與外掛程式描述符」。此外,請為程式庫中的每個伺服器外掛程式設定類型專屬的描述符。每個外掛程式的一般描述符都指向其類型專屬的描述符。

    對於用戶端外掛程式,撰寫用戶端描述符。如需更多資訊,請參閱第 4.4.2.3 節,「用戶端外掛程式描述符」

  3. 為每個外掛程式撰寫外掛程式介面函數。例如,每個外掛程式的一般外掛程式描述符都會指向伺服器載入和卸載外掛程式時應調用的初始化和取消初始化函數。外掛程式的類型專屬描述也可能指向介面函數。

  4. 對於伺服器外掛程式,請設定狀態和系統變數(如果有的話)。

  5. 將外掛程式庫編譯為共用程式庫,並將其安裝在外掛程式目錄中。如需更多資訊,請參閱第 4.4.3 節,「編譯與安裝外掛程式庫」

  6. 對於伺服器外掛程式,向伺服器註冊外掛程式。如需更多資訊,請參閱安裝與解除安裝外掛程式

  7. 測試外掛程式以驗證其是否正常運作。