mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Resolving conflicts
This commit is contained in:
commit
9d4bae335c
21 changed files with 258 additions and 1771 deletions
|
@ -622,3 +622,7 @@ vio/test-ssl
|
|||
vio/test-sslclient
|
||||
vio/test-sslserver
|
||||
vio/viotest-ssl
|
||||
libmysqld/client.c
|
||||
libmysqld/client_settings.h
|
||||
libmysqld/libmysql.c
|
||||
libmysqld/pack.c
|
||||
|
|
|
@ -328,7 +328,7 @@ static void get_replace_column(struct st_query *q);
|
|||
static void free_replace_column();
|
||||
|
||||
/* Disable functions that only exist in MySQL 4.0 */
|
||||
#if MYSQL_VERSION_ID < 40000 || defined(EMBEDDED_LIBRARY)
|
||||
#if MYSQL_VERSION_ID < 40000
|
||||
void mysql_enable_rpl_parse(MYSQL* mysql __attribute__((unused))) {}
|
||||
void mysql_disable_rpl_parse(MYSQL* mysql __attribute__((unused))) {}
|
||||
int mysql_rpl_parse_enabled(MYSQL* mysql __attribute__((unused))) { return 1; }
|
||||
|
|
|
@ -129,11 +129,22 @@ typedef struct st_mysql_data {
|
|||
unsigned int fields;
|
||||
MYSQL_ROWS *data;
|
||||
MEM_ROOT alloc;
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)
|
||||
MYSQL_ROWS **prev_ptr;
|
||||
#endif
|
||||
} MYSQL_DATA;
|
||||
|
||||
enum mysql_option
|
||||
{
|
||||
MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE,
|
||||
MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,
|
||||
MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE,
|
||||
MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT,
|
||||
MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT,
|
||||
MYSQL_OPT_USE_REMOTE_CONNECTION, MYSQL_OPT_USE_EMBEDDED_CONNECTION,
|
||||
MYSQL_OPT_GUESS_CONNECTION
|
||||
};
|
||||
|
||||
struct st_mysql_options {
|
||||
unsigned int connect_timeout, read_timeout, write_timeout;
|
||||
unsigned int port, protocol;
|
||||
|
@ -165,18 +176,10 @@ struct st_mysql_options {
|
|||
a read that is replication-aware
|
||||
*/
|
||||
my_bool no_master_reads;
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || defined(EMBEDDED_LIBRARY)
|
||||
my_bool separate_thread;
|
||||
#endif
|
||||
};
|
||||
|
||||
enum mysql_option
|
||||
{
|
||||
MYSQL_OPT_CONNECT_TIMEOUT, MYSQL_OPT_COMPRESS, MYSQL_OPT_NAMED_PIPE,
|
||||
MYSQL_INIT_COMMAND, MYSQL_READ_DEFAULT_FILE, MYSQL_READ_DEFAULT_GROUP,
|
||||
MYSQL_SET_CHARSET_DIR, MYSQL_SET_CHARSET_NAME, MYSQL_OPT_LOCAL_INFILE,
|
||||
MYSQL_OPT_PROTOCOL, MYSQL_SHARED_MEMORY_BASE_NAME, MYSQL_OPT_READ_TIMEOUT,
|
||||
MYSQL_OPT_WRITE_TIMEOUT, MYSQL_OPT_USE_RESULT
|
||||
enum mysql_option methods_to_use;
|
||||
};
|
||||
|
||||
enum mysql_status
|
||||
|
@ -199,8 +202,7 @@ enum mysql_rpl_type
|
|||
MYSQL_RPL_MASTER, MYSQL_RPL_SLAVE, MYSQL_RPL_ADMIN
|
||||
};
|
||||
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
struct st_mysql_methods;
|
||||
|
||||
typedef struct st_mysql
|
||||
{
|
||||
|
@ -245,34 +247,14 @@ typedef struct st_mysql
|
|||
struct st_mysql* last_used_con;
|
||||
|
||||
LIST *stmts; /* list of all statements */
|
||||
} MYSQL;
|
||||
|
||||
#else
|
||||
|
||||
struct st_mysql_res;
|
||||
|
||||
typedef struct st_mysql
|
||||
{
|
||||
const struct st_mysql_methods *methods;
|
||||
struct st_mysql_res *result;
|
||||
void *thd;
|
||||
struct charset_info_st *charset;
|
||||
unsigned int server_language;
|
||||
MYSQL_FIELD *fields;
|
||||
MEM_ROOT field_alloc;
|
||||
my_ulonglong affected_rows;
|
||||
unsigned int field_count;
|
||||
struct st_mysql_options options;
|
||||
enum mysql_status status;
|
||||
my_bool free_me; /* If free in mysql_close */
|
||||
my_ulonglong insert_id; /* id if insert on table with NEXTNR */
|
||||
unsigned int last_errno;
|
||||
unsigned int server_status;
|
||||
char *last_error; /* Used by embedded server */
|
||||
char *last_error;
|
||||
char sqlstate[SQLSTATE_LENGTH+1]; /* Used by embedded server */
|
||||
} MYSQL;
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct st_mysql_res {
|
||||
my_ulonglong row_count;
|
||||
MYSQL_FIELD *fields;
|
||||
|
@ -371,12 +353,10 @@ MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,
|
|||
unsigned int port,
|
||||
const char *unix_socket,
|
||||
unsigned long clientflag);
|
||||
void STDCALL mysql_close(MYSQL *sock);
|
||||
int STDCALL mysql_select_db(MYSQL *mysql, const char *db);
|
||||
int STDCALL mysql_query(MYSQL *mysql, const char *q);
|
||||
int STDCALL mysql_send_query(MYSQL *mysql, const char *q,
|
||||
unsigned long length);
|
||||
my_bool STDCALL mysql_read_query_result(MYSQL *mysql);
|
||||
int STDCALL mysql_real_query(MYSQL *mysql, const char *q,
|
||||
unsigned long length);
|
||||
/* perform query on master */
|
||||
|
@ -437,8 +417,6 @@ MYSQL_RES * STDCALL mysql_list_tables(MYSQL *mysql,const char *wild);
|
|||
MYSQL_RES * STDCALL mysql_list_fields(MYSQL *mysql, const char *table,
|
||||
const char *wild);
|
||||
MYSQL_RES * STDCALL mysql_list_processes(MYSQL *mysql);
|
||||
MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);
|
||||
MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);
|
||||
int STDCALL mysql_options(MYSQL *mysql,enum mysql_option option,
|
||||
const char *arg);
|
||||
void STDCALL mysql_free_result(MYSQL_RES *result);
|
||||
|
@ -559,6 +537,25 @@ typedef struct st_mysql_stmt
|
|||
} MYSQL_STMT;
|
||||
|
||||
|
||||
#define mysql_close(sock) (*(sock)->methods->close)(sock)
|
||||
#define mysql_read_query_result(mysql) (*(mysql)->methods->read_query_result)(mysql)
|
||||
#define mysql_store_result(mysql) (*(mysql)->methods->store_result)(mysql)
|
||||
#define mysql_use_result(mysql) (*(mysql)->methods->use_result)(mysql)
|
||||
|
||||
typedef struct st_mysql_methods
|
||||
{
|
||||
void STDCALL (*close)(MYSQL *sock);
|
||||
my_bool STDCALL (*read_query_result)(MYSQL *mysql);
|
||||
my_bool STDCALL (*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);
|
||||
MYSQL_RES * STDCALL (*store_result)(MYSQL *mysql);
|
||||
MYSQL_RES * STDCALL (*use_result)(MYSQL *mysql);
|
||||
} MYSQL_METHODS;
|
||||
|
||||
MYSQL_STMT * STDCALL mysql_prepare(MYSQL * mysql, const char *query,
|
||||
unsigned long length);
|
||||
int STDCALL mysql_execute(MYSQL_STMT * stmt);
|
||||
|
@ -612,9 +609,9 @@ int STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
|
|||
They are not for general usage
|
||||
*/
|
||||
|
||||
my_bool
|
||||
simple_command(MYSQL *mysql,enum enum_server_command command, const char *arg,
|
||||
unsigned long length, my_bool skip_check);
|
||||
#define simple_command(mysql, command, arg, length, skip_check) \
|
||||
(*(mysql)->methods->advanced_command)(mysql, command, \
|
||||
NullS, 0, arg, length, skip_check)
|
||||
unsigned long net_safe_read(MYSQL* mysql);
|
||||
void mysql_once_init(void);
|
||||
|
||||
|
|
|
@ -129,7 +129,7 @@ typedef struct st_vio Vio;
|
|||
#define MAX_BLOB_WIDTH 8192 /* Default width for blob */
|
||||
|
||||
typedef struct st_net {
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
#if !defined(CHECK_EMBEDDED_DIFFERENCES) || !defined(EMBEDDED_LIBRARY)
|
||||
Vio* vio;
|
||||
unsigned char *buff,*buff_end,*write_pos,*read_pos;
|
||||
my_socket fd; /* For Perl DBI/dbd */
|
||||
|
@ -233,7 +233,8 @@ void my_net_local_init(NET *net);
|
|||
void net_end(NET *net);
|
||||
void net_clear(NET *net);
|
||||
my_bool net_realloc(NET *net, unsigned long length);
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY /* To be removed by HF */
|
||||
my_bool net_flush(NET *net);
|
||||
#else
|
||||
#define net_flush(A)
|
||||
|
@ -338,6 +339,7 @@ void my_thread_end(void);
|
|||
#ifdef _global_h
|
||||
ulong STDCALL net_field_length(uchar **packet);
|
||||
my_ulonglong net_field_length_ll(uchar **packet);
|
||||
char *net_store_length(char *pkg, ulonglong length);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
#ifdef EMBEDDED_LIBRARY
|
||||
|
||||
/* Things we don't need in the embedded version of MySQL */
|
||||
/* TODO HF add #undef HAVE_VIO if we don't want client in embedded library */
|
||||
|
||||
#undef HAVE_PSTACK /* No stacktrace */
|
||||
#undef HAVE_DLOPEN /* No udf functions */
|
||||
#undef HAVE_OPENSSL
|
||||
#undef HAVE_VIO
|
||||
#undef HAVE_ISAM
|
||||
#undef HAVE_SMEM /* No shared memory */
|
||||
|
||||
|
|
|
@ -27,9 +27,6 @@ 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);
|
||||
|
@ -38,6 +35,8 @@ 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);
|
||||
void mysql_read_default_options(struct st_mysql_options *options,
|
||||
const char *filename,const char *group);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -220,7 +220,7 @@ enum SSL_type
|
|||
};
|
||||
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
/* HFTODO - hide this if we don't want client in embedded server */
|
||||
/* This structure is for every connection on both sides */
|
||||
struct st_vio
|
||||
{
|
||||
|
@ -263,5 +263,4 @@ struct st_vio
|
|||
#endif /* HAVE_SMEM */
|
||||
#endif /* HAVE_VIO */
|
||||
};
|
||||
#endif /* EMBEDDED_LIBRARY */
|
||||
#endif /* vio_violite_h_ */
|
||||
|
|
|
@ -14,12 +14,13 @@
|
|||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
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)
|
||||
|
||||
|
||||
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);
|
||||
|
@ -39,3 +40,4 @@ my_bool send_file_to_server(MYSQL *mysql, const char *filename);
|
|||
#define set_sigpipe(mysql)
|
||||
#define reset_sigpipe(mysql)
|
||||
#endif
|
||||
|
||||
|
|
|
@ -58,11 +58,12 @@
|
|||
#endif
|
||||
|
||||
#include <sql_common.h>
|
||||
#include "client_settings.h"
|
||||
|
||||
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;
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
#undef net_flush
|
||||
my_bool net_flush(NET *net);
|
||||
#endif
|
||||
|
||||
#if defined(MSDOS) || defined(__WIN__)
|
||||
/* socket_errno is defined in my_global.h for all platforms */
|
||||
|
@ -85,19 +86,6 @@ static ulong mysql_sub_escape_string(CHARSET_INFO *charset_info, char *to,
|
|||
const char *from, ulong length);
|
||||
my_bool stmt_close(MYSQL_STMT *stmt, my_bool skip_list);
|
||||
|
||||
/*
|
||||
Initialize the MySQL library
|
||||
|
||||
SYNOPSIS
|
||||
mysql_once_init()
|
||||
|
||||
NOTES
|
||||
Can't be static on NetWare
|
||||
This function is called by mysql_init() and indirectly called
|
||||
by mysql_real_query(), so one should never have to call this from an
|
||||
outside program.
|
||||
*/
|
||||
|
||||
static my_bool mysql_client_init= 0;
|
||||
static my_bool org_my_init_done= 0;
|
||||
|
||||
|
@ -145,7 +133,7 @@ void mysql_once_init(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
||||
char **argv __attribute__((unused)),
|
||||
char **groups __attribute__((unused)))
|
||||
|
@ -162,6 +150,7 @@ void STDCALL mysql_server_end()
|
|||
else
|
||||
mysql_thread_end();
|
||||
}
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
|
||||
my_bool STDCALL mysql_thread_init()
|
||||
{
|
||||
|
@ -183,17 +172,6 @@ void STDCALL mysql_thread_end()
|
|||
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
|
||||
|
||||
static MYSQL* spawn_init(MYSQL* parent, const char* host,
|
||||
unsigned int port,
|
||||
const char* user,
|
||||
|
@ -856,7 +834,6 @@ STDCALL mysql_add_slave(MYSQL* mysql, const char* host,
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
Return next field of the query results
|
||||
**************************************************************************/
|
||||
|
@ -1248,19 +1225,6 @@ uint STDCALL mysql_thread_safe(void)
|
|||
Some support functions
|
||||
****************************************************************************/
|
||||
|
||||
/*
|
||||
Functions called my my_net_init() to set some application specific variables
|
||||
*/
|
||||
|
||||
void my_net_local_init(NET *net)
|
||||
{
|
||||
net->max_packet= (uint) net_buffer_length;
|
||||
net->read_timeout= (uint) net_read_timeout;
|
||||
net->write_timeout=(uint) net_write_timeout;
|
||||
net->retry_count= 1;
|
||||
net->max_packet_size= max(net_buffer_length, max_allowed_packet);
|
||||
}
|
||||
|
||||
/*
|
||||
Add escape characters to a string (blob?) to make it suitable for a insert
|
||||
to should at least have place for length*2+1 chars
|
||||
|
@ -1762,39 +1726,6 @@ static void store_param_type(NET *net, uint type)
|
|||
net->write_pos+=2;
|
||||
}
|
||||
|
||||
/*
|
||||
Store the length of parameter data
|
||||
(Same function as in sql/net_pkg.cc)
|
||||
*/
|
||||
|
||||
char *
|
||||
net_store_length(char *pkg, ulong length)
|
||||
{
|
||||
uchar *packet=(uchar*) pkg;
|
||||
if (length < 251)
|
||||
{
|
||||
*packet=(uchar) length;
|
||||
return (char*) packet+1;
|
||||
}
|
||||
/* 251 is reserved for NULL */
|
||||
if (length < 65536L)
|
||||
{
|
||||
*packet++=252;
|
||||
int2store(packet,(uint) length);
|
||||
return (char*) packet+2;
|
||||
}
|
||||
if (length < 16777216L)
|
||||
{
|
||||
*packet++=253;
|
||||
int3store(packet,(ulong) length);
|
||||
return (char*) packet+3;
|
||||
}
|
||||
*packet++=254;
|
||||
int8store(packet, (ulonglong) length);
|
||||
return (char*) packet+9;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
Functions to store parameter data from a prepared statement.
|
||||
|
||||
|
@ -1994,8 +1925,9 @@ static my_bool execute(MYSQL_STMT * stmt, char *packet, ulong length)
|
|||
|
||||
mysql->last_used_con= mysql;
|
||||
int4store(buff, stmt->stmt_id); /* Send stmt id to server */
|
||||
if (advanced_command(mysql, COM_EXECUTE, buff, MYSQL_STMT_HEADER, packet,
|
||||
length, 1) ||
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_EXECUTE, buff,
|
||||
MYSQL_STMT_HEADER, packet,
|
||||
length, 1) ||
|
||||
mysql_read_query_result(mysql))
|
||||
{
|
||||
set_stmt_errmsg(stmt, net->last_error, net->last_errno, net->sqlstate);
|
||||
|
@ -2287,8 +2219,9 @@ mysql_send_long_data(MYSQL_STMT *stmt, uint param_number,
|
|||
Note that we don't get any ok packet from the server in this case
|
||||
This is intentional to save bandwidth.
|
||||
*/
|
||||
if (advanced_command(mysql, COM_LONG_DATA, extra_data,
|
||||
MYSQL_LONG_DATA_HEADER, data, length, 1))
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_LONG_DATA, extra_data,
|
||||
MYSQL_LONG_DATA_HEADER, data,
|
||||
length, 1))
|
||||
{
|
||||
set_stmt_errmsg(stmt, mysql->net.last_error,
|
||||
mysql->net.last_errno, mysql->net.sqlstate);
|
||||
|
|
|
@ -32,7 +32,7 @@ noinst_LIBRARIES = libmysqld_int.a
|
|||
pkglib_LIBRARIES = libmysqld.a
|
||||
SUBDIRS = . examples
|
||||
libmysqld_sources= libmysqld.c lib_sql.cc
|
||||
libmysqlsources = errmsg.c get_password.c
|
||||
libmysqlsources = errmsg.c get_password.c libmysql.c client.c pack.c
|
||||
|
||||
noinst_HEADERS = embedded_priv.h
|
||||
|
||||
|
@ -57,8 +57,6 @@ sqlsources = derror.cc field.cc field_conv.cc filesort.cc \
|
|||
unireg.cc uniques.cc stacktrace.c sql_union.cc hash_filo.cc \
|
||||
spatial.cc gstream.cc sql_help.cc
|
||||
|
||||
EXTRA_DIST = lib_vio.c
|
||||
|
||||
libmysqld_int_a_SOURCES= $(libmysqld_sources) $(libmysqlsources) $(sqlsources)
|
||||
libmysqld_a_SOURCES=
|
||||
|
||||
|
@ -74,7 +72,8 @@ INC_LIB= $(top_builddir)/regex/libregex.a \
|
|||
$(top_builddir)/mysys/libmysys.a \
|
||||
$(top_builddir)/strings/libmystrings.a \
|
||||
$(top_builddir)/dbug/libdbug.a \
|
||||
$(top_builddir)/regex/libregex.a
|
||||
$(top_builddir)/regex/libregex.a \
|
||||
$(top_builddir)/vio/libvio.a
|
||||
|
||||
#
|
||||
# To make it easy for the end user to use the embedded library we
|
||||
|
@ -115,11 +114,14 @@ link_sources:
|
|||
for f in $(libmysqlsources); do \
|
||||
rm -f $(srcdir)/$$f; \
|
||||
@LN_CP_F@ $(srcdir)/../libmysql/$$f $(srcdir)/$$f; \
|
||||
done
|
||||
done; \
|
||||
@LN_CP_F@ $(srcdir)/../libmysql/client_settings.h $(srcdir)/client_settings.h;
|
||||
|
||||
|
||||
clean-local:
|
||||
rm -f `echo $(sqlsources) $(libmysqlsources) | sed "s;\.lo;.c;g"` \
|
||||
$(top_srcdir)/linked_libmysqld_sources
|
||||
$(top_srcdir)/linked_libmysqld_sources; \
|
||||
rm -f client_settings.h
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
%::SCCS/s.%
|
||||
|
|
|
@ -26,6 +26,4 @@ C_MODE_START
|
|||
extern void lib_connection_phase(NET *net, int phase);
|
||||
extern void init_embedded_mysql(MYSQL *mysql, int client_flag, char *db);
|
||||
extern void *create_embedded_thd(int client_flag, char *db);
|
||||
extern my_bool simple_command(MYSQL *mysql,enum enum_server_command command, const char *arg,
|
||||
ulong length, my_bool skipp_check);
|
||||
C_MODE_END
|
||||
|
|
|
@ -10,7 +10,7 @@ link_sources:
|
|||
DEFS = -DEMBEDDED_LIBRARY
|
||||
INCLUDES = @MT_INCLUDES@ -I$(top_srcdir)/include -I$(srcdir) \
|
||||
-I$(top_srcdir) -I$(top_srcdir)/client $(openssl_includes)
|
||||
LIBS = @LIBS@ @WRAPLIBS@
|
||||
LIBS = @LIBS@ @WRAPLIBS@ @CLIENT_LIBS@
|
||||
LDADD = @CLIENT_EXTRA_LDFLAGS@ ../libmysqld.a @innodb_system_libs@ @bdb_libs_with_path@ @LIBDL@ $(CXXLDFLAGS)
|
||||
|
||||
mysqltest_SOURCES = mysqltest.c
|
||||
|
|
|
@ -47,9 +47,10 @@ static bool check_user(THD *thd, enum_server_command command,
|
|||
char * get_mysql_home(){ return mysql_home;};
|
||||
char * get_mysql_real_data_home(){ return mysql_real_data_home;};
|
||||
|
||||
my_bool simple_command(MYSQL *mysql,enum enum_server_command command,
|
||||
const char *arg,
|
||||
ulong length, my_bool skipp_check)
|
||||
my_bool
|
||||
emb_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)
|
||||
{
|
||||
my_bool result= 1;
|
||||
THD *thd=(THD *) mysql->thd;
|
||||
|
@ -67,13 +68,14 @@ my_bool simple_command(MYSQL *mysql,enum enum_server_command command,
|
|||
mysql->affected_rows= ~(my_ulonglong) 0;
|
||||
|
||||
thd->store_globals(); // Fix if more than one connect
|
||||
result= dispatch_command(command, thd, (char *) arg, length + 1);
|
||||
result= dispatch_command(command, thd, (char *) arg, arg_length + 1);
|
||||
|
||||
if (!skipp_check)
|
||||
if (!skip_check)
|
||||
result= thd->net.last_errno ? -1 : 0;
|
||||
|
||||
mysql->last_error= thd->net.last_error;
|
||||
mysql->last_errno= thd->net.last_errno;
|
||||
mysql->net.last_errno= thd->net.last_errno;
|
||||
mysql->warning_count= ((THD*)mysql->thd)->total_warn_count;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -144,7 +146,6 @@ char **copy_arguments(int argc, char **argv)
|
|||
extern "C"
|
||||
{
|
||||
|
||||
ulong max_allowed_packet, net_buffer_length;
|
||||
char ** copy_arguments_ptr= 0;
|
||||
|
||||
int STDCALL mysql_server_init(int argc, char **argv, char **groups)
|
||||
|
@ -281,21 +282,6 @@ void STDCALL mysql_server_end()
|
|||
my_end(0);
|
||||
}
|
||||
|
||||
my_bool STDCALL mysql_thread_init()
|
||||
{
|
||||
#ifdef THREAD
|
||||
return my_thread_init();
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
void STDCALL mysql_thread_end()
|
||||
{
|
||||
#ifdef THREAD
|
||||
my_thread_end();
|
||||
#endif
|
||||
}
|
||||
} /* extern "C" */
|
||||
|
||||
C_MODE_START
|
||||
|
@ -454,11 +440,6 @@ send_eof(THD *thd, bool no_flush)
|
|||
{
|
||||
}
|
||||
|
||||
uint STDCALL mysql_warning_count(MYSQL *mysql)
|
||||
{
|
||||
return ((THD *)mysql->thd)->total_warn_count;
|
||||
}
|
||||
|
||||
void Protocol_simple::prepare_for_resend()
|
||||
{
|
||||
MYSQL_ROWS *cur;
|
||||
|
|
|
@ -1,236 +0,0 @@
|
|||
/* Copyright (C) 2000 MySQL 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 */
|
||||
|
||||
/*
|
||||
Note that we can't have assertion on file descriptors; The reason for
|
||||
this is that during mysql shutdown, another thread can close a file
|
||||
we are working on. In this case we should just return read errors from
|
||||
the file descriptior.
|
||||
*/
|
||||
#ifdef DUMMY
|
||||
|
||||
#include <my_global.h>
|
||||
#include "mysql_embed.h"
|
||||
#include "mysql.h"
|
||||
|
||||
#ifndef HAVE_VIO /* is Vio enabled */
|
||||
|
||||
#include <errno.h>
|
||||
#include <my_sys.h>
|
||||
#include <violite.h>
|
||||
#include <my_net.h>
|
||||
#include <m_string.h>
|
||||
#include <assert.h>
|
||||
|
||||
#ifndef __WIN__
|
||||
#define HANDLE void *
|
||||
#endif
|
||||
|
||||
struct st_vio
|
||||
{
|
||||
enum enum_vio_type type; /* Type of connection */
|
||||
void *dest_thd;
|
||||
char *packets, **last_packet;
|
||||
char *where_in_packet, *end_of_packet;
|
||||
my_bool reading;
|
||||
MEM_ROOT root;
|
||||
};
|
||||
|
||||
|
||||
/* Initialize the communication buffer */
|
||||
|
||||
Vio *vio_new(my_socket sd, enum enum_vio_type type, my_bool localhost)
|
||||
{
|
||||
DBUG_ENTER("vio_new");
|
||||
Vio * vio;
|
||||
|
||||
if ((vio= (Vio *) my_malloc(sizeof(*vio),MYF(MY_WME|MY_ZEROFILL))))
|
||||
{
|
||||
init_alloc_root(&vio->root, 8192, 8192);
|
||||
vio->root.min_malloc = sizeof(char *) + 4;
|
||||
vio->last_packet = &vio->packets;
|
||||
vio->type = type;
|
||||
}
|
||||
DBUG_RETURN(vio);
|
||||
}
|
||||
|
||||
|
||||
#ifdef __WIN__
|
||||
|
||||
Vio *vio_new_win32pipe(HANDLE hPipe)
|
||||
{
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void vio_delete(Vio * vio)
|
||||
{
|
||||
DBUG_ENTER("vio_delete");
|
||||
if (vio)
|
||||
{
|
||||
if (vio->type != VIO_CLOSED)
|
||||
vio_close(vio);
|
||||
free_root(&vio->root, MYF(0));
|
||||
my_free((gptr) vio, MYF(0));
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
void vio_reset(Vio *vio)
|
||||
{
|
||||
DBUG_ENTER("vio_reset");
|
||||
free_root(&vio->root, MYF(MY_KEEP_PREALLOC));
|
||||
vio->packets = vio->where_in_packet = vio->end_of_packet = 0;
|
||||
vio->last_packet = &vio->packets;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
int vio_errno(Vio *vio __attribute__((unused)))
|
||||
{
|
||||
return socket_errno; /* On Win32 this mapped to WSAGetLastError() */
|
||||
}
|
||||
|
||||
int vio_read(Vio * vio, gptr buf, int size)
|
||||
{
|
||||
vio->reading = 1;
|
||||
if (vio->where_in_packet >= vio->end_of_packet)
|
||||
{
|
||||
DBUG_ASSERT(vio->packets);
|
||||
vio->where_in_packet = vio->packets + sizeof(char *) + 4;
|
||||
vio->end_of_packet = vio->where_in_packet +
|
||||
uint4korr(vio->packets + sizeof(char *));
|
||||
vio->packets = *(char **)vio->packets;
|
||||
}
|
||||
if (vio->where_in_packet + size > vio->end_of_packet)
|
||||
size = vio->end_of_packet - vio->where_in_packet;
|
||||
memcpy(buf, vio->where_in_packet, size);
|
||||
vio->where_in_packet += size;
|
||||
return (size);
|
||||
}
|
||||
|
||||
int vio_write(Vio * vio, const gptr buf, int size)
|
||||
{
|
||||
DBUG_ENTER("vio_write");
|
||||
char *packet;
|
||||
if (vio->reading)
|
||||
{
|
||||
vio->reading = 0;
|
||||
vio_reset(vio);
|
||||
}
|
||||
if ((packet = alloc_root(&vio->root, sizeof(char*) + 4 + size)))
|
||||
{
|
||||
*vio->last_packet = packet;
|
||||
vio->last_packet = (char **)packet;
|
||||
*((char **)packet) = 0; /* Set forward link to 0 */
|
||||
packet += sizeof(char *);
|
||||
int4store(packet, size);
|
||||
memcpy(packet + 4, buf, size);
|
||||
}
|
||||
else
|
||||
size= -1;
|
||||
DBUG_RETURN(size);
|
||||
}
|
||||
|
||||
int vio_blocking(Vio * vio, my_bool set_blocking_mode, my_bool *old_mode)
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
my_bool
|
||||
vio_is_blocking(Vio * vio)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
int vio_fastsend(Vio * vio)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
int vio_keepalive(Vio* vio, my_bool set_keep_alive)
|
||||
{
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
my_bool
|
||||
vio_should_retry(Vio * vio __attribute__((unused)))
|
||||
{
|
||||
int en = socket_errno;
|
||||
return (en == SOCKET_EAGAIN || en == SOCKET_EINTR ||
|
||||
en == SOCKET_EWOULDBLOCK);
|
||||
}
|
||||
|
||||
|
||||
int vio_close(Vio * vio)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
const char *vio_description(Vio * vio)
|
||||
{
|
||||
return "embedded vio";
|
||||
}
|
||||
|
||||
enum enum_vio_type vio_type(Vio* vio)
|
||||
{
|
||||
return VIO_CLOSED;
|
||||
}
|
||||
|
||||
my_socket vio_fd(Vio* vio)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
my_bool vio_peer_addr(Vio * vio, char *buf, uint16 *port)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
void vio_in_addr(Vio *vio, struct in_addr *in)
|
||||
{
|
||||
}
|
||||
|
||||
my_bool vio_poll_read(Vio *vio,uint timeout)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int create_vio(NET *net, int separate_thread)
|
||||
{
|
||||
Vio * v = net->vio;
|
||||
if (!v)
|
||||
{
|
||||
v = vio_new(0, separate_thread ? VIO_CLOSED : VIO_TYPE_TCPIP, 0);
|
||||
net->vio = v;
|
||||
}
|
||||
return !v;
|
||||
}
|
||||
|
||||
void set_thd(Vio *v, void *thd)
|
||||
{
|
||||
if (v)
|
||||
{
|
||||
v -> dest_thd = thd;
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_VIO */
|
||||
#endif /* DUMMY */
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -38,7 +38,26 @@
|
|||
#include <my_global.h>
|
||||
|
||||
#include "mysql.h"
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
|
||||
#undef MYSQL_SERVER
|
||||
|
||||
#ifndef MYSQL_CLIENT
|
||||
#define MYSQL_CLIENT
|
||||
#endif
|
||||
|
||||
#define CLI_MYSQL_REAL_CONNECT cli_mysql_real_connect
|
||||
|
||||
#undef net_flush
|
||||
my_bool net_flush(NET *net);
|
||||
|
||||
#else /*EMBEDDED_LIBRARY*/
|
||||
#define CLI_MYSQL_REAL_CONNECT mysql_real_connect
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
|
||||
#if !defined(MYSQL_SERVER) && (defined(__WIN__) || defined(_WIN32) || defined(_WIN64))
|
||||
|
||||
#include <winsock.h>
|
||||
#include <odbcinst.h>
|
||||
#endif /* !defined(MYSQL_SERVER) && (defined(__WIN__) ... */
|
||||
|
@ -572,8 +591,8 @@ void free_rows(MYSQL_DATA *cur)
|
|||
}
|
||||
}
|
||||
|
||||
my_bool
|
||||
advanced_command(MYSQL *mysql, enum enum_server_command command,
|
||||
static my_bool
|
||||
cli_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)
|
||||
{
|
||||
|
@ -635,13 +654,6 @@ end:
|
|||
return result;
|
||||
}
|
||||
|
||||
my_bool
|
||||
simple_command(MYSQL *mysql,enum enum_server_command command, const char *arg,
|
||||
ulong length, my_bool skip_check)
|
||||
{
|
||||
return advanced_command(mysql, command, NullS, 0, arg, length, skip_check);
|
||||
}
|
||||
|
||||
void free_old_query(MYSQL *mysql)
|
||||
{
|
||||
DBUG_ENTER("free_old_query");
|
||||
|
@ -759,8 +771,8 @@ static int add_init_command(struct st_mysql_options *options, const char *cmd)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void mysql_read_default_options(struct st_mysql_options *options,
|
||||
const char *filename,const char *group)
|
||||
void mysql_read_default_options(struct st_mysql_options *options,
|
||||
const char *filename,const char *group)
|
||||
{
|
||||
int argc;
|
||||
char *argv_buff[1],**argv;
|
||||
|
@ -1278,6 +1290,7 @@ mysql_init(MYSQL *mysql)
|
|||
#ifdef HAVE_SMEM
|
||||
mysql->options.shared_memory_base_name= (char*) def_shared_memory_base_name;
|
||||
#endif
|
||||
mysql->options.methods_to_use= MYSQL_OPT_GUESS_CONNECTION;
|
||||
return mysql;
|
||||
}
|
||||
|
||||
|
@ -1409,10 +1422,24 @@ error:
|
|||
before calling mysql_real_connect !
|
||||
*/
|
||||
|
||||
MYSQL * STDCALL
|
||||
mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||
const char *passwd, const char *db,
|
||||
uint port, const char *unix_socket,ulong client_flag)
|
||||
static void STDCALL cli_mysql_close(MYSQL *mysql);
|
||||
static my_bool STDCALL cli_mysql_read_query_result(MYSQL *mysql);
|
||||
static MYSQL_RES * STDCALL cli_mysql_store_result(MYSQL *mysql);
|
||||
static MYSQL_RES * STDCALL cli_mysql_use_result(MYSQL *mysql);
|
||||
|
||||
static MYSQL_METHODS client_methods=
|
||||
{
|
||||
cli_mysql_close,
|
||||
cli_mysql_read_query_result,
|
||||
cli_advanced_command,
|
||||
cli_mysql_store_result,
|
||||
cli_mysql_use_result
|
||||
};
|
||||
|
||||
MYSQL * STDCALL
|
||||
CLI_MYSQL_REAL_CONNECT(MYSQL *mysql,const char *host, const char *user,
|
||||
const char *passwd, const char *db,
|
||||
uint port, const char *unix_socket,ulong client_flag)
|
||||
{
|
||||
char buff[NAME_LEN+USERNAME_LENGTH+100],charset_name_buff[16];
|
||||
char *end,*host_info,*charset_name;
|
||||
|
@ -1441,6 +1468,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
|||
user ? user : "(Null)"));
|
||||
|
||||
/* Don't give sigpipe errors if the client doesn't want them */
|
||||
mysql->methods= &client_methods;
|
||||
set_sigpipe(mysql);
|
||||
net->vio = 0; /* If something goes wrong */
|
||||
mysql->client_flag=0; /* For handshake */
|
||||
|
@ -2112,8 +2140,7 @@ static void mysql_close_free(MYSQL *mysql)
|
|||
}
|
||||
|
||||
|
||||
void STDCALL
|
||||
mysql_close(MYSQL *mysql)
|
||||
static void STDCALL cli_mysql_close(MYSQL *mysql)
|
||||
{
|
||||
DBUG_ENTER("mysql_close");
|
||||
if (mysql) /* Some simple safety */
|
||||
|
@ -2165,8 +2192,7 @@ mysql_close(MYSQL *mysql)
|
|||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
my_bool STDCALL mysql_read_query_result(MYSQL *mysql)
|
||||
static my_bool STDCALL cli_mysql_read_query_result(MYSQL *mysql)
|
||||
{
|
||||
uchar *pos;
|
||||
ulong field_count;
|
||||
|
@ -2283,8 +2309,7 @@ mysql_real_query(MYSQL *mysql, const char *query, ulong length)
|
|||
mysql_data_seek may be used.
|
||||
**************************************************************************/
|
||||
|
||||
MYSQL_RES * STDCALL
|
||||
mysql_store_result(MYSQL *mysql)
|
||||
static MYSQL_RES * STDCALL cli_mysql_store_result(MYSQL *mysql)
|
||||
{
|
||||
MYSQL_RES *result;
|
||||
DBUG_ENTER("mysql_store_result");
|
||||
|
@ -2339,8 +2364,7 @@ mysql_store_result(MYSQL *mysql)
|
|||
have to wait for the client (and will not wait more than 30 sec/packet).
|
||||
**************************************************************************/
|
||||
|
||||
MYSQL_RES * STDCALL
|
||||
mysql_use_result(MYSQL *mysql)
|
||||
static MYSQL_RES * STDCALL cli_mysql_use_result(MYSQL *mysql)
|
||||
{
|
||||
MYSQL_RES *result;
|
||||
DBUG_ENTER("mysql_use_result");
|
||||
|
@ -2477,6 +2501,10 @@ mysql_options(MYSQL *mysql,enum mysql_option option, const char *arg)
|
|||
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
|
||||
case MYSQL_OPT_USE_REMOTE_CONNECTION:
|
||||
case MYSQL_OPT_USE_EMBEDDED_CONNECTION:
|
||||
case MYSQL_OPT_GUESS_CONNECTION:
|
||||
mysql->options.methods_to_use= option;
|
||||
break;
|
||||
default:
|
||||
DBUG_RETURN(1);
|
||||
|
|
|
@ -1,7 +1,28 @@
|
|||
/* Copyright (C) 2000-2003 MySQL 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 */
|
||||
|
||||
#include <my_global.h>
|
||||
#include <mysql_com.h>
|
||||
#include <mysql.h>
|
||||
|
||||
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;
|
||||
|
||||
/* Get the length of next field. Change parameter to point at fieldstart */
|
||||
ulong STDCALL net_field_length(uchar **packet)
|
||||
{
|
||||
|
@ -62,3 +83,43 @@ my_ulonglong net_field_length_ll(uchar **packet)
|
|||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
Functions called my my_net_init() to set some application specific variables
|
||||
*/
|
||||
|
||||
void my_net_local_init(NET *net)
|
||||
{
|
||||
net->max_packet= (uint) net_buffer_length;
|
||||
net->read_timeout= (uint) net_read_timeout;
|
||||
net->write_timeout=(uint) net_write_timeout;
|
||||
net->retry_count= 1;
|
||||
net->max_packet_size= max(net_buffer_length, max_allowed_packet);
|
||||
}
|
||||
|
||||
char *
|
||||
net_store_length(char *pkg, ulonglong length)
|
||||
{
|
||||
uchar *packet=(uchar*) pkg;
|
||||
if (length < LL(251))
|
||||
{
|
||||
*packet=(uchar) length;
|
||||
return (char*) packet+1;
|
||||
}
|
||||
/* 251 is reserved for NULL */
|
||||
if (length < LL(65536))
|
||||
{
|
||||
*packet++=252;
|
||||
int2store(packet,(uint) length);
|
||||
return (char*) packet+2;
|
||||
}
|
||||
if (length < LL(16777216))
|
||||
{
|
||||
*packet++=253;
|
||||
int3store(packet,(ulong) length);
|
||||
return (char*) packet+3;
|
||||
}
|
||||
*packet++=254;
|
||||
int8store(packet,length);
|
||||
return (char*) packet+8;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,3 +31,4 @@
|
|||
#define mysql_rpl_probe(mysql) 0
|
||||
#undef HAVE_SMEM
|
||||
#undef _CUSTOMCONFIG_
|
||||
|
||||
|
|
|
@ -30,7 +30,10 @@
|
|||
3 byte length & 1 byte package-number.
|
||||
*/
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
/*
|
||||
HFTODO this must be hidden if we don't want client capabilities in
|
||||
embedded library
|
||||
*/
|
||||
#ifdef __WIN__
|
||||
#include <winsock.h>
|
||||
#endif
|
||||
|
@ -46,6 +49,17 @@
|
|||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
|
||||
#undef net_flush
|
||||
|
||||
extern "C" {
|
||||
my_bool net_flush(NET *net);
|
||||
}
|
||||
|
||||
#endif /*EMBEDDED_LIBRARY */
|
||||
|
||||
|
||||
/*
|
||||
The following handles the differences when this is linked between the
|
||||
client and the server.
|
||||
|
@ -959,5 +973,4 @@ my_net_read(NET *net)
|
|||
return len;
|
||||
}
|
||||
|
||||
#endif /* EMBEDDED_LIBRARY */
|
||||
|
||||
|
|
|
@ -235,7 +235,6 @@ net_printf(THD *thd, uint errcode, ...)
|
|||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Return ok to the client.
|
||||
|
||||
|
@ -350,40 +349,6 @@ send_eof(THD *thd, bool no_flush)
|
|||
}
|
||||
#endif /* EMBEDDED_LIBRARY */
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
Store a field length in logical packet
|
||||
This is used to code the string length for normal protocol
|
||||
****************************************************************************/
|
||||
|
||||
char *
|
||||
net_store_length(char *pkg, ulonglong length)
|
||||
{
|
||||
uchar *packet=(uchar*) pkg;
|
||||
if (length < LL(251))
|
||||
{
|
||||
*packet=(uchar) length;
|
||||
return (char*) packet+1;
|
||||
}
|
||||
/* 251 is reserved for NULL */
|
||||
if (length < LL(65536))
|
||||
{
|
||||
*packet++=252;
|
||||
int2store(packet,(uint) length);
|
||||
return (char*) packet+2;
|
||||
}
|
||||
if (length < LL(16777216))
|
||||
{
|
||||
*packet++=253;
|
||||
int3store(packet,(ulong) length);
|
||||
return (char*) packet+3;
|
||||
}
|
||||
*packet++=254;
|
||||
int8store(packet,length);
|
||||
return (char*) packet+8;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Faster net_store_length when we know length is a 32 bit integer
|
||||
*/
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#include "mysql_priv.h"
|
||||
|
||||
#ifdef CLEAN_DUP
|
||||
/*
|
||||
Function called by my_net_init() to set some check variables
|
||||
*/
|
||||
|
@ -37,6 +38,7 @@ void my_net_local_init(NET *net)
|
|||
#endif
|
||||
}
|
||||
}
|
||||
#endif /*CLEAN_DUP*/
|
||||
|
||||
extern "C" {
|
||||
void mysql_once_init(void)
|
||||
|
|
Loading…
Add table
Reference in a new issue