15.16.5. Adding Support for Savepoints
First, the implementor should know how many bytes are required
to store savepoint information. This should be a fixed size,
preferably not large as the MySQL server will allocate space to
store the savepoint for all storage engines with each named
savepoint.
The implementor should store the data in the space preallocated
by mysqld - and use the contents from the preallocated space for
rollback or release savepoint operations.
When a COMMIT
or ROLLBACK
operation occurs (with bool all
set to
true
), all savepoints are assumed to be
released. If the storage engine allocates resources for
savepoints, it should free them.
The following handlerton elements need to be implemented to
support savepoints (elements 7,9,10,11):
uint savepoint_offset;
int (*savepoint_set)(THD *thd, void *sv);
int (*savepoint_rollback)(THD *thd, void *sv);
int (*savepoint_release)(THD *thd, void *sv);