この記事は、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にチャレンジしてみようと思ったことがあるのですが、何が悪かったのかうまく動作せずに失意の中で断念した事がありました。これだけドキュメントが揃っているとまた何か、本番稼働するものでなくても、アソビゴコロで作ってみたくなりますね。
ご興味のあるかたは、ぜひチャレンジを!