Book Image

MySQL 5.1 Plugin Development

Book Image

MySQL 5.1 Plugin Development

Overview of this book

MySQL has introduced a Plugin API with its latest version – a robust, powerful, and easy way of extending the server functionality with loadable modules on the fly. But until now anyone wishing to develop a plugin would almost certainly need to dig into the MySQL source code and search the Web for missing bits of the information.This is the first book on the MySQL Plugin API. Written together with one of the Plugin API primary architects, it contains all the details you need to build a plugin. It shows what a plugin should contain and how to compile, install, and package it. Every chapter illustrates the material with thoroughly explained source code examples.Starting from the basic features, common to all plugin types, and the structure of the plugin framework, this book will guide you through the different plugin types, from simple examples to advanced ones. Server monitoring, full-text search in JPEG comments, typo-tolerant searches, getting the list of all user variables, system usage statistics, or a complete storage engine with indexes – these and other plugins are developed in different chapters of this book, demonstrating the power and versatility of the MySQL Plugin API and explaining the intricate details of MySQL Plugin programming.
Table of Contents (16 chapters)
MySQL 5.1 Plugin Development
Credits
About the Authors
About the Reviewer
Preface

A User Variables Information Schema plugin


In this plugin we will show how to access MySQL's internal data structures—the list of user variables created in a connection. User variables are used to store data that will persist just for one connection inside the MySQL server. Unfortunately, one of their limitations is that there is no way to see what variables have been created. In this example we will develop an Information Schema table that shows them.

User variables are stored in the user_vars member of the THD structure. It is a hash that maps variable names to corresponding user_var_entry objects. We simply need to traverse the hash, and for every user_var_entry element print its name and its value converted to a string.

To be able to see the user_var_entry and THD definitions we have to define the following macro:

#define MYSQL_SERVER

Now we can include the obligatory mysql_priv.h and we will get many more declarations than we were getting before. Basically, we can see and do everything...