summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorunknown <monty@narttu.mysql.fi>2003-06-14 11:37:42 +0300
committerunknown <monty@narttu.mysql.fi>2003-06-14 11:37:42 +0300
commitccf59c3874df6b260f613afe0a097a555b4ba642 (patch)
treef247f6e12388923f7fa5395b19d69e2dc62dbcd1 /sql
parent0826127b2b826871fb3dcf1a1497d364d62da3b9 (diff)
downloadmariadb-git-ccf59c3874df6b260f613afe0a097a555b4ba642.tar.gz
Cleanup after split of libmysql.c to client.c and libmysql.c. A 4.1 master/slave will now use the 4.1 protocol
Fixed wrong value for SQLSTATE_LENGTH Added CLIENT_REMEMBER_OPTIONS to mysql_real_connect() Changed mysql_port and mysql_unix_port to mysqld_xxxx client/mysql.cc: Removed valgrind & compiler warnings client/sql_string.h: Fix to remove valgrind warnings include/mysql.h: Added read_timeout and write_timeout to mysql options struct. This is to be used for slave when connection to master. code cleanup include/mysql_com.h: Fixed wrong value for SQLSTATE_LENGTH Added CLIENT_REMEMBER_OPTIONS include/sql_common.h: Cleanup after split of libmysql.c to client.c and libmysql.c include/sql_state.h: Removed default states libmysql/client_settings.h: Cleanup after split of libmysql.c to client.c and libmysql.c libmysql/libmysql.c: Cleanup after split of libmysql.c to client.c and libmysql.c mysql-test/r/type_blob.result: Update results after someone updated error messages without running tests mysys/charset.c: More debug information mysys/errors.c: Fixed wrong error message sql-common/client.c: Cleanup after split of libmysql.c to client.c and libmysql.c sql/Makefile.am: Added sql_client.cc sql/client_settings.h: Cleanup after split of libmysql.c to client.c and libmysql.c sql/log.cc: Changed mysql_port and mysql_unix_port to mysqld_xxxx sql/mysql_priv.h: Changed mysql_port and mysql_unix_port to mysqld_xxxx sql/mysqld.cc: Changed mysql_port and mysql_unix_port to mysqld_xxxx sql/protocol.cc: Fix for SQLSTATE_LENGTH Moved function to sql_client.c sql/repl_failsafe.cc: Cleanup after split of libmysql.c to client.c and libmysql.c sql/set_var.cc: Changed mysql_port and mysql_unix_port to mysqld_xxxx sql/slave.cc: Cleanup after split of libmysql.c to client.c and libmysql.c
Diffstat (limited to 'sql')
-rw-r--r--sql/Makefile.am2
-rw-r--r--sql/client_settings.h17
-rw-r--r--sql/log.cc4
-rw-r--r--sql/mysql_priv.h4
-rw-r--r--sql/mysqld.cc68
-rw-r--r--sql/protocol.cc25
-rw-r--r--sql/repl_failsafe.cc21
-rw-r--r--sql/set_var.cc4
-rw-r--r--sql/slave.cc49
-rw-r--r--sql/sql_client.cc45
10 files changed, 130 insertions, 109 deletions
diff --git a/sql/Makefile.am b/sql/Makefile.am
index 7c98f1a9315..fd02cc906d7 100644
--- a/sql/Makefile.am
+++ b/sql/Makefile.am
@@ -84,7 +84,7 @@ mysqld_SOURCES = sql_lex.cc sql_handler.cc \
sql_load.cc mf_iocache.cc field_conv.cc sql_show.cc \
sql_udf.cc sql_analyse.cc sql_analyse.h sql_cache.cc \
slave.cc sql_repl.cc sql_union.cc sql_derived.cc \
- client.c mini_client_errors.c pack.c\
+ client.c sql_client.cc mini_client_errors.c pack.c\
stacktrace.c repl_failsafe.h repl_failsafe.cc sql_olap.cc\
gstream.cc spatial.cc sql_help.cc protocol_cursor.cc
gen_lex_hash_SOURCES = gen_lex_hash.cc
diff --git a/sql/client_settings.h b/sql/client_settings.h
index 1963281d980..16e11c4eb64 100644
--- a/sql/client_settings.h
+++ b/sql/client_settings.h
@@ -17,18 +17,15 @@
#include <thr_alarm.h>
-extern char *mysql_unix_port;
-
-#define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG \
- | CLIENT_LOCAL_FILES | CLIENT_SECURE_CONNECTION)
-
+#define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | \
+ CLIENT_SECURE_CONNECTION | CLIENT_TRANSACTIONS | \
+ CLIENT_PROTOCOL_41 | CLIENT_SECURE_CONNECTION)
#define init_sigpipe_variables
#define set_sigpipe(mysql)
#define reset_sigpipe(mysql)
-
-extern ulong slave_net_timeout;
-
-#ifdef HAVE_SMEM
+#define read_user_name(A) {}
+#define mysql_rpl_query_type(A,B) MYSQL_RPL_ADMIN
+#define mysql_rpl_probe(mysql) 0
#undef HAVE_SMEM
-#endif
+#undef _CUSTOMCONFIG_
diff --git a/sql/log.cc b/sql/log.cc
index 0ccb40c5246..8af9609850a 100644
--- a/sql/log.cc
+++ b/sql/log.cc
@@ -209,9 +209,9 @@ bool MYSQL_LOG::open(const char *log_name, enum_log_type log_type_arg,
#ifdef EMBEDDED_LIBRARY
sprintf(buff, "%s, Version: %s, embedded library\n", my_progname, server_version);
#elif __NT__
- sprintf(buff, "%s, Version: %s, started with:\nTCP Port: %d, Named Pipe: %s\n", my_progname, server_version, mysql_port, mysql_unix_port);
+ sprintf(buff, "%s, Version: %s, started with:\nTCP Port: %d, Named Pipe: %s\n", my_progname, server_version, mysqld_port, mysqld_unix_port);
#else
- sprintf(buff, "%s, Version: %s, started with:\nTcp port: %d Unix socket: %s\n", my_progname,server_version,mysql_port,mysql_unix_port);
+ sprintf(buff, "%s, Version: %s, started with:\nTcp port: %d Unix socket: %s\n", my_progname,server_version,mysqld_port,mysqld_unix_port);
#endif
end=strmov(strend(buff),"Time Id Command Argument\n");
if (my_b_write(&log_file, (byte*) buff,(uint) (end-buff)) ||
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index 0508d0aa986..432ca533c6a 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -732,7 +732,7 @@ extern ulong specialflag, current_pid;
extern ulong expire_logs_days;
extern my_bool relay_log_purge;
extern uint test_flags,select_errors,ha_open_options;
-extern uint protocol_version,dropping_tables;
+extern uint protocol_version, mysqld_port, dropping_tables;
extern uint delay_key_write_options;
extern bool opt_endinfo, using_udf_functions, locked_in_memory;
extern bool opt_using_transactions, mysql_embedded;
@@ -747,7 +747,7 @@ extern my_bool opt_slave_compressed_protocol, use_temp_pool;
extern my_bool opt_readonly;
extern my_bool opt_enable_named_pipe;
extern my_bool opt_old_passwords, use_old_passwords;
-extern char *shared_memory_base_name;
+extern char *shared_memory_base_name, *mysqld_unix_port;
extern bool opt_enable_shared_memory;
extern MYSQL_LOG mysql_log,mysql_update_log,mysql_slow_log,mysql_bin_log;
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index 3f3b2ee7c9f..d72ad8f6768 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -35,6 +35,7 @@
#include <nisam.h>
#include <thr_alarm.h>
#include <ft_global.h>
+#include <errmsg.h>
#define mysqld_charset &my_charset_latin1
@@ -254,7 +255,7 @@ my_bool opt_console= 0, opt_bdb, opt_innodb, opt_isam;
my_bool opt_readonly, use_temp_pool, relay_log_purge;
volatile bool mqh_used = 0;
-uint mysql_port, test_flags, select_errors, dropping_tables, ha_open_options;
+uint mysqld_port, test_flags, select_errors, dropping_tables, ha_open_options;
uint delay_key_write_options, protocol_version;
uint volatile thread_count, thread_running, kill_cached_threads, wake_thread;
@@ -303,7 +304,7 @@ char mysql_real_data_home[FN_REFLEN],
char *language_ptr, *default_collation_name, *default_character_set_name;
char mysql_data_home_buff[2], *mysql_data_home=mysql_real_data_home;
char server_version[SERVER_VERSION_LENGTH]=MYSQL_SERVER_VERSION;
-char *mysql_unix_port, *opt_mysql_tmpdir;
+char *mysqld_unix_port, *opt_mysql_tmpdir;
char *my_bind_addr_str;
const char **errmesg; /* Error messages */
const char *myisam_recover_options_str="OFF";
@@ -561,7 +562,7 @@ static void close_connections(void)
{
(void) shutdown(unix_sock,2);
(void) closesocket(unix_sock);
- (void) unlink(mysql_unix_port);
+ (void) unlink(mysqld_unix_port);
unix_sock= INVALID_SOCKET;
}
#endif
@@ -670,7 +671,7 @@ static void close_server_sock()
DBUG_PRINT("info",("calling closesocket on unix/IP socket"));
VOID(closesocket(tmp_sock));
#endif
- VOID(unlink(mysql_unix_port));
+ VOID(unlink(mysqld_unix_port));
}
DBUG_VOID_RETURN;
#endif
@@ -961,24 +962,24 @@ static void clean_up_mutexes()
static void set_ports()
{
char *env;
- if (!mysql_port && !opt_disable_networking)
+ if (!mysqld_port && !opt_disable_networking)
{ // Get port if not from commandline
struct servent *serv_ptr;
- mysql_port = MYSQL_PORT;
- if ((serv_ptr = getservbyname("mysql", "tcp")))
- mysql_port = ntohs((u_short) serv_ptr->s_port); /* purecov: inspected */
+ mysqld_port= MYSQL_PORT;
+ if ((serv_ptr= getservbyname("mysql", "tcp")))
+ mysqld_port= ntohs((u_short) serv_ptr->s_port); /* purecov: inspected */
if ((env = getenv("MYSQL_TCP_PORT")))
- mysql_port = (uint) atoi(env); /* purecov: inspected */
+ mysqld_port= (uint) atoi(env); /* purecov: inspected */
}
- if (!mysql_unix_port)
+ if (!mysqld_unix_port)
{
#ifdef __WIN__
- mysql_unix_port = (char*) MYSQL_NAMEDPIPE;
+ mysqld_unix_port= (char*) MYSQL_NAMEDPIPE;
#else
- mysql_unix_port = (char*) MYSQL_UNIX_ADDR;
+ mysqld_unix_port= (char*) MYSQL_UNIX_ADDR;
#endif
if ((env = getenv("MYSQL_UNIX_PORT")))
- mysql_unix_port = env; /* purecov: inspected */
+ mysqld_unix_port= env; /* purecov: inspected */
}
}
@@ -1088,9 +1089,9 @@ static void server_init(void)
set_ports();
- if (mysql_port != 0 && !opt_disable_networking && !opt_bootstrap)
+ if (mysqld_port != 0 && !opt_disable_networking && !opt_bootstrap)
{
- DBUG_PRINT("general",("IP Socket is %d",mysql_port));
+ DBUG_PRINT("general",("IP Socket is %d",mysqld_port));
ip_sock = socket(AF_INET, SOCK_STREAM, 0);
if (ip_sock == INVALID_SOCKET)
{
@@ -1101,14 +1102,14 @@ static void server_init(void)
bzero((char*) &IPaddr, sizeof(IPaddr));
IPaddr.sin_family = AF_INET;
IPaddr.sin_addr.s_addr = my_bind_addr;
- IPaddr.sin_port = (unsigned short) htons((unsigned short) mysql_port);
+ IPaddr.sin_port = (unsigned short) htons((unsigned short) mysqld_port);
(void) setsockopt(ip_sock,SOL_SOCKET,SO_REUSEADDR,(char*)&arg,sizeof(arg));
if (bind(ip_sock, my_reinterpret_cast(struct sockaddr *) (&IPaddr),
sizeof(IPaddr)) < 0)
{
DBUG_PRINT("error",("Got error: %d from bind",socket_errno));
sql_perror("Can't start server: Bind on TCP/IP port");
- sql_print_error("Do you already have another mysqld server running on port: %d ?",mysql_port);
+ sql_print_error("Do you already have another mysqld server running on port: %d ?",mysqld_port);
unireg_abort(1);
}
if (listen(ip_sock,(int) back_log) < 0)
@@ -1123,10 +1124,10 @@ static void server_init(void)
#ifdef __NT__
/* create named pipe */
- if (Service.IsNT() && mysql_unix_port[0] && !opt_bootstrap &&
+ if (Service.IsNT() && mysqld_unix_port[0] && !opt_bootstrap &&
opt_enable_named_pipe)
{
- sprintf(szPipeName, "\\\\.\\pipe\\%s", mysql_unix_port );
+ sprintf(szPipeName, "\\\\.\\pipe\\%s", mysqld_unix_port );
ZeroMemory( &saPipeSecurity, sizeof(saPipeSecurity) );
ZeroMemory( &sdPipeDescriptor, sizeof(sdPipeDescriptor) );
if ( !InitializeSecurityDescriptor(&sdPipeDescriptor,
@@ -1172,9 +1173,9 @@ static void server_init(void)
/*
** Create the UNIX socket
*/
- if (mysql_unix_port[0] && !opt_bootstrap)
+ if (mysqld_unix_port[0] && !opt_bootstrap)
{
- DBUG_PRINT("general",("UNIX Socket is %s",mysql_unix_port));
+ DBUG_PRINT("general",("UNIX Socket is %s",mysqld_unix_port));
if ((unix_sock= socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
{
@@ -1183,8 +1184,8 @@ static void server_init(void)
}
bzero((char*) &UNIXaddr, sizeof(UNIXaddr));
UNIXaddr.sun_family = AF_UNIX;
- strmov(UNIXaddr.sun_path, mysql_unix_port);
- (void) unlink(mysql_unix_port);
+ strmov(UNIXaddr.sun_path, mysqld_unix_port);
+ (void) unlink(mysqld_unix_port);
(void) setsockopt(unix_sock,SOL_SOCKET,SO_REUSEADDR,(char*)&arg,
sizeof(arg));
umask(0);
@@ -1192,12 +1193,12 @@ static void server_init(void)
sizeof(UNIXaddr)) < 0)
{
sql_perror("Can't start server : Bind on unix socket"); /* purecov: tested */
- sql_print_error("Do you already have another mysqld server running on socket: %s ?",mysql_unix_port);
+ sql_print_error("Do you already have another mysqld server running on socket: %s ?",mysqld_unix_port);
unireg_abort(1); /* purecov: tested */
}
umask(((~my_umask) & 0666));
#if defined(S_IFSOCK) && defined(SECURE_SOCKETS)
- (void) chmod(mysql_unix_port,S_IFSOCK); /* Fix solaris 2.6 bug */
+ (void) chmod(mysqld_unix_port,S_IFSOCK); /* Fix solaris 2.6 bug */
#endif
if (listen(unix_sock,(int) back_log) < 0)
sql_print_error("Warning: listen() on Unix socket failed with error %d",
@@ -2024,6 +2025,7 @@ static int init_common_variables(const char *conf_file_name, int argc,
#endif
unireg_init(opt_specialflag); /* Set up extern variabels */
init_errmessage(); /* Read error messages from file */
+ init_client_errs();
lex_init();
item_init();
set_var_init();
@@ -2426,7 +2428,7 @@ The server will not act as a slave.");
(void) my_delete(pidfile_name,MYF(MY_WME)); // Not needed anymore
#endif
if (unix_sock != INVALID_SOCKET)
- unlink(mysql_unix_port);
+ unlink(mysqld_unix_port);
exit(1);
}
if (!opt_noacl)
@@ -2458,8 +2460,8 @@ The server will not act as a slave.");
create_maintenance_thread();
printf(ER(ER_READY),my_progname,server_version,
- ((unix_sock == INVALID_SOCKET) ? (char*) "" : mysql_unix_port),
- mysql_port);
+ ((unix_sock == INVALID_SOCKET) ? (char*) "" : mysqld_unix_port),
+ mysqld_port);
fflush(stdout);
#if defined(__NT__) || defined(HAVE_SMEM)
@@ -3775,8 +3777,8 @@ Does nothing yet.",
{"log-error", OPT_ERROR_LOG_FILE, "Log error file",
(gptr*) &log_error_file_ptr, (gptr*) &log_error_file_ptr, 0, GET_STR,
OPT_ARG, 0, 0, 0, 0, 0, 0},
- {"port", 'P', "Port number to use for connection.", (gptr*) &mysql_port,
- (gptr*) &mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
+ {"port", 'P', "Port number to use for connection.", (gptr*) &mysqld_port,
+ (gptr*) &mysqld_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"reckless-slave", OPT_RECKLESS_SLAVE, "For debugging", 0, 0, 0, GET_NO_ARG,
NO_ARG, 0, 0, 0, 0, 0, 0},
{"replicate-do-db", OPT_REPLICATE_DO_DB,
@@ -3914,7 +3916,7 @@ replicating a LOAD DATA INFILE command",
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,
+ (gptr*) &mysqld_unix_port, (gptr*) &mysqld_unix_port, 0, GET_STR,
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
{"sql-bin-update-same", OPT_SQL_BIN_UPDATE_SAME,
"If set, setting SQL_LOG_BIN to a value will automatically set SQL_LOG_UPDATE to the same value and vice versa.",
@@ -4630,7 +4632,7 @@ static void mysql_init_variables(void)
max_sort_char= 0;
mysqld_user= mysqld_chroot= opt_init_file= opt_bin_logname = 0;
errmesg= 0;
- mysql_unix_port= opt_mysql_tmpdir= my_bind_addr_str= NullS;
+ mysqld_unix_port= opt_mysql_tmpdir= my_bind_addr_str= NullS;
bzero((gptr) &mysql_tmpdir_list, sizeof(mysql_tmpdir_list));
bzero((gptr) &com_stat, sizeof(com_stat));
@@ -5037,7 +5039,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
break;
case (int) OPT_SKIP_NETWORKING:
opt_disable_networking=1;
- mysql_port=0;
+ mysqld_port=0;
break;
case (int) OPT_SKIP_SHOW_DB:
opt_skip_show_db=1;
diff --git a/sql/protocol.cc b/sql/protocol.cc
index 10fe2c1725e..1d730836d6e 100644
--- a/sql/protocol.cc
+++ b/sql/protocol.cc
@@ -103,8 +103,7 @@ void send_error(THD *thd, uint sql_errno, const char *err)
{
/* The first # is to make the protocol backward compatible */
buff[2]= '#';
- strmov(buff+3, mysql_errno_to_sqlstate(sql_errno));
- pos= buff + 2 + SQLSTATE_LENGTH +1;
+ pos= strmov(buff+3, mysql_errno_to_sqlstate(sql_errno));
}
length= (uint) (strmake(pos, err, MYSQL_ERRMSG_SIZE-1) - buff);
err=buff;
@@ -236,28 +235,6 @@ 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.
diff --git a/sql/repl_failsafe.cc b/sql/repl_failsafe.cc
index bbfd7866aa2..60af9a92c76 100644
--- a/sql/repl_failsafe.cc
+++ b/sql/repl_failsafe.cc
@@ -450,11 +450,11 @@ int show_new_master(THD* thd)
/*
Asks the master for the list of its other connected slaves.
- This is for failsafe replication :
- in order for failsafe replication to work, the servers involved in replication
- must know of each other. We accomplish this by having each slave report to the
- master how to reach it, and on connection, each slave receives information
- about where the other slaves are.
+ This is for failsafe replication:
+ in order for failsafe replication to work, the servers involved in
+ replication must know of each other. We accomplish this by having each
+ slave report to the master how to reach it, and on connection, each
+ slave receives information about where the other slaves are.
SYNOPSIS
update_slave_list()
@@ -466,8 +466,8 @@ int show_new_master(THD* thd)
hostname/port of the master, the username used by the slave to connect to
the master.
If the user used by the slave to connect to the master does not have the
- REPLICATION SLAVE privilege, it will pop in this function because SHOW SLAVE
- HOSTS will fail on the master.
+ REPLICATION SLAVE privilege, it will pop in this function because
+ SHOW SLAVE HOSTS will fail on the master.
RETURN VALUES
1 error
@@ -483,7 +483,6 @@ int update_slave_list(MYSQL* mysql, MASTER_INFO* mi)
int port_ind;
DBUG_ENTER("update_slave_list");
-
if (mysql_real_query(mysql,"SHOW SLAVE HOSTS",16) ||
!(res = mysql_store_result(mysql)))
{
@@ -668,8 +667,10 @@ int connect_to_master(THD *thd, MYSQL* mysql, MASTER_INFO* mi)
strmov(mysql->net.last_error, "Master is not configured");
DBUG_RETURN(1);
}
- mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *)&slave_net_timeout);
- mysql_options(mysql, MYSQL_SET_CHARSET_NAME, (char *)default_charset_info);
+ mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
+ mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
+ mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset_info->csname);
+ mysql_options(mysql, MYSQL_SET_CHARSET_DIR, (char *) charsets_dir);
if (!mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
mi->port, 0, 0))
DBUG_RETURN(1);
diff --git a/sql/set_var.cc b/sql/set_var.cc
index ad3966f76f9..14a8738de01 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -596,7 +596,7 @@ struct show_var_st init_vars[]= {
{"open_files_limit", (char*) &open_files_limit, SHOW_LONG},
{"pid_file", (char*) pidfile_name, SHOW_CHAR},
{"log_error", (char*) log_error_file, SHOW_CHAR},
- {"port", (char*) &mysql_port, SHOW_INT},
+ {"port", (char*) &mysqld_port, SHOW_INT},
{"protocol_version", (char*) &protocol_version, SHOW_INT},
{sys_pseudo_thread_id.name, (char*) &sys_pseudo_thread_id, SHOW_SYS},
{sys_read_buff_size.name, (char*) &sys_read_buff_size, SHOW_SYS},
@@ -627,7 +627,7 @@ struct show_var_st init_vars[]= {
{"skip_show_database", (char*) &opt_skip_show_db, SHOW_BOOL},
{sys_slow_launch_time.name, (char*) &sys_slow_launch_time, SHOW_SYS},
#ifdef HAVE_SYS_UN_H
- {"socket", (char*) &mysql_unix_port, SHOW_CHAR_PTR},
+ {"socket", (char*) &mysqld_unix_port, SHOW_CHAR_PTR},
#endif
{sys_sort_buffer.name, (char*) &sys_sort_buffer, SHOW_SYS},
{sys_sql_mode.name, (char*) &sys_sql_mode, SHOW_SYS},
diff --git a/sql/slave.cc b/sql/slave.cc
index cc27bb96ab7..37a86e42215 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -71,7 +71,7 @@ static int connect_to_master(THD* thd, MYSQL* mysql, MASTER_INFO* mi,
static int safe_sleep(THD* thd, int sec, CHECK_KILLED_FUNC thread_killed,
void* thread_killed_arg);
static int request_table_dump(MYSQL* mysql, const char* db, const char* table);
-static int create_table_from_dump(THD* thd, NET* net, const char* db,
+static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db,
const char* table_name);
static int check_master_version(MYSQL* mysql, MASTER_INFO* mi);
char* rewrite_db(char* db);
@@ -1049,10 +1049,10 @@ static int check_master_version(MYSQL* mysql, MASTER_INFO* mi)
}
-static int create_table_from_dump(THD* thd, NET* net, const char* db,
+static int create_table_from_dump(THD* thd, MYSQL *mysql, const char* db,
const char* table_name)
{
- ulong packet_len = my_net_read(net); // read create table statement
+ ulong packet_len;
char *query;
Vio* save_vio;
HA_CHECK_OPT check_opt;
@@ -1060,7 +1060,9 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db,
int error= 1;
handler *file;
ulong save_options;
+ NET *net= &mysql->net;
+ packet_len= my_net_read(net); // read create table statement
if (packet_len == packet_error)
{
send_error(thd, ER_MASTER_NET_READ);
@@ -1068,32 +1070,27 @@ static int create_table_from_dump(THD* thd, NET* net, const char* db,
}
if (net->read_pos[0] == 255) // error from master
{
- net->read_pos[packet_len] = 0;
- net_printf(thd, ER_MASTER, net->read_pos + 3);
+ char *err_msg;
+ err_msg= (char*) net->read_pos + ((mysql->server_capabilities &
+ CLIENT_PROTOCOL_41) ?
+ 3+SQLSTATE_LENGTH+1 : 3);
+ net_printf(thd, ER_MASTER, err_msg);
return 1;
}
thd->command = COM_TABLE_DUMP;
+ thd->query_length= packet_len;
/* Note that we should not set thd->query until the area is initalized */
- if (!(query = sql_alloc(packet_len + 1)))
+ if (!(query = thd->strmake((char*) net->read_pos, packet_len)))
{
sql_print_error("create_table_from_dump: out of memory");
net_printf(thd, ER_GET_ERRNO, "Out of memory");
return 1;
}
- memcpy(query, net->read_pos, packet_len);
- query[packet_len]= 0;
- thd->query_length= packet_len;
- /*
- We make the following lock in an attempt to ensure that the compiler will
- not rearrange the code so that thd->query is set too soon
- */
- VOID(pthread_mutex_lock(&LOCK_thread_count));
thd->query= query;
- VOID(pthread_mutex_unlock(&LOCK_thread_count));
thd->current_tablenr = 0;
thd->query_error = 0;
thd->net.no_send_ok = 1;
-
+
/* we do not want to log create table statement */
save_options = thd->options;
thd->options &= ~(ulong) (OPTION_BIN_LOG);
@@ -1185,8 +1182,7 @@ int fetch_master_table(THD *thd, const char *db_name, const char *table_name,
errmsg= "Failed on table dump request";
goto err;
}
- if (create_table_from_dump(thd, &mysql->net, db_name,
- table_name))
+ if (create_table_from_dump(thd, mysql, db_name, table_name))
goto err; // create_table_from_dump will have sent the error already
error = 0;
@@ -2963,17 +2959,20 @@ static int connect_to_master(THD* thd, MYSQL* mysql, MASTER_INFO* mi,
#ifndef DBUG_OFF
events_till_disconnect = disconnect_slave_event_count;
#endif
- uint client_flag=0;
+ ulong client_flag= CLIENT_REMEMBER_OPTIONS;
if (opt_slave_compressed_protocol)
client_flag=CLIENT_COMPRESS; /* We will use compression */
+ mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (char *) &slave_net_timeout);
+ mysql_options(mysql, MYSQL_OPT_READ_TIMEOUT, (char *) &slave_net_timeout);
+ mysql_options(mysql, MYSQL_SET_CHARSET_NAME, default_charset_info->csname);
+ /* This one is not strictly needed but we have it here for completeness */
+ mysql_options(mysql, MYSQL_SET_CHARSET_DIR, (char *) charsets_dir);
+
while (!(slave_was_killed = io_slave_killed(thd,mi)) &&
- (reconnect ? mysql_reconnect(mysql) != 0:
- !(mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT,
- (char *)&thd->variables.net_read_timeout),
- mysql_options(mysql, MYSQL_SET_CHARSET_NAME, (char *)default_charset_info),
- mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
- mi->port, 0, client_flag))))
+ (reconnect ? mysql_reconnect(mysql) != 0 :
+ mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
+ mi->port, 0, client_flag) == 0))
{
/* Don't repeat last error */
if ((int)mysql_errno(mysql) != last_errno)
diff --git a/sql/sql_client.cc b/sql/sql_client.cc
new file mode 100644
index 00000000000..464596f0734
--- /dev/null
+++ b/sql/sql_client.cc
@@ -0,0 +1,45 @@
+/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+/*
+ This files defines some MySQL C API functions that are server specific
+*/
+
+#include <mysql_priv.h>
+
+/*
+ Function called by my_net_init() to set some check variables
+*/
+
+extern "C" {
+void my_net_local_init(NET *net)
+{
+#ifndef EMBEDDED_LIBRARY
+ 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);
+#endif
+}
+}
+
+extern "C" {
+void mysql_once_init(void)
+{
+}
+}