A Binary Logs Information Schema plugin
MySQL has quite a few SHOW
commands, many of which have Information Schema equivalents. There are, however, exceptions to this. One of them is the SHOW BINARY LOGS
command. For this plugin we will take the function from the MySQL server that implements SHOW BINARY LOGS
and convert it to an Information Schema plugin. This will also demonstrate another aspect important to Information Schema plugins that deal with MySQL internals—the fact that they need to handle locking. With the user variables it was not an issue, because only the current connection can access its variable. But multiple threads can access binary logs simultaneously so we need to take appropriate precautions to make sure that it does not happen.
#define MYSQL_SERVER #include <mysql_priv.h> bool schema_table_store_record(THD *thd, TABLE *table); ST_FIELD_INFO binary_logs_fields[] = { {"LOG_NAME", 255, MYSQL_TYPE_STRING, 0, 0, 0, 0}, {"FILE_SIZE", 20, MYSQL_TYPE_LONGLONG, 0, 0, 0...