diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/ha_berkeley.cc | 3 | ||||
-rw-r--r-- | sql/ha_innodb.cc | 5 | ||||
-rw-r--r-- | sql/ha_myisam.cc | 12 | ||||
-rw-r--r-- | sql/item_func.cc | 2 | ||||
-rw-r--r-- | sql/log.cc | 14 | ||||
-rw-r--r-- | sql/log_event.cc | 64 | ||||
-rw-r--r-- | sql/log_event.h | 39 | ||||
-rw-r--r-- | sql/mf_iocache.cc | 5 | ||||
-rw-r--r-- | sql/mini_client.cc | 3 | ||||
-rw-r--r-- | sql/mysqld.cc | 522 | ||||
-rw-r--r-- | sql/net_pkg.cc | 55 | ||||
-rw-r--r-- | sql/net_serv.cc | 4 | ||||
-rw-r--r-- | sql/repl_failsafe.cc | 5 | ||||
-rw-r--r-- | sql/repl_failsafe.h | 2 | ||||
-rw-r--r-- | sql/set_var.cc | 23 | ||||
-rw-r--r-- | sql/set_var.h | 3 | ||||
-rw-r--r-- | sql/slave.cc | 4 | ||||
-rw-r--r-- | sql/slave.h | 6 | ||||
-rw-r--r-- | sql/sql_acl.cc | 6 | ||||
-rw-r--r-- | sql/sql_cache.cc | 4 | ||||
-rw-r--r-- | sql/sql_class.cc | 6 | ||||
-rw-r--r-- | sql/sql_class.h | 13 | ||||
-rw-r--r-- | sql/sql_db.cc | 2 | ||||
-rw-r--r-- | sql/sql_error.cc | 2 | ||||
-rw-r--r-- | sql/sql_help.cc | 4 | ||||
-rw-r--r-- | sql/sql_load.cc | 7 | ||||
-rw-r--r-- | sql/sql_parse.cc | 59 | ||||
-rw-r--r-- | sql/sql_prepare.cc | 8 | ||||
-rw-r--r-- | sql/sql_repl.cc | 6 | ||||
-rw-r--r-- | sql/sql_repl.h | 4 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 | ||||
-rw-r--r-- | sql/sql_show.cc | 23 |
32 files changed, 383 insertions, 534 deletions
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc index 8edb63b23d6..bcbc3335203 100644 --- a/sql/ha_berkeley.cc +++ b/sql/ha_berkeley.cc @@ -268,7 +268,8 @@ int berkeley_show_logs(THD *thd) else net_store_data(packet, SHOW_LOG_STATUS_INUSE); - if (my_net_write(&thd->net,(char*) packet->ptr(),packet->length())) + + if (SEND_ROW(thd, 3, (char*) packet->ptr(),packet->length())) { error=1; goto err; diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 14810bada31..300de4748bc 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -871,6 +871,7 @@ innobase_commit_low( /*================*/ trx_t* trx) /* in: transaction handle */ { +#ifndef EMBEDDED_LIBRARY if (current_thd->slave_thread) { /* Update the replication position info inside InnoDB */ #ifdef NEED_TO_BE_FIXED @@ -884,6 +885,7 @@ innobase_commit_low( active_mi->rli.event_len + active_mi->rli.pending)); } +#endif /* EMBEDDED_LIBRARY */ trx_commit_for_mysql(trx); } @@ -3953,8 +3955,7 @@ innodb_show_status( net_store_data(packet, buf); - if (my_net_write(&thd->net, (char*)thd->packet.ptr(), - packet->length())) { + if (SEND_ROW(thd, field_list.elements, (char*)thd->packet.ptr(), packet->length())) { ut_free(buf); DBUG_RETURN(-1); diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc index 4d169ea5d91..5cf77698e6b 100644 --- a/sql/ha_myisam.cc +++ b/sql/ha_myisam.cc @@ -62,11 +62,14 @@ static void mi_check_print_msg(MI_CHECK *param, const char* msg_type, DBUG_PRINT(msg_type,("message: %s",msgbuf)); +#ifndef EMBEDDED_LIBRARY if (thd->net.vio == 0) { sql_print_error(msgbuf); return; } +#endif + if (param->testflag & (T_CREATE_MISSING_KEYS | T_SAFE_REPAIR | T_AUTO_REPAIR)) { my_message(ER_NOT_KEYFILE,msgbuf,MYF(MY_WME)); @@ -139,6 +142,7 @@ const char *ha_myisam::index_type(uint key_number) int ha_myisam::net_read_dump(NET* net) { +#ifndef EMBEDDED_LIBRARY int data_fd = file->dfile; int error = 0; @@ -161,14 +165,17 @@ int ha_myisam::net_read_dump(NET* net) goto err; } } - err: return error; +#else + return (int)net; +#endif } int ha_myisam::dump(THD* thd, int fd) { +#ifndef EMBEDDED_LIBRARY MYISAM_SHARE* share = file->s; NET* net = &thd->net; uint blocksize = share->blocksize; @@ -217,6 +224,9 @@ int ha_myisam::dump(THD* thd, int fd) err: my_free((gptr) buf, MYF(0)); return error; +#else + return (int)thd - fd; +#endif } /* Name is here without an extension */ diff --git a/sql/item_func.cc b/sql/item_func.cc index c84b554b522..0f4239ca560 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1656,6 +1656,7 @@ longlong Item_master_pos_wait::val_int() return 0; } ulong pos = (ulong)args[1]->val_int(); +#ifndef EMBEDDED_LIBRARY LOCK_ACTIVE_MI; if ((event_count = active_mi->rli.wait_for_pos(thd, log_name, pos)) == -1) { @@ -1663,6 +1664,7 @@ longlong Item_master_pos_wait::val_int() event_count=0; } UNLOCK_ACTIVE_MI; +#endif return event_count; } diff --git a/sql/log.cc b/sql/log.cc index dc7b5789efb..527d1605a2d 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -23,6 +23,8 @@ #endif #include "mysql_priv.h" +#include <mysql.h> + #include "sql_acl.h" #include "sql_repl.h" @@ -31,6 +33,7 @@ #include <m_ctype.h> // For test_if_number #include <assert.h> + MYSQL_LOG mysql_log,mysql_update_log,mysql_slow_log,mysql_bin_log; extern I_List<i_string> binlog_do_db, binlog_ignore_db; @@ -610,6 +613,8 @@ err: LOG_INFO_IO Got IO error while reading file */ +#ifndef EMBEDDED_LIBRARY + int MYSQL_LOG::purge_first_log(struct st_relay_log_info* rli) { int error; @@ -739,6 +744,8 @@ err: DBUG_RETURN(error); } +#endif /* EMBEDDED_LIBRARY */ + /* Create a new log file name @@ -1048,6 +1055,7 @@ bool MYSQL_LOG::write(Log_event* event_info) #else IO_CACHE *file = &log_file; #endif +#ifndef EMBEDDED_LIBRARY if ((thd && !(thd->options & OPTION_BIN_LOG) && (thd->master_access & SUPER_ACL)) || (local_db && !db_ok(local_db, binlog_do_db, binlog_ignore_db))) @@ -1056,6 +1064,7 @@ bool MYSQL_LOG::write(Log_event* event_info) DBUG_PRINT("error",("!db_ok")); DBUG_RETURN(0); } +#endif /* EMBEDDED_LIBRARY */ error=1; /* @@ -1419,6 +1428,7 @@ void MYSQL_LOG::close(bool exiting) DBUG_PRINT("enter",("exiting: %d", (int) exiting)); if (is_open()) { +#ifndef EMBEDDED_LIBRARY if (log_type == LOG_BIN && !no_auto_events && exiting) { Stop_log_event s; @@ -1426,6 +1436,7 @@ void MYSQL_LOG::close(bool exiting) s.write(&log_file); signal_update(); } +#endif /* EMBEDDED_LIBRARY */ end_io_cache(&log_file); if (my_close(log_file.file,MYF(0)) < 0 && ! write_error) { @@ -1549,3 +1560,6 @@ void sql_perror(const char *message) perror(message); #endif } + + + diff --git a/sql/log_event.cc b/sql/log_event.cc index 5050bba9965..6bb1a1c65a9 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -80,12 +80,14 @@ static void pretty_print_str(FILE* file, char* str, int len) ignored_error_code() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT inline int ignored_error_code(int err_code) { return use_slave_mask && bitmap_is_set(&slave_error_mask, err_code); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -122,6 +124,7 @@ static void pretty_print_str(String* packet, char* str, int len) slave_load_file_stem() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT static inline char* slave_load_file_stem(char*buf, uint file_id, int event_server_id) @@ -135,6 +138,7 @@ static inline char* slave_load_file_stem(char*buf, uint file_id, return int10_to_str(file_id, buf, 10); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -148,6 +152,7 @@ static inline char* slave_load_file_stem(char*buf, uint file_id, Easily fixable by adding server_id as a prefix to the log files. ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT static void cleanup_load_tmpdir() { @@ -167,6 +172,7 @@ static void cleanup_load_tmpdir() my_dirend(dirp); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -284,6 +290,7 @@ Log_event::Log_event(const char* buf, bool old_format) #ifndef MYSQL_CLIENT +#ifndef EMBEDDED_LIBRARY /***************************************************************************** @@ -310,6 +317,7 @@ void Log_event::pack_info(String* packet) { net_store_data(packet, "", 0); } +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -333,6 +341,7 @@ void Log_event::init_show_field_list(List<Item>* field_list) Only called by SHOW BINLOG EVENTS ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY int Log_event::net_send(THD* thd_arg, const char* log_name, my_off_t pos) { String* packet = &thd_arg->packet; @@ -349,8 +358,9 @@ int Log_event::net_send(THD* thd_arg, const char* log_name, my_off_t pos) net_store_data(packet, server_id); net_store_data(packet, (longlong) log_pos); pack_info(packet); - return my_net_write(&thd_arg->net, (char*) packet->ptr(), packet->length()); + return SEND_ROW(thd_arg, 5, (char*) packet->ptr(), packet->length()); } +#endif /* EMBEDDED_LIBRARY */ #endif // !MYSQL_CLIENT /***************************************************************************** @@ -558,9 +568,11 @@ Log_event* Log_event::read_log_event(const char* buf, int event_len, case ROTATE_EVENT: ev = new Rotate_log_event(buf, event_len, old_format); break; +#ifndef EMBEDDED_LIBRARY case SLAVE_EVENT: ev = new Slave_log_event(buf, event_len); break; +#endif /* EMBEDDED_LIBRARY */ case CREATE_FILE_EVENT: ev = new Create_file_log_event(buf, event_len, old_format); break; @@ -576,9 +588,11 @@ Log_event* Log_event::read_log_event(const char* buf, int event_len, case START_EVENT: ev = new Start_log_event(buf, old_format); break; +#ifndef EMBEDDED_LIBRARY case STOP_EVENT: ev = new Stop_log_event(buf, old_format); break; +#endif /* EMBEDDED_LIBRARY */ case INTVAR_EVENT: ev = new Intvar_log_event(buf, old_format); break; @@ -665,6 +679,7 @@ void Log_event::set_log_pos(MYSQL_LOG* log) ***************************************************************************** ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT /***************************************************************************** @@ -688,6 +703,7 @@ void Query_log_event::pack_info(String* packet) net_store_data(packet, (char*)tmp.ptr(), tmp.length()); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -820,6 +836,7 @@ void Query_log_event::print(FILE* file, bool short_form, char* last_db) Query_log_event::exec_event() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Query_log_event::exec_event(struct st_relay_log_info* rli) { @@ -909,6 +926,7 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli) return Log_event::exec_event(rli); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -924,6 +942,7 @@ int Query_log_event::exec_event(struct st_relay_log_info* rli) Start_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Start_log_event::pack_info(String* packet) { @@ -939,6 +958,7 @@ void Start_log_event::pack_info(String* packet) net_store_data(packet, tmp.ptr(), tmp.length()); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1007,6 +1027,7 @@ int Start_log_event::write_data(IO_CACHE* file) In this case we should stop the slave. ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Start_log_event::exec_event(struct st_relay_log_info* rli) { @@ -1020,6 +1041,7 @@ int Start_log_event::exec_event(struct st_relay_log_info* rli) return Log_event::exec_event(rli); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1035,6 +1057,7 @@ int Start_log_event::exec_event(struct st_relay_log_info* rli) Load_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Load_log_event::pack_info(String* packet) { @@ -1112,6 +1135,7 @@ void Load_log_event::pack_info(String* packet) net_store_data(packet, tmp.ptr(), tmp.length()); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1415,6 +1439,7 @@ void Load_log_event::set_fields(List<Item> &field_list) Load_log_event::exec_event() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli) { @@ -1526,6 +1551,7 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli) return Log_event::exec_event(rli); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1541,6 +1567,7 @@ int Load_log_event::exec_event(NET* net, struct st_relay_log_info* rli) Rotate_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Rotate_log_event::pack_info(String* packet) { @@ -1555,6 +1582,7 @@ void Rotate_log_event::pack_info(String* packet) net_store_data(packet, tmp.ptr(), tmp.length()); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1647,6 +1675,7 @@ int Rotate_log_event::write_data(IO_CACHE* file) 0 ok ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Rotate_log_event::exec_event(struct st_relay_log_info* rli) { @@ -1664,6 +1693,7 @@ int Rotate_log_event::exec_event(struct st_relay_log_info* rli) DBUG_RETURN(0); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1679,6 +1709,7 @@ int Rotate_log_event::exec_event(struct st_relay_log_info* rli) Intvar_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Intvar_log_event::pack_info(String* packet) { @@ -1691,6 +1722,7 @@ void Intvar_log_event::pack_info(String* packet) net_store_data(packet, tmp.ptr(), tmp.length()); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1769,6 +1801,7 @@ void Intvar_log_event::print(FILE* file, bool short_form, char* last_db) Intvar_log_event::exec_event() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Intvar_log_event::exec_event(struct st_relay_log_info* rli) { @@ -1785,6 +1818,7 @@ int Intvar_log_event::exec_event(struct st_relay_log_info* rli) return 0; } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1800,6 +1834,7 @@ int Intvar_log_event::exec_event(struct st_relay_log_info* rli) Rand_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Rand_log_event::pack_info(String* packet) { @@ -1811,6 +1846,7 @@ void Rand_log_event::pack_info(String* packet) net_store_data(packet, buf1, (uint) (pos-buf1)); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1863,6 +1899,7 @@ void Rand_log_event::print(FILE* file, bool short_form, char* last_db) Rand_log_event::exec_event() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Rand_log_event::exec_event(struct st_relay_log_info* rli) { @@ -1872,6 +1909,7 @@ int Rand_log_event::exec_event(struct st_relay_log_info* rli) return 0; } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -1887,6 +1925,8 @@ int Rand_log_event::exec_event(struct st_relay_log_info* rli) Slave_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY + #ifndef MYSQL_CLIENT void Slave_log_event::pack_info(String* packet) { @@ -2110,6 +2150,7 @@ int Stop_log_event::exec_event(struct st_relay_log_info* rli) return 0; } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -2235,6 +2276,7 @@ void Create_file_log_event::print(FILE* file, bool short_form, Create_file_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Create_file_log_event::pack_info(String* packet) { @@ -2254,12 +2296,14 @@ void Create_file_log_event::pack_info(String* packet) net_store_data(packet, (char*) tmp.ptr(), tmp.length()); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** Create_file_log_event::exec_event() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Create_file_log_event::exec_event(struct st_relay_log_info* rli) { @@ -2318,6 +2362,7 @@ err: return error ? 1 : Log_event::exec_event(rli); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -2394,6 +2439,7 @@ void Append_block_log_event::print(FILE* file, bool short_form, Append_block_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Append_block_log_event::pack_info(String* packet) { @@ -2405,12 +2451,14 @@ void Append_block_log_event::pack_info(String* packet) net_store_data(packet, buf, (int32) length); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** Append_block_log_event::exec_event() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Append_block_log_event::exec_event(struct st_relay_log_info* rli) { @@ -2440,6 +2488,7 @@ err: return error ? error : Log_event::exec_event(rli); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -2509,6 +2558,7 @@ void Delete_file_log_event::print(FILE* file, bool short_form, Delete_file_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Delete_file_log_event::pack_info(String* packet) { @@ -2518,12 +2568,14 @@ void Delete_file_log_event::pack_info(String* packet) net_store_data(packet, buf, (int32) length); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** Delete_file_log_event::exec_event() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Delete_file_log_event::exec_event(struct st_relay_log_info* rli) { @@ -2538,6 +2590,7 @@ int Delete_file_log_event::exec_event(struct st_relay_log_info* rli) return Log_event::exec_event(rli); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -2608,6 +2661,7 @@ void Execute_load_log_event::print(FILE* file, bool short_form, Execute_load_log_event::pack_info() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT void Execute_load_log_event::pack_info(String* packet) { @@ -2617,12 +2671,14 @@ void Execute_load_log_event::pack_info(String* packet) net_store_data(packet, buf, (int32) length); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** Execute_load_log_event::exec_event() ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY #ifndef MYSQL_CLIENT int Execute_load_log_event::exec_event(struct st_relay_log_info* rli) { @@ -2683,6 +2739,7 @@ err: return error ? error : Log_event::exec_event(rli); } #endif // !MYSQL_CLIENT +#endif /* EMBEDDED_LIBRARY */ /***************************************************************************** @@ -2774,8 +2831,3 @@ char* sql_ex_info::init(char* buf,char* buf_end,bool use_new_format) } - - - - - diff --git a/sql/log_event.h b/sql/log_event.h index 20a134ab3cc..db5b1790123 100644 --- a/sql/log_event.h +++ b/sql/log_event.h @@ -267,10 +267,12 @@ public: static int read_log_event(IO_CACHE* file, String* packet, pthread_mutex_t* log_lock); void set_log_pos(MYSQL_LOG* log); - virtual void pack_info(String* packet); - int net_send(THD* thd, const char* log_name, my_off_t pos); static void init_show_field_list(List<Item>* field_list); +#ifndef EMBEDDED_LIBRARY + int net_send(THD* thd, const char* log_name, my_off_t pos); + virtual void pack_info(String* packet); virtual int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ virtual const char* get_db() { return thd ? thd->db : 0; @@ -355,8 +357,10 @@ public: Query_log_event(THD* thd_arg, const char* query_arg, ulong query_length, bool using_trans); const char* get_db() { return db; } +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -383,6 +387,7 @@ public: } }; +#ifndef EMBEDDED_LIBRARY /***************************************************************************** @@ -404,8 +409,10 @@ public: #ifndef MYSQL_CLIENT Slave_log_event(THD* thd_arg, struct st_relay_log_info* rli); +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -418,6 +425,8 @@ public: int write_data(IO_CACHE* file ); }; +#endif /* EMBEDDED_LIBRARY */ + /***************************************************************************** @@ -454,13 +463,15 @@ public: List<Item>& fields_arg, enum enum_duplicates handle_dup, bool using_trans); void set_fields(List<Item> &fields_arg); - void pack_info(String* packet); const char* get_db() { return db; } +#ifndef EMBEDDED_LIBRARY + void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli) { return exec_event(thd->slave_net,rli); } int exec_event(NET* net, struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -507,8 +518,10 @@ public: created = (uint32) when; memcpy(server_version, ::server_version, ST_SERVER_VER_LEN); } +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -542,8 +555,10 @@ public: Intvar_log_event(THD* thd_arg,uchar type_arg, ulonglong val_arg) :Log_event(),val(val_arg),type(type_arg) {} +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -574,8 +589,10 @@ class Rand_log_event: public Log_event Rand_log_event(THD* thd_arg, ulonglong seed1_arg, ulonglong seed2_arg) :Log_event(thd_arg,0,0),seed1(seed1_arg),seed2(seed2_arg) {} +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -594,13 +611,17 @@ class Rand_log_event: public Log_event Stop Log Event class ****************************************************************************/ +#ifndef EMBEDDED_LIBRARY + class Stop_log_event: public Log_event { public: #ifndef MYSQL_CLIENT Stop_log_event() :Log_event() {} +#ifndef EMBEDDED_LIBRARY int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -613,6 +634,8 @@ public: bool is_valid() { return 1; } }; +#endif /* EMBEDDED_LIBRARY */ + /***************************************************************************** @@ -636,8 +659,10 @@ public: pos(pos_arg),ident_len(ident_len_arg ? ident_len_arg : (uint) strlen(new_log_ident_arg)), alloced(0) {} +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -683,8 +708,10 @@ public: enum enum_duplicates handle_dup, char* block_arg, uint block_len_arg, bool using_trans); +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -733,8 +760,10 @@ public: #ifndef MYSQL_CLIENT Append_block_log_event(THD* thd, char* block_arg, uint block_len_arg, bool using_trans); +#ifndef EMBEDDED_LIBRARY int exec_event(struct st_relay_log_info* rli); void pack_info(String* packet); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -759,8 +788,10 @@ public: #ifndef MYSQL_CLIENT Delete_file_log_event(THD* thd, bool using_trans); +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif @@ -785,8 +816,10 @@ public: #ifndef MYSQL_CLIENT Execute_load_log_event(THD* thd, bool using_trans); +#ifndef EMBEDDED_LIBRARY void pack_info(String* packet); int exec_event(struct st_relay_log_info* rli); +#endif /* EMBEDDED_LIBRARY */ #else void print(FILE* file, bool short_form = 0, char* last_db = 0); #endif diff --git a/sql/mf_iocache.cc b/sql/mf_iocache.cc index 1bc65eebd23..436b79b23c3 100644 --- a/sql/mf_iocache.cc +++ b/sql/mf_iocache.cc @@ -30,6 +30,8 @@ flush_io_cache(). */ +#ifndef EMBEDDED_LIBRARY + #define MAP_TO_USE_RAID #include "mysql_priv.h" #ifdef HAVE_AIOWAIT @@ -81,3 +83,6 @@ int _my_b_net_read(register IO_CACHE *info, byte *Buffer, } } /* extern "C" */ +#endif /* EMBEDDED_LIBRARY */ + + diff --git a/sql/mini_client.cc b/sql/mini_client.cc index 83f68a28228..b84f01da16c 100644 --- a/sql/mini_client.cc +++ b/sql/mini_client.cc @@ -22,6 +22,7 @@ in case we decide to make them external at some point */ +#ifndef EMBEDDED_LIBRARY #include <my_global.h> /* my_pthread must be included early to be able to fix things */ #if defined(THREAD) @@ -1471,3 +1472,5 @@ MYSQL_RES *mc_mysql_store_result(MYSQL *mysql) mysql->fields=0; /* fields is now in result */ DBUG_RETURN(result); /* Data fetched */ } + +#endif /*EMBEDDED_LIBRARY*/ diff --git a/sql/mysqld.cc b/sql/mysqld.cc index bd9798f607c..78cbfba26ca 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -486,6 +486,8 @@ static uint set_maximum_open_files(uint max_file_limit); #endif static ulong find_bit_type(const char *x, TYPELIB *bit_lib); + +#ifndef EMBEDDED_LIBRARY /**************************************************************************** ** Code to end mysqld ****************************************************************************/ @@ -661,6 +663,7 @@ static void close_connections(void) DBUG_PRINT("quit",("close_connections thread")); DBUG_VOID_RETURN; } +#endif /*EMBEDDED_LIBRARY*/ static void close_server_sock() { @@ -752,6 +755,7 @@ void kill_mysql(void) DBUG_VOID_RETURN; } +#ifndef EMBEDDED_LIBRARY /* Force server down. kill all connections and threads and exit */ @@ -792,13 +796,16 @@ static void __cdecl kill_server(int sig_ptr) RETURN_FROM_KILL_SERVER; } +#endif /* EMBEDDED_LIBRARY */ #ifdef USE_ONE_SIGNAL_HAND extern "C" pthread_handler_decl(kill_server_thread,arg __attribute__((unused))) { SHUTDOWN_THD; my_thread_init(); // Initialize new thread +#ifndef EMBEDDED_LIBRARY kill_server(0); +#endif /* EMBEDDED_LIBRARY */ my_thread_end(); // Normally never reached return 0; } @@ -869,8 +876,10 @@ void clean_up(bool print_message) DBUG_PRINT("exit",("clean_up")); if (cleanup_done++) return; /* purecov: inspected */ +#ifndef EMBEDDED_LIBRARY if (use_slave_mask) bitmap_free(&slave_error_mask); +#endif acl_free(1); grant_free(); query_cache_destroy(); @@ -892,12 +901,16 @@ void clean_up(bool print_message) free_defaults(defaults_argv); my_free(charsets_list, MYF(MY_ALLOW_ZERO_PTR)); free_tmpdir(&mysql_tmpdir_list); +#ifndef EMBEDDED_LIBRARY my_free(slave_load_tmpdir,MYF(MY_ALLOW_ZERO_PTR)); +#endif x_free(opt_bin_logname); x_free(opt_relay_logname); bitmap_free(&temp_pool); free_max_user_conn(); +#ifndef EMBEDDED_LIBRARY end_slave_list(); +#endif #ifdef USE_REGEX regex_end(); #endif @@ -1179,7 +1192,7 @@ void yyerror(const char *s) thd->lex.yylineno); } - +#ifndef EMBEDDED_LIBRARY void close_connection(NET *net,uint errcode,bool lock) { st_vio* vio; @@ -1199,6 +1212,7 @@ void close_connection(NET *net,uint errcode,bool lock) (void) pthread_mutex_unlock(&LOCK_thread_count); DBUG_VOID_RETURN; } +#endif /* Called when a thread is aborted */ /* ARGSUSED */ @@ -1714,7 +1728,7 @@ extern "C" int my_message_sql(uint error, const char *str, void clear_error_message(THD *thd) { - thd->net.last_error[0]= 0; + thd->clear_error(); } @@ -1935,7 +1949,9 @@ static int init_thread_environement() (void) pthread_mutex_init(&LOCK_bytes_received,MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_timezone,MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_user_conn, MY_MUTEX_INIT_FAST); +#ifndef EMBEDDED_LIBRARY (void) pthread_mutex_init(&LOCK_rpl_status, MY_MUTEX_INIT_FAST); +#endif (void) pthread_mutex_init(&LOCK_active_mi, MY_MUTEX_INIT_FAST); (void) pthread_mutex_init(&LOCK_global_system_variables, MY_MUTEX_INIT_FAST); (void) my_rwlock_init(&LOCK_grant, NULL); @@ -1944,7 +1960,9 @@ static int init_thread_environement() (void) pthread_cond_init(&COND_thread_cache,NULL); (void) pthread_cond_init(&COND_flush_thread_cache,NULL); (void) pthread_cond_init(&COND_manager,NULL); +#ifndef EMBEDDED_LIBRARY (void) pthread_cond_init(&COND_rpl_status, NULL); +#endif /* Parameter for threads created for connections */ (void) pthread_attr_init(&connection_attrib); (void) pthread_attr_setdetachstate(&connection_attrib, @@ -1991,7 +2009,9 @@ static int init_server_components() randominit(&sql_rand,(ulong) start_time,(ulong) start_time/2); reset_floating_point_exceptions(); init_thr_lock(); +#ifndef EMBEDDED_LIBRARY init_slave_list(); +#endif /* Setup log files */ if (opt_log) open_log(&mysql_log, glob_hostname, opt_logname, ".log", NullS, @@ -2126,6 +2146,7 @@ void create_named_pipe_thread() } #endif +#ifndef EMBEDDED_LIBRARY #ifdef __WIN__ int win_main(int argc, char **argv) #else @@ -2316,474 +2337,7 @@ The server will not act as a slave."); return(0); /* purecov: deadcode */ } -#ifdef _DUMMY - -#ifdef __WIN__ -int win_main(int argc, char **argv) -#else -int main(int argc, char **argv) -#endif -{ - DEBUGGER_OFF; - - my_umask=0660; // Default umask for new files - my_umask_dir=0700; // Default umask for new directories - MAIN_THD; - /* - Initialize signal_th and shutdown_th to main_th for default value - as we need to initialize them to something safe. They are used - when compiled with safemalloc. - */ - SIGNAL_THD; - SHUTDOWN_THD; - MY_INIT(argv[0]); // init my_sys library & pthreads - tzset(); // Set tzname - - start_time=time((time_t*) 0); -#ifdef OS2 - { - // fix timezone for daylight saving - struct tm *ts = localtime(&start_time); - if (ts->tm_isdst > 0) - _timezone -= 3600; - } -#endif -#ifdef HAVE_TZNAME -#if defined(HAVE_LOCALTIME_R) && defined(_REENTRANT) - { - struct tm tm_tmp; - localtime_r(&start_time,&tm_tmp); - strmov(time_zone,tzname[tm_tmp.tm_isdst != 0 ? 1 : 0]); - } -#else - { - struct tm *start_tm; - start_tm=localtime(&start_time); - strmov(time_zone,tzname[start_tm->tm_isdst != 0 ? 1 : 0]); - } -#endif -#endif - - if (gethostname(glob_hostname,sizeof(glob_hostname)-4) < 0) - strmov(glob_hostname,"mysql"); - strmake(pidfile_name, glob_hostname, sizeof(pidfile_name)-5); - strmov(fn_ext(pidfile_name),".pid"); // Add proper extension -#ifndef DBUG_OFF - strxmov(strend(server_version),MYSQL_SERVER_SUFFIX,"-debug",NullS); -#else - strmov(strend(server_version),MYSQL_SERVER_SUFFIX); -#endif -#ifdef _CUSTOMSTARTUPCONFIG_ - if (_cust_check_startup()) - { - /* _cust_check_startup will report startup failure error */ - exit( 1 ); - } -#endif - load_defaults(MYSQL_CONFIG_NAME,load_default_groups,&argc,&argv); - defaults_argv=argv; - - set_options(); - get_options(argc,argv); - if (opt_log || opt_update_log || opt_slow_log || opt_bin_log) - strcat(server_version,"-log"); - DBUG_PRINT("info",("%s Ver %s for %s on %s\n",my_progname, - server_version, SYSTEM_TYPE,MACHINE_TYPE)); - - /* These must be set early */ - - (void) pthread_mutex_init(&LOCK_mysql_create_db,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_Acl,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_open,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_thread_count,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_mapped_file,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_status,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_error_log,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_delayed_insert,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_delayed_status,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_delayed_create,MY_MUTEX_INIT_SLOW); - (void) pthread_mutex_init(&LOCK_manager,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_crypt,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_bytes_sent,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_bytes_received,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_timezone,MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_user_conn, MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_rpl_status, MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_active_mi, MY_MUTEX_INIT_FAST); - (void) pthread_mutex_init(&LOCK_global_system_variables, MY_MUTEX_INIT_FAST); - (void) my_rwlock_init(&LOCK_grant, NULL); - (void) pthread_cond_init(&COND_thread_count,NULL); - (void) pthread_cond_init(&COND_refresh,NULL); - (void) pthread_cond_init(&COND_thread_cache,NULL); - (void) pthread_cond_init(&COND_flush_thread_cache,NULL); - (void) pthread_cond_init(&COND_manager,NULL); - (void) pthread_cond_init(&COND_rpl_status, NULL); - init_signals(); - - if (set_default_charset_by_name(sys_charset.value, MYF(MY_WME))) - exit(1); - charsets_list= list_charsets(MYF(MY_CS_COMPILED | MY_CS_CONFIG)); - -#ifdef HAVE_OPENSSL - if (opt_use_ssl) - { - /* having ssl_acceptor_fd != 0 signals the use of SSL */ - ssl_acceptor_fd= new_VioSSLAcceptorFd(opt_ssl_key, opt_ssl_cert, - opt_ssl_ca, opt_ssl_capath, - opt_ssl_cipher); - DBUG_PRINT("info",("ssl_acceptor_fd: %lx", (long) ssl_acceptor_fd)); - if (!ssl_acceptor_fd) - opt_use_ssl = 0; - } -#endif /* HAVE_OPENSSL */ - -#ifdef HAVE_LIBWRAP - libwrapName= my_progname+dirname_length(my_progname); - openlog(libwrapName, LOG_PID, LOG_AUTH); -#endif - - if (!(opt_specialflag & SPECIAL_NO_PRIOR)) - my_pthread_setprio(pthread_self(),CONNECT_PRIOR); - /* Parameter for threads created for connections */ - (void) pthread_attr_init(&connection_attrib); - (void) pthread_attr_setdetachstate(&connection_attrib, - PTHREAD_CREATE_DETACHED); - pthread_attr_setstacksize(&connection_attrib,thread_stack); - - if (!(opt_specialflag & SPECIAL_NO_PRIOR)) - my_pthread_attr_setprio(&connection_attrib,WAIT_PRIOR); - pthread_attr_setscope(&connection_attrib, PTHREAD_SCOPE_SYSTEM); - -#if defined( SET_RLIMIT_NOFILE) || defined( OS2) - /* connections and databases needs lots of files */ - { - uint wanted_files=10+(uint) max(max_connections*5, - max_connections+table_cache_size*2); - set_if_bigger(wanted_files, open_files_limit); - // Note that some system returns 0 if we succeed here: - uint files=set_maximum_open_files(wanted_files); - if (files && files < wanted_files && ! open_files_limit) - { - max_connections= (ulong) min((files-10),max_connections); - table_cache_size= (ulong) max((files-10-max_connections)/2,64); - DBUG_PRINT("warning", - ("Changed limits: max_connections: %ld table_cache: %ld", - max_connections,table_cache_size)); - sql_print_error("Warning: Changed limits: max_connections: %ld table_cache: %ld",max_connections,table_cache_size); - } - } -#endif - unireg_init(opt_specialflag); /* Set up extern variabels */ - init_errmessage(); /* Read error messages from file */ - lex_init(); - item_init(); - set_var_init(); - mysys_uses_curses=0; -#ifdef USE_REGEX - regex_init(); -#endif - select_thread=pthread_self(); - select_thread_in_use=1; - if (use_temp_pool && bitmap_init(&temp_pool,1024,1)) - unireg_abort(1); - - /* - We have enough space for fiddling with the argv, continue - */ - if (my_setwd(mysql_real_data_home,MYF(MY_WME))) - { - unireg_abort(1); /* purecov: inspected */ - } - mysql_data_home= mysql_data_home_buff; - mysql_data_home[0]=FN_CURLIB; // all paths are relative from here - mysql_data_home[1]=0; - server_init(); - table_cache_init(); - hostname_cache_init(); - query_cache_result_size_limit(query_cache_limit); - query_cache_resize(query_cache_size); - randominit(&sql_rand,(ulong) start_time,(ulong) start_time/2); - reset_floating_point_exceptions(); - init_thr_lock(); - init_slave_list(); -#ifdef HAVE_OPENSSL - if (des_key_file) - load_des_key_file(des_key_file); -#endif /* HAVE_OPENSSL */ - - /* Setup log files */ - if (opt_log) - open_log(&mysql_log, glob_hostname, opt_logname, ".log", NullS, - LOG_NORMAL); - if (opt_update_log) - { - open_log(&mysql_update_log, glob_hostname, opt_update_logname, "", - NullS, LOG_NEW); - using_update_log=1; - } - - if (opt_slow_log) - open_log(&mysql_slow_log, glob_hostname, opt_slow_logname, "-slow.log", - NullS, LOG_NORMAL); -#ifdef __WIN__ -#define MYSQL_ERR_FILE "mysql.err" - if (!opt_console) - { - freopen(MYSQL_ERR_FILE,"a+",stdout); - freopen(MYSQL_ERR_FILE,"a+",stderr); - } -#endif - if (ha_init()) - { - sql_print_error("Can't init databases"); - if (unix_sock != INVALID_SOCKET) - unlink(mysql_unix_port); - exit(1); - } - ha_key_cache(); -#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT) - if (locked_in_memory && !geteuid()) - { - if (mlockall(MCL_CURRENT)) - { - sql_print_error("Warning: Failed to lock memory. Errno: %d\n",errno); - } - else - locked_in_memory=1; - } -#else - locked_in_memory=0; -#endif - - if (opt_myisam_log) - (void) mi_log( 1 ); - ft_init_stopwords(ft_precompiled_stopwords); - -#ifdef __WIN__ - if (!opt_console) - FreeConsole(); // Remove window -#endif - - /* - init signals & alarm - After this we can't quit by a simple unireg_abort - */ - error_handler_hook = my_message_sql; - if (pthread_key_create(&THR_THD,NULL) || - pthread_key_create(&THR_MALLOC,NULL)) - { - sql_print_error("Can't create thread-keys"); - if (unix_sock != INVALID_SOCKET) - unlink(mysql_unix_port); - exit(1); - } - start_signal_handler(); // Creates pidfile - if (acl_init((THD*) 0, opt_noacl)) - { - abort_loop=1; - select_thread_in_use=0; - (void) pthread_kill(signal_thread,MYSQL_KILL_SIGNAL); -#ifndef __WIN__ - if (!opt_bootstrap) - (void) my_delete(pidfile_name,MYF(MY_WME)); // Not needed anymore -#endif - if (unix_sock != INVALID_SOCKET) - unlink(mysql_unix_port); - exit(1); - } - if (!opt_noacl) - (void) grant_init((THD*) 0); - init_max_user_conn(); - init_update_queries(); - DBUG_ASSERT(current_thd == 0); - -#ifdef HAVE_DLOPEN - if (!opt_noacl) - udf_init(); -#endif - /* init_slave() must be called after the thread keys are created */ - init_slave(); - - DBUG_ASSERT(current_thd == 0); - if (opt_bin_log && !server_id) - { - server_id= !master_host ? 1 : 2; - switch (server_id) { -#ifdef EXTRA_DEBUG - case 1: - sql_print_error("\ -Warning: You have enabled the binary log, but you haven't set server-id:\n\ -Updates will be logged to the binary log, but connections to slaves will\n\ -not be accepted."); - break; -#endif - case 2: - sql_print_error("\ -Warning: You should set server-id to a non-0 value if master_host is set.\n\ -The server will not act as a slave."); - break; - } - } - if (opt_bin_log) - { - open_log(&mysql_bin_log, glob_hostname, opt_bin_logname, "-bin", - opt_binlog_index_name,LOG_BIN); - using_update_log=1; - } - - - if (opt_bootstrap) - { - int error=bootstrap(stdin); - end_thr_alarm(); // Don't allow alarms - unireg_abort(error ? 1 : 0); - } - if (opt_init_file) - { - if (read_init_file(opt_init_file)) - { - end_thr_alarm(); // Don't allow alarms - unireg_abort(1); - } - } - (void) thr_setconcurrency(concurrency); // 10 by default -#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY) //IRENA - { - hEventShutdown=CreateEvent(0, FALSE, FALSE, event_name); - pthread_t hThread; - if (pthread_create(&hThread,&connection_attrib,handle_shutdown,0)) - sql_print_error("Warning: Can't create thread to handle shutdown requests"); - - // On "Stop Service" we have to do regular shutdown - Service.SetShutdownEvent(hEventShutdown); - } -#endif -#ifdef OS2 - { - pthread_cond_init( &eventShutdown, NULL); - pthread_t hThread; - if (pthread_create(&hThread,&connection_attrib,handle_shutdown,0)) - sql_print_error("Warning: Can't create thread to handle shutdown requests"); - } -#endif - - if ( -#ifdef HAVE_BERKELEY_DB - !berkeley_skip || -#endif - (flush_time && flush_time != ~(ulong) 0L)) - { - pthread_t hThread; - if (pthread_create(&hThread,&connection_attrib,handle_manager,0)) - sql_print_error("Warning: Can't create thread to manage maintenance"); - } - - printf(ER(ER_READY),my_progname,server_version,""); - fflush(stdout); -#if defined(__NT__) || defined(HAVE_SMEM) -#ifdef __NT__ - if (hPipe == INVALID_HANDLE_VALUE && - (!have_tcpip || opt_disable_networking) && - !opt_enable_shared_memory) - { - sql_print_error("TCP/IP,--shared-memory or --named-pipe should be configured on NT OS"); - unireg_abort(1); - } - else -#endif - { - pthread_mutex_lock(&LOCK_thread_count); - (void) pthread_cond_init(&COND_handler_count,NULL); - { - pthread_t hThread; - handler_count=0; -#ifdef __NT__ - if (hPipe != INVALID_HANDLE_VALUE && opt_enable_named_pipe) - { - handler_count++; - if (pthread_create(&hThread,&connection_attrib, - handle_connections_namedpipes, 0)) - { - sql_print_error("Warning: Can't create thread to handle named pipes"); - handler_count--; - } - } -#endif -#ifdef HAVE_SMEM - if (opt_enable_shared_memory) - { - handler_count++; - if (pthread_create(&hThread,&connection_attrib, - handle_connections_shared_memory, 0)) - { - sql_print_error("Warning: Can't create thread to handle shared memory"); - handler_count--; - } - } -#endif - if (have_tcpip && !opt_disable_networking) - { - handler_count++; - if (pthread_create(&hThread,&connection_attrib, - handle_connections_sockets, 0)) - { - sql_print_error("Warning: Can't create thread to handle tcp/ip"); - handler_count--; - } - } - while (handler_count > 0) - { - pthread_cond_wait(&COND_handler_count,&LOCK_thread_count); - } - } - pthread_mutex_unlock(&LOCK_thread_count); - } -#else - handle_connections_sockets(0); -#ifdef EXTRA_DEBUG2 - sql_print_error("Exiting main thread"); -#endif -#endif /* __NT__ */ - - /* (void) pthread_attr_destroy(&connection_attrib); */ - - DBUG_PRINT("quit",("Exiting main thread")); - -#ifndef __WIN__ -#ifdef EXTRA_DEBUG2 - sql_print_error("Before Lock_thread_count"); -#endif - (void) pthread_mutex_lock(&LOCK_thread_count); - DBUG_PRINT("quit", ("Got thread_count mutex")); - select_thread_in_use=0; // For close_connections - (void) pthread_mutex_unlock(&LOCK_thread_count); - (void) pthread_cond_broadcast(&COND_thread_count); -#ifdef EXTRA_DEBUG2 - sql_print_error("After lock_thread_count"); -#endif -#endif /* __WIN__ */ - - /* Wait until cleanup is done */ - (void) pthread_mutex_lock(&LOCK_thread_count); - while (!ready_to_exit) - pthread_cond_wait(&COND_thread_count,&LOCK_thread_count); - (void) pthread_mutex_unlock(&LOCK_thread_count); - -#if defined(__WIN__) && !defined(EMBEDDED_LIBRARY) - if (Service.IsNT() && start_mode) - Service.Stop(); - else - { - Service.SetShutdownEvent(0); - if (hEventShutdown) - CloseHandle(hEventShutdown); - } -#endif - my_end(opt_endinfo ? MY_CHECK_ERROR | MY_GIVE_INFO : 0); - exit(0); - return(0); /* purecov: deadcode */ -} -#endif +#endif /* EMBEDDED_LIBRARY */ /**************************************************************************** Main and thread entry function for Win32 @@ -2922,7 +2476,7 @@ int main(int argc, char **argv) Execute all commands from a file. Used by the mysql_install_db script to create MySQL privilege tables without having to start a full MySQL server. */ - +#ifndef EMBEDDED_LIBRARY static int bootstrap(FILE *file) { THD *thd= new THD; @@ -2959,6 +2513,8 @@ static int bootstrap(FILE *file) DBUG_RETURN(error); } +#endif + static bool read_init_file(char *file_name) { FILE *file; @@ -2966,11 +2522,14 @@ static bool read_init_file(char *file_name) DBUG_PRINT("enter",("name: %s",file_name)); if (!(file=my_fopen(file_name,O_RDONLY,MYF(MY_WME)))) return(1); +#ifndef EMBEDDED_LIBRARY bootstrap(file); /* Ignore errors from this */ +#endif (void) my_fclose(file,MYF(MY_WME)); return 0; } +#ifndef EMBEDDED_LIBRARY static void create_new_thread(THD *thd) { @@ -3052,6 +2611,7 @@ static void create_new_thread(THD *thd) DBUG_PRINT("info",("Thread created")); DBUG_VOID_RETURN; } +#endif #ifdef SIGNALS_DONT_BREAK_READ inline void kill_broken_server() @@ -3069,6 +2629,7 @@ inline void kill_broken_server() #define MAYBE_BROKEN_SYSCALL #endif +#ifndef EMBEDDED_LIBRARY /* Handle new connections and spawn new process to handle them */ extern "C" pthread_handler_decl(handle_connections_sockets,arg __attribute__((unused))) @@ -3573,6 +3134,7 @@ error: } #endif /* HAVE_SMEM */ +#endif /* EMBEDDED_LIBRARY */ /****************************************************************************** ** handle start options @@ -3937,6 +3499,7 @@ struct my_option my_long_options[] = GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0}, {"memlock", OPT_MEMLOCK, "Lock mysqld in memory", (gptr*) &locked_in_memory, (gptr*) &locked_in_memory, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, +#ifndef EMBEDDED_LIBRARY {"disconnect-slave-event-count", OPT_DISCONNECT_SLAVE_EVENT_COUNT, "Option used by mysql-test for debugging and testing of replication", (gptr*) &disconnect_slave_event_count, @@ -3955,6 +3518,7 @@ struct my_option my_long_options[] = (gptr*) &opt_sporadic_binlog_dump_fail, (gptr*) &opt_sporadic_binlog_dump_fail, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, +#endif /* EMBEDDED_LIBRARY */ {"safemalloc-mem-limit", OPT_SAFEMALLOC_MEM_LIMIT, "Simulate memory shortage when compiled with the --with-debug=full option", 0, 0, 0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -4097,12 +3661,14 @@ struct my_option my_long_options[] = {"relay-log-info-file", OPT_RELAY_LOG_INFO_FILE, "Undocumented", (gptr*) &relay_log_info_file, (gptr*) &relay_log_info_file, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, +#ifndef EMBEDDED_LIBRARY {"slave-load-tmpdir", OPT_SLAVE_LOAD_TMPDIR, "Undocumented", (gptr*) &slave_load_tmpdir, (gptr*) &slave_load_tmpdir, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, {"slave-skip-errors", OPT_SLAVE_SKIP_ERRORS, "Tells the slave thread to continue replication when a query returns an error from the provided list", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, +#endif {"socket", OPT_SOCKET, "Socket file to use for connection", (gptr*) &mysql_unix_port, (gptr*) &mysql_unix_port, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -4430,6 +3996,7 @@ struct my_option my_long_options[] = (gptr*) &global_system_variables.read_buff_size, (gptr*) &max_system_variables.read_buff_size,0, GET_ULONG, REQUIRED_ARG, 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE, 0}, +#ifndef EMBEDDED_LIBRARY {"relay_log_space_limit", OPT_RELAY_LOG_SPACE_LIMIT, "Max space to use for all relay logs", (gptr*) &relay_log_space_limit, @@ -4444,6 +4011,7 @@ struct my_option my_long_options[] = "Number of seconds to wait for more data from a master/slave connection before aborting the read.", (gptr*) &slave_net_timeout, (gptr*) &slave_net_timeout, 0, GET_ULONG, REQUIRED_ARG, SLAVE_NET_TIMEOUT, 1, LONG_TIMEOUT, 0, 1, 0}, +#endif {"slow_launch_time", OPT_SLOW_LAUNCH_TIME, "If creating the thread takes longer than this value (in seconds), the Slow_launch_threads counter will be incremented.", (gptr*) &slow_launch_time, (gptr*) &slow_launch_time, 0, GET_ULONG, @@ -4787,9 +4355,11 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case 'o': protocol_version=PROTOCOL_VERSION-1; break; +#ifndef EMBEDDED_LIBRARY case OPT_SLAVE_SKIP_ERRORS: init_slave_skip_errors(argument); break; +#endif case OPT_SAFEMALLOC_MEM_LIMIT: #if !defined(DBUG_OFF) && defined(SAFEMALLOC) safemalloc_mem_limit = atoi(argument); @@ -4829,6 +4399,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), case (int) OPT_BIN_LOG: opt_bin_log=1; break; +#ifndef EMBEDDED_LIBRARY case (int) OPT_INIT_RPL_ROLE: { int role; @@ -4949,13 +4520,14 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)), table_rules_on = 1; break; } - case (int) OPT_SLOW_QUERY_LOG: - opt_slow_log=1; - break; case (int)OPT_RECKLESS_SLAVE: opt_reckless_slave = 1; init_slave_skip_errors("all"); break; +#endif /* EMBEDDED_LIBRARY */ + case (int) OPT_SLOW_QUERY_LOG: + opt_slow_log=1; + break; case (int) OPT_SKIP_NEW: opt_specialflag|= SPECIAL_NO_NEW_FUNC; delay_key_write_options= (uint) DELAY_KEY_WRITE_NONE; @@ -5329,11 +4901,13 @@ static void fix_paths(void) if (init_tmpdir(&mysql_tmpdir_list, opt_mysql_tmpdir)) exit(1); +#ifndef EMBEDDED_LIBRARY if (!slave_load_tmpdir) { if (!(slave_load_tmpdir = (char*) my_strdup(mysql_tmpdir, MYF(MY_FAE)))) exit(1); } +#endif } diff --git a/sql/net_pkg.cc b/sql/net_pkg.cc index 0fc2347bebd..7a3ec5ebf64 100644 --- a/sql/net_pkg.cc +++ b/sql/net_pkg.cc @@ -30,7 +30,9 @@ void send_error(THD *thd, uint sql_errno, const char *err) err ? err : net->last_error[0] ? net->last_error : "NULL")); +#ifndef EMBEDDED_LIBRARY query_cache_abort(net); +#endif thd->query_error= 1; // needed to catch query errors during replication if (!err) { @@ -86,6 +88,7 @@ void send_error(THD *thd, uint sql_errno, const char *err) This is used by mysqld.cc, which doesn't have a THD */ +#ifndef EMBEDDED_LIBRARY void net_send_error(NET *net, uint sql_errno, const char *err) { char buff[2]; @@ -98,7 +101,7 @@ void net_send_error(NET *net, uint sql_errno, const char *err) net_write_command(net,(uchar) 255, buff, 2, err, length); DBUG_VOID_RETURN; } - +#endif /* Send a warning to the end user @@ -135,14 +138,22 @@ net_printf(THD *thd, uint errcode, ...) { va_list args; uint length,offset; - const char *format,*text_pos; + const char *format; +#ifndef EMBEDDED_LIBRARY + const char *text_pos; +#else + char text_pos[500]; +#endif int head_length= NET_HEADER_SIZE; NET *net= &thd->net; + DBUG_ENTER("net_printf"); DBUG_PRINT("enter",("message: %u",errcode)); thd->query_error= 1; // needed to catch query errors during replication +#ifndef EMBEDDED_LIBRARY query_cache_abort(net); // Safety +#endif va_start(args,errcode); /* The following is needed to make net_printf() work with 0 argument for @@ -158,7 +169,9 @@ net_printf(THD *thd, uint errcode, ...) errcode= ER_UNKNOWN_ERROR; } offset= net->return_errno ? 2 : 0; +#ifndef EMBEDDED_LIBRARY text_pos=(char*) net->buff+head_length+offset+1; +#endif (void) vsprintf(my_const_cast(char*) (text_pos),format,args); length=(uint) strlen((char*) text_pos); if (length >= sizeof(net->last_error)) @@ -191,6 +204,28 @@ net_printf(THD *thd, uint errcode, ...) DBUG_VOID_RETURN; } +/* + Function called by my_net_init() to set some check variables +*/ + +#ifndef EMBEDDED_LIBRARY +extern "C" { +void my_net_local_init(NET *net) +{ + net->max_packet= (uint) global_system_variables.net_buffer_length; + net->read_timeout= (uint) global_system_variables.net_read_timeout; + net->write_timeout=(uint) global_system_variables.net_write_timeout; + net->retry_count= (uint) global_system_variables.net_retry_count; + net->max_packet_size= max(global_system_variables.net_buffer_length, + global_system_variables.max_allowed_packet); +} +} + +#else /* EMBEDDED_LIBRARY */ +void my_net_local_init(NET *net __attribute__(unused)) +{ +} +#endif /* EMBEDDED_LIBRARY */ /* Return ok to the client. @@ -488,19 +523,3 @@ net_store_data(String *packet, CONVERT *convert, const char *from) return convert->store(packet, from, length); return net_store_data(packet,from,length); } - -/* - Function called by my_net_init() to set some check variables -*/ - -extern "C" { -void my_net_local_init(NET *net) -{ - net->max_packet= (uint) global_system_variables.net_buffer_length; - net->read_timeout= (uint) global_system_variables.net_read_timeout; - net->write_timeout=(uint) global_system_variables.net_write_timeout; - net->retry_count= (uint) global_system_variables.net_retry_count; - net->max_packet_size= max(global_system_variables.net_buffer_length, - global_system_variables.max_allowed_packet); -} -} diff --git a/sql/net_serv.cc b/sql/net_serv.cc index d165125eb90..f9adee5812a 100644 --- a/sql/net_serv.cc +++ b/sql/net_serv.cc @@ -23,6 +23,7 @@ 3 byte length & 1 byte package-number. */ +#ifndef EMBEDDED_LIBRARY #ifdef __WIN__ #include <winsock.h> #endif @@ -852,3 +853,6 @@ my_net_read(NET *net) #endif /* HAVE_COMPRESS */ return len; } + +#endif /* EMBEDDED_LIBRARY */ + diff --git a/sql/repl_failsafe.cc b/sql/repl_failsafe.cc index 785a253b1ac..2af2d5ab737 100644 --- a/sql/repl_failsafe.cc +++ b/sql/repl_failsafe.cc @@ -16,6 +16,8 @@ // Sasha Pachev <sasha@mysql.com> is currently in charge of this file +#ifndef EMBEDDED_LIBRARY + #include "mysql_priv.h" #include "repl_failsafe.h" #include "sql_repl.h" @@ -889,3 +891,6 @@ err: return error; } + +#endif /* EMBEDDED_LIBRARY */ + diff --git a/sql/repl_failsafe.h b/sql/repl_failsafe.h index ef1dc1f8778..e517f0a5a8a 100644 --- a/sql/repl_failsafe.h +++ b/sql/repl_failsafe.h @@ -1,3 +1,4 @@ +#ifndef EMBEDDED_LIBRARY #ifndef REPL_FAILSAFE_H #define REPL_FAILSAFE_H @@ -35,3 +36,4 @@ int register_slave(THD* thd, uchar* packet, uint packet_length); void unregister_slave(THD* thd, bool only_mine, bool need_mutex); #endif +#endif /* EMBEDDED_LIBRARY */ diff --git a/sql/set_var.cc b/sql/set_var.cc index 691add191b2..81b4e59a450 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -45,6 +45,7 @@ #endif #include "mysql_priv.h" +#include <mysql.h> #include "slave.h" #include "sql_acl.h" #include <my_getopt.h> @@ -205,8 +206,10 @@ sys_var_thd_enum sys_query_cache_type("query_cache_type", sys_var_long_ptr sys_server_id("server_id",&server_id); sys_var_bool_ptr sys_slave_compressed_protocol("slave_compressed_protocol", &opt_slave_compressed_protocol); +#ifndef EMBEDDED_LIBRARY sys_var_long_ptr sys_slave_net_timeout("slave_net_timeout", &slave_net_timeout); +#endif sys_var_long_ptr sys_slow_launch_time("slow_launch_time", &slow_launch_time); sys_var_thd_ulong sys_sort_buffer("sort_buffer_size", @@ -296,7 +299,9 @@ static sys_var_readonly sys_warning_count("warning_count", get_warning_count); /* alias for last_insert_id() to be compatible with Sybase */ +#ifndef EMBEDDED_LIBRARY static sys_var_slave_skip_counter sys_slave_skip_counter("sql_slave_skip_counter"); +#endif static sys_var_rand_seed1 sys_rand_seed1("rand_seed1"); static sys_var_rand_seed2 sys_rand_seed2("rand_seed2"); @@ -378,9 +383,11 @@ sys_var *sys_variables[]= &sys_safe_updates, &sys_select_limit, &sys_server_id, +#ifndef EMBEDDED_LIBRARY &sys_slave_compressed_protocol, &sys_slave_net_timeout, &sys_slave_skip_counter, +#endif &sys_slow_launch_time, &sys_sort_buffer, &sys_sql_big_tables, @@ -473,7 +480,9 @@ struct show_var_st init_vars[]= { {"log", (char*) &opt_log, SHOW_BOOL}, {"log_update", (char*) &opt_update_log, SHOW_BOOL}, {"log_bin", (char*) &opt_bin_log, SHOW_BOOL}, +#ifndef EMBEDDED_LIBRARY {"log_slave_updates", (char*) &opt_log_slave_updates, SHOW_MY_BOOL}, +#endif {"log_slow_queries", (char*) &opt_slow_log, SHOW_BOOL}, {sys_log_warnings.name, (char*) &sys_log_warnings, SHOW_SYS}, {sys_long_query_time.name, (char*) &sys_long_query_time, SHOW_SYS}, @@ -525,7 +534,9 @@ struct show_var_st init_vars[]= { {"shared_memory_base_name", (char*) &shared_memory_base_name, SHOW_CHAR_PTR}, #endif {sys_server_id.name, (char*) &sys_server_id, SHOW_SYS}, +#ifndef EMBEDDED_LIBRARY {sys_slave_net_timeout.name,(char*) &sys_slave_net_timeout, SHOW_SYS}, +#endif {"skip_external_locking", (char*) &my_disable_locking, SHOW_MY_BOOL}, {"skip_networking", (char*) &opt_disable_networking, SHOW_BOOL}, {"skip_show_database", (char*) &opt_skip_show_db, SHOW_BOOL}, @@ -625,6 +636,7 @@ static void fix_tx_isolation(THD *thd, enum_var_type type) If we are changing the thread variable, we have to copy it to NET too */ +#ifndef EMBEDDED_LIBRARY static void fix_net_read_timeout(THD *thd, enum_var_type type) { if (type != OPT_GLOBAL) @@ -643,6 +655,14 @@ static void fix_net_retry_count(THD *thd, enum_var_type type) if (type != OPT_GLOBAL) thd->net.retry_count=thd->variables.net_retry_count; } +#else /* EMBEDDED_LIBRARY */ +static void fix_net_read_timeout(THD *thd __attribute__(unused), enum_var_type type __attribute__(unused)) +{} +static void fix_net_write_timeout(THD *thd __attribute__(unused), enum_var_type type __attribute__(unused)) +{} +static void fix_net_retry_count(THD *thd __attribute__(unused), enum_var_type type __attribute__(unused)) +{} +#endif /* EMBEDDED_LIBRARY */ static void fix_query_cache_size(THD *thd, enum_var_type type) @@ -1055,6 +1075,7 @@ byte *sys_var_insert_id::value_ptr(THD *thd, enum_var_type type) } +#ifndef EMBEDDED_LIBRARY bool sys_var_slave_skip_counter::check(THD *thd, set_var *var) { int result= 0; @@ -1090,7 +1111,7 @@ bool sys_var_slave_skip_counter::update(THD *thd, set_var *var) UNLOCK_ACTIVE_MI; return 0; } - +#endif /* EMBEDDED_LIBRARY */ bool sys_var_rand_seed1::update(THD *thd, set_var *var) { diff --git a/sql/set_var.h b/sql/set_var.h index 39a5995e30f..d18c8c44596 100644 --- a/sql/set_var.h +++ b/sql/set_var.h @@ -339,6 +339,7 @@ public: }; +#ifndef EMBEDDED_LIBRARY class sys_var_slave_skip_counter :public sys_var { public: @@ -351,7 +352,7 @@ public: type() or value_ptr() */ }; - +#endif class sys_var_rand_seed1 :public sys_var { diff --git a/sql/slave.cc b/sql/slave.cc index f8acc592afa..16bc08a2b6e 100644 --- a/sql/slave.cc +++ b/sql/slave.cc @@ -14,7 +14,7 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - +#ifndef EMBEDDED_LIBRARY #include "mysql_priv.h" #include <mysql.h> #include <myisam.h> @@ -3177,3 +3177,5 @@ err: template class I_List_iterator<i_string>; template class I_List_iterator<i_string_pair>; #endif + +#endif /* EMBEDDED_LIBRARY */ diff --git a/sql/slave.h b/sql/slave.h index 2c750e415bc..84685b7e429 100644 --- a/sql/slave.h +++ b/sql/slave.h @@ -1,3 +1,5 @@ +#ifndef EMBEDDED_LIBRARY + #ifndef SLAVE_H #define SLAVE_H @@ -461,3 +463,7 @@ extern I_List<i_string_pair> replicate_rewrite_db; extern I_List<THD> threads; #endif +#else +#define SLAVE_IO 1 +#define SLAVE_SQL 2 +#endif /* EMBEDDED_LIBRARY */ diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc index f77cb6ca20f..6438e39cb6e 100644 --- a/sql/sql_acl.cc +++ b/sql/sql_acl.cc @@ -2937,7 +2937,7 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) } thd->packet.length(0); net_store_data(&thd->packet,global.ptr(),global.length()); - if (my_net_write(&thd->net,(char*) thd->packet.ptr(), + if (SEND_ROW(thd, field_list.elements, (char*) thd->packet.ptr(), thd->packet.length())) { error=-1; goto end; @@ -2993,7 +2993,7 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) db.append(" WITH GRANT OPTION",18); thd->packet.length(0); net_store_data(&thd->packet,db.ptr(),db.length()); - if (my_net_write(&thd->net,(char*) thd->packet.ptr(), + if (SEND_ROW(thd, field_list.elements, (char*) thd->packet.ptr(), thd->packet.length())) { error=-1; @@ -3081,7 +3081,7 @@ int mysql_show_grants(THD *thd,LEX_USER *lex_user) global.append(" WITH GRANT OPTION",18); thd->packet.length(0); net_store_data(&thd->packet,global.ptr(),global.length()); - if (my_net_write(&thd->net,(char*) thd->packet.ptr(), + if (SEND_ROW(thd, field_list.elements, (char*) thd->packet.ptr(), thd->packet.length())) { error= -1; diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc index aa0f5824b4e..f0c16369ef9 100644 --- a/sql/sql_cache.cc +++ b/sql/sql_cache.cc @@ -761,7 +761,7 @@ void Query_cache::store_query(THD *thd, TABLE_LIST *tables_used) if ((local_tables = is_cacheable(thd, thd->query_length, thd->query, &thd->lex, tables_used))) { - NET *net = &thd->net; + NET *net= &thd->net; byte flags = (thd->client_capabilities & CLIENT_LONG_FLAG ? 0x80 : 0); STRUCT_LOCK(&structure_guard_mutex); @@ -1022,11 +1022,13 @@ Query_cache::send_result_to_client(THD *thd, char *sql, uint query_length) ALIGN_SIZE(sizeof(Query_cache_result)))); Query_cache_result *result = result_block->result(); +#ifndef EMBEDDED_LIBRARY if (net_real_write(&thd->net, result->data(), result_block->used - result_block->headers_len() - ALIGN_SIZE(sizeof(Query_cache_result)))) break; // Client aborted +#endif result_block = result_block->next; } while (result_block != first_result_block); diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 2a93b298e0a..ed09421e66b 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -109,8 +109,10 @@ THD::THD():user_time(0), fatal_error(0), mysys_var=0; #ifndef DBUG_OFF dbug_sentry=THD_SENTRY_MAGIC; -#endif +#endif +#ifndef EMBEDDED_LIBRARY net.vio=0; +#endif net.last_error[0]=0; // If error on boot ull=0; system_thread=cleanup_done=0; @@ -263,11 +265,13 @@ THD::~THD() pthread_mutex_unlock(&LOCK_delete); /* Close connection */ +#ifndef EMBEDDED_LIBRARY if (net.vio) { vio_delete(net.vio); net_end(&net); } +#endif if (!cleanup_done) cleanup(); #ifdef USING_TRANSACTIONS diff --git a/sql/sql_class.h b/sql/sql_class.h index 69e5809f7b8..39efba28f5f 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -388,9 +388,11 @@ struct system_variables For each client connection we create a separate thread with THD serving as a thread/connection descriptor */ - class THD :public ilink { public: +#ifdef EMBEDDED_LIBRARY + struct st_mysql *mysql; +#endif NET net; // client connection descriptor LEX lex; // parse tree descriptor MEM_ROOT mem_root; // 1 command-life memory pool @@ -403,9 +405,6 @@ public: struct rand_struct rand; // used for authentication struct system_variables variables; // Changeable local variables pthread_mutex_t LOCK_delete; // Locked before thd is deleted -#ifdef EMBEDDED_LIBRARY - struct st_mysql *mysql; -#endif char *query; // Points to the current query, /* @@ -548,6 +547,7 @@ public: THD(); ~THD(); + void init(void); void change_user(void); void cleanup(void); @@ -643,12 +643,17 @@ public: void add_changed_table(const char *key, long key_length); CHANGED_TABLE_LIST * changed_table_dup(const char *key, long key_length); int send_explain_fields(select_result *result); +#ifndef EMBEDDED_LIBRARY inline void clear_error() { net.last_error[0]= 0; net.last_errno= 0; net.report_error= 0; } +#else + void clear_error(); +#endif + void add_possible_loop(Item *); }; diff --git a/sql/sql_db.cc b/sql/sql_db.cc index 85dfb38fa48..f8929f207bc 100644 --- a/sql/sql_db.cc +++ b/sql/sql_db.cc @@ -680,7 +680,7 @@ int mysqld_show_create_db(THD *thd, const char *dbname, HA_CREATE_INFO *create_i net_store_data(packet, convert, path, (uint) (to-path)); - if (my_net_write(&thd->net,(char*) packet->ptr(), packet->length())) + if (SEND_ROW(thd, field_list.elements, (char*) packet->ptr(), packet->length())) DBUG_RETURN(1); send_eof(thd); diff --git a/sql/sql_error.cc b/sql/sql_error.cc index bba49cf818b..dc9fbe8468d 100644 --- a/sql/sql_error.cc +++ b/sql/sql_error.cc @@ -183,7 +183,7 @@ my_bool mysqld_show_warnings(THD *thd, ulong levels_to_show) net_store_data(&thd->packet,warning_level_names[err->level]); net_store_data(&thd->packet,(uint32) err->code); net_store_data(&thd->packet,err->msg); - if (my_net_write(&thd->net,(char*)thd->packet.ptr(),thd->packet.length())) + if (SEND_ROW(thd, field_list.elements, (char*)thd->packet.ptr(),thd->packet.length())) DBUG_RETURN(1); if (!--limit) break; diff --git a/sql/sql_help.cc b/sql/sql_help.cc index d2bea9ba44b..03a435670c4 100644 --- a/sql/sql_help.cc +++ b/sql/sql_help.cc @@ -231,7 +231,7 @@ int send_variant_2_list(THD *thd, List<String> *names, my_bool is_category) packet->length(0); net_store_data(packet, cur_name->ptr()); net_store_data(packet, is_category ? "Y" : "N"); - if (my_net_write(&thd->net,(char*) packet->ptr(),packet->length())) + if (SEND_ROW(thd,2,(char*) packet->ptr(),packet->length())) DBUG_RETURN(-1); } @@ -316,7 +316,7 @@ int send_answer_1(THD *thd, const char *s1, const char *s2, net_store_data(packet, s3); net_store_data(packet, s4); - if (my_net_write(&thd->net,(char*) packet->ptr(),packet->length())) + if (SEND_ROW(thd,field_list.elements,(char*) packet->ptr(),packet->length())) DBUG_RETURN(-1); DBUG_RETURN(0); diff --git a/sql/sql_load.cc b/sql/sql_load.cc index 00450a3b86c..3e281e6e916 100644 --- a/sql/sql_load.cc +++ b/sql/sql_load.cc @@ -77,6 +77,8 @@ static int read_sep_field(THD *thd,COPY_INFO &info,TABLE *table, String &enclosed); +#ifndef EMBEDDED_LIBRARY + int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, List<Item> &fields, enum enum_duplicates handle_duplicates, bool read_file_from_client,thr_lock_type lock_type) @@ -156,12 +158,14 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, if (read_file_from_client && handle_duplicates == DUP_ERROR) handle_duplicates=DUP_IGNORE; +#ifndef EMBEDDED_LIBRARY if (read_file_from_client) { (void)net_request_file(&thd->net,ex->file_name); file = -1; } else +#endif { read_file_from_client=0; #ifdef DONT_ALLOW_FULL_LOAD_DATA_PATHS @@ -329,6 +333,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list, DBUG_RETURN(error); } +#endif /* EMBEDDED_LIBRARY */ /**************************************************************************** ** Read of rows of fixed size + optional garage + optonal newline @@ -563,9 +568,11 @@ READ_INFO::READ_INFO(File file_par, uint tot_length, String &field_term, cache.read_function = _my_b_net_read; need_end_io_cache = 1; +#ifndef EMBEDDED_LIBRARY if (!opt_old_rpl_compat && mysql_bin_log.is_open()) cache.pre_read = cache.pre_close = (IO_CACHE_CALLBACK) log_loaded_block; +#endif } } } diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 1d618a5e513..97804a0312f 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -476,6 +476,7 @@ static void reset_mqh(THD *thd, LEX_USER *lu, bool get_them= 0) Returns 0 on ok, -1 < if error is given > 0 on error. */ +#ifndef EMBEDDED_LIBRARY static int check_connections(THD *thd) { @@ -622,7 +623,7 @@ check_connections(THD *thd) thd->variables.net_wait_timeout= thd->variables.net_interactive_timeout; if ((thd->client_capabilities & CLIENT_TRANSACTIONS) && opt_using_transactions) - thd->net.return_status= &thd->server_status; + net->return_status= &thd->server_status; net->read_timeout=(uint) thd->variables.net_read_timeout; char prepared_scramble[SCRAMBLE41_LENGTH+4]; /* Buffer for scramble and hash */ @@ -685,7 +686,6 @@ check_connections(THD *thd) return 0; } - pthread_handler_decl(handle_one_connection,arg) { THD *thd=(THD*) arg; @@ -876,6 +876,8 @@ end: DBUG_RETURN(0); // Never reached } +#endif /* EMBEDDED_LIBRARY */ + /* This works because items are allocated with sql_alloc() */ void free_items(Item *item) @@ -920,7 +922,9 @@ int mysql_table_dump(THD* thd, char* db, char* tbl_name, int fd) my_error(ER_GET_ERRNO, MYF(0)); goto err; } +#ifndef EMBEDDED_LIBRARY net_flush(&thd->net); +#endif if ((error = table->file->dump(thd,fd))) my_error(ER_GET_ERRNO, MYF(0)); @@ -1000,12 +1004,14 @@ bool dispatch_command(enum enum_server_command command, THD *thd, if (!mysql_change_db(thd,packet)) mysql_log.write(thd,command,"%s",thd->db); break; +#ifndef EMBEDDED_LIBRARY case COM_REGISTER_SLAVE: { if (!register_slave(thd, (uchar*)packet, packet_length)) send_ok(thd); break; } +#endif case COM_TABLE_DUMP: { statistic_increment(com_other, &LOCK_status); @@ -1023,6 +1029,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, break; } +#ifndef EMBEDDED_LIBRARY case COM_CHANGE_USER: { thd->change_user(); @@ -1139,7 +1146,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, thd->priv_user=save_priv_user; break; } - +#endif /* EMBEDDED_LIBRARY */ case COM_EXECUTE: { mysql_stmt_execute(thd, packet); @@ -1252,6 +1259,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, mysql_rm_db(thd,db,0,0); break; } +#ifndef EMBEDDED_LIBRARY case COM_BINLOG_DUMP: { statistic_increment(com_other,&LOCK_status); @@ -1276,6 +1284,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, net->error = 0; break; } +#endif case COM_REFRESH: { statistic_increment(com_stat[SQLCOM_FLUSH],&LOCK_status); @@ -1289,6 +1298,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, send_eof(thd); break; } +#ifndef EMBEDDED_LIBRARY case COM_SHUTDOWN: statistic_increment(com_other,&LOCK_status); if (check_global_access(thd,SHUTDOWN_ACL)) @@ -1309,7 +1319,8 @@ bool dispatch_command(enum enum_server_command command, THD *thd, kill_mysql(); error=TRUE; break; - +#endif +#ifndef EMBEDDED_LIBRARY case COM_STATISTICS: { mysql_log.write(thd,command,NullS); @@ -1331,6 +1342,7 @@ bool dispatch_command(enum enum_server_command command, THD *thd, VOID(net_flush(net)); break; } +#endif case COM_PING: statistic_increment(com_other,&LOCK_status); send_ok(thd); // Tell client we are alive @@ -1480,6 +1492,7 @@ mysql_execute_command(THD *thd) */ thd->old_total_warn_count= thd->total_warn_count; +#ifndef EMBEDDED_LIBRARY if (thd->slave_thread) { /* @@ -1501,7 +1514,7 @@ mysql_execute_command(THD *thd) } #endif } - +#endif /* EMBEDDED_LIBRARY */ /* TODO: make derived tables processing 'inside' SELECT processing. TODO: solve problem with depended derived tables in subselects @@ -1525,9 +1538,13 @@ mysql_execute_command(THD *thd) } } if ((&lex->select_lex != lex->all_selects_list && - lex->unit.create_total_list(thd, lex, &tables)) || + lex->unit.create_total_list(thd, lex, &tables)) +#ifndef EMBEDDED_LIBRARY + || (table_rules_on && tables && thd->slave_thread && - !tables_ok(thd,tables))) + !tables_ok(thd,tables)) +#endif + ) DBUG_VOID_RETURN; statistic_increment(com_stat[lex->sql_command],&LOCK_status); @@ -1610,6 +1627,7 @@ mysql_execute_command(THD *thd) res= mysqld_help(thd,lex->help_arg); break; +#ifndef EMBEDDED_LIBRARY case SQLCOM_PURGE: { if (check_global_access(thd, SUPER_ACL)) @@ -1617,6 +1635,8 @@ mysql_execute_command(THD *thd) res = purge_master_logs(thd, lex->to_log); break; } +#endif + case SQLCOM_SHOW_WARNS: { res= mysqld_show_warnings(thd, (ulong) @@ -1642,6 +1662,8 @@ mysql_execute_command(THD *thd) #endif break; } + +#ifndef EMBEDDED_LIBRARY case SQLCOM_SHOW_SLAVE_HOSTS: { if (check_global_access(thd, REPL_SLAVE_ACL)) @@ -1656,6 +1678,8 @@ mysql_execute_command(THD *thd) res = show_binlog_events(thd); break; } +#endif + case SQLCOM_BACKUP_TABLE: { if (check_db_used(thd,tables) || @@ -1675,6 +1699,8 @@ mysql_execute_command(THD *thd) res = mysql_restore_table(thd, tables); break; } + +#ifndef EMBEDDED_LIBRARY case SQLCOM_CHANGE_MASTER: { if (check_global_access(thd, SUPER_ACL)) @@ -1709,6 +1735,7 @@ mysql_execute_command(THD *thd) else res = load_master_data(thd); break; +#endif /* EMBEDDED_LIBRARY */ #ifdef HAVE_INNOBASE_DB case SQLCOM_SHOW_INNODB_STATUS: @@ -1720,6 +1747,7 @@ mysql_execute_command(THD *thd) } #endif +#ifndef EMBEDDED_LIBRARY case SQLCOM_LOAD_MASTER_TABLE: { if (!tables->db) @@ -1751,6 +1779,8 @@ mysql_execute_command(THD *thd) UNLOCK_ACTIVE_MI; break; } +#endif /* EMBEDDED_LIBRARY */ + case SQLCOM_CREATE_TABLE: { ulong want_priv= ((lex->create_info.options & HA_LEX_CREATE_TMP_TABLE) ? @@ -1852,6 +1882,7 @@ mysql_execute_command(THD *thd) res = mysql_create_index(thd, tables, lex->key_list); break; +#ifndef EMBEDDED_LIBRARY case SQLCOM_SLAVE_START: { LOCK_ACTIVE_MI; @@ -1866,6 +1897,8 @@ mysql_execute_command(THD *thd) UNLOCK_ACTIVE_MI; break; } +#endif + case SQLCOM_ALTER_TABLE: #if defined(DONT_ALLOW_SHOW_COMMANDS) send_error(thd,ER_NOT_ALLOWED_COMMAND); /* purecov: inspected */ @@ -1956,6 +1989,7 @@ mysql_execute_command(THD *thd) res= -1; break; } +#ifndef EMBEDDED_LIBRARY case SQLCOM_SHOW_BINLOGS: #ifdef DONT_ALLOW_SHOW_COMMANDS send_error(thd,ER_NOT_ALLOWED_COMMAND); /* purecov: inspected */ @@ -1968,6 +2002,7 @@ mysql_execute_command(THD *thd) break; } #endif +#endif /* EMBEDDED_LIBRARY */ case SQLCOM_SHOW_CREATE: #ifdef DONT_ALLOW_SHOW_COMMANDS send_error(thd,ER_NOT_ALLOWED_COMMAND); /* purecov: inspected */ @@ -2423,6 +2458,7 @@ mysql_execute_command(THD *thd) case SQLCOM_CHANGE_DB: mysql_change_db(thd,select_lex->db); break; +#ifndef EMBEDDED_LIBRARY case SQLCOM_LOAD: { uint privilege= (lex->duplicates == DUP_REPLACE ? @@ -2449,6 +2485,7 @@ mysql_execute_command(THD *thd) lex->duplicates, (bool) lex->local_file, lex->lock_option); break; } +#endif /* EMBEDDED_LIBRARY */ case SQLCOM_SET_OPTION: if (!(res=sql_set_variables(thd, &lex->var_list))) send_ok(thd); @@ -3124,7 +3161,9 @@ mysql_parse(THD *thd, char *inBuf, uint length) else { mysql_execute_command(thd); +#ifndef EMBEDDED_LIBRARY query_cache_end_of_result(&thd->net); +#endif } } } @@ -3132,7 +3171,9 @@ mysql_parse(THD *thd, char *inBuf, uint length) { DBUG_PRINT("info",("Command aborted. Fatal_error: %d", thd->fatal_error)); +#ifndef EMBEDDED_LIBRARY query_cache_abort(&thd->net); +#endif } thd->proc_info="freeing items"; free_items(thd->free_list); /* Free strings used by items */ @@ -3712,9 +3753,11 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables) refresh_status(); if (options & REFRESH_THREADS) flush_thread_cache(); +#ifndef EMBEDDED_LIBRARY if (options & REFRESH_MASTER) if (reset_master(thd)) result=1; +#endif #ifdef OPENSSL if (options & REFRESH_DES_KEY_FILE) { @@ -3722,6 +3765,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables) result=load_des_key_file(des_key_file); } #endif +#ifndef EMBEDDED_LIBRARY if (options & REFRESH_SLAVE) { LOCK_ACTIVE_MI; @@ -3729,6 +3773,7 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables) result=1; UNLOCK_ACTIVE_MI; } +#endif if (options & REFRESH_USER_RESOURCES) reset_mqh(thd,(LEX_USER *) NULL); return result; diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc index 9d6e6d75ade..00c88752619 100644 --- a/sql/sql_prepare.cc +++ b/sql/sql_prepare.cc @@ -140,7 +140,11 @@ static bool send_prep_stmt(PREP_STMT *stmt, uint columns) int4store(buff, stmt->stmt_id); int2store(buff+4, columns); int2store(buff+6, stmt->param_count); +#ifndef EMBEDDED_LIBRARY return (my_net_write(net, buff, sizeof(buff)) || net_flush(net)); +#else + return true; +#endif } /* @@ -299,7 +303,11 @@ static bool setup_params_data(PREP_STMT *stmt) Item_param *param; DBUG_ENTER("setup_params_data"); +#ifndef EMBEDDED_LIBRARY uchar *pos=(uchar*) thd->net.read_pos+1+MYSQL_STMT_HEADER; //skip header +#else + uchar *pos= 0; //just to compile TODO code for embedded case +#endif uchar *read_pos= pos+(stmt->param_count+7) / 8; //skip null bits if (*read_pos++) //types supplied / first execute diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 23951cec29f..54a7bdb8dc8 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -16,6 +16,8 @@ // Sasha Pachev <sasha@mysql.com> is currently in charge of this file +#ifndef EMBEDDED_LIBRARY + #include "mysql_priv.h" #include "sql_repl.h" #include "sql_acl.h" @@ -1149,3 +1151,7 @@ int log_loaded_block(IO_CACHE* file) } return 0; } + +#endif + + diff --git a/sql/sql_repl.h b/sql/sql_repl.h index 15435382b08..5ba7d0ce74e 100644 --- a/sql/sql_repl.h +++ b/sql/sql_repl.h @@ -1,3 +1,4 @@ +#ifndef EMBEDDED_LIBRARY #include "slave.h" typedef struct st_slave_info @@ -53,3 +54,6 @@ typedef struct st_load_file_info } LOAD_FILE_INFO; int log_loaded_block(IO_CACHE* file); + +#endif /* EMBEDDED_LIBRARY */ + diff --git a/sql/sql_select.cc b/sql/sql_select.cc index e194f3651af..a0751e16be9 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -3621,7 +3621,9 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value) (thd->options & OPTION_AUTO_IS_NULL) && thd->insert_id()) { +#ifndef EMBEDDED_LIBRARY query_cache_abort(&thd->net); +#endif COND *new_cond; if ((new_cond= new Item_func_eq(args[0], new Item_int("last_insert_id()", diff --git a/sql/sql_show.cc b/sql/sql_show.cc index 7824e143304..fb457ea28a1 100644 --- a/sql/sql_show.cc +++ b/sql/sql_show.cc @@ -234,7 +234,7 @@ int mysqld_show_table_types(THD *thd) option_name= "DEFAULT"; net_store_data(packet, option_name); net_store_data(packet, types->comment); - if (my_net_write(&thd->net, (char*) packet->ptr(), packet->length())) + if (SEND_ROW(thd, field_list.elements, (char*) packet->ptr(), packet->length())) DBUG_RETURN(-1); } send_eof(thd); @@ -296,7 +296,7 @@ int mysqld_show_privileges(THD *thd) net_store_data(packet,privilege->privilege); net_store_data(packet,privilege->context); net_store_data(packet,privilege->comment); - if (my_net_write(&thd->net,(char*) packet->ptr(),packet->length())) + if (SEND_ROW(thd,field_list.elements,(char*) packet->ptr(),packet->length())) DBUG_RETURN(-1); } send_eof(thd); @@ -382,7 +382,7 @@ int mysqld_show_column_types(THD *thd) net_store_data(packet,sys_column_types[i].case_sensitivity); net_store_data(packet,sys_column_types[i].default_value); net_store_data(packet,sys_column_types[i].comment); - if (my_net_write(&thd->net,(char*) packet->ptr(),packet->length())) + if (SEND_ROW(thd,field_list.elements,(char*) packet->ptr(),packet->length())) DBUG_RETURN(-1); } send_eof(thd); @@ -997,7 +997,9 @@ mysqld_list_fields(THD *thd, TABLE_LIST *table_list, const char *wild) restore_record(table,2); // Get empty record if (send_fields(thd,field_list,2)) DBUG_VOID_RETURN; +#ifndef EMBEDDED_LIBRARY VOID(net_flush(&thd->net)); +#endif DBUG_VOID_RETURN; } @@ -1016,6 +1018,7 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd) if (convert) convert->convert((char*) packet->ptr(), packet->length()); +#ifndef EMBEDDED_LIBRARY if (fd < 0) { if (my_net_write(&thd->net, (char*)packet->ptr(), packet->length())) @@ -1028,6 +1031,7 @@ mysqld_dump_create_info(THD *thd, TABLE *table, int fd) MYF(MY_WME))) DBUG_RETURN(-1); } +#endif DBUG_RETURN(0); } @@ -1273,7 +1277,7 @@ public: template class I_List<thread_info>; #endif - +#ifndef EMBEDDED_LIBRARY void mysqld_list_processes(THD *thd,const char *user, bool verbose) { Item *field; @@ -1398,7 +1402,12 @@ void mysqld_list_processes(THD *thd,const char *user, bool verbose) send_eof(thd); DBUG_VOID_RETURN; } - +#else /* EMBEDDED_LIBRARY */ +void mysqld_list_processes(THD *thd __attribute__(unused), + const char *user __attribute__(unused), + bool verbose __attribute__(unused)) +{} +#endif /***************************************************************************** Status functions @@ -1434,7 +1443,7 @@ int mysqld_show_charsets(THD *thd, const char *wild) net_store_data(&packet2,(uint32) cs[0]->strxfrm_multiply); net_store_data(&packet2,(uint32) (cs[0]->mbmaxlen)); - if (my_net_write(&thd->net, (char*) packet2.ptr(),packet2.length())) + if (SEND_ROW(thd, field_list.elements, (char*) packet2.ptr(),packet2.length())) goto err; } } @@ -1510,6 +1519,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables, case SHOW_QUESTION: net_store_data(&packet2,(uint32) thd->query_id); break; +#ifndef EMBEDDED_LIBRARY case SHOW_RPL_STATUS: net_store_data(&packet2, rpl_status_type[(int)rpl_status]); break; @@ -1522,6 +1532,7 @@ int mysqld_show(THD *thd, const char *wild, show_var_st *variables, UNLOCK_ACTIVE_MI; break; } +#endif /* EMBEDDED_LIBRARY */ case SHOW_OPENTABLES: net_store_data(&packet2,(uint32) cached_tables()); break; |