Details
-
Task
-
Status: Open (View Workflow)
-
Minor
-
Resolution: Unresolved
-
None
-
None
-
None
Description
Storage engine producers tend to do very similar mistakes, like:
- including undesired server *.h files
- doing #define MYSQL_SERVER
- accessing members and methods of THD directly,
without using engine plugin services.
This typically makes such storage engine crash in case of
embedded server, because THD definition varies between
client-server and embedded versions.
It would be nice to do take some steps to avoid this and help
engine producers to write the code correctly.
1. Create a file "se_api.h" which will include all *.h files that
we allow to use in engines (e.g. handler.h, sql_class.h, etc).
2. Remove the confusing "#define MYSQL_SERVER" from as
many existing engines as possible:
blackhole/ha_blackhole.cc:#define MYSQL_SERVER 1
|
maria/ha_maria.cc:#define MYSQL_SERVER 1
|
tokudb/ha_tokudb.cc:#define MYSQL_SERVER 1
|
tokudb/hatoku_hton.cc:#define MYSQL_SERVER 1
|
oqgraph/ha_oqgraph.cc:#define MYSQL_SERVER // to have THD
|
federatedx/ha_federatedx.cc:#define MYSQL_SERVER 1
|
federatedx/federatedx_io_mysql.cc:#define MYSQL_SERVER 1
|
federatedx/federatedx_io_null.cc:/*#define MYSQL_SERVER 1*/
|
federatedx/federatedx_io.cc:/*#define MYSQL_SERVER 1*/
|
federatedx/federatedx_txn.cc:#define MYSQL_SERVER 1
|
connect/tabmysql.cpp:#define MYSQL_SERVER 1
|
connect/ha_connect.cc:#define MYSQL_SERVER 1
|
connect/user_connect.cc:#define MYSQL_SERVER
|
spider/spd_db_conn.cc:#define MYSQL_SERVER 1
|
spider/spd_table.cc:#define MYSQL_SERVER 1
|
spider/spd_db_mysql.cc:#define MYSQL_SERVER 1
|
spider/spd_malloc.cc:#define MYSQL_SERVER 1
|
spider/ha_spider.cc:#define MYSQL_SERVER 1
|
spider/spd_db_handlersocket.cc:#define MYSQL_SERVER 1
|
spider/spd_conn.cc:#define MYSQL_SERVER 1
|
spider/spd_i_s.cc:#define MYSQL_SERVER 1
|
spider/spd_db_oracle.cc:#define MYSQL_SERVER 1
|
spider/spd_ping_table.cc:#define MYSQL_SERVER 1
|
spider/spd_trx.cc:#define MYSQL_SERVER 1
|
spider/spd_param.cc:#define MYSQL_SERVER 1
|
spider/spd_sys_table.cc:#define MYSQL_SERVER 1
|
spider/spd_direct_sql.cc:#define MYSQL_SERVER 1
|
spider/spd_udf.cc:#define MYSQL_SERVER 1
|
spider/spd_copy_tables.cc:#define MYSQL_SERVER 1
|
myisammrg/ha_myisammrg.cc:#define MYSQL_SERVER 1
|
myisam/ha_myisam.cc:#define MYSQL_SERVER 1
|
federated/ha_federated.cc:#define MYSQL_SERVER 1
|
xtradb/handler/ha_innodb.cc:#define MYSQL_SERVER 1
|
xtradb/handler/i_s.cc:#define MYSQL_SERVER /* For Item_* classes */
|
heap/ha_heap.cc:#define MYSQL_SERVER 1
|
3. Prevent direct inclusion of the server *.h files without using se_api.h.