Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
6b303f84
Commit
6b303f84
authored
Jul 14, 2003
by
hf@deer.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Including client code into libmysqld
Merging
parents
902984a8
1b1a126a
Changes
20
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
242 additions
and
1756 deletions
+242
-1756
.bzrignore
.bzrignore
+4
-0
client/mysqltest.c
client/mysqltest.c
+1
-1
include/mysql.h
include/mysql.h
+39
-42
include/mysql_com.h
include/mysql_com.h
+4
-2
include/mysql_embed.h
include/mysql_embed.h
+1
-1
include/sql_common.h
include/sql_common.h
+2
-3
include/violite.h
include/violite.h
+1
-2
libmysql/client_settings.h
libmysql/client_settings.h
+3
-1
libmysql/libmysql.c
libmysql/libmysql.c
+16
-63
libmysqld/Makefile.am
libmysqld/Makefile.am
+9
-6
libmysqld/embedded_priv.h
libmysqld/embedded_priv.h
+0
-2
libmysqld/examples/Makefile.am
libmysqld/examples/Makefile.am
+1
-1
libmysqld/lib_sql.cc
libmysqld/lib_sql.cc
+8
-27
libmysqld/lib_vio.c
libmysqld/lib_vio.c
+0
-236
libmysqld/libmysqld.c
libmysqld/libmysqld.c
+43
-1308
sql-common/client.c
sql-common/client.c
+51
-23
sql-common/pack.c
sql-common/pack.c
+43
-0
sql/client_settings.h
sql/client_settings.h
+1
-0
sql/net_serv.cc
sql/net_serv.cc
+15
-3
sql/protocol.cc
sql/protocol.cc
+0
-35
No files found.
.bzrignore
View file @
6b303f84
...
...
@@ -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
client/mysqltest.c
View file @
6b303f84
...
...
@@ -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
;
}
...
...
include/mysql.h
View file @
6b303f84
...
...
@@ -129,11 +129,22 @@ typedef struct st_mysql_data {
unsigned
int
fields
;
MYSQL_ROWS
*
data
;
MEM_ROOT
alloc
;
#if
def 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
;
#if
def 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
);
...
...
@@ -613,9 +610,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
);
...
...
include/mysql_com.h
View file @
6b303f84
...
...
@@ -130,7 +130,7 @@ typedef struct st_vio Vio;
#define MAX_BLOB_WIDTH 8192
/* Default width for blob */
typedef
struct
st_net
{
#if
ndef 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 */
...
...
@@ -234,7 +234,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)
...
...
@@ -339,6 +340,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
...
...
include/mysql_embed.h
View file @
6b303f84
...
...
@@ -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 */
...
...
include/sql_common.h
View file @
6b303f84
...
...
@@ -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
...
...
include/violite.h
View file @
6b303f84
...
...
@@ -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_ */
libmysql/client_settings.h
View file @
6b303f84
...
...
@@ -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
libmysql/libmysql.c
View file @
6b303f84
...
...
@@ -58,12 +58,19 @@
#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 */
#define perror(A)
...
...
@@ -85,19 +92,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 +139,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
)))
...
...
@@ -163,6 +157,8 @@ void STDCALL mysql_server_end()
mysql_thread_end
();
}
#endif
/*EMBEDDED_LIBRARY*/
my_bool
STDCALL
mysql_thread_init
()
{
#ifdef THREAD
...
...
@@ -183,17 +179,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 +841,6 @@ STDCALL mysql_add_slave(MYSQL* mysql, const char* host,
return
0
;
}
/**************************************************************************
Return next field of the query results
**************************************************************************/
...
...
@@ -1762,39 +1746,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 +1945,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 +2239,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
);
...
...
libmysqld/Makefile.am
View file @
6b303f84
...
...
@@ -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,15 @@ link_sources:
for
f
in
$(libmysqlsources)
;
do
\
rm
-f
$(srcdir)
/
$$
f
;
\
@LN_CP_F@
$(srcdir)
/../libmysql/
$$
f
$(srcdir)
/
$$
f
;
\
done
done
;
\
rm
-f
$(srcdir)
/client_settings.h
;
\
@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.%
libmysqld/embedded_priv.h
View file @
6b303f84
...
...
@@ -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
libmysqld/examples/Makefile.am
View file @
6b303f84
...
...
@@ -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
...
...
libmysqld/lib_sql.cc
View file @
6b303f84
...
...
@@ -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
(
!
skip
p
_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
;
...
...
libmysqld/lib_vio.c
deleted
100644 → 0
View file @
902984a8
/* 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 */
libmysqld/libmysqld.c
View file @
6b303f84
This diff is collapsed.
Click to expand it.
sql-common/client.c
View file @
6b303f84
...
...
@@ -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
);
...
...
sql-common/pack.c
View file @
6b303f84
/* 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>
...
...
@@ -62,3 +78,30 @@ my_ulonglong net_field_length_ll(uchar **packet)
#endif
}
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
;
}
sql/client_settings.h
View file @
6b303f84
...
...
@@ -31,3 +31,4 @@
#define mysql_rpl_probe(mysql) 0
#undef HAVE_SMEM
#undef _CUSTOMCONFIG_
sql/net_serv.cc
View file @
6b303f84
...
...
@@ -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,3 @@ my_net_read(NET *net)
return
len
;
}
#endif
/* #ifndef EMBEDDED_LIBRARY */
sql/protocol.cc
View file @
6b303f84
...
...
@@ -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
*/
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment