mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
SCRUM:
Here is another pack of changes about gathering common client code in sql-common/client.c. Now i symlink the client.c from sql/ and libmysql/. These directories have client_settings.h files to be included to client.c. It contains defines and declarations to compile client.c in appropriate manner. Also i've added include/sql_common.h, containing declarations of what is exported from client.c I removed as many #ifdef-s from client.c as i dared to. I think it's better push it with some extra #ifdef-s now (of course, if everythihg besides it is ok) so other people can check the code. Makefile.am: symlinking of sql-common/client.c was added include/mysql.h: MYSQL_CLIENT define moved here from libmysql/Makefile libmysql/Makefile.am: ../libmysql/client_settings.h added to the list of necessary h-files libmysql/Makefile.shared: client.lo added to the list of objects libmysql/libmysql.c: a lot of changes about separating code between libmysql.c and client.c mysys/default.c: changed to keep compiler happy sql-common/client.c: a lot of changes about code separating sql/Makefile.am: mini_client.h has to be removed sql/repl_failsafe.cc: mysql_real_connect prototype was unified, so we've got to set connection timeout separately sql/slave.cc: trimming code to the changed function's prototypes sql/sql_repl.cc: mini_client isn't needed anymore
This commit is contained in:
parent
598f7ec5e3
commit
62c7d2cd27
14 changed files with 623 additions and 366 deletions
|
@ -70,7 +70,10 @@ linked_netware_sources:
|
|||
|
||||
#avoid recursive make calls in sql directory
|
||||
linked_server_sources:
|
||||
cd sql; rm -f mini_client_errors.c;@LN_CP_F@ ../libmysql/errmsg.c mini_client_errors.c; rm -f pack.c;@LN_CP_F@ ../sql-common/pack.c pack.c
|
||||
cd sql; rm -f mini_client_errors.c;\
|
||||
@LN_CP_F@ ../libmysql/errmsg.c mini_client_errors.c;\
|
||||
rm -f pack.c;@LN_CP_F@ ../sql-common/pack.c pack.c;\
|
||||
rm -f client.c;@LN_CP_F@ ../sql-common/client.c client.c
|
||||
echo timestamp > linked_server_sources
|
||||
|
||||
# Create permission databases
|
||||
|
|
|
@ -296,6 +296,10 @@ typedef struct st_mysql_res {
|
|||
#define MANAGER_CLIENT_ERR 450
|
||||
#define MANAGER_INTERNAL_ERR 500
|
||||
|
||||
#ifndef MYSQL_SERVER
|
||||
#define MYSQL_CLIENT
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
typedef struct st_mysql_manager
|
||||
|
|
53
include/sql_common.h
Normal file
53
include/sql_common.h
Normal file
|
@ -0,0 +1,53 @@
|
|||
/* 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 */
|
||||
|
||||
|
||||
#ifndef _sql_common_h
|
||||
#define _sql_common_h
|
||||
|
||||
extern const char *unknown_sqlstate;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
ulong STDCALL net_field_length(uchar **packet);
|
||||
my_ulonglong net_field_length_ll(uchar **packet);
|
||||
|
||||
MYSQL_FIELD *unpack_fields(MYSQL_DATA *data,MEM_ROOT *alloc,uint fields,
|
||||
my_bool default_value, uint server_capabilities);
|
||||
my_bool advanced_command(MYSQL *mysql, enum enum_server_command command,
|
||||
const char *header, ulong header_length,
|
||||
const char *arg, ulong arg_length, my_bool skip_check);
|
||||
void free_rows(MYSQL_DATA *cur);
|
||||
MYSQL_DATA *read_rows (MYSQL *mysql,MYSQL_FIELD *fields,
|
||||
uint field_count);
|
||||
my_bool mysql_autenticate(MYSQL *mysql, const char *passwd);
|
||||
void fetch_lengths(ulong *to, MYSQL_ROW column, uint field_count);
|
||||
void free_old_query(MYSQL *mysql);
|
||||
void end_server(MYSQL *mysql);
|
||||
my_bool mysql_reconnect(MYSQL *mysql);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef MYSQL_SERVER
|
||||
#define protocol_41(A) FALSE
|
||||
#else
|
||||
#define protocol_41(A) ((A)->server_capabilities & CLIENT_PROTOCOL_41)
|
||||
#endif
|
||||
|
||||
#endif /* _sql_common_h */
|
|
@ -18,7 +18,7 @@
|
|||
# This file is public domain and comes with NO WARRANTY of any kind
|
||||
|
||||
target = libmysqlclient.la
|
||||
target_defs = -DUNDEF_THREADS_HACK -DDONT_USE_RAID @LIB_EXTRA_CCFLAGS@ -DMYSQL_CLIENT
|
||||
target_defs = -DUNDEF_THREADS_HACK -DDONT_USE_RAID @LIB_EXTRA_CCFLAGS@
|
||||
LIBS = @CLIENT_LIBS@
|
||||
INCLUDES = -I$(top_srcdir)/include $(openssl_includes)
|
||||
|
||||
|
@ -79,7 +79,8 @@ nh = my_global.h config-win32.h dbug.h errmsg.h \
|
|||
m_ctype.h m_string.h \
|
||||
my_alarm.h my_config.h my_dir.h my_list.h my_net.h my_sys.h \
|
||||
mysql.h mysql_com.h mysql_version.h mysqld_error.h \
|
||||
mysys_err.h my_pthread.h thr_alarm.h violite.h hash.h
|
||||
mysys_err.h my_pthread.h thr_alarm.h violite.h hash.h \
|
||||
sql_common.h ../libmysql/client_settings.h
|
||||
# Get a list of the needed objects
|
||||
lobjs = $(mysysobjects1) $(dbugobjects) $(mystringsobjects) $(sqlobjects)
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ mysysobjects1 = my_init.lo my_static.lo my_malloc.lo my_realloc.lo \
|
|||
my_pread.lo mf_cache.lo md5.lo sha1.lo\
|
||||
my_getopt.lo my_gethostbyname.lo my_port.lo
|
||||
sqlobjects = net.lo
|
||||
sql_cmn_objects = pack.lo
|
||||
sql_cmn_objects = pack.lo client.lo
|
||||
|
||||
# Not needed in the minimum library
|
||||
mysysobjects2 = my_lib.lo
|
||||
|
|
61
libmysql/client_settings.h
Normal file
61
libmysql/client_settings.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/* 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 */
|
||||
|
||||
|
||||
#ifndef _client_settings_h
|
||||
#define _client_settings_h
|
||||
static my_bool mysql_client_init=0;
|
||||
extern uint mysql_port;
|
||||
extern my_string mysql_unix_port;
|
||||
|
||||
#define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG \
|
||||
| CLIENT_LOCAL_FILES | CLIENT_TRANSACTIONS \
|
||||
| CLIENT_PROTOCOL_41 | CLIENT_SECURE_CONNECTION)
|
||||
|
||||
|
||||
#ifdef __WIN__
|
||||
#define CONNECT_TIMEOUT 20
|
||||
#else
|
||||
#define CONNECT_TIMEOUT 0
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SMEM
|
||||
char *shared_memory_base_name=0;
|
||||
const char *def_shared_memory_base_name=default_shared_memory_base_name;
|
||||
#endif
|
||||
|
||||
static my_bool org_my_init_done=0;
|
||||
|
||||
sig_handler pipe_sig_handler(int sig __attribute__((unused)));
|
||||
my_bool stmt_close(MYSQL_STMT *stmt, my_bool skip_list);
|
||||
void read_user_name(char *name);
|
||||
my_bool send_file_to_server(MYSQL *mysql, const char *filename);
|
||||
|
||||
/*
|
||||
Let the user specify that we don't want SIGPIPE; This doesn't however work
|
||||
with threaded applications as we can have multiple read in progress.
|
||||
*/
|
||||
|
||||
#if !defined(__WIN__) && defined(SIGPIPE) && !defined(THREAD)
|
||||
#define init_sigpipe_variables sig_return old_signal_handler=(sig_return) 0;
|
||||
#define set_sigpipe(mysql) if ((mysql)->client_flag & CLIENT_IGNORE_SIGPIPE) old_signal_handler=signal(SIGPIPE,pipe_sig_handler)
|
||||
#define reset_sigpipe(mysql) if ((mysql)->client_flag & CLIENT_IGNORE_SIGPIPE) signal(SIGPIPE,old_signal_handler);
|
||||
#else
|
||||
#define init_sigpipe_variables
|
||||
#define set_sigpipe(mysql)
|
||||
#define reset_sigpipe(mysql)
|
||||
#endif
|
||||
#endif /* _client_settings_h */
|
|
@ -57,14 +57,14 @@
|
|||
#define INADDR_NONE -1
|
||||
#endif
|
||||
|
||||
static my_bool mysql_client_init=0;
|
||||
#include <sql_common.h>
|
||||
|
||||
uint mysql_port=0;
|
||||
my_string mysql_unix_port=0;
|
||||
ulong net_buffer_length=8192;
|
||||
ulong max_allowed_packet= 1024L*1024L*1024L;
|
||||
ulong net_read_timeout= NET_READ_TIMEOUT;
|
||||
ulong net_write_timeout= NET_WRITE_TIMEOUT;
|
||||
const char *unknown_sqlstate= "000000";
|
||||
|
||||
#define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG \
|
||||
| CLIENT_LOCAL_FILES | CLIENT_TRANSACTIONS \
|
||||
|
@ -99,28 +99,16 @@ TYPELIB sql_protocol_typelib = {array_elements(sql_protocol_names_lib)-1,"",
|
|||
be changed
|
||||
*/
|
||||
#define MAX_LONG_DATA_LENGTH 8192
|
||||
#define protocol_41(A) ((A)->server_capabilities & CLIENT_PROTOCOL_41)
|
||||
/*#define protocol_41(A) ((A)->server_capabilities & CLIENT_PROTOCOL_41)*/
|
||||
#define unsigned_field(A) ((A)->flags & UNSIGNED_FLAG)
|
||||
|
||||
static MYSQL_DATA *read_rows (MYSQL *mysql,MYSQL_FIELD *fields,
|
||||
uint field_count);
|
||||
static int read_one_row(MYSQL *mysql,uint fields,MYSQL_ROW row,
|
||||
ulong *lengths);
|
||||
static void end_server(MYSQL *mysql);
|
||||
static void read_user_name(char *name);
|
||||
static void append_wild(char *to,char *end,const char *wild);
|
||||
static my_bool mysql_reconnect(MYSQL *mysql);
|
||||
static my_bool send_file_to_server(MYSQL *mysql,const char *filename);
|
||||
static sig_handler pipe_sig_handler(int sig);
|
||||
sig_handler pipe_sig_handler(int sig);
|
||||
static ulong mysql_sub_escape_string(CHARSET_INFO *charset_info, char *to,
|
||||
const char *from, ulong length);
|
||||
static my_bool stmt_close(MYSQL_STMT *stmt, my_bool skip_list);
|
||||
static void fetch_lengths(ulong *to, MYSQL_ROW column, uint field_count);
|
||||
my_bool stmt_close(MYSQL_STMT *stmt, my_bool skip_list);
|
||||
static my_bool org_my_init_done=0;
|
||||
|
||||
extern ulong STDCALL net_field_length(uchar **packet);
|
||||
extern my_ulonglong net_field_length_ll(uchar **packet);
|
||||
|
||||
int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
||||
char **argv __attribute__((unused)),
|
||||
char **groups __attribute__((unused)))
|
||||
|
@ -169,9 +157,10 @@ void STDCALL mysql_thread_end()
|
|||
#define reset_sigpipe(mysql)
|
||||
#endif
|
||||
|
||||
/* TO DELETE
|
||||
#define _libmysql_c
|
||||
#include "../sql-common/client.c"
|
||||
|
||||
*/
|
||||
static MYSQL* spawn_init(MYSQL* parent, const char* host,
|
||||
unsigned int port,
|
||||
const char* user,
|
||||
|
@ -448,7 +437,7 @@ mysql_debug(const char *debug __attribute__((unused)))
|
|||
ARGSUSED
|
||||
**************************************************************************/
|
||||
|
||||
static sig_handler
|
||||
sig_handler
|
||||
pipe_sig_handler(int sig __attribute__((unused)))
|
||||
{
|
||||
DBUG_PRINT("info",("Hit by signal %d",sig));
|
||||
|
@ -869,6 +858,124 @@ error:
|
|||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
#if defined(HAVE_GETPWUID) && defined(NO_GETPWUID_DECL)
|
||||
struct passwd *getpwuid(uid_t);
|
||||
char* getlogin(void);
|
||||
#endif
|
||||
|
||||
#if defined(__NETWARE__)
|
||||
/* default to "root" on NetWare */
|
||||
void read_user_name(char *name)
|
||||
{
|
||||
char *str=getenv("USER");
|
||||
strmake(name, str ? str : "UNKNOWN_USER", USERNAME_LENGTH);
|
||||
}
|
||||
|
||||
#elif !defined(MSDOS) && ! defined(VMS) && !defined(__WIN__) && !defined(OS2)
|
||||
|
||||
void read_user_name(char *name)
|
||||
{
|
||||
DBUG_ENTER("read_user_name");
|
||||
if (geteuid() == 0)
|
||||
(void) strmov(name,"root"); /* allow use of surun */
|
||||
else
|
||||
{
|
||||
#ifdef HAVE_GETPWUID
|
||||
struct passwd *skr;
|
||||
const char *str;
|
||||
if ((str=getlogin()) == NULL)
|
||||
{
|
||||
if ((skr=getpwuid(geteuid())) != NULL)
|
||||
str=skr->pw_name;
|
||||
else if (!(str=getenv("USER")) && !(str=getenv("LOGNAME")) &&
|
||||
!(str=getenv("LOGIN")))
|
||||
str="UNKNOWN_USER";
|
||||
}
|
||||
(void) strmake(name,str,USERNAME_LENGTH);
|
||||
#elif HAVE_CUSERID
|
||||
(void) cuserid(name);
|
||||
#else
|
||||
strmov(name,"UNKNOWN_USER");
|
||||
#endif
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
#else /* If MSDOS || VMS */
|
||||
|
||||
void read_user_name(char *name)
|
||||
{
|
||||
char *str=getenv("USER"); /* ODBC will send user variable */
|
||||
strmake(name,str ? str : "ODBC", USERNAME_LENGTH);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
my_bool send_file_to_server(MYSQL *mysql, const char *filename)
|
||||
{
|
||||
int fd, readcount;
|
||||
my_bool result= 1;
|
||||
uint packet_length=MY_ALIGN(mysql->net.max_packet-16,IO_SIZE);
|
||||
char *buf, tmp_name[FN_REFLEN];
|
||||
NET *net= &mysql->net;
|
||||
DBUG_ENTER("send_file_to_server");
|
||||
|
||||
if (!(buf=my_malloc(packet_length,MYF(0))))
|
||||
{
|
||||
strmov(net->sqlstate, unknown_sqlstate);
|
||||
strmov(net->last_error, ER(net->last_errno=CR_OUT_OF_MEMORY));
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
fn_format(tmp_name,filename,"","",4); /* Convert to client format */
|
||||
if ((fd = my_open(tmp_name,O_RDONLY, MYF(0))) < 0)
|
||||
{
|
||||
my_net_write(net,"",0); /* Server needs one packet */
|
||||
net_flush(net);
|
||||
strmov(net->sqlstate, unknown_sqlstate);
|
||||
net->last_errno=EE_FILENOTFOUND;
|
||||
my_snprintf(net->last_error,sizeof(net->last_error)-1,
|
||||
EE(net->last_errno),tmp_name, errno);
|
||||
goto err;
|
||||
}
|
||||
|
||||
while ((readcount = (int) my_read(fd,(byte*) buf,packet_length,MYF(0))) > 0)
|
||||
{
|
||||
if (my_net_write(net,buf,readcount))
|
||||
{
|
||||
DBUG_PRINT("error",("Lost connection to MySQL server during LOAD DATA of local file"));
|
||||
strmov(net->sqlstate, unknown_sqlstate);
|
||||
net->last_errno=CR_SERVER_LOST;
|
||||
strmov(net->last_error,ER(net->last_errno));
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
/* Send empty packet to mark end of file */
|
||||
if (my_net_write(net,"",0) || net_flush(net))
|
||||
{
|
||||
strmov(net->sqlstate, unknown_sqlstate);
|
||||
net->last_errno=CR_SERVER_LOST;
|
||||
sprintf(net->last_error,ER(net->last_errno),errno);
|
||||
goto err;
|
||||
}
|
||||
if (readcount < 0)
|
||||
{
|
||||
strmov(net->sqlstate, unknown_sqlstate);
|
||||
net->last_errno=EE_READ; /* the errmsg for not entire file read */
|
||||
my_snprintf(net->last_error,sizeof(net->last_error)-1,
|
||||
tmp_name,errno);
|
||||
goto err;
|
||||
}
|
||||
result=0; /* Ok */
|
||||
|
||||
err:
|
||||
if (fd >= 0)
|
||||
(void) my_close(fd,MYF(0));
|
||||
my_free(buf,MYF(0));
|
||||
DBUG_RETURN(result);
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
Do a query. If query returned rows, free old rows.
|
||||
Read data by mysql_store_result or by repeat call of mysql_fetch_row
|
||||
|
@ -880,7 +987,6 @@ mysql_query(MYSQL *mysql, const char *query)
|
|||
return mysql_real_query(mysql,query, (uint) strlen(query));
|
||||
}
|
||||
|
||||
|
||||
static MYSQL* spawn_init(MYSQL* parent, const char* host,
|
||||
unsigned int port, const char* user,
|
||||
const char* passwd)
|
||||
|
@ -1074,7 +1180,6 @@ mysql_list_tables(MYSQL *mysql, const char *wild)
|
|||
DBUG_RETURN (mysql_store_result(mysql));
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
List all fields in a table
|
||||
If wild is given then only the fields matching wild is returned
|
||||
|
@ -1116,7 +1221,6 @@ mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)
|
|||
DBUG_RETURN(result);
|
||||
}
|
||||
|
||||
|
||||
/* List all running processes (threads) in server */
|
||||
|
||||
MYSQL_RES * STDCALL
|
||||
|
@ -1144,7 +1248,6 @@ mysql_list_processes(MYSQL *mysql)
|
|||
DBUG_RETURN(mysql_store_result(mysql));
|
||||
}
|
||||
|
||||
|
||||
#ifdef USE_OLD_FUNCTIONS
|
||||
int STDCALL
|
||||
mysql_create_db(MYSQL *mysql, const char *db)
|
||||
|
@ -1280,64 +1383,6 @@ mysql_get_client_info(void)
|
|||
return (char*) MYSQL_SERVER_VERSION;
|
||||
}
|
||||
|
||||
|
||||
int STDCALL
|
||||
mysql_options(MYSQL *mysql,enum mysql_option option, const char *arg)
|
||||
{
|
||||
DBUG_ENTER("mysql_option");
|
||||
DBUG_PRINT("enter",("option: %d",(int) option));
|
||||
switch (option) {
|
||||
case MYSQL_OPT_CONNECT_TIMEOUT:
|
||||
mysql->options.connect_timeout= *(uint*) arg;
|
||||
break;
|
||||
case MYSQL_OPT_COMPRESS:
|
||||
mysql->options.compress= 1; /* Remember for connect */
|
||||
mysql->options.client_flag|= CLIENT_COMPRESS;
|
||||
break;
|
||||
case MYSQL_OPT_NAMED_PIPE:
|
||||
mysql->options.protocol=MYSQL_PROTOCOL_PIPE; /* Force named pipe */
|
||||
break;
|
||||
case MYSQL_OPT_LOCAL_INFILE: /* Allow LOAD DATA LOCAL ?*/
|
||||
if (!arg || test(*(uint*) arg))
|
||||
mysql->options.client_flag|= CLIENT_LOCAL_FILES;
|
||||
else
|
||||
mysql->options.client_flag&= ~CLIENT_LOCAL_FILES;
|
||||
break;
|
||||
case MYSQL_INIT_COMMAND:
|
||||
add_init_command(&mysql->options,arg);
|
||||
break;
|
||||
case MYSQL_READ_DEFAULT_FILE:
|
||||
my_free(mysql->options.my_cnf_file,MYF(MY_ALLOW_ZERO_PTR));
|
||||
mysql->options.my_cnf_file=my_strdup(arg,MYF(MY_WME));
|
||||
break;
|
||||
case MYSQL_READ_DEFAULT_GROUP:
|
||||
my_free(mysql->options.my_cnf_group,MYF(MY_ALLOW_ZERO_PTR));
|
||||
mysql->options.my_cnf_group=my_strdup(arg,MYF(MY_WME));
|
||||
break;
|
||||
case MYSQL_SET_CHARSET_DIR:
|
||||
my_free(mysql->options.charset_dir,MYF(MY_ALLOW_ZERO_PTR));
|
||||
mysql->options.charset_dir=my_strdup(arg,MYF(MY_WME));
|
||||
break;
|
||||
case MYSQL_SET_CHARSET_NAME:
|
||||
my_free(mysql->options.charset_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
mysql->options.charset_name=my_strdup(arg,MYF(MY_WME));
|
||||
break;
|
||||
case MYSQL_OPT_PROTOCOL:
|
||||
mysql->options.protocol= *(uint*) arg;
|
||||
break;
|
||||
case MYSQL_SHARED_MEMORY_BASE_NAME:
|
||||
#ifdef HAVE_SMEM
|
||||
if (mysql->options.shared_memory_base_name != def_shared_memory_base_name)
|
||||
my_free(mysql->options.shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
mysql->options.shared_memory_base_name=my_strdup(arg,MYF(MY_WME));
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
my_bool STDCALL mysql_eof(MYSQL_RES *res)
|
||||
{
|
||||
return res->eof;
|
||||
|
@ -1380,21 +1425,11 @@ my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql)
|
|||
return mysql->last_used_con->insert_id;
|
||||
}
|
||||
|
||||
uint STDCALL mysql_errno(MYSQL *mysql)
|
||||
{
|
||||
return mysql->net.last_errno;
|
||||
}
|
||||
|
||||
const char *STDCALL mysql_sqlstate(MYSQL *mysql)
|
||||
{
|
||||
return mysql->net.sqlstate;
|
||||
}
|
||||
|
||||
const char * STDCALL mysql_error(MYSQL *mysql)
|
||||
{
|
||||
return mysql->net.last_error;
|
||||
}
|
||||
|
||||
uint STDCALL mysql_warning_count(MYSQL *mysql)
|
||||
{
|
||||
return mysql->warning_count;
|
||||
|
@ -3519,7 +3554,7 @@ my_ulonglong STDCALL mysql_stmt_num_rows(MYSQL_STMT *stmt)
|
|||
0 ok
|
||||
1 error
|
||||
*/
|
||||
static my_bool stmt_close(MYSQL_STMT *stmt, my_bool skip_list)
|
||||
my_bool stmt_close(MYSQL_STMT *stmt, my_bool skip_list)
|
||||
{
|
||||
MYSQL *mysql;
|
||||
DBUG_ENTER("mysql_stmt_close");
|
||||
|
|
|
@ -174,7 +174,7 @@ void load_defaults(const char *conf_file, const char **groups,
|
|||
res= (char**) (ptr+sizeof(alloc));
|
||||
|
||||
/* copy name + found arguments + command line arguments to new array */
|
||||
res[0]=*argc ? argv[0][0] : "";
|
||||
res[0]=*argc ? argv[0][0] : (char *)"";
|
||||
|
||||
memcpy((gptr) (res+1), args.buffer, args.elements*sizeof(char*));
|
||||
/* Skipp --defaults-file and --defaults-extra-file */
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -55,9 +55,9 @@ noinst_HEADERS = item.h item_func.h item_sum.h item_cmpfunc.h \
|
|||
opt_range.h opt_ft.h protocol.h \
|
||||
sql_select.h structs.h table.h sql_udf.h hash_filo.h\
|
||||
lex.h lex_symbol.h sql_acl.h sql_crypt.h \
|
||||
log_event.h mini_client.h sql_repl.h slave.h \
|
||||
log_event.h sql_repl.h slave.h \
|
||||
stacktrace.h sql_sort.h sql_cache.h set_var.h \
|
||||
spatial.h gstream.h
|
||||
spatial.h gstream.h client_settings.h
|
||||
mysqld_SOURCES = sql_lex.cc sql_handler.cc \
|
||||
item.cc item_sum.cc item_buff.cc item_func.cc \
|
||||
item_cmpfunc.cc item_strfunc.cc item_timefunc.cc \
|
||||
|
@ -83,7 +83,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 \
|
||||
mini_client.cc mini_client_errors.c pack.c\
|
||||
client.c 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
|
||||
|
@ -104,6 +104,8 @@ link_sources:
|
|||
@LN_CP_F@ ../libmysql/errmsg.c mini_client_errors.c
|
||||
rm -f pack.c
|
||||
@LN_CP_F@ ../sql-common/pack.c pack.c
|
||||
rm -f client.c
|
||||
@LN_CP_F@ ../sql-common/client.c client.c
|
||||
|
||||
gen_lex_hash.o: gen_lex_hash.cc lex.h
|
||||
$(CXXCOMPILE) -c $(INCLUDES) $<
|
||||
|
|
33
sql/client_settings.h
Normal file
33
sql/client_settings.h
Normal file
|
@ -0,0 +1,33 @@
|
|||
/* 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 */
|
||||
|
||||
|
||||
#ifndef _client_settings_h
|
||||
#define _client_settings_h
|
||||
#include <thr_alarm.h>
|
||||
#include <mysql_embed.h>
|
||||
#include <mysql_com.h>
|
||||
|
||||
|
||||
#define CLIENT_CAPABILITIES (CLIENT_LONG_PASSWORD | CLIENT_LONG_FLAG | \
|
||||
CLIENT_LOCAL_FILES | CLIENT_SECURE_CONNECTION)
|
||||
|
||||
|
||||
extern ulong slave_net_timeout;
|
||||
#define init_sigpipe_variables
|
||||
#define set_sigpipe(mysql)
|
||||
#define reset_sigpipe(mysql)
|
||||
#endif /* _client_settings_h */
|
|
@ -23,7 +23,6 @@
|
|||
#include "sql_repl.h"
|
||||
#include "slave.h"
|
||||
#include "sql_acl.h"
|
||||
#include "mini_client.h"
|
||||
#include "log_event.h"
|
||||
#include <mysql.h>
|
||||
|
||||
|
@ -669,9 +668,9 @@ 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);
|
||||
if (!mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
|
||||
mi->port, 0, 0,
|
||||
slave_net_timeout))
|
||||
mi->port, 0, 0))
|
||||
DBUG_RETURN(1);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
|
|
@ -20,12 +20,12 @@
|
|||
|
||||
#include <mysql.h>
|
||||
#include <myisam.h>
|
||||
#include "mini_client.h"
|
||||
#include "slave.h"
|
||||
#include "sql_repl.h"
|
||||
#include "repl_failsafe.h"
|
||||
#include <thr_alarm.h>
|
||||
#include <my_dir.h>
|
||||
#include <sql_common.h>
|
||||
|
||||
bool use_slave_mask = 0;
|
||||
MY_BITMAP slave_error_mask;
|
||||
|
@ -2948,9 +2948,10 @@ static int connect_to_master(THD* thd, MYSQL* mysql, MASTER_INFO* mi,
|
|||
|
||||
while (!(slave_was_killed = io_slave_killed(thd,mi)) &&
|
||||
(reconnect ? mysql_reconnect(mysql) != 0:
|
||||
!mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
|
||||
mi->port, 0, client_flag,
|
||||
thd->variables.net_read_timeout)))
|
||||
!(mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT,
|
||||
(char *)&thd->variables.net_read_timeout),
|
||||
mysql_real_connect(mysql, mi->host, mi->user, mi->password, 0,
|
||||
mi->port, 0, client_flag))))
|
||||
{
|
||||
/* Don't repeat last error */
|
||||
if ((int)mysql_errno(mysql) != last_errno)
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
#include "sql_repl.h"
|
||||
#include "sql_acl.h"
|
||||
#include "log_event.h"
|
||||
#include "mini_client.h"
|
||||
#include <my_dir.h>
|
||||
|
||||
extern const char* any_db;
|
||||
|
|
Loading…
Reference in a new issue