WL#3574: Online backup: Service API for Metadata Objects II

Affects: Server-6.0   —   Status: Complete

Rationale
---------
To make a alpha-quality interface between server kernel and backup kernel.
Stabilizing this interface is WL#4264.

Overview
--------
The online backup system requires server functionality to permit the access to 
metadata concerning database objects (e.g., CREATE DATABASE). This 
functionality is not unique to online backup and therefore shall be designed to 
support access to metadata using a generalized interface.

Background
----------
One of the driving goals of the online backup system is to minimize reliance on 
functionality in the MySQL server proper. That is, to abstract the backup code 
from the server code as much as possible in order to avoid conditions where 
changes in one breaks the other. While a complete abstraction is not possible 
(the backup code needs to communicate with the server in a variety of ways), it 
is possible to isolate the affects of changes to either the online backup or 
server code by using an intermediate layer. The term "service interface" has 
been given to this layer to indicate its goal: to provide a buffer between the 
services needed by online backup and how those services are provided by the 
server.

Requirements
------------
The purpose of this worklog is to establish a service interface that can be 
used to gather metadata about database objects, iterate through the various 
types of objects supported, and to create database objects on restore. The 
deliverable for this worklog is a service interface that implements these 
features (at a minimum) for the following database objects.

* Trigger (WL#3582) [40]
* View              [37]
* Stored Procedure  [38] 
* Stored Function   [39]
* Event             [41]

Note: The [] references a number assigned to each object described in WL#3713. 
There is a complete list of objects described in WL#3713.