summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/errmsg.h3
-rw-r--r--include/mysql.h3
-rw-r--r--libmysql/client_settings.h11
-rw-r--r--libmysql/errmsg.c3
-rw-r--r--libmysql/libmysql.c17
-rw-r--r--libmysqld/embedded_priv.h1
-rw-r--r--libmysqld/lib_sql.cc22
-rw-r--r--libmysqld/libmysqld.c14
-rw-r--r--sql-common/client.c3
-rw-r--r--sql/client_settings.h2
-rw-r--r--sql/net_serv.cc6
-rw-r--r--sql/sql_client.cc5
12 files changed, 33 insertions, 57 deletions
diff --git a/include/errmsg.h b/include/errmsg.h
index 24326b1efef..8f3ddfa9796 100644
--- a/include/errmsg.h
+++ b/include/errmsg.h
@@ -86,5 +86,4 @@ extern const char *client_errors[]; /* Error messages */
#define CR_SHARED_MEMORY_CONNECT_SET_ERROR 2045
#define CR_CONN_UNKNOW_PROTOCOL 2046
#define CR_INVALID_CONN_HANDLE 2047
-#define CR_MYSQL_SERVER_INIT_MISSED 2048
-#define CR_SECURE_AUTH 2049
+#define CR_SECURE_AUTH 2048
diff --git a/include/mysql.h b/include/mysql.h
index fd0330b35da..d1b467f9649 100644
--- a/include/mysql.h
+++ b/include/mysql.h
@@ -638,9 +638,6 @@ int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
(*(mysql)->methods->advanced_command)(mysql, command, \
NullS, 0, arg, length, skip_check)
unsigned long net_safe_read(MYSQL* mysql);
-void mysql_once_init(void);
-
-extern my_bool server_inited;
#ifdef __NETWARE__
#pragma pack(pop) /* restore alignment */
diff --git a/libmysql/client_settings.h b/libmysql/client_settings.h
index 3798eaa3544..b1a85f567f9 100644
--- a/libmysql/client_settings.h
+++ b/libmysql/client_settings.h
@@ -58,3 +58,14 @@ int cli_stmt_execute(MYSQL_STMT *stmt);
MYSQL_DATA * cli_read_binary_rows(MYSQL_STMT *stmt);
int cli_unbuffered_fetch(MYSQL *mysql, char **row);
const char * cli_read_statistic(MYSQL *mysql);
+
+#ifdef EMBEDDED_LIBRARY
+int init_embedded_server(int argc, char **argv, char **groups);
+void end_embedded_server();
+
+#else
+/* Prevent warnings of unused parameters */
+#define init_embedded_server(a,b,c) ((void)a, (void)b, (void)c, 0)
+#define end_embedded_server()
+#endif /*EMBEDDED_LIBRARY*/
+
diff --git a/libmysql/errmsg.c b/libmysql/errmsg.c
index 4dfcfe6a1d3..569267ddb37 100644
--- a/libmysql/errmsg.c
+++ b/libmysql/errmsg.c
@@ -72,7 +72,6 @@ const char *client_errors[]=
"Can't open shared memory. Can't send the request event to server (%lu)",
"Wrong or unknown protocol",
"Invalid connection handle",
- "mysql_server_init wasn't called",
"Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)"
};
@@ -129,7 +128,6 @@ const char *client_errors[]=
"Can't open shared memory. Can't send the request event to server (%lu)",
"Wrong or unknown protocol",
"Invalid connection handle",
- "mysql_server_init wasn't called",
"Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)"
};
@@ -184,7 +182,6 @@ const char *client_errors[]=
"Can't open shared memory. Can't send the request event to server (%lu)",
"Wrong or unknown protocol",
"Invalid connection handle",
- "mysql_server_init wasn't called",
"Connection using old (pre 4.1.1) authentication protocol refused (client option 'secure_auth' enabled)"
};
#endif
diff --git a/libmysql/libmysql.c b/libmysql/libmysql.c
index a4b300a0448..9f2ae280cfc 100644
--- a/libmysql/libmysql.c
+++ b/libmysql/libmysql.c
@@ -94,8 +94,9 @@ my_bool stmt_close(MYSQL_STMT *stmt, my_bool skip_list);
static my_bool mysql_client_init= 0;
static my_bool org_my_init_done= 0;
-void mysql_once_init(void)
+int STDCALL mysql_server_init(int argc, char **argv, char **groups)
{
+ int result= 0;
if (!mysql_client_init)
{
mysql_client_init=1;
@@ -131,24 +132,18 @@ void mysql_once_init(void)
#if defined(SIGPIPE) && !defined(__WIN__)
(void) signal(SIGPIPE, SIG_IGN);
#endif
+ result= init_embedded_server(argc, argv, groups);
}
#ifdef THREAD
else
my_thread_init(); /* Init if new thread */
#endif
-}
-
-#ifndef EMBEDDED_LIBRARY
-int STDCALL mysql_server_init(int argc __attribute__((unused)),
- char **argv __attribute__((unused)),
- char **groups __attribute__((unused)))
-{
- mysql_once_init();
- return 0;
+ return result;
}
void STDCALL mysql_server_end()
{
+ end_embedded_server();
/* If library called my_init(), free memory allocated by it */
if (!org_my_init_done)
{
@@ -163,8 +158,6 @@ void STDCALL mysql_server_end()
mysql_client_init= org_my_init_done= 0;
}
-#endif /*EMBEDDED_LIBRARY*/
-
my_bool STDCALL mysql_thread_init()
{
#ifdef THREAD
diff --git a/libmysqld/embedded_priv.h b/libmysqld/embedded_priv.h
index 833cc1b1f80..673531c0c14 100644
--- a/libmysqld/embedded_priv.h
+++ b/libmysqld/embedded_priv.h
@@ -28,5 +28,4 @@ extern void init_embedded_mysql(MYSQL *mysql, int client_flag, char *db);
extern void *create_embedded_thd(int client_flag, char *db);
extern MYSQL_METHODS embedded_methods;
void free_old_query(MYSQL *mysql);
-extern my_bool server_inited;
C_MODE_END
diff --git a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc
index 2fd6927854f..864adddb9c4 100644
--- a/libmysqld/lib_sql.cc
+++ b/libmysqld/lib_sql.cc
@@ -42,9 +42,6 @@ C_MODE_START
#include "errmsg.h"
#include <sql_common.h>
-static my_bool org_my_init_done;
-my_bool server_inited;
-
static my_bool
emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
const char *header, ulong header_length,
@@ -305,7 +302,7 @@ extern "C"
char ** copy_arguments_ptr= 0;
-int STDCALL mysql_server_init(int argc, char **argv, char **groups)
+int init_embedded_server(int argc, char **argv, char **groups)
{
char glob_hostname[FN_REFLEN];
@@ -329,17 +326,7 @@ int STDCALL mysql_server_init(int argc, char **argv, char **groups)
if (!groups)
groups= (char**) fake_groups;
-
- /* Only call MY_INIT() if it hasn't been called before */
- if (!server_inited)
- {
- server_inited=1;
- org_my_init_done=my_init_done;
- }
- if (!org_my_init_done)
- {
- MY_INIT((char *)"mysql_embedded"); // init my_sys library & pthreads
- }
+ my_progname= (char *)"mysql_embedded";
if (init_common_variables("my", *argcp, *argvp, (const char **)groups))
{
@@ -438,14 +425,11 @@ int STDCALL mysql_server_init(int argc, char **argv, char **groups)
return 0;
}
-void STDCALL mysql_server_end()
+void end_embedded_server()
{
my_free((char*) copy_arguments_ptr, MYF(MY_ALLOW_ZERO_PTR));
copy_arguments_ptr=0;
clean_up(0);
- /* If library called my_init(), free memory allocated by it */
- if (!org_my_init_done)
- my_end(0);
}
} /* extern "C" */
diff --git a/libmysqld/libmysqld.c b/libmysqld/libmysqld.c
index 59c18368279..f96c06ff0f6 100644
--- a/libmysqld/libmysqld.c
+++ b/libmysqld/libmysqld.c
@@ -163,20 +163,12 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
db ? db : "(Null)",
user ? user : "(Null)"));
-#if defined(EMBEDDED_LIBRARY) || !defined(DBUG_OFF)
- if (!server_inited)
- {
- mysql->net.last_errno=CR_MYSQL_SERVER_INIT_MISSED;
- strmov(mysql->net.last_error,ER(mysql->net.last_errno));
- goto error;
- }
-#endif
-
if (mysql->options.methods_to_use == MYSQL_OPT_USE_REMOTE_CONNECTION ||
(mysql->options.methods_to_use == MYSQL_OPT_GUESS_CONNECTION &&
host && strcmp(host,LOCAL_HOST)))
- cli_mysql_real_connect(mysql, host, user,
- passwd, db, port, unix_socket, client_flag);
+ DBUG_RETURN(cli_mysql_real_connect(mysql, host, user,
+ passwd, db, port,
+ unix_socket, client_flag));
mysql->methods= &embedded_methods;
diff --git a/sql-common/client.c b/sql-common/client.c
index 374cbb29112..73e90d08b51 100644
--- a/sql-common/client.c
+++ b/sql-common/client.c
@@ -1310,7 +1310,8 @@ read_one_row(MYSQL *mysql,uint fields,MYSQL_ROW row, ulong *lengths)
MYSQL * STDCALL
mysql_init(MYSQL *mysql)
{
- mysql_once_init();
+ if (mysql_server_init(0, NULL, NULL))
+ return 0;
if (!mysql)
{
if (!(mysql=(MYSQL*) my_malloc(sizeof(*mysql),MYF(MY_WME | MY_ZEROFILL))))
diff --git a/sql/client_settings.h b/sql/client_settings.h
index b357e52ec9d..75500574c99 100644
--- a/sql/client_settings.h
+++ b/sql/client_settings.h
@@ -32,3 +32,5 @@
#undef HAVE_SMEM
#undef _CUSTOMCONFIG_
+#define mysql_server_init(a,b,c) FALSE
+
diff --git a/sql/net_serv.cc b/sql/net_serv.cc
index 7944a528b83..a0f7a779894 100644
--- a/sql/net_serv.cc
+++ b/sql/net_serv.cc
@@ -54,6 +54,12 @@
#ifdef EMBEDDED_LIBRARY
+#undef MYSQL_SERVER
+
+#ifndef MYSQL_CLIENT
+#define MYSQL_CLIENT
+#endif
+
#undef net_flush
extern "C" {
diff --git a/sql/sql_client.cc b/sql/sql_client.cc
index 1ae9a23a924..9f3063cde2d 100644
--- a/sql/sql_client.cc
+++ b/sql/sql_client.cc
@@ -38,8 +38,3 @@ void my_net_local_init(NET *net)
}
}
-extern "C" {
-void mysql_once_init(void)
-{
-}
-}