mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
EXAMPLE storage engine: update comments
This commit is contained in:
committed by
Daniel Black
parent
0254eb9307
commit
e666b8651a
@@ -38,7 +38,7 @@
|
||||
build by doing the following during your build process:<br> ./configure
|
||||
--with-example-storage-engine
|
||||
|
||||
Once this is done, MySQL will let you create tables with:<br>
|
||||
Once this is done, MariaDB will let you create tables with:<br>
|
||||
CREATE TABLE <table name> (...) ENGINE=EXAMPLE;
|
||||
|
||||
The example storage engine is set up to use table locks. It
|
||||
@@ -51,9 +51,9 @@
|
||||
of this file.
|
||||
|
||||
@note
|
||||
When you create an EXAMPLE table, the MySQL Server creates a table .frm
|
||||
When you create an EXAMPLE table, the MariaDB Server creates a table .frm
|
||||
(format) file in the database directory, using the table name as the file
|
||||
name as is customary with MySQL. No other files are created. To get an idea
|
||||
name as is customary with MariaDB. No other files are created. To get an idea
|
||||
of what occurs, here is an example select that would do a scan of an entire
|
||||
table:
|
||||
|
||||
@@ -86,10 +86,6 @@
|
||||
ha_example::open() would also have been necessary. Calls to
|
||||
ha_example::extra() are hints as to what will be occuring to the request.
|
||||
|
||||
A Longer Example can be found called the "Skeleton Engine" which can be
|
||||
found on TangentOrg. It has both an engine and a full build environment
|
||||
for building a pluggable storage engine.
|
||||
|
||||
Happy coding!<br>
|
||||
-Brian
|
||||
*/
|
||||
@@ -771,7 +767,7 @@ int ha_example::external_lock(THD *thd, int lock_type)
|
||||
Before adding the lock into the table lock handler (see thr_lock.c),
|
||||
mysqld calls store lock with the requested locks. Store lock can now
|
||||
modify a write lock to a read lock (or some other lock), ignore the
|
||||
lock (if we don't want to use MySQL table locks at all), or add locks
|
||||
lock (if we don't want to use MariaDB table locks at all), or add locks
|
||||
for many tables (like we do when we are using a MERGE handler).
|
||||
|
||||
Berkeley DB, for example, changes all WRITE locks to TL_WRITE_ALLOW_WRITE
|
||||
@@ -781,7 +777,7 @@ int ha_example::external_lock(THD *thd, int lock_type)
|
||||
When releasing locks, store_lock() is also called. In this case one
|
||||
usually doesn't have to do anything.
|
||||
|
||||
In some exceptional cases MySQL may send a request for a TL_IGNORE;
|
||||
In some exceptional cases MariaDB may send a request for a TL_IGNORE;
|
||||
This means that we are requesting the same lock as last time and this
|
||||
should also be ignored. (This may happen when someone does a flush
|
||||
table when we have opened a part of the tables, in which case mysqld
|
||||
@@ -1084,7 +1080,7 @@ static int show_func_example(MYSQL_THD thd, struct st_mysql_show_var *var,
|
||||
var->value= buf; // it's of SHOW_VAR_FUNC_BUFF_SIZE bytes
|
||||
my_snprintf(buf, SHOW_VAR_FUNC_BUFF_SIZE,
|
||||
"enum_var is %lu, ulong_var is %lu, int_var is %d, "
|
||||
"double_var is %f, %.6b", // %b is a MySQL extension
|
||||
"double_var is %f, %.6b", // %b is a MariaDB/MySQL extension
|
||||
srv_enum_var, srv_ulong_var, THDVAR(thd, int_var),
|
||||
srv_double_var, "really");
|
||||
return 0;
|
||||
|
@@ -62,7 +62,7 @@ public:
|
||||
*/
|
||||
class ha_example: public handler
|
||||
{
|
||||
THR_LOCK_DATA lock; ///< MySQL lock
|
||||
THR_LOCK_DATA lock; ///< MariaDB lock
|
||||
Example_share *share; ///< Shared lock info
|
||||
Example_share *get_share(); ///< Get the share
|
||||
|
||||
@@ -97,7 +97,7 @@ public:
|
||||
|
||||
@details
|
||||
part is the key part to check. First key part is 0.
|
||||
If all_parts is set, MySQL wants to know the flags for the combined
|
||||
If all_parts is set, MariaDB wants to know the flags for the combined
|
||||
index, up to and including 'part'.
|
||||
*/
|
||||
ulong index_flags(uint inx, uint part, bool all_parts) const
|
||||
@@ -109,7 +109,7 @@ public:
|
||||
unireg.cc will call max_supported_record_length(), max_supported_keys(),
|
||||
max_supported_key_parts(), uint max_supported_key_length()
|
||||
to make sure that the storage engine can handle the data it is about to
|
||||
send. Return *real* limits of your storage engine here; MySQL will do
|
||||
send. Return *real* limits of your storage engine here; MariaDB will do
|
||||
min(your_limits, MySQL_limits) automatically.
|
||||
*/
|
||||
uint max_supported_record_length() const { return HA_MAX_REC_LENGTH; }
|
||||
@@ -117,7 +117,7 @@ public:
|
||||
/** @brief
|
||||
unireg.cc will call this to make sure that the storage engine can handle
|
||||
the data it is about to send. Return *real* limits of your storage engine
|
||||
here; MySQL will do min(your_limits, MySQL_limits) automatically.
|
||||
here; MariaDB will do min(your_limits, MySQL_limits) automatically.
|
||||
|
||||
@details
|
||||
There is no need to implement ..._key_... methods if your engine doesn't
|
||||
@@ -128,7 +128,7 @@ public:
|
||||
/** @brief
|
||||
unireg.cc will call this to make sure that the storage engine can handle
|
||||
the data it is about to send. Return *real* limits of your storage engine
|
||||
here; MySQL will do min(your_limits, MySQL_limits) automatically.
|
||||
here; MariaDB will do min(your_limits, MySQL_limits) automatically.
|
||||
|
||||
@details
|
||||
There is no need to implement ..._key_... methods if your engine doesn't
|
||||
@@ -139,7 +139,7 @@ public:
|
||||
/** @brief
|
||||
unireg.cc will call this to make sure that the storage engine can handle
|
||||
the data it is about to send. Return *real* limits of your storage engine
|
||||
here; MySQL will do min(your_limits, MySQL_limits) automatically.
|
||||
here; MariaDB will do min(your_limits, MySQL_limits) automatically.
|
||||
|
||||
@details
|
||||
There is no need to implement ..._key_... methods if your engine doesn't
|
||||
@@ -187,7 +187,7 @@ public:
|
||||
Everything below are methods that we implement in ha_example.cc.
|
||||
|
||||
Most of these methods are not obligatory, skip them and
|
||||
MySQL will treat them as not implemented
|
||||
MariaDB will treat them as not implemented
|
||||
*/
|
||||
/** @brief
|
||||
We implement this in ha_example.cc; it's a required method.
|
||||
@@ -201,50 +201,50 @@ public:
|
||||
|
||||
/** @brief
|
||||
We implement this in ha_example.cc. It's not an obligatory method;
|
||||
skip it and and MySQL will treat it as not implemented.
|
||||
skip it and and MariaDB will treat it as not implemented.
|
||||
*/
|
||||
int write_row(const uchar *buf);
|
||||
|
||||
/** @brief
|
||||
We implement this in ha_example.cc. It's not an obligatory method;
|
||||
skip it and and MySQL will treat it as not implemented.
|
||||
skip it and and MariaDB will treat it as not implemented.
|
||||
*/
|
||||
int update_row(const uchar *old_data, const uchar *new_data);
|
||||
|
||||
/** @brief
|
||||
We implement this in ha_example.cc. It's not an obligatory method;
|
||||
skip it and and MySQL will treat it as not implemented.
|
||||
skip it and and MariaDB will treat it as not implemented.
|
||||
*/
|
||||
int delete_row(const uchar *buf);
|
||||
|
||||
/** @brief
|
||||
We implement this in ha_example.cc. It's not an obligatory method;
|
||||
skip it and and MySQL will treat it as not implemented.
|
||||
skip it and and MariaDB will treat it as not implemented.
|
||||
*/
|
||||
int index_read_map(uchar *buf, const uchar *key,
|
||||
key_part_map keypart_map, enum ha_rkey_function find_flag);
|
||||
|
||||
/** @brief
|
||||
We implement this in ha_example.cc. It's not an obligatory method;
|
||||
skip it and and MySQL will treat it as not implemented.
|
||||
skip it and and MariaDB will treat it as not implemented.
|
||||
*/
|
||||
int index_next(uchar *buf);
|
||||
|
||||
/** @brief
|
||||
We implement this in ha_example.cc. It's not an obligatory method;
|
||||
skip it and and MySQL will treat it as not implemented.
|
||||
skip it and and MariaDB will treat it as not implemented.
|
||||
*/
|
||||
int index_prev(uchar *buf);
|
||||
|
||||
/** @brief
|
||||
We implement this in ha_example.cc. It's not an obligatory method;
|
||||
skip it and and MySQL will treat it as not implemented.
|
||||
skip it and and MariaDB will treat it as not implemented.
|
||||
*/
|
||||
int index_first(uchar *buf);
|
||||
|
||||
/** @brief
|
||||
We implement this in ha_example.cc. It's not an obligatory method;
|
||||
skip it and and MySQL will treat it as not implemented.
|
||||
skip it and and MariaDB will treat it as not implemented.
|
||||
*/
|
||||
int index_last(uchar *buf);
|
||||
|
||||
|
Reference in New Issue
Block a user