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