MySQLの様々な拡張方法を知る

この記事は、2015年「MySQLマニュアルを読む」アドベントカレンダーの17日目です.

 先日開催された MySQL User Conference Tokyo 2015 で、とみたまさひろさんが「MySQLを拡張する」というお話をされました。

 MySQLリファレンスマニュアルでは、24章が「MySQLの拡張」の話題となっています。


http://dev.mysql.com/doc/refman/5.7/en/extending-mysql.html

Chapter 24 Extending MySQL

24.1 MySQL Internals
24.2 The MySQL Plugin API
24.3 MySQL Services for Plugins
24.4 Adding New Functions to MySQL
24.5 Debugging and Porting MySQL


 見た感じはシンプルな短い章にも見えますが、実は奥が深い。
各節を開いた24章のもくじは、以下のとおりとなります。

24.1 MySQL Internals
    24.1.1 MySQL Threads
    24.1.2 The MySQL Test Suite

24.2 The MySQL Plugin API
    24.2.1 Plugin API Characteristics
    24.2.2 Plugin API Components
    24.2.3 Types of Plugins
    24.2.3.1 Storage Engine Plugins
        24.2.3.2 Full-Text Parser Plugins
        24.2.3.3 Daemon Plugins
        24.2.3.4 INFORMATION_SCHEMA Plugins
        24.2.3.5 Semisynchronous Replication Plugins
        24.2.3.6 Audit Plugins
        24.2.3.7 Authentication Plugins
        24.2.3.8 Password-Validation Plugins
        24.2.3.9 Protocol Trace Plugins
        24.2.3.10 Query Rewrite Plugins
    24.2.4 Writing Plugins
        24.2.4.1 Overview of Plugin Writing
        24.2.4.2 Plugin Data Structures
        24.2.4.3 Compiling and Installing Plugin Libraries
        24.2.4.4 Writing Full-Text Parser Plugins
        24.2.4.5 Writing Daemon Plugins
        24.2.4.6 Writing INFORMATION_SCHEMA Plugins
        24.2.4.7 Writing Semisynchronous Replication Plugins
        24.2.4.8 Writing Audit Plugins
        24.2.4.9 Writing Authentication Plugins
        24.2.4.10 Writing Password-Validation Plugins
        24.2.4.11 Writing Protocol Trace Plugins

24.3 MySQL Services for Plugins
    24.3.1 The Locking Service

24.4 Adding New Functions to MySQL
    24.4.1 Features of the User-Defined Function Interface
    24.4.2 Adding a New User-Defined Function
        24.4.2.1 UDF Calling Sequences for Simple Functions
        24.4.2.2 UDF Calling Sequences for Aggregate Functions
        24.4.2.3 UDF Argument Processing
        24.4.2.4 UDF Return Values and Error Handling
        24.4.2.5 UDF Compiling and Installing
        24.4.2.6 UDF Security Precautions 
    24.4.3 Adding a New Native Function

24.5 Debugging and Porting MySQL
    24.5.1 Debugging a MySQL Server
        24.5.1.1 Compiling MySQL for Debugging
        24.5.1.2 Creating Trace Files
        24.5.1.3 Using WER with PDB to create a Windows crashdump
        24.5.1.4 Debugging mysqld under gdb
        24.5.1.5 Using a Stack Trace
        24.5.1.6 Using Server Logs to Find Causes of Errors in mysqld
        24.5.1.7 Making a Test Case If You Experience Table Corruption
    24.5.2 Debugging a MySQL Client
    24.5.3 The DBUG Package

 とみたさんの紹介した UDF(24.4.1と24.4.2)、プラグイン(24.2と24.3)なども、ここで説明されています。
私自身も大昔に、興味本位でUDFにチャレンジしてみようと思ったことがあるのですが、何が悪かったのかうまく動作せずに失意の中で断念した事がありました。これだけドキュメントが揃っているとまた何か、本番稼働するものでなくても、アソビゴコロで作ってみたくなりますね。
 ご興味のあるかたは、ぜひチャレンジを!