diff options
Diffstat (limited to 'client')
-rw-r--r-- | client/Makefile.am | 1 | ||||
-rw-r--r-- | client/cmakelists.txt | 80 | ||||
-rw-r--r-- | client/mysql.cc | 11 | ||||
-rw-r--r-- | client/mysqlslap.c | 11 | ||||
-rw-r--r-- | client/mysqltest.c | 43 |
5 files changed, 134 insertions, 12 deletions
diff --git a/client/Makefile.am b/client/Makefile.am index 634f64be6ca..66f0ce9ad6d 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -80,6 +80,7 @@ strings_src=decimal.c DEFS = -DUNDEF_THREADS_HACK \ -DDEFAULT_MYSQL_HOME="\"$(prefix)\"" \ -DDATADIR="\"$(localstatedir)\"" +EXTRA_DIST = get_password.c cmakelists.txt link_sources: for f in $(sql_src) ; do \ diff --git a/client/cmakelists.txt b/client/cmakelists.txt new file mode 100644 index 00000000000..26cc36c7f6f --- /dev/null +++ b/client/cmakelists.txt @@ -0,0 +1,80 @@ +SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") +SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") + +# The old Windows build method used renamed (.cc -> .cpp) source files, fails +# in #include in mysqlbinlog.cc. So disable that using the USING_CMAKE define. +ADD_DEFINITIONS(-DUSING_CMAKE) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include + ${CMAKE_SOURCE_DIR}/zlib + ${CMAKE_SOURCE_DIR}/extra/yassl/include + ${CMAKE_SOURCE_DIR}/libmysql + ${CMAKE_SOURCE_DIR}/regex + ${CMAKE_SOURCE_DIR}/sql + ${CMAKE_SOURCE_DIR}/strings) + +ADD_LIBRARY(mysqlclient ../mysys/array.c ../strings/bchange.c ../strings/bmove.c + ../strings/bmove_upp.c ../mysys/charset-def.c ../mysys/charset.c + ../sql-common/client.c ../strings/ctype-big5.c ../strings/ctype-bin.c + ../strings/ctype-cp932.c ../strings/ctype-czech.c ../strings/ctype-euc_kr.c + ../strings/ctype-eucjpms.c ../strings/ctype-extra.c ../strings/ctype-gb2312.c + ../strings/ctype-gbk.c ../strings/ctype-latin1.c ../strings/ctype-mb.c + ../strings/ctype-simple.c ../strings/ctype-sjis.c ../strings/ctype-tis620.c + ../strings/ctype-uca.c ../strings/ctype-ucs2.c ../strings/ctype-ujis.c + ../strings/ctype-utf8.c ../strings/ctype-win1250ch.c ../strings/ctype.c + ../mysys/default.c ../libmysql/errmsg.c ../mysys/errors.c + ../libmysql/get_password.c ../strings/int2str.c ../strings/is_prefix.c + ../libmysql/libmysql.c ../mysys/list.c ../strings/llstr.c + ../strings/longlong2str.c ../libmysql/manager.c ../mysys/mf_cache.c + ../mysys/mf_dirname.c ../mysys/mf_fn_ext.c ../mysys/mf_format.c + ../mysys/mf_iocache.c ../mysys/mf_iocache2.c ../mysys/mf_loadpath.c + ../mysys/mf_pack.c ../mysys/mf_path.c ../mysys/mf_tempfile.c ../mysys/mf_unixpath.c + ../mysys/mf_wcomp.c ../mysys/mulalloc.c ../mysys/my_access.c ../mysys/my_alloc.c + ../mysys/my_chsize.c ../mysys/my_compress.c ../mysys/my_create.c + ../mysys/my_delete.c ../mysys/my_div.c ../mysys/my_error.c ../mysys/my_file.c + ../mysys/my_fopen.c ../mysys/my_fstream.c ../mysys/my_gethostbyname.c + ../mysys/my_getopt.c ../mysys/my_getwd.c ../mysys/my_init.c ../mysys/my_lib.c + ../mysys/my_malloc.c ../mysys/my_messnc.c ../mysys/my_net.c ../mysys/my_once.c + ../mysys/my_open.c ../mysys/my_pread.c ../mysys/my_pthread.c ../mysys/my_read.c + ../mysys/my_realloc.c ../mysys/my_rename.c ../mysys/my_seek.c + ../mysys/my_static.c ../strings/my_strtoll10.c ../mysys/my_symlink.c + ../mysys/my_symlink2.c ../mysys/my_thr_init.c ../sql-common/my_time.c + ../strings/my_vsnprintf.c ../mysys/my_wincond.c ../mysys/my_winthread.c + ../mysys/my_write.c ../sql/net_serv.cc ../sql-common/pack.c ../sql/password.c + ../mysys/safemalloc.c ../mysys/sha1.c ../strings/str2int.c + ../strings/str_alloc.c ../strings/strcend.c ../strings/strcont.c ../strings/strend.c + ../strings/strfill.c ../mysys/string.c ../strings/strinstr.c ../strings/strmake.c + ../strings/strmov.c ../strings/strnlen.c ../strings/strnmov.c ../strings/strtod.c + ../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c + ../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c + ../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c) + +ADD_DEPENDENCIES(mysqlclient GenError) +ADD_EXECUTABLE(mysql completion_hash.cc mysql.cc readline.cc sql_string.cc) +LINK_DIRECTORIES(${MYSQL_BINARY_DIR}/mysys ${MYSQL_BINARY_DIR}/zlib) +TARGET_LINK_LIBRARIES(mysql mysqlclient mysys yassl taocrypt zlib dbug wsock32) + +ADD_EXECUTABLE(mysqltest mysqltest.c) +TARGET_LINK_LIBRARIES(mysqltest mysqlclient mysys yassl taocrypt zlib dbug regex wsock32) + +ADD_EXECUTABLE(mysqlcheck mysqlcheck.c) +TARGET_LINK_LIBRARIES(mysqlcheck mysqlclient dbug yassl taocrypt zlib wsock32) + +ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c) +TARGET_LINK_LIBRARIES(mysqldump mysqlclient mysys dbug yassl taocrypt zlib wsock32) + +ADD_EXECUTABLE(mysqlimport mysqlimport.c) +TARGET_LINK_LIBRARIES(mysqlimport mysqlclient mysys dbug yassl taocrypt zlib wsock32) + +ADD_EXECUTABLE(mysqlshow mysqlshow.c) +TARGET_LINK_LIBRARIES(mysqlshow mysqlclient mysys dbug yassl taocrypt zlib wsock32) + +ADD_EXECUTABLE(mysqlbinlog mysqlbinlog.cc ../mysys/mf_tempdir.c ../mysys/my_new.cc + ../mysys/my_bit.c ../mysys/my_bitmap.c ../mysys/my_vle.c + ../mysys/base64.c) +TARGET_LINK_LIBRARIES(mysqlbinlog mysqlclient dbug yassl taocrypt zlib wsock32) + +ADD_EXECUTABLE(mysqladmin mysqladmin.cc) +TARGET_LINK_LIBRARIES(mysqladmin mysqlclient mysys dbug yassl taocrypt zlib wsock32) + +ADD_EXECUTABLE(mysqlslap mysqlslap.c) +TARGET_LINK_LIBRARIES(mysqlslap mysqlclient mysys yassl taocrypt zlib wsock32 dbug) diff --git a/client/mysql.cc b/client/mysql.cc index eb6970691bb..2001056dea1 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -653,7 +653,7 @@ static struct my_option my_long_options[] = "Base name of shared memory.", (gptr*) &shared_memory_base_name, (gptr*) &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #endif - {"socket", 'S', "Socket file to use for connection.", + {"socket", 'S', "Socket file to use for connection. (This will override --port unless --protocol=TCP is specified.)", (gptr*) &opt_mysql_unix_port, (gptr*) &opt_mysql_unix_port, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, #include "sslopt-longopts.h" @@ -939,7 +939,14 @@ static int get_options(int argc, char **argv) opt_reconnect= 0; connect_flag= 0; /* Not in interactive mode */ } - + + if (opt_mysql_port && (!opt_protocol) && (!opt_mysql_unix_port)) + { + /* Not checking return type since we are using a constant value */ + /* straight from the initialization of sql_protocol_typelib. */ + opt_protocol= find_type("TCP", &sql_protocol_typelib, 0); + } + if (strcmp(default_charset, charset_info->csname) && !(charset_info= get_charset_by_csname(default_charset, MY_CS_PRIMARY, MYF(MY_WME)))) diff --git a/client/mysqlslap.c b/client/mysqlslap.c index e1136bd3a69..904bf432071 100644 --- a/client/mysqlslap.c +++ b/client/mysqlslap.c @@ -266,6 +266,7 @@ int main(int argc, char **argv) my_end(0); exit(1); } + /* globals? Yes, so we only have to run strlen once */ delimiter_length= strlen(delimiter); @@ -455,9 +456,10 @@ static struct my_option my_long_options[] = (gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0, 0}, {"preserve-schema", OPT_MYSQL_PRESERVE_SCHEMA, - "Preserve the schema from the mysqlslap run.", + "Preserve the schema from the mysqlslap run, this happens unless \ + --auto-generate-sql or --create are used.", (gptr*) &opt_preserve, (gptr*) &opt_preserve, 0, GET_BOOL, - NO_ARG, 0, 0, 0, 0, 0, 0}, + NO_ARG, TRUE, 0, 0, 0, 0, 0}, {"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).", 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0}, @@ -750,6 +752,9 @@ get_options(int *argc,char ***argv) if (!user) user= (char *)"root"; + if (create_string || auto_generate_sql ) + opt_preserve= FALSE; + if (auto_generate_sql && (create_string || user_supplied_query)) { fprintf(stderr, @@ -1012,7 +1017,7 @@ run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit) } } #endif -#ifndef __WIN__ +#if !(defined(__WIN__) || defined(__NETWARE__)) #ifdef HAVE_LIBPTHREAD else #endif diff --git a/client/mysqltest.c b/client/mysqltest.c index 5bcd086672d..50d814e3f9b 100644 --- a/client/mysqltest.c +++ b/client/mysqltest.c @@ -209,9 +209,9 @@ struct st_replace_regex */ char* buf; char* even_buf; - uint even_buf_len; char* odd_buf; - uint odd_buf_len; + int even_buf_len; + int odd_buf_len; }; struct st_replace_regex *glob_replace_regex= 0; @@ -408,8 +408,10 @@ const char *command_names[]= "enable_rpl_parse", "disable_rpl_parse", "eval_result", + /* Enable/disable that the _query_ is logged to result file */ "enable_query_log", "disable_query_log", + /* Enable/disable that the _result_ from a query is logged to result file */ "enable_result_log", "disable_result_log", "server_start", @@ -461,6 +463,7 @@ static VAR* var_init(VAR* v, const char *name, int name_len, const char *val, static void var_free(void* v); void dump_result_to_reject_file(const char *record_file, char *buf, int size); +void dump_result_to_log_file(const char *record_file, char *buf, int size); int close_connection(struct st_query*); static void set_charset(struct st_query*); @@ -652,6 +655,8 @@ static void die(const char *fmt, ...) { va_list args; DBUG_ENTER("die"); + + /* Print the error message */ va_start(args, fmt); if (fmt) { @@ -666,6 +671,12 @@ static void die(const char *fmt, ...) fflush(stderr); } va_end(args); + + /* Dump the result that has been accumulated so far to .log file */ + if (result_file && ds_res.length) + dump_result_to_log_file(result_file, ds_res.str, ds_res.length); + + /* Clean up and exit */ free_used_memory(); my_end(MY_CHECK_ERROR); @@ -789,8 +800,8 @@ err: check_result ds - content to be checked fname - name of file to check against - require_option - if set and check fails, the test will be aborted with the special - exit code "not supported test" + require_option - if set and check fails, the test will be aborted + with the special exit code "not supported test" RETURN VALUES error - the function will not return @@ -1267,6 +1278,7 @@ int var_query_set(VAR* var, const char *query, const char** query_end) MYSQL_RES *res; MYSQL_ROW row; MYSQL* mysql = &cur_con->mysql; + DBUG_ENTER("var_query_set"); LINT_INIT(res); while (end > query && *end != '`') @@ -1329,7 +1341,7 @@ int var_query_set(VAR* var, const char *query, const char** query_end) eval_expr(var, "", 0); mysql_free_result(res); - return 0; + DBUG_RETURN(0); } void var_copy(VAR *dest, VAR *src) @@ -1506,6 +1518,7 @@ void do_system(struct st_query *command) } command->last_argument= command->end; + dynstr_free(&ds_cmd); DBUG_VOID_RETURN; } @@ -1546,7 +1559,7 @@ int do_echo(struct st_query *command) dynstr_append_mem(ds, "\n", 1); dynstr_free(&ds_echo); command->last_argument= command->end; - return 0; + return(0); } @@ -1649,7 +1662,7 @@ int do_save_master_pos() if (have_ndbcluster) { - ulonglong epoch, tmp_epoch= 0; + ulonglong epoch=0, tmp_epoch= 0; int count= 0; do @@ -3490,6 +3503,12 @@ void dump_result_to_reject_file(const char *record_file, char *buf, int size) str_to_file(fn_format(reject_file, record_file,"",".reject",2), buf, size); } +void dump_result_to_log_file(const char *record_file, char *buf, int size) +{ + char log_file[FN_REFLEN]; + str_to_file(fn_format(log_file, record_file,"",".log",2), buf, size); +} + static void check_regerr(my_regex_t* r, int err) { char err_buf[1024]; @@ -4288,7 +4307,17 @@ static void handle_error(const char *query, struct st_query *q, DBUG_ENTER("handle_error"); if (q->require_file) + { + /* + The query after a "--require" failed. This is fine as long the server + returned a valid reponse. Don't allow 2013 or 2006 to trigger an + abort_not_supported_test + */ + if (err_errno == CR_SERVER_LOST || + err_errno == CR_SERVER_GONE_ERROR) + die("require query '%s' failed: %d: %s", query, err_errno, err_error); abort_not_supported_test(); + } if (q->abort_on_error) die("query '%s' failed: %d: %s", query, err_errno, err_error); |