mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge 192.168.0.5:mysql/mysql-5.1-maint
into neptunus.(none):/home/msvensson/mysql/mysql-5.1-maint client/mysqltest.c: Auto merged mysql-test/r/func_misc.result: Auto merged mysql-test/r/mysql.result: Auto merged mysql-test/t/mysql.test: Auto merged sql/field_conv.cc: Auto merged sql/handler.cc: Auto merged sql/sql_parse.cc: Auto merged
This commit is contained in:
@@ -1253,6 +1253,7 @@ mysql-test/r/*.err
|
||||
mysql-test/r/*.log
|
||||
mysql-test/r/*.out
|
||||
mysql-test/r/*.reject
|
||||
mysql-test/r/*.warnings
|
||||
mysql-test/r/alter_table.err
|
||||
mysql-test/r/archive.err
|
||||
mysql-test/r/backup.log
|
||||
|
@@ -5,7 +5,7 @@ configure="./configure $base_configs $extra_configs"
|
||||
|
||||
commands="\
|
||||
$make -k distclean || true
|
||||
/bin/rm -rf */.deps/*.P config.cache storage/innobase/config.cache autom4te.cache innobase/autom4te.cache;
|
||||
/bin/rm -rf */.deps/*.P configure config.cache storage/*/configure storage/*/config.cache autom4te.cache storage/*/autom4te.cache;
|
||||
|
||||
path=`dirname $0`
|
||||
. \"$path/autorun.sh\""
|
||||
|
@@ -183,7 +183,7 @@ fi
|
||||
# (http://samba.org/ccache) is installed, use it.
|
||||
# We use 'grep' and hope 'grep' will work as expected
|
||||
# (returns 0 if finds lines)
|
||||
if ccache -V > /dev/null 2>&1
|
||||
if ccache -V > /dev/null 2>&1 && test "$CCACHE_GCOV_VERSION_ENABLED" == "1"
|
||||
then
|
||||
echo "$CC" | grep "ccache" > /dev/null || CC="ccache $CC"
|
||||
echo "$CXX" | grep "ccache" > /dev/null || CXX="ccache $CXX"
|
||||
|
@@ -1,12 +1,21 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Need to disable ccache, or we loose the gcov-needed compiler output files.
|
||||
|
||||
CCACHE_GCOV_VERSION_ENABLED=0
|
||||
if ccache -V > /dev/null 2>&1
|
||||
then
|
||||
CCACHE_VER=`ccache -V | head -1 | sed s/"ccache version "//`
|
||||
if test "$CCACHE_VER" == "2.4-gcov"
|
||||
then
|
||||
CCACHE_GCOV_VERSION_ENABLED=1
|
||||
fi
|
||||
fi
|
||||
export CCACHE_GCOV_VERSION_ENABLED
|
||||
|
||||
path=`dirname $0`
|
||||
. "$path/SETUP.sh"
|
||||
|
||||
# Need to disable ccache, or we loose the gcov-needed compiler output files.
|
||||
CCACHE_DISABLE=1
|
||||
export CCACHE_DISABLE
|
||||
|
||||
# GCC4 needs -fprofile-arcs -ftest-coverage on the linker command line (as well
|
||||
# as on the compiler command line), and this requires setting LDFLAGS for BDB.
|
||||
export LDFLAGS="-fprofile-arcs -ftest-coverage"
|
||||
@@ -14,7 +23,7 @@ export LDFLAGS="-fprofile-arcs -ftest-coverage"
|
||||
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
|
||||
# code with profiling information used by gcov.
|
||||
# the -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
||||
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM -DHAVE_MUTEX_THREAD_ONLY"
|
||||
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM -DHAVE_MUTEX_THREAD_ONLY $debug_extra_flags"
|
||||
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
|
||||
extra_configs="$extra_configs $max_configs"
|
||||
|
||||
|
@@ -26,7 +26,7 @@ all-local: $(TXT_FILES)
|
||||
# make sure that "make install" installs the info page, too
|
||||
# automake only seems to take care of this automatically,
|
||||
# if we're building the info page from texi directly.
|
||||
install-data-hook: mysql.info
|
||||
install-data-hook: $(srcdir)/mysql.info
|
||||
$(mkinstalldirs) $(DESTDIR)$(infodir)
|
||||
$(INSTALL_DATA) $(srcdir)/mysql.info $(DESTDIR)$(infodir)
|
||||
|
||||
@@ -44,23 +44,23 @@ CLEAN_FILES: $(TXT_FILES)
|
||||
|
||||
GT = $(srcdir)/generate-text-files.pl
|
||||
|
||||
../INSTALL-SOURCE: mysql.info $(GT)
|
||||
perl -w $(GT) mysql.info "installing-source" "windows-source-build" > $@
|
||||
../INSTALL-SOURCE: $(srcdir)/mysql.info $(GT)
|
||||
perl -w $(GT) $(srcdir)/mysql.info "installing-source" "windows-source-build" > $@
|
||||
|
||||
../INSTALL-WIN-SOURCE: mysql.info $(GT)
|
||||
perl -w $(GT) mysql.info "windows-source-build" "post-installation" > $@
|
||||
../INSTALL-WIN-SOURCE: $(srcdir)/mysql.info $(GT)
|
||||
perl -w $(GT) $(srcdir)/mysql.info "windows-source-build" "post-installation" > $@
|
||||
|
||||
# We put the description for the binary installation here so that
|
||||
# people who download source wont have to see it. It is moved up to
|
||||
# the toplevel by the script that makes the binary tar files.
|
||||
INSTALL-BINARY: mysql.info $(GT)
|
||||
perl -w $(GT) mysql.info "installing-binary" "installing-source" > $@
|
||||
INSTALL-BINARY: $(srcdir)/mysql.info $(GT)
|
||||
perl -w $(GT) $(srcdir)/mysql.info "installing-binary" "installing-source" > $@
|
||||
|
||||
../EXCEPTIONS-CLIENT: mysql.info $(GT)
|
||||
perl -w $(GT) mysql.info "mysql-floss-license-exception" "function-index" > $@
|
||||
../EXCEPTIONS-CLIENT: $(srcdir)/mysql.info $(GT)
|
||||
perl -w $(GT) $(srcdir)/mysql.info "mysql-floss-license-exception" "function-index" > $@
|
||||
|
||||
../support-files/MacOSX/ReadMe.txt: mysql.info $(GT)
|
||||
perl -w $(GT) mysql.info "mac-os-x-installation" "netware-installation" > $@
|
||||
../support-files/MacOSX/ReadMe.txt: $(srcdir)/mysql.info $(GT)
|
||||
perl -w $(GT) $(srcdir)/mysql.info "mac-os-x-installation" "netware-installation" > $@
|
||||
|
||||
# Include the Windows manual.chm in source .tar.gz only if available.
|
||||
# It is not in BitKeeper, but is downloaded from intranet by Bootstrap.
|
||||
|
@@ -142,10 +142,15 @@ test-force:
|
||||
test-force-full:
|
||||
$(MAKE) force=--force test-full
|
||||
|
||||
#used by autopush.pl to run memory based tests
|
||||
test-force-mem:
|
||||
$(MAKE) 'force=--force --mem' test
|
||||
|
||||
# Keep these for a while
|
||||
test-pl: test
|
||||
test-full-pl: test-full
|
||||
test-force-pl: test-force
|
||||
test-force-pl-mem: test-force-mem
|
||||
test-force-full-pl: test-force-full
|
||||
|
||||
# Don't update the files from bitkeeper
|
||||
|
@@ -58,5 +58,6 @@ enum options_client
|
||||
OPT_IGNORE_TABLE,OPT_INSERT_IGNORE,OPT_SHOW_WARNINGS,OPT_DROP_DATABASE,
|
||||
OPT_TZ_UTC, OPT_AUTO_CLOSE, OPT_CREATE_SLAP_SCHEMA,
|
||||
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT, OPT_SERVER_ID,
|
||||
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT
|
||||
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
|
||||
OPT_DEBUG_INFO, OPT_COLUMN_TYPES
|
||||
};
|
||||
|
@@ -44,7 +44,7 @@
|
||||
#include <locale.h>
|
||||
#endif
|
||||
|
||||
const char *VER= "14.12";
|
||||
const char *VER= "14.13";
|
||||
|
||||
/* Don't try to make a nice table if the data is too big */
|
||||
#define MAX_COLUMN_LENGTH 1024
|
||||
@@ -140,6 +140,7 @@ static my_bool info_flag=0,ignore_errors=0,wait_flag=0,quick=0,
|
||||
default_charset_used= 0, opt_secure_auth= 0,
|
||||
default_pager_set= 0, opt_sigint_ignore= 0,
|
||||
show_warnings= 0, executing_query= 0, interrupted_query= 0;
|
||||
static my_bool column_types_flag;
|
||||
static ulong opt_max_allowed_packet, opt_net_buffer_length;
|
||||
static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
|
||||
static my_string opt_mysql_unix_port=0;
|
||||
@@ -545,7 +546,7 @@ sig_handler mysql_end(int sig)
|
||||
my_free(current_prompt,MYF(MY_ALLOW_ZERO_PTR));
|
||||
mysql_server_end();
|
||||
free_defaults(defaults_argv);
|
||||
my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
exit(status.exit_status);
|
||||
}
|
||||
|
||||
@@ -600,12 +601,13 @@ static struct my_option my_long_options[] =
|
||||
{"character-sets-dir", OPT_CHARSETS_DIR,
|
||||
"Directory where character sets are.", (gptr*) &charsets_dir,
|
||||
(gptr*) &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||
"Set the default character set.", (gptr*) &default_charset,
|
||||
(gptr*) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"column-type-info", OPT_COLUMN_TYPES, "Display column type information.",
|
||||
(gptr*) &column_types_flag, (gptr*) &column_types_flag,
|
||||
0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"compress", 'C', "Use compression in server/client protocol.",
|
||||
(gptr*) &opt_compress, (gptr*) &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
|
||||
0, 0, 0},
|
||||
|
||||
#ifdef DBUG_OFF
|
||||
{"debug", '#', "This is a non-debug version. Catch this and exit",
|
||||
0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
@@ -613,8 +615,13 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log", (gptr*) &default_dbug_option,
|
||||
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", 'T', "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"database", 'D', "Database to use.", (gptr*) ¤t_db,
|
||||
(gptr*) ¤t_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||
"Set the default character set.", (gptr*) &default_charset,
|
||||
(gptr*) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"delimiter", OPT_DELIMITER, "Delimiter to be used.", (gptr*) &delimiter_str,
|
||||
(gptr*) &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"execute", 'e', "Execute command and quit. (Disables --force and history file)", 0,
|
||||
@@ -711,8 +718,6 @@ static struct my_option my_long_options[] =
|
||||
#include "sslopt-longopts.h"
|
||||
{"table", 't', "Output in table format.", (gptr*) &output_tables,
|
||||
(gptr*) &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", 'T', "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"tee", OPT_TEE,
|
||||
"Append everything into outfile. See interactive help (\\h) also. Does not work in batch mode. Disable with --disable-tee. This option is disabled by default.",
|
||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
@@ -2098,7 +2103,7 @@ com_go(String *buffer,char *line __attribute__((unused)))
|
||||
time_buff[0]=0;
|
||||
if (result)
|
||||
{
|
||||
if (!mysql_num_rows(result) && ! quick && !info_flag)
|
||||
if (!mysql_num_rows(result) && ! quick && !column_types_flag)
|
||||
{
|
||||
strmov(buff, "Empty set");
|
||||
}
|
||||
@@ -2337,7 +2342,7 @@ print_table_data(MYSQL_RES *result)
|
||||
bool *num_flag;
|
||||
|
||||
num_flag=(bool*) my_alloca(sizeof(bool)*mysql_num_fields(result));
|
||||
if (info_flag)
|
||||
if (column_types_flag)
|
||||
{
|
||||
print_field_types(result);
|
||||
if (!mysql_num_rows(result))
|
||||
|
@@ -638,7 +638,7 @@ error:
|
||||
if (upgrade_defaults_created)
|
||||
my_delete(upgrade_defaults_path, MYF(0));
|
||||
|
||||
my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : 0);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -28,7 +28,7 @@
|
||||
#include "../ndb/src/mgmclient/ndb_mgmclient.h"
|
||||
#endif
|
||||
|
||||
#define ADMIN_VERSION "8.41"
|
||||
#define ADMIN_VERSION "8.42"
|
||||
#define MAX_MYSQL_VAR 256
|
||||
#define SHUTDOWN_DEF_TIMEOUT 3600 /* Wait for shutdown */
|
||||
#define MAX_TRUNC_LENGTH 3
|
||||
@@ -41,7 +41,7 @@ ulonglong last_values[MAX_MYSQL_VAR];
|
||||
static int interval=0;
|
||||
static my_bool option_force=0,interrupted=0,new_line=0,
|
||||
opt_compress=0, opt_relative=0, opt_verbose=0, opt_vertical=0,
|
||||
tty_password=0;
|
||||
tty_password= 0, info_flag= 0;
|
||||
static uint tcp_port = 0, option_wait = 0, option_silent=0, nr_iterations,
|
||||
opt_count_iterations= 0;
|
||||
static ulong opt_connect_timeout, opt_shutdown_timeout;
|
||||
@@ -136,6 +136,8 @@ static struct my_option my_long_options[] =
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"force", 'f',
|
||||
"Don't ask for confirmation on drop database; with multiple commands, continue even if an error occurs.",
|
||||
(gptr*) &option_force, (gptr*) &option_force, 0, GET_BOOL, NO_ARG, 0, 0,
|
||||
@@ -412,7 +414,7 @@ int main(int argc,char *argv[])
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
free_defaults(save_argv);
|
||||
my_end(0);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
exit(error ? 1 : 0);
|
||||
return 0;
|
||||
}
|
||||
|
@@ -66,7 +66,7 @@ static bool one_database=0, to_last_remote_log= 0, disable_log_bin= 0;
|
||||
static bool opt_hexdump= 0;
|
||||
static bool opt_base64_output= 0;
|
||||
static const char* database= 0;
|
||||
static my_bool force_opt= 0, short_form= 0, remote_opt= 0;
|
||||
static my_bool force_opt= 0, short_form= 0, remote_opt= 0, info_flag;
|
||||
static ulonglong offset = 0;
|
||||
static const char* host = 0;
|
||||
static int port= 0;
|
||||
@@ -716,6 +716,8 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log.", (gptr*) &default_dbug_option,
|
||||
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"disable-log-bin", 'D', "Disable binary log. This is useful, if you "
|
||||
"enabled --to-last-log and are sending the output to the same MySQL server. "
|
||||
"This way you could avoid an endless loop. You would also like to use it "
|
||||
@@ -844,7 +846,7 @@ static void die(const char* fmt, ...)
|
||||
va_end(args);
|
||||
cleanup();
|
||||
/* We cannot free DBUG, it is used in global destructors after exit(). */
|
||||
my_end(MY_DONT_FREE_DBUG);
|
||||
my_end((info_flag ? MY_CHECK_ERROR : 0) | MY_DONT_FREE_DBUG);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -852,7 +854,7 @@ static void die(const char* fmt, ...)
|
||||
|
||||
static void print_version()
|
||||
{
|
||||
printf("%s Ver 3.1 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
printf("%s Ver 3.2 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE);
|
||||
NETWARE_SET_SCREEN_MODE(1);
|
||||
}
|
||||
|
||||
@@ -1138,7 +1140,7 @@ could be out of memory");
|
||||
}
|
||||
if (len < 8 && net->read_pos[0] == 254)
|
||||
break; // end of data
|
||||
DBUG_PRINT("info",( "len= %u, net->read_pos[5] = %d\n",
|
||||
DBUG_PRINT("info",( "len: %lu, net->read_pos[5]: %d\n",
|
||||
len, net->read_pos[5]));
|
||||
if (!(ev= Log_event::read_log_event((const char*) net->read_pos + 1 ,
|
||||
len - 1, &error_msg,
|
||||
@@ -1545,7 +1547,7 @@ int main(int argc, char** argv)
|
||||
free_defaults(defaults_argv);
|
||||
my_free_open_file_info();
|
||||
/* We cannot free DBUG, it is used in global destructors after exit(). */
|
||||
my_end(MY_DONT_FREE_DBUG);
|
||||
my_end((info_flag ? MY_CHECK_ERROR : 0) | MY_DONT_FREE_DBUG);
|
||||
exit(exit_value);
|
||||
DBUG_RETURN(exit_value); // Keep compilers happy
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
|
||||
|
||||
#define CHECK_VERSION "2.4.4"
|
||||
#define CHECK_VERSION "2.4.5"
|
||||
|
||||
#include "client_priv.h"
|
||||
#include <m_ctype.h>
|
||||
@@ -34,7 +34,7 @@ static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0,
|
||||
opt_compress = 0, opt_databases = 0, opt_fast = 0,
|
||||
opt_medium_check = 0, opt_quick = 0, opt_all_in_1 = 0,
|
||||
opt_silent = 0, opt_auto_repair = 0, ignore_errors = 0,
|
||||
tty_password = 0, opt_frm = 0,
|
||||
tty_password= 0, opt_frm= 0, info_flag= 0,
|
||||
opt_fix_table_names= 0, opt_fix_db_names= 0, opt_upgrade= 0;
|
||||
static uint verbose = 0, opt_mysql_port=0;
|
||||
static my_string opt_mysql_unix_port = 0;
|
||||
@@ -96,6 +96,8 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||
"Set the default character set.", (gptr*) &default_charset,
|
||||
(gptr*) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
@@ -761,7 +763,7 @@ int main(int argc, char **argv)
|
||||
*/
|
||||
if (get_options(&argc, &argv))
|
||||
{
|
||||
my_end(0);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
exit(EX_USAGE);
|
||||
}
|
||||
if (dbConnect(current_host, current_user, opt_password))
|
||||
@@ -803,6 +805,6 @@ int main(int argc, char **argv)
|
||||
#ifdef HAVE_SMEM
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
my_end(0);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
return(first_error!=0);
|
||||
} /* main */
|
||||
|
@@ -37,7 +37,7 @@
|
||||
** 10 Jun 2003: SET NAMES and --no-set-names by Alexander Barkov
|
||||
*/
|
||||
|
||||
#define DUMP_VERSION "10.10"
|
||||
#define DUMP_VERSION "10.12"
|
||||
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
@@ -103,7 +103,7 @@ static my_bool verbose= 0, opt_no_create_info= 0, opt_no_data= 0,
|
||||
opt_alltspcs=0;
|
||||
static ulong opt_max_allowed_packet, opt_net_buffer_length;
|
||||
static MYSQL mysql_connection,*mysql=0;
|
||||
static my_bool insert_pat_inited=0;
|
||||
static my_bool insert_pat_inited= 0, info_flag;
|
||||
static DYNAMIC_STRING insert_pat;
|
||||
static char *opt_password=0,*current_user=0,
|
||||
*current_host=0,*path=0,*fields_terminated=0,
|
||||
@@ -111,6 +111,7 @@ static char *opt_password=0,*current_user=0,
|
||||
*where=0, *order_by=0,
|
||||
*opt_compatible_mode_str= 0,
|
||||
*err_ptr= 0;
|
||||
static char **defaults_argv= 0;
|
||||
static char compatible_mode_normal_str[255];
|
||||
static ulong opt_compatible_mode= 0;
|
||||
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
|
||||
@@ -120,7 +121,7 @@ static my_string opt_mysql_unix_port=0;
|
||||
static int first_error=0;
|
||||
static DYNAMIC_STRING extended_row;
|
||||
#include <sslopt-vars.h>
|
||||
FILE *md_result_file;
|
||||
FILE *md_result_file= 0;
|
||||
#ifdef HAVE_SMEM
|
||||
static char *shared_memory_base_name=0;
|
||||
#endif
|
||||
@@ -222,6 +223,8 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log", (gptr*) &default_dbug_option,
|
||||
(gptr*) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"default-character-set", OPT_DEFAULT_CHARSET,
|
||||
"Set the default character set.", (gptr*) &default_charset,
|
||||
(gptr*) &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
@@ -537,8 +540,10 @@ static void write_header(FILE *sql_file, char *db_name)
|
||||
if (opt_xml)
|
||||
{
|
||||
fputs("<?xml version=\"1.0\"?>\n", sql_file);
|
||||
/* Schema reference. Allows use of xsi:nil for NULL values and
|
||||
xsi:type to define an element's data type. */
|
||||
/*
|
||||
Schema reference. Allows use of xsi:nil for NULL values and
|
||||
xsi:type to define an element's data type.
|
||||
*/
|
||||
fputs("<mysqldump ", sql_file);
|
||||
fputs("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"",
|
||||
sql_file);
|
||||
@@ -641,14 +646,6 @@ byte* get_table_key(const char *entry, uint *length,
|
||||
}
|
||||
|
||||
|
||||
void init_table_rule_hash(HASH* h)
|
||||
{
|
||||
if (hash_init(h, charset_info, 16, 0, 0,
|
||||
(hash_get_key) get_table_key,
|
||||
(hash_free_key) free_table_ent, 0))
|
||||
exit(EX_EOM);
|
||||
}
|
||||
|
||||
static my_bool
|
||||
get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
char *argument)
|
||||
@@ -691,6 +688,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
break;
|
||||
case '#':
|
||||
DBUG_PUSH(argument ? argument : default_dbug_option);
|
||||
info_flag= 1;
|
||||
break;
|
||||
#include <sslopt-case.h>
|
||||
case 'V': print_version(); exit(0);
|
||||
@@ -731,9 +729,6 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
fprintf(stderr, "Illegal use of option --ignore-table=<database>.<table>\n");
|
||||
exit(1);
|
||||
}
|
||||
if (!hash_inited(&ignore_table))
|
||||
init_table_rule_hash(&ignore_table);
|
||||
|
||||
if (my_hash_insert(&ignore_table, (byte*)my_strdup(argument, MYF(0))))
|
||||
exit(EX_EOM);
|
||||
break;
|
||||
@@ -809,9 +804,21 @@ static int get_options(int *argc, char ***argv)
|
||||
|
||||
md_result_file= stdout;
|
||||
load_defaults("my",load_default_groups,argc,argv);
|
||||
defaults_argv= *argv;
|
||||
|
||||
if ((ho_error=handle_options(argc, argv, my_long_options, get_one_option)))
|
||||
exit(ho_error);
|
||||
if (hash_init(&ignore_table, charset_info, 16, 0, 0,
|
||||
(hash_get_key) get_table_key,
|
||||
(hash_free_key) free_table_ent, 0))
|
||||
return(EX_EOM);
|
||||
/* Don't copy cluster internal log tables */
|
||||
if (my_hash_insert(&ignore_table,
|
||||
(byte*) my_strdup("mysql.apply_status", MYF(MY_WME))) ||
|
||||
my_hash_insert(&ignore_table,
|
||||
(byte*) my_strdup("mysql.schema", MYF(MY_WME))))
|
||||
return(EX_EOM);
|
||||
|
||||
if ((ho_error= handle_options(argc, argv, my_long_options, get_one_option)))
|
||||
return(ho_error);
|
||||
|
||||
*mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
|
||||
*mysql_params->p_net_buffer_length= opt_net_buffer_length;
|
||||
@@ -823,7 +830,7 @@ static int get_options(int *argc, char ***argv)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"%s: You must use option --tab with --fields-...\n", my_progname);
|
||||
return(1);
|
||||
return(EX_USAGE);
|
||||
}
|
||||
|
||||
/* Ensure consistency of the set of binlog & locking options */
|
||||
@@ -833,7 +840,7 @@ static int get_options(int *argc, char ***argv)
|
||||
{
|
||||
fprintf(stderr, "%s: You can't use --single-transaction and "
|
||||
"--lock-all-tables at the same time.\n", my_progname);
|
||||
return(1);
|
||||
return(EX_USAGE);
|
||||
}
|
||||
if (opt_master_data)
|
||||
opt_lock_all_tables= !opt_single_transaction;
|
||||
@@ -842,14 +849,14 @@ static int get_options(int *argc, char ***argv)
|
||||
if (enclosed && opt_enclosed)
|
||||
{
|
||||
fprintf(stderr, "%s: You can't use ..enclosed.. and ..optionally-enclosed.. at the same time.\n", my_progname);
|
||||
return(1);
|
||||
return(EX_USAGE);
|
||||
}
|
||||
if ((opt_databases || opt_alldbs) && path)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"%s: --databases or --all-databases can't be used with --tab.\n",
|
||||
my_progname);
|
||||
return(1);
|
||||
return(EX_USAGE);
|
||||
}
|
||||
if (strcmp(default_charset, charset_info->csname) &&
|
||||
!(charset_info= get_charset_by_csname(default_charset,
|
||||
@@ -858,7 +865,7 @@ static int get_options(int *argc, char ***argv)
|
||||
if ((*argc < 1 && !opt_alldbs) || (*argc > 0 && opt_alldbs))
|
||||
{
|
||||
short_usage();
|
||||
return 1;
|
||||
return EX_USAGE;
|
||||
}
|
||||
if (tty_password)
|
||||
opt_password=get_tty_password(NullS);
|
||||
@@ -933,6 +940,23 @@ static FILE* open_sql_file_for_table(const char* table)
|
||||
}
|
||||
|
||||
|
||||
static void free_resources()
|
||||
{
|
||||
if (md_result_file && md_result_file != stdout)
|
||||
my_fclose(md_result_file, MYF(0));
|
||||
my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR));
|
||||
if (hash_inited(&ignore_table))
|
||||
hash_free(&ignore_table);
|
||||
if (extended_insert)
|
||||
dynstr_free(&extended_row);
|
||||
if (insert_pat_inited)
|
||||
dynstr_free(&insert_pat);
|
||||
if (defaults_argv)
|
||||
free_defaults(defaults_argv);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
}
|
||||
|
||||
|
||||
static void safe_exit(int error)
|
||||
{
|
||||
if (!first_error)
|
||||
@@ -941,18 +965,19 @@ static void safe_exit(int error)
|
||||
return;
|
||||
if (mysql)
|
||||
mysql_close(mysql);
|
||||
free_resources();
|
||||
exit(error);
|
||||
}
|
||||
/* safe_exit */
|
||||
|
||||
|
||||
/*
|
||||
** dbConnect -- connects to the host and selects DB.
|
||||
db_connect -- connects to the host and selects DB.
|
||||
*/
|
||||
static int dbConnect(char *host, char *user,char *passwd)
|
||||
|
||||
static int connect_to_db(char *host, char *user,char *passwd)
|
||||
{
|
||||
char buff[20+FN_REFLEN];
|
||||
DBUG_ENTER("dbConnect");
|
||||
DBUG_ENTER("connect_to_db");
|
||||
|
||||
verbose_msg("-- Connecting to %s...\n", host ? host : "localhost");
|
||||
mysql_init(&mysql_connection);
|
||||
@@ -977,7 +1002,7 @@ static int dbConnect(char *host, char *user,char *passwd)
|
||||
0)))
|
||||
{
|
||||
DB_error(&mysql_connection, "when trying to connect");
|
||||
return 1;
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
/*
|
||||
Don't dump SET NAMES with a pre-4.1 server (bug#7997).
|
||||
@@ -994,7 +1019,7 @@ static int dbConnect(char *host, char *user,char *passwd)
|
||||
if (mysql_query_with_error_report(mysql, 0, buff))
|
||||
{
|
||||
safe_exit(EX_MYSQLERR);
|
||||
return 1;
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
/*
|
||||
set time_zone to UTC to allow dumping date types between servers with
|
||||
@@ -1006,11 +1031,11 @@ static int dbConnect(char *host, char *user,char *passwd)
|
||||
if (mysql_query_with_error_report(mysql, 0, buff))
|
||||
{
|
||||
safe_exit(EX_MYSQLERR);
|
||||
return 1;
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
} /* dbConnect */
|
||||
DBUG_RETURN(0);
|
||||
} /* connect_to_db */
|
||||
|
||||
|
||||
/*
|
||||
@@ -1535,8 +1560,8 @@ static uint dump_routines_for_db(char *db)
|
||||
if the user has EXECUTE privilege he see routine names, but NOT the
|
||||
routine body of other routines that are not the creator of!
|
||||
*/
|
||||
DBUG_PRINT("info",("length of body for %s row[2] '%s' is %d",
|
||||
routine_name, row[2], strlen(row[2])));
|
||||
DBUG_PRINT("info",("length of body for %s row[2] '%s' is %ld",
|
||||
routine_name, row[2], (long) strlen(row[2])));
|
||||
if (strlen(row[2]))
|
||||
{
|
||||
char *query_str= NULL;
|
||||
@@ -1659,7 +1684,11 @@ static uint get_table_structure(char *table, char *db, char *table_type,
|
||||
{
|
||||
complete_insert= opt_complete_insert;
|
||||
if (!insert_pat_inited)
|
||||
insert_pat_inited= init_dynamic_string(&insert_pat, "", 1024, 1024);
|
||||
{
|
||||
insert_pat_inited= 1;
|
||||
if (init_dynamic_string(&insert_pat, "", 1024, 1024))
|
||||
safe_exit(EX_MYSQLERR);
|
||||
}
|
||||
else
|
||||
dynstr_set(&insert_pat, "");
|
||||
}
|
||||
@@ -2134,7 +2163,7 @@ continue_xml:
|
||||
|
||||
*/
|
||||
|
||||
static void dump_triggers_for_table (char *table, char *db)
|
||||
static void dump_triggers_for_table(char *table, char *db)
|
||||
{
|
||||
char *result_table;
|
||||
char name_buff[NAME_LEN*4+3], table_buff[NAME_LEN*2+3];
|
||||
@@ -2322,7 +2351,7 @@ static void dump_table(char *table, char *db)
|
||||
The "table" could be a view. If so, we don't do anything here.
|
||||
*/
|
||||
if (strcmp (table_type, "VIEW") == 0)
|
||||
return;
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
/* Check --no-data flag */
|
||||
if (opt_no_data)
|
||||
@@ -2980,6 +3009,8 @@ static int dump_databases(char **db_names)
|
||||
{
|
||||
int result=0;
|
||||
char **db;
|
||||
DBUG_ENTER("dump_databases");
|
||||
|
||||
for (db= db_names ; *db ; db++)
|
||||
{
|
||||
if (dump_all_tables_in_db(*db))
|
||||
@@ -2993,7 +3024,7 @@ static int dump_databases(char **db_names)
|
||||
result=1;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
DBUG_RETURN(result);
|
||||
} /* dump_databases */
|
||||
|
||||
|
||||
@@ -3008,7 +3039,7 @@ RETURN VALUES
|
||||
0 Success.
|
||||
1 Failure.
|
||||
*/
|
||||
int init_dumping_views(char *qdatabase)
|
||||
int init_dumping_views(char *qdatabase __attribute__((unused)))
|
||||
{
|
||||
return 0;
|
||||
} /* init_dumping_views */
|
||||
@@ -3105,12 +3136,11 @@ static int init_dumping(char *database, int init_func(char*))
|
||||
} /* init_dumping */
|
||||
|
||||
|
||||
/* Return 1 if we should copy the table */
|
||||
|
||||
my_bool include_table(byte* hash_key, uint len)
|
||||
{
|
||||
if (hash_search(&ignore_table, (byte*) hash_key, len))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
return !hash_search(&ignore_table, (byte*) hash_key, len);
|
||||
}
|
||||
|
||||
|
||||
@@ -3119,18 +3149,16 @@ static int dump_all_tables_in_db(char *database)
|
||||
char *table;
|
||||
uint numrows;
|
||||
char table_buff[NAME_LEN*2+3];
|
||||
|
||||
char hash_key[2*NAME_LEN+2]; /* "db.tablename" */
|
||||
char *afterdot;
|
||||
int using_mysql_db= my_strcasecmp(&my_charset_latin1, database, "mysql");
|
||||
DBUG_ENTER("dump_all_tables_in_db");
|
||||
|
||||
afterdot= strmov(hash_key, database);
|
||||
*afterdot++= '.';
|
||||
|
||||
if (!strcmp(database, NDB_REP_DB)) /* Skip cluster internal database */
|
||||
return 0;
|
||||
if (init_dumping(database, init_dumping_tables))
|
||||
return 1;
|
||||
DBUG_RETURN(1);
|
||||
if (opt_xml)
|
||||
print_xml_tag(md_result_file, "", "\n", "database", "name=", database, NullS);
|
||||
if (lock_tables)
|
||||
@@ -3190,7 +3218,7 @@ static int dump_all_tables_in_db(char *database)
|
||||
fprintf(md_result_file,"\n--\n-- Flush Grant Tables \n--\n");
|
||||
fprintf(md_result_file,"\n/*! FLUSH PRIVILEGES */;\n");
|
||||
}
|
||||
return 0;
|
||||
DBUG_RETURN(0);
|
||||
} /* dump_all_tables_in_db */
|
||||
|
||||
|
||||
@@ -3558,7 +3586,6 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
|
||||
|
||||
|
||||
/*
|
||||
|
||||
SYNOPSIS
|
||||
|
||||
Check if we the table is one of the table types that should be ignored:
|
||||
@@ -3598,8 +3625,8 @@ char check_if_ignore_table(const char *table_name, char *table_type)
|
||||
{
|
||||
if (mysql_errno(mysql) != ER_PARSE_ERROR)
|
||||
{ /* If old MySQL version */
|
||||
verbose_msg("-- Warning: Couldn't get status information for " \
|
||||
"table %s (%s)\n", table_name,mysql_error(mysql));
|
||||
verbose_msg("-- Warning: Couldn't get status information for "
|
||||
"table %s (%s)\n", table_name, mysql_error(mysql));
|
||||
DBUG_RETURN(result); /* assume table is ok */
|
||||
}
|
||||
}
|
||||
@@ -3954,19 +3981,24 @@ static my_bool get_view_structure(char *table, char* db)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int exit_code;
|
||||
MY_INIT("mysqldump");
|
||||
|
||||
compatible_mode_normal_str[0]= 0;
|
||||
default_charset= (char *)mysql_universal_client_charset;
|
||||
bzero((char*) &ignore_table, sizeof(ignore_table));
|
||||
|
||||
if (get_options(&argc, &argv))
|
||||
exit_code= get_options(&argc, &argv);
|
||||
if (exit_code)
|
||||
{
|
||||
my_end(0);
|
||||
exit(EX_USAGE);
|
||||
free_resources(0);
|
||||
exit(exit_code);
|
||||
}
|
||||
if (dbConnect(current_host, current_user, opt_password))
|
||||
if (connect_to_db(current_host, current_user, opt_password))
|
||||
{
|
||||
free_resources(0);
|
||||
exit(EX_MYSQLERR);
|
||||
}
|
||||
if (!path)
|
||||
write_header(md_result_file, *argv);
|
||||
|
||||
@@ -4016,15 +4048,6 @@ err:
|
||||
dbDisconnect(current_host);
|
||||
if (!path)
|
||||
write_footer(md_result_file);
|
||||
if (md_result_file != stdout)
|
||||
my_fclose(md_result_file, MYF(0));
|
||||
my_free(opt_password, MYF(MY_ALLOW_ZERO_PTR));
|
||||
if (hash_inited(&ignore_table))
|
||||
hash_free(&ignore_table);
|
||||
if (extended_insert)
|
||||
dynstr_free(&extended_row);
|
||||
if (insert_pat_inited)
|
||||
dynstr_free(&insert_pat);
|
||||
my_end(0);
|
||||
free_resources();
|
||||
return(first_error);
|
||||
} /* main */
|
||||
|
@@ -25,7 +25,7 @@
|
||||
** * *
|
||||
** *************************
|
||||
*/
|
||||
#define IMPORT_VERSION "3.5"
|
||||
#define IMPORT_VERSION "3.6"
|
||||
|
||||
#include "client_priv.h"
|
||||
#include "mysql_version.h"
|
||||
@@ -50,7 +50,7 @@ static char *add_load_option(char *ptr,const char *object,
|
||||
static my_bool verbose=0,lock_tables=0,ignore_errors=0,opt_delete=0,
|
||||
replace=0,silent=0,ignore=0,opt_compress=0,
|
||||
opt_low_priority= 0, tty_password= 0;
|
||||
static my_bool opt_use_threads= 0;
|
||||
static my_bool opt_use_threads= 0, info_flag= 0;
|
||||
static uint opt_local_file=0;
|
||||
static char *opt_password=0, *current_user=0,
|
||||
*current_host=0, *current_db=0, *fields_terminated=0,
|
||||
@@ -88,6 +88,8 @@ static struct my_option my_long_options[] =
|
||||
0, 0, 0},
|
||||
{"debug",'#', "Output debug log. Often this is 'd:t:o,filename'.", 0, 0, 0,
|
||||
GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"delete", 'd', "First delete all rows from table.", (gptr*) &opt_delete,
|
||||
(gptr*) &opt_delete, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"fields-terminated-by", OPT_FTB,
|
||||
@@ -663,6 +665,6 @@ int main(int argc, char **argv)
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
free_defaults(argv_to_free);
|
||||
my_end(0);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
return(exitcode);
|
||||
}
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
/* Show databases, tables or columns */
|
||||
|
||||
#define SHOW_VERSION "9.5"
|
||||
#define SHOW_VERSION "9.6"
|
||||
|
||||
#include "client_priv.h"
|
||||
#include <my_sys.h>
|
||||
@@ -28,8 +28,8 @@
|
||||
#include <sslopt-vars.h>
|
||||
|
||||
static my_string host=0,opt_password=0,user=0;
|
||||
static my_bool opt_show_keys= 0, opt_compress= 0, opt_count=0, opt_status= 0,
|
||||
tty_password= 0, opt_table_type= 0;
|
||||
static my_bool opt_show_keys= 0, opt_compress= 0, opt_count=0, opt_status= 0;
|
||||
static my_bool tty_password= 0, opt_table_type= 0, info_flag= 0;
|
||||
static uint opt_verbose=0;
|
||||
static char *default_charset= (char*) MYSQL_DEFAULT_CHARSET_NAME;
|
||||
|
||||
@@ -129,8 +129,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
mysql.reconnect= 1;
|
||||
|
||||
switch (argc)
|
||||
{
|
||||
switch (argc) {
|
||||
case 0: error=list_dbs(&mysql,wild); break;
|
||||
case 1:
|
||||
if (opt_status)
|
||||
@@ -151,7 +150,7 @@ int main(int argc, char **argv)
|
||||
#ifdef HAVE_SMEM
|
||||
my_free(shared_memory_base_name,MYF(MY_ALLOW_ZERO_PTR));
|
||||
#endif
|
||||
my_end(0);
|
||||
my_end(info_flag ? MY_CHECK_ERROR : 0);
|
||||
exit(error ? 1 : 0);
|
||||
return 0; /* No compiler warnings */
|
||||
}
|
||||
@@ -177,6 +176,8 @@ static struct my_option my_long_options[] =
|
||||
0, 0, 0},
|
||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"host", 'h', "Connect to host.", (gptr*) &host, (gptr*) &host, 0, GET_STR,
|
||||
|
@@ -592,7 +592,7 @@ get_random_string(char *buf)
|
||||
DBUG_ENTER("get_random_string");
|
||||
for (x= RAND_STRING_SIZE; x > 0; x--)
|
||||
*buf_ptr++= ALPHANUMERICS[random() % ALPHANUMERICS_SIZE];
|
||||
DBUG_PRINT("info", ("random string: '%*s'", buf_ptr - buf, buf));
|
||||
DBUG_PRINT("info", ("random string: '%*s'", (int) (buf_ptr - buf), buf));
|
||||
DBUG_RETURN(buf_ptr - buf);
|
||||
}
|
||||
|
||||
@@ -1031,7 +1031,7 @@ run_scheduler(stats *sptr, statement *stmts, uint concur, ulonglong limit)
|
||||
for (x= 0; x < concur; x++)
|
||||
{
|
||||
int pid;
|
||||
DBUG_PRINT("info", ("x %d concurrency %d", x, concurrency));
|
||||
DBUG_PRINT("info", ("x: %d concurrency: %u", x, *concurrency));
|
||||
pid= fork();
|
||||
switch(pid)
|
||||
{
|
||||
|
@@ -29,6 +29,7 @@
|
||||
Matt Wagner <matt@mysql.com>
|
||||
Monty
|
||||
Jani
|
||||
Holyfoot
|
||||
*/
|
||||
|
||||
#define MTEST_VERSION "3.0"
|
||||
@@ -80,12 +81,13 @@ enum {
|
||||
OPT_SSL_CA, OPT_SSL_CAPATH, OPT_SSL_CIPHER, OPT_PS_PROTOCOL,
|
||||
OPT_SP_PROTOCOL, OPT_CURSOR_PROTOCOL, OPT_VIEW_PROTOCOL,
|
||||
OPT_SSL_VERIFY_SERVER_CERT, OPT_MAX_CONNECT_RETRIES,
|
||||
OPT_MARK_PROGRESS, OPT_CHARSETS_DIR
|
||||
OPT_MARK_PROGRESS, OPT_CHARSETS_DIR, OPT_LOG_DIR, OPT_DEBUG_INFO
|
||||
};
|
||||
|
||||
static int record= 0, opt_sleep= -1;
|
||||
static char *db= 0, *pass= 0;
|
||||
const char *user= 0, *host= 0, *unix_sock= 0, *opt_basedir= "./";
|
||||
const char *opt_logdir= "";
|
||||
const char *opt_include= 0, *opt_charsets_dir;
|
||||
static int port= 0;
|
||||
static int opt_max_connect_retries;
|
||||
@@ -97,6 +99,7 @@ static my_bool sp_protocol= 0, sp_protocol_enabled= 0;
|
||||
static my_bool view_protocol= 0, view_protocol_enabled= 0;
|
||||
static my_bool cursor_protocol= 0, cursor_protocol_enabled= 0;
|
||||
static my_bool parsing_disabled= 0;
|
||||
static my_bool info_flag;
|
||||
static my_bool display_result_vertically= FALSE, display_metadata= FALSE;
|
||||
static my_bool disable_query_log= 0, disable_result_log= 0;
|
||||
static my_bool disable_warnings= 0, disable_ps_warnings= 0;
|
||||
@@ -220,6 +223,12 @@ struct st_connection
|
||||
MYSQL* util_mysql;
|
||||
char *name;
|
||||
MYSQL_STMT* stmt;
|
||||
|
||||
const char *cur_query;
|
||||
int cur_query_len;
|
||||
pthread_mutex_t mutex;
|
||||
pthread_cond_t cond;
|
||||
int query_done;
|
||||
};
|
||||
struct st_connection connections[128];
|
||||
struct st_connection* cur_con, *next_con, *connections_end;
|
||||
@@ -460,7 +469,6 @@ void mysql_disable_rpl_parse(MYSQL* mysql __attribute__((unused))) {}
|
||||
int mysql_rpl_parse_enabled(MYSQL* mysql __attribute__((unused))) { return 1; }
|
||||
my_bool mysql_rpl_probe(MYSQL *mysql __attribute__((unused))) { return 1; }
|
||||
#endif
|
||||
|
||||
void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val,
|
||||
int len);
|
||||
void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val);
|
||||
@@ -471,7 +479,56 @@ void handle_error(struct st_command*,
|
||||
const char *err_sqlstate, DYNAMIC_STRING *ds);
|
||||
void handle_no_error(struct st_command*);
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
/*
|
||||
send_one_query executes query in separate thread what is
|
||||
necessary in embedded library to run 'send' in proper way.
|
||||
This implementation doesn't handle errors returned
|
||||
by mysql_send_query. It's technically possible, though
|
||||
i don't see where it is needed.
|
||||
*/
|
||||
pthread_handler_t send_one_query(void *arg)
|
||||
{
|
||||
struct st_connection *cn= (struct st_connection*)arg;
|
||||
|
||||
mysql_thread_init();
|
||||
VOID(mysql_send_query(&cn->mysql, cn->cur_query, cn->cur_query_len));
|
||||
|
||||
mysql_thread_end();
|
||||
pthread_mutex_lock(&cn->mutex);
|
||||
cn->query_done= 1;
|
||||
VOID(pthread_cond_signal(&cn->cond));
|
||||
pthread_mutex_unlock(&cn->mutex);
|
||||
pthread_exit(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int do_send_query(struct st_connection *cn, const char *q, int q_len,
|
||||
int flags)
|
||||
{
|
||||
pthread_t tid;
|
||||
|
||||
if (flags & QUERY_REAP_FLAG)
|
||||
return mysql_send_query(&cn->mysql, q, q_len);
|
||||
|
||||
if (pthread_mutex_init(&cn->mutex, NULL) ||
|
||||
pthread_cond_init(&cn->cond, NULL))
|
||||
die("Error in the thread library");
|
||||
|
||||
cn->cur_query= q;
|
||||
cn->cur_query_len= q_len;
|
||||
cn->query_done= 0;
|
||||
if (pthread_create(&tid, NULL, send_one_query, (void*)cn))
|
||||
die("Cannot start new thread for query");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else /*EMBEDDED_LIBRARY*/
|
||||
|
||||
#define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len)
|
||||
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
|
||||
void do_eval(DYNAMIC_STRING *query_eval, const char *query,
|
||||
const char *query_end, my_bool pass_through_escape_chars)
|
||||
@@ -754,7 +811,7 @@ void die(const char *fmt, ...)
|
||||
|
||||
/* Clean up and exit */
|
||||
free_used_memory();
|
||||
my_end(MY_CHECK_ERROR);
|
||||
my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : MY_CHECK_ERROR);
|
||||
|
||||
if (!silent)
|
||||
printf("not ok\n");
|
||||
@@ -794,7 +851,7 @@ void abort_not_supported_test(const char *fmt, ...)
|
||||
|
||||
/* Clean up and exit */
|
||||
free_used_memory();
|
||||
my_end(MY_CHECK_ERROR);
|
||||
my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : MY_CHECK_ERROR);
|
||||
|
||||
if (!silent)
|
||||
printf("skipped\n");
|
||||
@@ -893,8 +950,8 @@ int dyn_string_cmp(DYNAMIC_STRING* ds, const char *fname)
|
||||
die(NullS);
|
||||
if (!eval_result && (uint) stat_info.st_size != ds->length)
|
||||
{
|
||||
DBUG_PRINT("info",("Size differs: result size: %u file size: %llu",
|
||||
ds->length, stat_info.st_size));
|
||||
DBUG_PRINT("info",("Size differs: result size: %u file size: %lu",
|
||||
ds->length, (ulong) stat_info.st_size));
|
||||
DBUG_PRINT("info",("result: '%s'", ds->str));
|
||||
DBUG_RETURN(RESULT_LENGTH_MISMATCH);
|
||||
}
|
||||
@@ -3119,14 +3176,14 @@ void do_connect(struct st_command *command)
|
||||
else if (!strncmp(con_options, "COMPRESS", 8))
|
||||
con_compress= 1;
|
||||
else
|
||||
die("Illegal option to connect: %.*s", end - con_options, con_options);
|
||||
die("Illegal option to connect: %.*s", (int) (end - con_options), con_options);
|
||||
/* Process next option */
|
||||
con_options= end;
|
||||
}
|
||||
|
||||
if (next_con == connections_end)
|
||||
die("Connection limit exhausted, you can have max %d connections",
|
||||
(sizeof(connections)/sizeof(struct st_connection)));
|
||||
die("Connection limit exhausted, you can have max %ld connections",
|
||||
(long) (sizeof(connections)/sizeof(struct st_connection)));
|
||||
|
||||
if (find_connection_by_name(ds_connection_name.str))
|
||||
die("Connection %s already exists", ds_connection_name.str);
|
||||
@@ -3844,12 +3901,16 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.", (gptr*) &info_flag,
|
||||
(gptr*) &info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"host", 'h', "Connect to host.", (gptr*) &host, (gptr*) &host, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"include", 'i', "Include SQL before each test case.", (gptr*) &opt_include,
|
||||
(gptr*) &opt_include, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"logdir", OPT_LOG_DIR, "Directory for log files", (gptr*) &opt_logdir,
|
||||
(gptr*) &opt_logdir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"mark-progress", OPT_MARK_PROGRESS,
|
||||
"Write linenumber and elapsed time to <testname>.progress ",
|
||||
"Write linenumber and elapsed time to <testname>.progress",
|
||||
(gptr*) &opt_mark_progress, (gptr*) &opt_mark_progress, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"max-connect-retries", OPT_MAX_CONNECT_RETRIES,
|
||||
@@ -4130,7 +4191,8 @@ void dump_result_to_reject_file(char *buf, int size)
|
||||
void dump_result_to_log_file(char *buf, int size)
|
||||
{
|
||||
char log_file[FN_REFLEN];
|
||||
str_to_file(fn_format(log_file, result_file_name, "", ".log",
|
||||
str_to_file(fn_format(log_file, result_file_name, opt_logdir, ".log",
|
||||
*opt_logdir ? MY_REPLACE_DIR | MY_REPLACE_EXT:
|
||||
MY_REPLACE_EXT),
|
||||
buf, size);
|
||||
}
|
||||
@@ -4138,7 +4200,8 @@ void dump_result_to_log_file(char *buf, int size)
|
||||
void dump_progress(void)
|
||||
{
|
||||
char log_file[FN_REFLEN];
|
||||
str_to_file(fn_format(log_file, result_file_name, "", ".progress",
|
||||
str_to_file(fn_format(log_file, result_file_name, opt_logdir, ".progress",
|
||||
*opt_logdir ? MY_REPLACE_DIR | MY_REPLACE_EXT:
|
||||
MY_REPLACE_EXT),
|
||||
ds_progress.str, ds_progress.length);
|
||||
}
|
||||
@@ -4550,7 +4613,6 @@ int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Run query using MySQL C API
|
||||
|
||||
@@ -4567,11 +4629,12 @@ int append_warnings(DYNAMIC_STRING *ds, MYSQL* mysql)
|
||||
error - function will not return
|
||||
*/
|
||||
|
||||
void run_query_normal(MYSQL *mysql, struct st_command *command,
|
||||
void run_query_normal(struct st_connection *cn, struct st_command *command,
|
||||
int flags, char *query, int query_len,
|
||||
DYNAMIC_STRING *ds, DYNAMIC_STRING *ds_warnings)
|
||||
{
|
||||
MYSQL_RES *res= 0;
|
||||
MYSQL *mysql= &cn->mysql;
|
||||
int err= 0, counter= 0;
|
||||
DBUG_ENTER("run_query_normal");
|
||||
DBUG_PRINT("enter",("flags: %d", flags));
|
||||
@@ -4582,14 +4645,26 @@ void run_query_normal(MYSQL *mysql, struct st_command *command,
|
||||
/*
|
||||
Send the query
|
||||
*/
|
||||
if (mysql_send_query(mysql, query, query_len))
|
||||
if (do_send_query(cn, query, query_len, flags))
|
||||
{
|
||||
handle_error(command, mysql_errno(mysql), mysql_error(mysql),
|
||||
mysql_sqlstate(mysql), ds);
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
/*
|
||||
Here we handle 'reap' command, so we need to check if the
|
||||
query's thread was finished and probably wait
|
||||
*/
|
||||
else if (flags & QUERY_REAP_FLAG)
|
||||
{
|
||||
pthread_mutex_lock(&cn->mutex);
|
||||
while (!cn->query_done)
|
||||
pthread_cond_wait(&cn->cond, &cn->mutex);
|
||||
pthread_mutex_unlock(&cn->mutex);
|
||||
}
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
if (!(flags & QUERY_REAP_FLAG))
|
||||
DBUG_VOID_RETURN;
|
||||
|
||||
@@ -5080,8 +5155,9 @@ int util_query(MYSQL* org_mysql, const char* query){
|
||||
|
||||
*/
|
||||
|
||||
void run_query(MYSQL *mysql, struct st_command *command, int flags)
|
||||
void run_query(struct st_connection *cn, struct st_command *command, int flags)
|
||||
{
|
||||
MYSQL *mysql= &cn->mysql;
|
||||
DYNAMIC_STRING *ds;
|
||||
DYNAMIC_STRING ds_result;
|
||||
DYNAMIC_STRING ds_warnings;
|
||||
@@ -5238,7 +5314,7 @@ void run_query(MYSQL *mysql, struct st_command *command, int flags)
|
||||
match_re(&ps_re, query))
|
||||
run_query_stmt(mysql, command, query, query_len, ds, &ds_warnings);
|
||||
else
|
||||
run_query_normal(mysql, command, flags, query, query_len,
|
||||
run_query_normal(cn, command, flags, query, query_len,
|
||||
ds, &ds_warnings);
|
||||
|
||||
if (sp_created)
|
||||
@@ -5704,7 +5780,7 @@ int main(int argc, char **argv)
|
||||
strmake(command->require_file, save_file, sizeof(save_file));
|
||||
save_file[0]= 0;
|
||||
}
|
||||
run_query(&cur_con->mysql, command, QUERY_REAP_FLAG|QUERY_SEND_FLAG);
|
||||
run_query(cur_con, command, QUERY_REAP_FLAG|QUERY_SEND_FLAG);
|
||||
display_result_vertically= old_display_result_vertically;
|
||||
command->last_argument= command->end;
|
||||
command_executed++;
|
||||
@@ -5735,7 +5811,7 @@ int main(int argc, char **argv)
|
||||
strmake(command->require_file, save_file, sizeof(save_file));
|
||||
save_file[0]= 0;
|
||||
}
|
||||
run_query(&cur_con->mysql, command, flags);
|
||||
run_query(cur_con, command, flags);
|
||||
command_executed++;
|
||||
command->last_argument= command->end;
|
||||
break;
|
||||
@@ -5761,7 +5837,7 @@ int main(int argc, char **argv)
|
||||
the query and read the result some time later when reap instruction
|
||||
is given on this connection.
|
||||
*/
|
||||
run_query(&cur_con->mysql, command, QUERY_SEND_FLAG);
|
||||
run_query(cur_con, command, QUERY_SEND_FLAG);
|
||||
command_executed++;
|
||||
command->last_argument= command->end;
|
||||
break;
|
||||
@@ -5963,7 +6039,7 @@ int main(int argc, char **argv)
|
||||
|
||||
timer_output();
|
||||
free_used_memory();
|
||||
my_end(MY_CHECK_ERROR);
|
||||
my_end(info_flag ? MY_CHECK_ERROR | MY_GIVE_INFO : MY_CHECK_ERROR);
|
||||
|
||||
/* Yes, if we got this far the test has suceeded! Sakila smiles */
|
||||
if (!silent)
|
||||
|
@@ -434,7 +434,7 @@ rl_translate_keyseq (seq, array, len)
|
||||
{
|
||||
register int i, c, l, temp;
|
||||
|
||||
for (i = l = 0; c = seq[i]; i++)
|
||||
for (i = l = 0; (c = seq[i]); i++)
|
||||
{
|
||||
if (c == '\\')
|
||||
{
|
||||
@@ -735,7 +735,8 @@ _rl_read_file (filename, sizep)
|
||||
file_size = (size_t)finfo.st_size;
|
||||
|
||||
/* check for overflow on very large files */
|
||||
if (file_size != finfo.st_size || file_size + 1 < file_size)
|
||||
if ((long long) file_size != (long long) finfo.st_size ||
|
||||
file_size + 1 < file_size)
|
||||
{
|
||||
if (file >= 0)
|
||||
close (file);
|
||||
@@ -765,8 +766,8 @@ _rl_read_file (filename, sizep)
|
||||
|
||||
/* Re-read the current keybindings file. */
|
||||
int
|
||||
rl_re_read_init_file (count, ignore)
|
||||
int count, ignore;
|
||||
rl_re_read_init_file (int count __attribute__((unused)),
|
||||
int ignore __attribute__((unused)))
|
||||
{
|
||||
int r;
|
||||
r = rl_read_init_file ((const char *)NULL);
|
||||
@@ -987,8 +988,7 @@ parser_if (args)
|
||||
|
||||
/* Invert the current parser state if there is anything on the stack. */
|
||||
static int
|
||||
parser_else (args)
|
||||
char *args;
|
||||
parser_else (char *args __attribute__((unused)))
|
||||
{
|
||||
register int i;
|
||||
|
||||
@@ -1018,8 +1018,7 @@ parser_else (args)
|
||||
/* Terminate a conditional, popping the value of
|
||||
_rl_parsing_conditionalized_out from the stack. */
|
||||
static int
|
||||
parser_endif (args)
|
||||
char *args;
|
||||
parser_endif (char *args __attribute__((unused)))
|
||||
{
|
||||
if (if_stack_depth)
|
||||
_rl_parsing_conditionalized_out = if_stack[--if_stack_depth];
|
||||
@@ -1142,7 +1141,7 @@ rl_parse_and_bind (string)
|
||||
{
|
||||
int passc = 0;
|
||||
|
||||
for (i = 1; c = string[i]; i++)
|
||||
for (i = 1; (c = string[i]); i++)
|
||||
{
|
||||
if (passc)
|
||||
{
|
||||
@@ -1218,7 +1217,7 @@ rl_parse_and_bind (string)
|
||||
{
|
||||
int delimiter = string[i++], passc;
|
||||
|
||||
for (passc = 0; c = string[i]; i++)
|
||||
for (passc = 0; (c = string[i]); i++)
|
||||
{
|
||||
if (passc)
|
||||
{
|
||||
@@ -1377,7 +1376,7 @@ static struct {
|
||||
#if defined (VISIBLE_STATS)
|
||||
{ "visible-stats", &rl_visible_stats, 0 },
|
||||
#endif /* VISIBLE_STATS */
|
||||
{ (char *)NULL, (int *)NULL }
|
||||
{ (char *)NULL, (int *)NULL, 0 }
|
||||
};
|
||||
|
||||
static int
|
||||
@@ -1446,7 +1445,7 @@ static struct {
|
||||
{ "editing-mode", V_STRING, sv_editmode },
|
||||
{ "isearch-terminators", V_STRING, sv_isrchterm },
|
||||
{ "keymap", V_STRING, sv_keymap },
|
||||
{ (char *)NULL, 0 }
|
||||
{ (char *)NULL, 0, 0 }
|
||||
};
|
||||
|
||||
static int
|
||||
@@ -1466,7 +1465,7 @@ find_string_var (name)
|
||||
values result in 0 (false). */
|
||||
static int
|
||||
bool_to_int (value)
|
||||
char *value;
|
||||
const char *value;
|
||||
{
|
||||
return (value == 0 || *value == '\0' ||
|
||||
(_rl_stricmp (value, "on") == 0) ||
|
||||
@@ -1725,13 +1724,13 @@ char *
|
||||
rl_get_keymap_name_from_edit_mode ()
|
||||
{
|
||||
if (rl_editing_mode == emacs_mode)
|
||||
return "emacs";
|
||||
return (char*) "emacs";
|
||||
#if defined (VI_MODE)
|
||||
else if (rl_editing_mode == vi_mode)
|
||||
return "vi";
|
||||
return (char*) "vi";
|
||||
#endif /* VI_MODE */
|
||||
else
|
||||
return "none";
|
||||
return (char*) "none";
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
@@ -1966,7 +1965,7 @@ rl_function_dumper (print_readably)
|
||||
|
||||
fprintf (rl_outstream, "\n");
|
||||
|
||||
for (i = 0; name = names[i]; i++)
|
||||
for (i = 0; (name = names[i]); i++)
|
||||
{
|
||||
rl_command_func_t *function;
|
||||
char **invokers;
|
||||
@@ -2025,8 +2024,8 @@ rl_function_dumper (print_readably)
|
||||
rl_outstream. If an explicit argument is given, then print
|
||||
the output in such a way that it can be read back in. */
|
||||
int
|
||||
rl_dump_functions (count, key)
|
||||
int count, key;
|
||||
rl_dump_functions (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
if (rl_dispatching)
|
||||
fprintf (rl_outstream, "\r\n");
|
||||
@@ -2105,8 +2104,7 @@ rl_macro_dumper (print_readably)
|
||||
}
|
||||
|
||||
int
|
||||
rl_dump_macros (count, key)
|
||||
int count, key;
|
||||
rl_dump_macros(int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
if (rl_dispatching)
|
||||
fprintf (rl_outstream, "\r\n");
|
||||
@@ -2195,8 +2193,7 @@ rl_variable_dumper (print_readably)
|
||||
rl_outstream. If an explicit argument is given, then print
|
||||
the output in such a way that it can be read back in. */
|
||||
int
|
||||
rl_dump_variables (count, key)
|
||||
int count, key;
|
||||
rl_dump_variables(int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
if (rl_dispatching)
|
||||
fprintf (rl_outstream, "\r\n");
|
||||
|
@@ -59,7 +59,11 @@
|
||||
#define largest_char 255 /* Largest character value. */
|
||||
|
||||
#define CTRL_CHAR(c) ((c) < control_character_threshold && (((c) & 0x80) == 0))
|
||||
#if largest_char >= 255
|
||||
#define META_CHAR(c) ((c) > meta_character_threshold)
|
||||
#else
|
||||
#define META_CHAR(c) ((c) > meta_character_threshold && (c) <= largest_char)
|
||||
#endif
|
||||
|
||||
#define CTRL(c) ((c) & control_character_mask)
|
||||
#define META(c) ((c) | meta_character_bit)
|
||||
|
@@ -361,15 +361,15 @@ rl_complete (ignore, invoking_key)
|
||||
|
||||
/* List the possible completions. See description of rl_complete (). */
|
||||
int
|
||||
rl_possible_completions (ignore, invoking_key)
|
||||
int ignore, invoking_key;
|
||||
rl_possible_completions (int ignore __attribute__((unused)),
|
||||
int invoking_key __attribute__((unused)))
|
||||
{
|
||||
return (rl_complete_internal ('?'));
|
||||
}
|
||||
|
||||
int
|
||||
rl_insert_completions (ignore, invoking_key)
|
||||
int ignore, invoking_key;
|
||||
rl_insert_completions (int ignore __attribute__((unused)),
|
||||
int invoking_key __attribute__((unused)))
|
||||
{
|
||||
return (rl_complete_internal ('*'));
|
||||
}
|
||||
@@ -761,10 +761,7 @@ print_filename (to_print, full_pathname)
|
||||
}
|
||||
|
||||
static char *
|
||||
rl_quote_filename (s, rtype, qcp)
|
||||
char *s;
|
||||
int rtype;
|
||||
char *qcp;
|
||||
rl_quote_filename (char *s, int rtype __attribute__((unused)), char *qcp)
|
||||
{
|
||||
char *r;
|
||||
|
||||
@@ -872,7 +869,7 @@ _rl_find_completion_word (fp, dp)
|
||||
completion, so use the word break characters to find the
|
||||
substring on which to complete. */
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
while (rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY))
|
||||
while ((rl_point = _rl_find_prev_mbchar (rl_line_buffer, rl_point, MB_FIND_ANY)))
|
||||
#else
|
||||
while (--rl_point)
|
||||
#endif
|
||||
@@ -1806,7 +1803,7 @@ rl_completion_matches (text, entry_function)
|
||||
match_list = (char **)xmalloc ((match_list_size + 1) * sizeof (char *));
|
||||
match_list[1] = (char *)NULL;
|
||||
|
||||
while (string = (*entry_function) (text, matches))
|
||||
while ((string = (*entry_function) (text, matches)))
|
||||
{
|
||||
if (matches + 1 == match_list_size)
|
||||
match_list = (char **)xrealloc
|
||||
@@ -1856,7 +1853,7 @@ rl_username_completion_function (text, state)
|
||||
setpwent ();
|
||||
}
|
||||
|
||||
while (entry = getpwent ())
|
||||
while ((entry = getpwent ()))
|
||||
{
|
||||
/* Null usernames should result in all users as possible completions. */
|
||||
if (namelen == 0 || (STREQN (username, entry->pw_name, namelen)))
|
||||
@@ -2092,8 +2089,7 @@ rl_filename_completion_function (text, state)
|
||||
hit the end of the match list, we restore the original unmatched text,
|
||||
ring the bell, and reset the counter to zero. */
|
||||
int
|
||||
rl_menu_complete (count, ignore)
|
||||
int count, ignore;
|
||||
rl_menu_complete (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
rl_compentry_func_t *our_func;
|
||||
int matching_filenames, found_quote;
|
||||
|
@@ -218,7 +218,7 @@ expand_prompt (pmt, lp, lip, niflp, vlp)
|
||||
if (niflp)
|
||||
*niflp = 0;
|
||||
if (vlp)
|
||||
*vlp = lp ? *lp : strlen (r);
|
||||
*vlp = lp ? *lp : (int) strlen (r);
|
||||
return r;
|
||||
}
|
||||
|
||||
@@ -435,7 +435,7 @@ rl_redisplay ()
|
||||
return;
|
||||
|
||||
if (!rl_display_prompt)
|
||||
rl_display_prompt = "";
|
||||
rl_display_prompt = (char*) "";
|
||||
|
||||
if (invisible_line == 0)
|
||||
{
|
||||
@@ -757,7 +757,7 @@ rl_redisplay ()
|
||||
c_pos = out;
|
||||
lb_linenum = newlines;
|
||||
}
|
||||
for (i = in; i < in+wc_bytes; i++)
|
||||
for (i = in; i < (int) (in+wc_bytes); i++)
|
||||
line[out++] = rl_line_buffer[i];
|
||||
for (i = 0; i < wc_width; i++)
|
||||
CHECK_LPOS();
|
||||
@@ -835,7 +835,7 @@ rl_redisplay ()
|
||||
#define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
|
||||
#define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l])
|
||||
#define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
|
||||
#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)
|
||||
#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? (char*) "" : VIS_CHARS(line)
|
||||
#define INV_LINE(line) (invisible_line + inv_lbreaks[line])
|
||||
|
||||
/* For each line in the buffer, do the updating display. */
|
||||
@@ -876,7 +876,7 @@ rl_redisplay ()
|
||||
_rl_move_vert (linenum);
|
||||
_rl_move_cursor_relative (0, tt);
|
||||
_rl_clear_to_eol
|
||||
((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth);
|
||||
((linenum == _rl_vis_botlin) ? (int) strlen (tt) : _rl_screenwidth);
|
||||
}
|
||||
}
|
||||
_rl_vis_botlin = inv_botlin;
|
||||
@@ -1086,7 +1086,7 @@ update_line (old, new, current_line, omax, nmax, inv_botlin)
|
||||
int col_lendiff, col_temp;
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
mbstate_t ps_new, ps_old;
|
||||
int new_offset, old_offset, tmp;
|
||||
int new_offset, old_offset;
|
||||
#endif
|
||||
|
||||
/* If we're at the right edge of a terminal that supports xn, we're
|
||||
@@ -1837,7 +1837,7 @@ rl_reset_line_state ()
|
||||
{
|
||||
rl_on_new_line ();
|
||||
|
||||
rl_display_prompt = rl_prompt ? rl_prompt : "";
|
||||
rl_display_prompt = rl_prompt ? rl_prompt : (char*) "";
|
||||
forced_display = 1;
|
||||
return 0;
|
||||
}
|
||||
@@ -2212,7 +2212,7 @@ _rl_col_width (str, start, end)
|
||||
int start, end;
|
||||
{
|
||||
wchar_t wc;
|
||||
mbstate_t ps = {0};
|
||||
mbstate_t ps;
|
||||
int tmp, point, width, max;
|
||||
|
||||
if (end <= start)
|
||||
@@ -2221,6 +2221,7 @@ _rl_col_width (str, start, end)
|
||||
point = 0;
|
||||
max = end;
|
||||
|
||||
memset (&ps, 0, sizeof(ps));
|
||||
while (point < start)
|
||||
{
|
||||
tmp = mbrlen (str + point, max, &ps);
|
||||
|
@@ -87,14 +87,14 @@ char history_comment_char = '\0';
|
||||
|
||||
/* The list of characters which inhibit the expansion of text if found
|
||||
immediately following history_expansion_char. */
|
||||
char *history_no_expand_chars = " \t\n\r=";
|
||||
char *history_no_expand_chars = (char*) " \t\n\r=";
|
||||
|
||||
/* If set to a non-zero value, single quotes inhibit history expansion.
|
||||
The default is 0. */
|
||||
int history_quotes_inhibit_expansion = 0;
|
||||
|
||||
/* Used to split words by history_tokenize_internal. */
|
||||
char *history_word_delimiters = HISTORY_WORD_DELIMITERS;
|
||||
char *history_word_delimiters = (char*) HISTORY_WORD_DELIMITERS;
|
||||
|
||||
/* If set, this points to a function that is called to verify that a
|
||||
particular history expansion should be performed. */
|
||||
@@ -203,7 +203,7 @@ get_history_event (string, caller_index, delimiting_quote)
|
||||
}
|
||||
|
||||
/* Only a closing `?' or a newline delimit a substring search string. */
|
||||
for (local_index = i; c = string[i]; i++)
|
||||
for (local_index = i; (c = string[i]); i++)
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
|
||||
{
|
||||
|
@@ -184,7 +184,8 @@ read_history_range (filename, from, to)
|
||||
file_size = (size_t)finfo.st_size;
|
||||
|
||||
/* check for overflow on very large files */
|
||||
if (file_size != finfo.st_size || file_size + 1 < file_size)
|
||||
if ((long long) file_size != (long long) finfo.st_size ||
|
||||
file_size + 1 < file_size)
|
||||
{
|
||||
errno = overflow_errno;
|
||||
goto error_and_exit;
|
||||
@@ -333,7 +334,8 @@ history_truncate_file (fname, lines)
|
||||
file_size = (size_t)finfo.st_size;
|
||||
|
||||
/* check for overflow on very large files */
|
||||
if (file_size != finfo.st_size || file_size + 1 < file_size)
|
||||
if ((long long) file_size != (long long) finfo.st_size ||
|
||||
file_size + 1 < file_size)
|
||||
{
|
||||
close (file);
|
||||
#if defined (EFBIG)
|
||||
|
@@ -405,7 +405,7 @@ rl_read_key ()
|
||||
else
|
||||
{
|
||||
/* If input is coming from a macro, then use that. */
|
||||
if (c = _rl_next_macro_key ())
|
||||
if ((c= _rl_next_macro_key ()))
|
||||
return (c);
|
||||
|
||||
/* If the user has an event function, then call it periodically. */
|
||||
|
@@ -68,7 +68,7 @@ static char *prev_line_found;
|
||||
static char *last_isearch_string;
|
||||
static int last_isearch_string_len;
|
||||
|
||||
static char *default_isearch_terminators = "\033\012";
|
||||
static char *default_isearch_terminators = (char*) "\033\012";
|
||||
|
||||
/* Search backwards through the history looking for a string which is typed
|
||||
interactively. Start with the current line. */
|
||||
@@ -94,9 +94,8 @@ rl_forward_search_history (sign, key)
|
||||
WHERE is the history list number of the current line. If it is
|
||||
-1, then this line is the starting one. */
|
||||
static void
|
||||
rl_display_search (search_string, reverse_p, where)
|
||||
char *search_string;
|
||||
int reverse_p, where;
|
||||
rl_display_search (char *search_string, int reverse_p,
|
||||
int where __attribute__((unused)))
|
||||
{
|
||||
char *message;
|
||||
int msglen, searchlen;
|
||||
@@ -143,8 +142,7 @@ rl_display_search (search_string, reverse_p, where)
|
||||
DIRECTION is which direction to search; >= 0 means forward, < 0 means
|
||||
backwards. */
|
||||
static int
|
||||
rl_search_history (direction, invoking_key)
|
||||
int direction, invoking_key;
|
||||
rl_search_history (int direction, int invoking_key __attribute__((unused)))
|
||||
{
|
||||
/* The string that the user types in to search for. */
|
||||
char *search_string;
|
||||
|
@@ -76,8 +76,7 @@ static int rl_yank_nth_arg_internal PARAMS((int, int, int));
|
||||
/* How to say that you only want to save a certain amount
|
||||
of kill material. */
|
||||
int
|
||||
rl_set_retained_kills (num)
|
||||
int num;
|
||||
rl_set_retained_kills (int num __attribute__((unused)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -293,8 +292,8 @@ rl_backward_kill_line (direction, ignore)
|
||||
|
||||
/* Kill the whole line, no matter where point is. */
|
||||
int
|
||||
rl_kill_full_line (count, ignore)
|
||||
int count, ignore;
|
||||
rl_kill_full_line (int count __attribute__((unused)),
|
||||
int ignore __attribute__((unused)))
|
||||
{
|
||||
rl_begin_undo_group ();
|
||||
rl_point = 0;
|
||||
@@ -311,8 +310,7 @@ rl_kill_full_line (count, ignore)
|
||||
/* This does what C-w does in Unix. We can't prevent people from
|
||||
using behaviour that they expect. */
|
||||
int
|
||||
rl_unix_word_rubout (count, key)
|
||||
int count, key;
|
||||
rl_unix_word_rubout (int count, int key __attribute__((unused)))
|
||||
{
|
||||
int orig_point;
|
||||
|
||||
@@ -344,8 +342,7 @@ rl_unix_word_rubout (count, key)
|
||||
/* This deletes one filename component in a Unix pathname. That is, it
|
||||
deletes backward to directory separator (`/') or whitespace. */
|
||||
int
|
||||
rl_unix_filename_rubout (count, key)
|
||||
int count, key;
|
||||
rl_unix_filename_rubout (int count, int key __attribute__((unused)))
|
||||
{
|
||||
int orig_point, c;
|
||||
|
||||
@@ -388,8 +385,8 @@ rl_unix_filename_rubout (count, key)
|
||||
into the line at all, and if you aren't, then you know what you are
|
||||
doing. */
|
||||
int
|
||||
rl_unix_line_discard (count, key)
|
||||
int count, key;
|
||||
rl_unix_line_discard (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
if (rl_point == 0)
|
||||
rl_ding ();
|
||||
@@ -425,16 +422,16 @@ region_kill_internal (delete)
|
||||
|
||||
/* Copy the text in the region to the kill ring. */
|
||||
int
|
||||
rl_copy_region_to_kill (count, ignore)
|
||||
int count, ignore;
|
||||
rl_copy_region_to_kill (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
return (region_kill_internal (0));
|
||||
}
|
||||
|
||||
/* Kill the text between the point and mark. */
|
||||
int
|
||||
rl_kill_region (count, ignore)
|
||||
int count, ignore;
|
||||
rl_kill_region (int count __attribute__((unused)),
|
||||
int ignore __attribute__((unused)))
|
||||
{
|
||||
int r, npoint;
|
||||
|
||||
@@ -498,8 +495,7 @@ rl_copy_backward_word (count, key)
|
||||
|
||||
/* Yank back the last killed text. This ignores arguments. */
|
||||
int
|
||||
rl_yank (count, ignore)
|
||||
int count, ignore;
|
||||
rl_yank (int count __attribute__((unused)), int ignore __attribute__((unused)))
|
||||
{
|
||||
if (rl_kill_ring == 0)
|
||||
{
|
||||
@@ -517,8 +513,7 @@ rl_yank (count, ignore)
|
||||
delete that text from the line, rotate the index down, and
|
||||
yank back some other text. */
|
||||
int
|
||||
rl_yank_pop (count, key)
|
||||
int count, key;
|
||||
rl_yank_pop (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
int l, n;
|
||||
|
||||
|
@@ -189,8 +189,8 @@ _rl_kill_kbd_macro ()
|
||||
definition to the end of the existing macro, and start by
|
||||
re-executing the existing macro. */
|
||||
int
|
||||
rl_start_kbd_macro (ignore1, ignore2)
|
||||
int ignore1, ignore2;
|
||||
rl_start_kbd_macro (int ignore1 __attribute__((unused)),
|
||||
int ignore2 __attribute__((unused)))
|
||||
{
|
||||
if (RL_ISSTATE (RL_STATE_MACRODEF))
|
||||
{
|
||||
@@ -214,8 +214,7 @@ rl_start_kbd_macro (ignore1, ignore2)
|
||||
A numeric argument says to execute the macro right now,
|
||||
that many times, counting the definition as the first time. */
|
||||
int
|
||||
rl_end_kbd_macro (count, ignore)
|
||||
int count, ignore;
|
||||
rl_end_kbd_macro (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
if (RL_ISSTATE (RL_STATE_MACRODEF) == 0)
|
||||
{
|
||||
@@ -234,8 +233,7 @@ rl_end_kbd_macro (count, ignore)
|
||||
/* Execute the most recently defined keyboard macro.
|
||||
COUNT says how many times to execute it. */
|
||||
int
|
||||
rl_call_last_kbd_macro (count, ignore)
|
||||
int count, ignore;
|
||||
rl_call_last_kbd_macro (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
if (current_macro == 0)
|
||||
_rl_abort_internal ();
|
||||
|
@@ -154,8 +154,7 @@ rl_digit_loop ()
|
||||
|
||||
/* Add the current digit to the argument in progress. */
|
||||
int
|
||||
rl_digit_argument (ignore, key)
|
||||
int ignore, key;
|
||||
rl_digit_argument (int ignore __attribute__((unused)), int key)
|
||||
{
|
||||
rl_execute_next (key);
|
||||
return (rl_digit_loop ());
|
||||
@@ -184,8 +183,8 @@ _rl_init_argument ()
|
||||
Read a key. If the key has nothing to do with arguments, then
|
||||
dispatch on it. If the key is the abort character then abort. */
|
||||
int
|
||||
rl_universal_argument (count, key)
|
||||
int count, key;
|
||||
rl_universal_argument (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
rl_numeric_arg *= 4;
|
||||
return (rl_digit_loop ());
|
||||
@@ -314,9 +313,7 @@ _rl_history_set_point ()
|
||||
}
|
||||
|
||||
void
|
||||
rl_replace_from_history (entry, flags)
|
||||
HIST_ENTRY *entry;
|
||||
int flags; /* currently unused */
|
||||
rl_replace_from_history (HIST_ENTRY *entry, int flags __attribute__((unused)))
|
||||
{
|
||||
/* Can't call with `1' because rl_undo_list might point to an undo list
|
||||
from a history entry, just like we're setting up here. */
|
||||
@@ -342,16 +339,15 @@ rl_replace_from_history (entry, flags)
|
||||
|
||||
/* Meta-< goes to the start of the history. */
|
||||
int
|
||||
rl_beginning_of_history (count, key)
|
||||
int count, key;
|
||||
rl_beginning_of_history (int count __attribute__((unused)), int key)
|
||||
{
|
||||
return (rl_get_previous_history (1 + where_history (), key));
|
||||
}
|
||||
|
||||
/* Meta-> goes to the end of the history. (The current line). */
|
||||
int
|
||||
rl_end_of_history (count, key)
|
||||
int count, key;
|
||||
rl_end_of_history (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
rl_maybe_replace_line ();
|
||||
using_history ();
|
||||
@@ -455,8 +451,7 @@ rl_get_previous_history (count, key)
|
||||
/* **************************************************************** */
|
||||
/* How to toggle back and forth between editing modes. */
|
||||
int
|
||||
rl_vi_editing_mode (count, key)
|
||||
int count, key;
|
||||
rl_vi_editing_mode (int count __attribute__((unused)), int key)
|
||||
{
|
||||
#if defined (VI_MODE)
|
||||
_rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */
|
||||
@@ -468,8 +463,8 @@ rl_vi_editing_mode (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_emacs_editing_mode (count, key)
|
||||
int count, key;
|
||||
rl_emacs_editing_mode (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
rl_editing_mode = emacs_mode;
|
||||
_rl_set_insert_mode (RL_IM_INSERT, 1); /* emacs mode default is insert mode */
|
||||
@@ -479,8 +474,7 @@ rl_emacs_editing_mode (count, key)
|
||||
|
||||
/* Function for the rest of the library to use to set insert/overwrite mode. */
|
||||
void
|
||||
_rl_set_insert_mode (im, force)
|
||||
int im, force;
|
||||
_rl_set_insert_mode (int im, int force __attribute__((unused)))
|
||||
{
|
||||
#ifdef CURSOR_MODE
|
||||
_rl_set_cursor (im, force);
|
||||
@@ -492,8 +486,7 @@ _rl_set_insert_mode (im, force)
|
||||
/* Toggle overwrite mode. A positive explicit argument selects overwrite
|
||||
mode. A negative or zero explicit argument selects insert mode. */
|
||||
int
|
||||
rl_overwrite_mode (count, key)
|
||||
int count, key;
|
||||
rl_overwrite_mode (int count, int key __attribute__((unused)))
|
||||
{
|
||||
if (rl_explicit_arg == 0)
|
||||
_rl_set_insert_mode (rl_insert_mode ^ 1, 0);
|
||||
|
@@ -111,7 +111,7 @@ _rl_init_eightbit ()
|
||||
if (lspec == 0 || *lspec == 0)
|
||||
lspec = setlocale (LC_CTYPE, (char *)NULL);
|
||||
if (lspec == 0)
|
||||
lspec = "";
|
||||
lspec = (char*) "";
|
||||
t = setlocale (LC_CTYPE, lspec);
|
||||
|
||||
if (t && *t && (t[0] != 'C' || t[1]) && (STREQ (t, "POSIX") == 0))
|
||||
|
@@ -83,7 +83,9 @@ static void bind_arrow_keys_internal PARAMS((Keymap));
|
||||
static void bind_arrow_keys PARAMS((void));
|
||||
|
||||
static void readline_default_bindings PARAMS((void));
|
||||
#ifdef NOT_USED
|
||||
static void reset_default_bindings PARAMS((void));
|
||||
#endif
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
@@ -866,12 +868,14 @@ readline_default_bindings ()
|
||||
|
||||
/* Reset the default bindings for the terminal special characters we're
|
||||
interested in back to rl_insert and read the new ones. */
|
||||
#ifdef NOT_USED
|
||||
static void
|
||||
reset_default_bindings ()
|
||||
{
|
||||
rl_tty_unset_default_bindings (_rl_keymap);
|
||||
rl_tty_set_default_bindings (_rl_keymap);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Bind some common arrow key sequences in MAP. */
|
||||
static void
|
||||
|
@@ -716,8 +716,7 @@ rl_deprep_terminal ()
|
||||
/* **************************************************************** */
|
||||
|
||||
int
|
||||
rl_restart_output (count, key)
|
||||
int count, key;
|
||||
rl_restart_output(int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
int fildes = fileno (rl_outstream);
|
||||
#if defined (TIOCSTART)
|
||||
@@ -749,8 +748,7 @@ rl_restart_output (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_stop_output (count, key)
|
||||
int count, key;
|
||||
rl_stop_output(int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
int fildes = fileno (rl_instream);
|
||||
|
||||
@@ -867,7 +865,6 @@ rltty_set_default_bindings (kmap)
|
||||
{
|
||||
TIOTYPE ttybuff;
|
||||
int tty;
|
||||
static int called = 0;
|
||||
|
||||
tty = fileno (rl_instream);
|
||||
|
||||
|
@@ -303,8 +303,7 @@ noninc_search (dir, pchar)
|
||||
/* Search forward through the history list for a string. If the vi-mode
|
||||
code calls this, KEY will be `?'. */
|
||||
int
|
||||
rl_noninc_forward_search (count, key)
|
||||
int count, key;
|
||||
rl_noninc_forward_search (int count __attribute__((unused)), int key)
|
||||
{
|
||||
noninc_search (1, (key == '?') ? '?' : 0);
|
||||
return 0;
|
||||
@@ -313,8 +312,7 @@ rl_noninc_forward_search (count, key)
|
||||
/* Reverse search the history list for a string. If the vi-mode code
|
||||
calls this, KEY will be `/'. */
|
||||
int
|
||||
rl_noninc_reverse_search (count, key)
|
||||
int count, key;
|
||||
rl_noninc_reverse_search (int count __attribute__((unused)), int key)
|
||||
{
|
||||
noninc_search (-1, (key == '/') ? '/' : 0);
|
||||
return 0;
|
||||
@@ -323,8 +321,8 @@ rl_noninc_reverse_search (count, key)
|
||||
/* Search forward through the history list for the last string searched
|
||||
for. If there is no saved search string, abort. */
|
||||
int
|
||||
rl_noninc_forward_search_again (count, key)
|
||||
int count, key;
|
||||
rl_noninc_forward_search_again (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
if (!noninc_search_string)
|
||||
{
|
||||
@@ -338,8 +336,8 @@ rl_noninc_forward_search_again (count, key)
|
||||
/* Reverse search in the history list for the last string searched
|
||||
for. If there is no saved search string, abort. */
|
||||
int
|
||||
rl_noninc_reverse_search_again (count, key)
|
||||
int count, key;
|
||||
rl_noninc_reverse_search_again (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
if (!noninc_search_string)
|
||||
{
|
||||
|
@@ -344,7 +344,7 @@ get_term_capabilities (bp)
|
||||
#if !defined (__DJGPP__) /* XXX - doesn't DJGPP have a termcap library? */
|
||||
register int i;
|
||||
|
||||
for (i = 0; i < NUM_TC_STRINGS; i++)
|
||||
for (i = 0; i < (int) NUM_TC_STRINGS; i++)
|
||||
*(tc_strings[i].tc_value) = tgetstr ((char *)tc_strings[i].tc_var, bp);
|
||||
#endif
|
||||
tcap_initialized = 1;
|
||||
@@ -410,7 +410,7 @@ _rl_init_terminal_io (terminal_name)
|
||||
|
||||
/* Everything below here is used by the redisplay code (tputs). */
|
||||
_rl_screenchars = _rl_screenwidth * _rl_screenheight;
|
||||
_rl_term_cr = "\r";
|
||||
_rl_term_cr = (char*) "\r";
|
||||
_rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
|
||||
_rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
|
||||
_rl_term_ku = _rl_term_kd = _rl_term_kl = _rl_term_kr = (char *)NULL;
|
||||
@@ -427,7 +427,7 @@ _rl_init_terminal_io (terminal_name)
|
||||
tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we
|
||||
change that later... */
|
||||
PC = '\0';
|
||||
BC = _rl_term_backspace = "\b";
|
||||
BC = _rl_term_backspace = (char*) "\b";
|
||||
UP = _rl_term_up;
|
||||
|
||||
return 0;
|
||||
@@ -442,7 +442,7 @@ _rl_init_terminal_io (terminal_name)
|
||||
UP = _rl_term_up;
|
||||
|
||||
if (!_rl_term_cr)
|
||||
_rl_term_cr = "\r";
|
||||
_rl_term_cr = (char*) "\r";
|
||||
|
||||
_rl_term_autowrap = tgetflag ("am") && tgetflag ("xn");
|
||||
|
||||
@@ -502,7 +502,7 @@ rl_get_termcap (cap)
|
||||
|
||||
if (tcap_initialized == 0)
|
||||
return ((char *)NULL);
|
||||
for (i = 0; i < NUM_TC_STRINGS; i++)
|
||||
for (i = 0; i < (int) NUM_TC_STRINGS; i++)
|
||||
{
|
||||
if (tc_strings[i].tc_var[0] == cap[0] && strcmp (tc_strings[i].tc_var, cap) == 0)
|
||||
return *(tc_strings[i].tc_value);
|
||||
|
@@ -402,8 +402,7 @@ rl_backward (count, key)
|
||||
|
||||
/* Move to the beginning of the line. */
|
||||
int
|
||||
rl_beg_of_line (count, key)
|
||||
int count, key;
|
||||
rl_beg_of_line (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
rl_point = 0;
|
||||
return 0;
|
||||
@@ -411,8 +410,7 @@ rl_beg_of_line (count, key)
|
||||
|
||||
/* Move to the end of the line. */
|
||||
int
|
||||
rl_end_of_line (count, key)
|
||||
int count, key;
|
||||
rl_end_of_line (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
rl_point = rl_end;
|
||||
return 0;
|
||||
@@ -508,8 +506,7 @@ rl_backward_word (count, key)
|
||||
|
||||
/* Clear the current line. Numeric argument to C-l does this. */
|
||||
int
|
||||
rl_refresh_line (ignore1, ignore2)
|
||||
int ignore1, ignore2;
|
||||
rl_refresh_line (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
int curr_line;
|
||||
|
||||
@@ -547,8 +544,7 @@ rl_clear_screen (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_arrow_keys (count, c)
|
||||
int count, c;
|
||||
rl_arrow_keys (int count, int c __attribute__((unused)))
|
||||
{
|
||||
int ch;
|
||||
|
||||
@@ -596,7 +592,7 @@ rl_arrow_keys (count, c)
|
||||
#ifdef HANDLE_MULTIBYTE
|
||||
static char pending_bytes[MB_LEN_MAX];
|
||||
static int pending_bytes_length = 0;
|
||||
static mbstate_t ps = {0};
|
||||
static mbstate_t ps;
|
||||
#endif
|
||||
|
||||
/* Insert the character C at the current location, moving point forward.
|
||||
@@ -832,8 +828,7 @@ rl_insert (count, c)
|
||||
|
||||
/* Insert the next typed character verbatim. */
|
||||
int
|
||||
rl_quoted_insert (count, key)
|
||||
int count, key;
|
||||
rl_quoted_insert (int count, int key __attribute__((unused)))
|
||||
{
|
||||
int c;
|
||||
|
||||
@@ -854,8 +849,7 @@ rl_quoted_insert (count, key)
|
||||
|
||||
/* Insert a tab character. */
|
||||
int
|
||||
rl_tab_insert (count, key)
|
||||
int count, key;
|
||||
rl_tab_insert (int count, int key __attribute__((unused)))
|
||||
{
|
||||
return (_rl_insert_char (count, '\t'));
|
||||
}
|
||||
@@ -864,8 +858,7 @@ rl_tab_insert (count, key)
|
||||
KEY is the key that invoked this command. I guess it could have
|
||||
meaning in the future. */
|
||||
int
|
||||
rl_newline (count, key)
|
||||
int count, key;
|
||||
rl_newline (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
rl_done = 1;
|
||||
|
||||
@@ -898,8 +891,8 @@ rl_newline (count, key)
|
||||
is just a stub, you bind keys to it and the code in _rl_dispatch ()
|
||||
is special cased. */
|
||||
int
|
||||
rl_do_lowercase_version (ignore1, ignore2)
|
||||
int ignore1, ignore2;
|
||||
rl_do_lowercase_version (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -1093,8 +1086,8 @@ rl_rubout_or_delete (count, key)
|
||||
|
||||
/* Delete all spaces and tabs around point. */
|
||||
int
|
||||
rl_delete_horizontal_space (count, ignore)
|
||||
int count, ignore;
|
||||
rl_delete_horizontal_space (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
int start = rl_point;
|
||||
|
||||
@@ -1134,14 +1127,13 @@ rl_delete_or_show_completions (count, key)
|
||||
/* Turn the current line into a comment in shell history.
|
||||
A K*rn shell style function. */
|
||||
int
|
||||
rl_insert_comment (count, key)
|
||||
int count, key;
|
||||
rl_insert_comment (int count __attribute__((unused)), int key)
|
||||
{
|
||||
char *rl_comment_text;
|
||||
int rl_comment_len;
|
||||
|
||||
rl_beg_of_line (1, key);
|
||||
rl_comment_text = _rl_comment_begin ? _rl_comment_begin : RL_COMMENT_BEGIN_DEFAULT;
|
||||
rl_comment_text = _rl_comment_begin ? _rl_comment_begin : (char*) RL_COMMENT_BEGIN_DEFAULT;
|
||||
|
||||
if (rl_explicit_arg == 0)
|
||||
rl_insert_text (rl_comment_text);
|
||||
@@ -1173,24 +1165,21 @@ rl_insert_comment (count, key)
|
||||
|
||||
/* Uppercase the word at point. */
|
||||
int
|
||||
rl_upcase_word (count, key)
|
||||
int count, key;
|
||||
rl_upcase_word (int count, int key __attribute__((unused)))
|
||||
{
|
||||
return (rl_change_case (count, UpCase));
|
||||
}
|
||||
|
||||
/* Lowercase the word at point. */
|
||||
int
|
||||
rl_downcase_word (count, key)
|
||||
int count, key;
|
||||
rl_downcase_word (int count, int key __attribute__((unused)))
|
||||
{
|
||||
return (rl_change_case (count, DownCase));
|
||||
}
|
||||
|
||||
/* Upcase the first letter, downcase the rest. */
|
||||
int
|
||||
rl_capitalize_word (count, key)
|
||||
int count, key;
|
||||
rl_capitalize_word (int count, int key __attribute__((unused)))
|
||||
{
|
||||
return (rl_change_case (count, CapCase));
|
||||
}
|
||||
@@ -1314,8 +1303,7 @@ rl_transpose_words (count, key)
|
||||
/* Transpose the characters at point. If point is at the end of the line,
|
||||
then transpose the characters before point. */
|
||||
int
|
||||
rl_transpose_chars (count, key)
|
||||
int count, key;
|
||||
rl_transpose_chars (int count, int key __attribute__((unused)))
|
||||
{
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
char *dummy;
|
||||
@@ -1486,15 +1474,13 @@ _rl_char_search (count, fdir, bdir)
|
||||
#endif /* !HANDLE_MULTIBYTE */
|
||||
|
||||
int
|
||||
rl_char_search (count, key)
|
||||
int count, key;
|
||||
rl_char_search (int count, int key __attribute__((unused)))
|
||||
{
|
||||
return (_rl_char_search (count, FFIND, BFIND));
|
||||
}
|
||||
|
||||
int
|
||||
rl_backward_char_search (count, key)
|
||||
int count, key;
|
||||
rl_backward_char_search (int count, int key __attribute__((unused)))
|
||||
{
|
||||
return (_rl_char_search (count, BFIND, FFIND));
|
||||
}
|
||||
@@ -1519,16 +1505,15 @@ _rl_set_mark_at_pos (position)
|
||||
|
||||
/* A bindable command to set the mark. */
|
||||
int
|
||||
rl_set_mark (count, key)
|
||||
int count, key;
|
||||
rl_set_mark (int count, int key __attribute__((unused)))
|
||||
{
|
||||
return (_rl_set_mark_at_pos (rl_explicit_arg ? count : rl_point));
|
||||
}
|
||||
|
||||
/* Exchange the position of mark and point. */
|
||||
int
|
||||
rl_exchange_point_and_mark (count, key)
|
||||
int count, key;
|
||||
rl_exchange_point_and_mark (int count __attribute__((unused)),
|
||||
int key __attribute__((unused)))
|
||||
{
|
||||
if (rl_mark > rl_end)
|
||||
rl_mark = -1;
|
||||
|
@@ -190,7 +190,7 @@ tilde_expand (string)
|
||||
int result_size, result_index;
|
||||
|
||||
result_index = result_size = 0;
|
||||
if (result = strchr (string, '~'))
|
||||
if ((result = strchr (string, '~')))
|
||||
result = (char *)xmalloc (result_size = (strlen (string) + 16));
|
||||
else
|
||||
result = (char *)xmalloc (result_size = (strlen (string) + 1));
|
||||
|
@@ -175,7 +175,7 @@ _rl_fix_last_undo_of_type (type, start, end)
|
||||
|
||||
for (rl = rl_undo_list; rl; rl = rl->next)
|
||||
{
|
||||
if (rl->what == type)
|
||||
if (rl->what == (unsigned int) type)
|
||||
{
|
||||
rl->start = start;
|
||||
rl->end = end;
|
||||
@@ -226,8 +226,7 @@ rl_modifying (start, end)
|
||||
|
||||
/* Revert the current line to its previous state. */
|
||||
int
|
||||
rl_revert_line (count, key)
|
||||
int count, key;
|
||||
rl_revert_line (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
if (!rl_undo_list)
|
||||
rl_ding ();
|
||||
@@ -241,8 +240,7 @@ rl_revert_line (count, key)
|
||||
|
||||
/* Do some undoing of things that were done. */
|
||||
int
|
||||
rl_undo_command (count, key)
|
||||
int count, key;
|
||||
rl_undo_command (int count, int key __attribute__((unused)))
|
||||
{
|
||||
if (count < 0)
|
||||
return 0; /* Nothing to do. */
|
||||
|
@@ -95,15 +95,13 @@ _rl_abort_internal ()
|
||||
}
|
||||
|
||||
int
|
||||
rl_abort (count, key)
|
||||
int count, key;
|
||||
rl_abort (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
return (_rl_abort_internal ());
|
||||
}
|
||||
|
||||
int
|
||||
rl_tty_status (count, key)
|
||||
int count, key;
|
||||
rl_tty_status (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
#if defined (TIOCSTAT)
|
||||
ioctl (1, TIOCSTAT, (char *)0);
|
||||
@@ -152,8 +150,7 @@ rl_extend_line_buffer (len)
|
||||
|
||||
/* A function for simple tilde expansion. */
|
||||
int
|
||||
rl_tilde_expand (ignore, key)
|
||||
int ignore, key;
|
||||
rl_tilde_expand (int ignore __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
register int start, end;
|
||||
char *homedir, *temp;
|
||||
|
@@ -112,7 +112,7 @@ _rl_vi_initialize_line ()
|
||||
{
|
||||
register int i;
|
||||
|
||||
for (i = 0; i < sizeof (vi_mark_chars) / sizeof (int); i++)
|
||||
for (i = 0; i < (int) (sizeof (vi_mark_chars) / sizeof (int)); i++)
|
||||
vi_mark_chars[i] = -1;
|
||||
}
|
||||
|
||||
@@ -166,8 +166,7 @@ _rl_vi_stuff_insert (count)
|
||||
redo a text modification command. The default for _rl_vi_last_command
|
||||
puts you back into insert mode. */
|
||||
int
|
||||
rl_vi_redo (count, c)
|
||||
int count, c;
|
||||
rl_vi_redo (int count, int c __attribute__((unused)))
|
||||
{
|
||||
int r;
|
||||
|
||||
@@ -205,8 +204,7 @@ rl_vi_undo (count, key)
|
||||
|
||||
/* Yank the nth arg from the previous line into this line at point. */
|
||||
int
|
||||
rl_vi_yank_arg (count, key)
|
||||
int count, key;
|
||||
rl_vi_yank_arg (int count, int key __attribute__((unused)))
|
||||
{
|
||||
/* Readline thinks that the first word on a line is the 0th, while vi
|
||||
thinks the first word on a line is the 1st. Compensate. */
|
||||
@@ -286,8 +284,7 @@ rl_vi_search (count, key)
|
||||
|
||||
/* Completion, from vi's point of view. */
|
||||
int
|
||||
rl_vi_complete (ignore, key)
|
||||
int ignore, key;
|
||||
rl_vi_complete (int ignore __attribute__((unused)), int key)
|
||||
{
|
||||
if ((rl_point < rl_end) && (!whitespace (rl_line_buffer[rl_point])))
|
||||
{
|
||||
@@ -313,8 +310,7 @@ rl_vi_complete (ignore, key)
|
||||
|
||||
/* Tilde expansion for vi mode. */
|
||||
int
|
||||
rl_vi_tilde_expand (ignore, key)
|
||||
int ignore, key;
|
||||
rl_vi_tilde_expand (int ignore __attribute__((unused)), int key)
|
||||
{
|
||||
rl_tilde_expand (0, key);
|
||||
rl_vi_start_inserting (key, 1, rl_arg_sign);
|
||||
@@ -384,8 +380,7 @@ rl_vi_end_word (count, key)
|
||||
|
||||
/* Move forward a word the way that 'W' does. */
|
||||
int
|
||||
rl_vi_fWord (count, ignore)
|
||||
int count, ignore;
|
||||
rl_vi_fWord (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
while (count-- && rl_point < (rl_end - 1))
|
||||
{
|
||||
@@ -401,8 +396,7 @@ rl_vi_fWord (count, ignore)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_bWord (count, ignore)
|
||||
int count, ignore;
|
||||
rl_vi_bWord (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
while (count-- && rl_point > 0)
|
||||
{
|
||||
@@ -425,8 +419,7 @@ rl_vi_bWord (count, ignore)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_eWord (count, ignore)
|
||||
int count, ignore;
|
||||
rl_vi_eWord(int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
while (count-- && rl_point < (rl_end - 1))
|
||||
{
|
||||
@@ -456,8 +449,7 @@ rl_vi_eWord (count, ignore)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_fword (count, ignore)
|
||||
int count, ignore;
|
||||
rl_vi_fword (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
while (count-- && rl_point < (rl_end - 1))
|
||||
{
|
||||
@@ -482,8 +474,7 @@ rl_vi_fword (count, ignore)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_bword (count, ignore)
|
||||
int count, ignore;
|
||||
rl_vi_bword (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
while (count-- && rl_point > 0)
|
||||
{
|
||||
@@ -521,8 +512,7 @@ rl_vi_bword (count, ignore)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_eword (count, ignore)
|
||||
int count, ignore;
|
||||
rl_vi_eword (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
while (count-- && rl_point < rl_end - 1)
|
||||
{
|
||||
@@ -546,8 +536,7 @@ rl_vi_eword (count, ignore)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_insert_beg (count, key)
|
||||
int count, key;
|
||||
rl_vi_insert_beg (int count __attribute__((unused)), int key)
|
||||
{
|
||||
rl_beg_of_line (1, key);
|
||||
rl_vi_insertion_mode (1, key);
|
||||
@@ -555,8 +544,7 @@ rl_vi_insert_beg (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_append_mode (count, key)
|
||||
int count, key;
|
||||
rl_vi_append_mode (int count __attribute__((unused)), int key)
|
||||
{
|
||||
if (rl_point < rl_end)
|
||||
{
|
||||
@@ -575,8 +563,7 @@ rl_vi_append_mode (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_append_eol (count, key)
|
||||
int count, key;
|
||||
rl_vi_append_eol (int count __attribute__((unused)), int key)
|
||||
{
|
||||
rl_end_of_line (1, key);
|
||||
rl_vi_append_mode (1, key);
|
||||
@@ -585,8 +572,7 @@ rl_vi_append_eol (count, key)
|
||||
|
||||
/* What to do in the case of C-d. */
|
||||
int
|
||||
rl_vi_eof_maybe (count, c)
|
||||
int count, c;
|
||||
rl_vi_eof_maybe (int count __attribute__((unused)), int c __attribute__((unused)))
|
||||
{
|
||||
return (rl_newline (1, '\n'));
|
||||
}
|
||||
@@ -596,8 +582,7 @@ rl_vi_eof_maybe (count, c)
|
||||
/* Switching from one mode to the other really just involves
|
||||
switching keymaps. */
|
||||
int
|
||||
rl_vi_insertion_mode (count, key)
|
||||
int count, key;
|
||||
rl_vi_insertion_mode (int count __attribute__((unused)), int key)
|
||||
{
|
||||
_rl_keymap = vi_insertion_keymap;
|
||||
_rl_vi_last_key_before_insert = key;
|
||||
@@ -659,8 +644,7 @@ _rl_vi_done_inserting ()
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_movement_mode (count, key)
|
||||
int count, key;
|
||||
rl_vi_movement_mode (int count __attribute__((unused)), int key)
|
||||
{
|
||||
if (rl_point > 0)
|
||||
rl_backward_char (1, key);
|
||||
@@ -729,8 +713,7 @@ _rl_vi_change_mbchar_case (count)
|
||||
#endif
|
||||
|
||||
int
|
||||
rl_vi_change_case (count, ignore)
|
||||
int count, ignore;
|
||||
rl_vi_change_case (int count, int ignore __attribute__((unused)))
|
||||
{
|
||||
int c, p;
|
||||
|
||||
@@ -959,8 +942,7 @@ rl_digit_loop1 ()
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_delete_to (count, key)
|
||||
int count, key;
|
||||
rl_vi_delete_to (int count __attribute__((unused)), int key)
|
||||
{
|
||||
int c;
|
||||
|
||||
@@ -985,8 +967,7 @@ rl_vi_delete_to (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_change_to (count, key)
|
||||
int count, key;
|
||||
rl_vi_change_to (int count __attribute__((unused)), int key)
|
||||
{
|
||||
int c, start_pos;
|
||||
|
||||
@@ -1038,8 +1019,7 @@ rl_vi_change_to (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_yank_to (count, key)
|
||||
int count, key;
|
||||
rl_vi_yank_to (int count __attribute__((unused)), int key)
|
||||
{
|
||||
int c, save = rl_point;
|
||||
|
||||
@@ -1094,8 +1074,7 @@ rl_vi_delete (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_back_to_indent (count, key)
|
||||
int count, key;
|
||||
rl_vi_back_to_indent (int count __attribute__((unused)), int key)
|
||||
{
|
||||
rl_beg_of_line (1, key);
|
||||
while (rl_point < rl_end && whitespace (rl_line_buffer[rl_point]))
|
||||
@@ -1104,8 +1083,7 @@ rl_vi_back_to_indent (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_first_print (count, key)
|
||||
int count, key;
|
||||
rl_vi_first_print (int count __attribute__((unused)), int key)
|
||||
{
|
||||
return (rl_vi_back_to_indent (1, key));
|
||||
}
|
||||
@@ -1173,8 +1151,7 @@ rl_vi_char_search (count, key)
|
||||
|
||||
/* Match brackets */
|
||||
int
|
||||
rl_vi_match (ignore, key)
|
||||
int ignore, key;
|
||||
rl_vi_match (int ignore __attribute__((unused)), int key)
|
||||
{
|
||||
int count = 1, brack, pos, tmp, pre;
|
||||
|
||||
@@ -1284,8 +1261,7 @@ rl_vi_bracktype (c)
|
||||
for test against 033 or ^C. Make sure that _rl_read_mbchar does
|
||||
this right. */
|
||||
int
|
||||
rl_vi_change_char (count, key)
|
||||
int count, key;
|
||||
rl_vi_change_char (int count, int key __attribute__((unused)))
|
||||
{
|
||||
int c, p;
|
||||
|
||||
@@ -1389,8 +1365,7 @@ rl_vi_overstrike_delete (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_replace (count, key)
|
||||
int count, key;
|
||||
rl_vi_replace (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -1450,8 +1425,7 @@ rl_vi_possible_completions()
|
||||
|
||||
/* Functions to save and restore marks. */
|
||||
int
|
||||
rl_vi_set_mark (count, key)
|
||||
int count, key;
|
||||
rl_vi_set_mark (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
int ch;
|
||||
|
||||
@@ -1470,8 +1444,7 @@ rl_vi_set_mark (count, key)
|
||||
}
|
||||
|
||||
int
|
||||
rl_vi_goto_mark (count, key)
|
||||
int count, key;
|
||||
rl_vi_goto_mark (int count __attribute__((unused)), int key __attribute__((unused)))
|
||||
{
|
||||
int ch;
|
||||
|
||||
|
@@ -187,7 +187,7 @@ AC_DEFUN([MYSQL_SETUP_NDBCLUSTER], [
|
||||
ndb_cxxflags_fix=""
|
||||
TEST_NDBCLUSTER="--ndbcluster"
|
||||
|
||||
ndbcluster_includes="-I\$(top_builddir)/storage/ndb/include -I\$(top_builddir)/storage/ndb/include/ndbapi -I\$(top_builddir)/storage/ndb/include/mgmapi"
|
||||
ndbcluster_includes="-I\$(top_builddir)/storage/ndb/include -I\$(top_srcdir)/storage/ndb/include -I\$(top_srcdir)/storage/ndb/include/ndbapi -I\$(top_srcdir)/storage/ndb/include/mgmapi"
|
||||
ndbcluster_libs="\$(top_builddir)/storage/ndb/src/.libs/libndbclient.a"
|
||||
ndbcluster_system_libs=""
|
||||
ndb_mgmclient_libs="\$(top_builddir)/storage/ndb/src/mgmclient/libndbmgmclient.la"
|
||||
|
@@ -28,10 +28,9 @@ AC_DEFUN([MYSQL_USE_BUNDLED_YASSL], [
|
||||
yassl_dir="yassl"
|
||||
AC_SUBST([yassl_dir])
|
||||
|
||||
yassl_libs="-L\$(top_srcdir)/extra/yassl/src -lyassl -L\$(top_srcdir)/extra/yassl/taocrypt/src -ltaocrypt"
|
||||
yassl_libs="\$(top_builddir)/extra/yassl/src/libyassl.la \
|
||||
\$(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la"
|
||||
AC_SUBST(yassl_libs)
|
||||
yassl_includes="-I\$(top_srcdir)/extra/yassl/include"
|
||||
AC_SUBST(yassl_includes)
|
||||
|
||||
AC_DEFINE([HAVE_OPENSSL], [1], [Defined by configure. Using yaSSL for SSL.])
|
||||
AC_DEFINE([HAVE_YASSL], [1], [Defined by configure. Using yaSSL for SSL.])
|
||||
|
@@ -169,7 +169,7 @@ register unsigned long *child_time;
|
||||
*name_pos = temp->pos;
|
||||
*time_entered = temp->time;
|
||||
*child_time = temp->children;
|
||||
DBUG_PRINT ("pop", ("%d %d %d",*name_pos,*time_entered,*child_time));
|
||||
DBUG_PRINT ("pop", ("%d %lu %lu",*name_pos,*time_entered,*child_time));
|
||||
rtnval = stacktop--;
|
||||
}
|
||||
DBUG_RETURN (rtnval);
|
||||
@@ -334,12 +334,12 @@ FILE *inf;
|
||||
* function is found on the stack.
|
||||
*/
|
||||
while (pop (&oldpos, &oldtime, &oldchild)) {
|
||||
DBUG_PRINT ("popped", ("%d %d", oldtime, oldchild));
|
||||
DBUG_PRINT ("popped", ("%lu %lu", oldtime, oldchild));
|
||||
time = fn_time - oldtime;
|
||||
t = top ();
|
||||
t -> children += time;
|
||||
DBUG_PRINT ("update", ("%s", modules[t -> pos].name));
|
||||
DBUG_PRINT ("update", ("%d", t -> children));
|
||||
DBUG_PRINT ("update", ("%lu", t -> children));
|
||||
time -= oldchild;
|
||||
modules[oldpos].m_time += time;
|
||||
modules[oldpos].m_calls++;
|
||||
@@ -520,19 +520,19 @@ register unsigned long int *s_calls, *s_time;
|
||||
unsigned long int calls, time;
|
||||
|
||||
DBUG_ENTER ("out_body");
|
||||
DBUG_PRINT ("out_body", ("%d,%d",*s_calls,*s_time));
|
||||
DBUG_PRINT ("out_body", ("%lu,%lu",*s_calls,*s_time));
|
||||
if (root == MAXPROCS) {
|
||||
DBUG_PRINT ("out_body", ("%d,%d",*s_calls,*s_time));
|
||||
DBUG_PRINT ("out_body", ("%lu,%lu",*s_calls,*s_time));
|
||||
} else {
|
||||
while (root != MAXPROCS) {
|
||||
out_body (outf, s_table[root].lchild,s_calls,s_time);
|
||||
out_item (outf, &modules[s_table[root].pos],&calls,&time);
|
||||
DBUG_PRINT ("out_body", ("-- %d -- %d --", calls, time));
|
||||
DBUG_PRINT ("out_body", ("-- %lu -- %lu --", calls, time));
|
||||
*s_calls += calls;
|
||||
*s_time += time;
|
||||
root = s_table[root].rchild;
|
||||
}
|
||||
DBUG_PRINT ("out_body", ("%d,%d", *s_calls, *s_time));
|
||||
DBUG_PRINT ("out_body", ("%lu,%lu", *s_calls, *s_time));
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
INCLUDES = -I../include -I../taocrypt/include -I../taocrypt/mySTL
|
||||
INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../taocrypt/include -I$(srcdir)/../taocrypt/mySTL
|
||||
|
||||
noinst_LTLIBRARIES = libyassl.la
|
||||
libyassl_la_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \
|
||||
|
@@ -958,7 +958,7 @@ void ERR_print_errors_fp(FILE* /*fp*/)
|
||||
|
||||
char* ERR_error_string(unsigned long errNumber, char* buffer)
|
||||
{
|
||||
static char* msg = "Please supply a buffer for error string";
|
||||
static char* msg = (char*) "Please supply a buffer for error string";
|
||||
|
||||
if (buffer) {
|
||||
SetErrorString(YasslError(errNumber), buffer);
|
||||
|
@@ -1,4 +1,4 @@
|
||||
INCLUDES = -I../include -I../mySTL
|
||||
INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL
|
||||
bin_PROGRAMS = benchmark
|
||||
benchmark_SOURCES = benchmark.cpp
|
||||
benchmark_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
|
||||
|
@@ -42,7 +42,7 @@ RSC=rc.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I "..\..\mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\include" /I "..\mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@@ -65,7 +65,7 @@ LINK32=link.exe
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\..\mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
@@ -1,4 +1,4 @@
|
||||
INCLUDES = -I../include -I../mySTL
|
||||
INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL
|
||||
|
||||
noinst_LTLIBRARIES = libtaocrypt.la
|
||||
|
||||
|
@@ -41,7 +41,7 @@ RSC=rc.exe
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "include" /I "..\mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@@ -64,7 +64,7 @@ LIB32=link.exe -lib
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "..\mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# SUBTRACT CPP /Fr
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
|
@@ -21,7 +21,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="include,..\mySTL"
|
||||
AdditionalIncludeDirectories="include,mySTL"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
ExceptionHandling="FALSE"
|
||||
BasicRuntimeChecks="3"
|
||||
@@ -75,7 +75,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="include,..\mySTL"
|
||||
AdditionalIncludeDirectories="include,mySTL"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
StringPooling="TRUE"
|
||||
ExceptionHandling="FALSE"
|
||||
|
@@ -42,7 +42,7 @@ RSC=rc.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "../mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@@ -66,7 +66,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "../mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
@@ -1,4 +1,4 @@
|
||||
INCLUDES = -I../include -I../mySTL
|
||||
INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../mySTL
|
||||
bin_PROGRAMS = test
|
||||
test_SOURCES = test.cpp
|
||||
test_LDADD = $(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
|
||||
|
@@ -1,4 +1,4 @@
|
||||
INCLUDES = -I../include -I../taocrypt/include -I../taocrypt/mySTL
|
||||
INCLUDES = -I$(srcdir)/../include -I$(srcdir)/../taocrypt/include -I$(srcdir)/../taocrypt/mySTL
|
||||
bin_PROGRAMS = testsuite
|
||||
testsuite_SOURCES = testsuite.cpp ../taocrypt/test/test.cpp \
|
||||
../examples/client/client.cpp ../examples/server/server.cpp \
|
||||
|
@@ -86,8 +86,8 @@ int main(int argc, char** argv)
|
||||
// input output compare
|
||||
byte input[TaoCrypt::MD5::DIGEST_SIZE];
|
||||
byte output[TaoCrypt::MD5::DIGEST_SIZE];
|
||||
file_test("input", input);
|
||||
file_test("output", output);
|
||||
file_test((char*) "input", input);
|
||||
file_test((char*) "output", output);
|
||||
assert(memcmp(input, output, sizeof(input)) == 0);
|
||||
|
||||
printf("\nAll tests passed!\n");
|
||||
|
@@ -42,7 +42,7 @@ RSC=rc.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "../taocrypt/include" /I "../include" /I "../mySTL" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "../taocrypt/include" /I "../include" /I "../taocrypt/mySTL" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@@ -67,7 +67,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "../taocrypt/include" /I "../include" /I "../mySTL" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /FR /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "../taocrypt/include" /I "../include" /I "../taocrypt/mySTL" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "NO_MAIN_DRIVER" /FR /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
@@ -41,7 +41,7 @@ RSC=rc.exe
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "taocrypt\include" /I "mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /O2 /I "include" /I "taocrypt\include" /I "taocrypt\mySTL" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@@ -64,7 +64,7 @@ LIB32=link.exe -lib
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "taocrypt\include" /I "mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /FR /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /ZI /Od /I "include" /I "taocrypt\include" /I "taocrypt\mySTL" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "YASSL_PREFIX" /FR /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
|
@@ -21,7 +21,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="include,taocrypt\include,mySTL"
|
||||
AdditionalIncludeDirectories="include,taocrypt\include,taocrypt\mySTL"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;YASSL_PREFIX"
|
||||
ExceptionHandling="FALSE"
|
||||
BasicRuntimeChecks="3"
|
||||
@@ -75,7 +75,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="include,taocrypt\include,mySTL"
|
||||
AdditionalIncludeDirectories="include,taocrypt\include,taocrypt\mySTL"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;YASSL_PREFIX"
|
||||
StringPooling="TRUE"
|
||||
ExceptionHandling="FALSE"
|
||||
|
@@ -95,6 +95,7 @@ extern const char *client_errors[]; /* Error messages */
|
||||
#define CR_NO_STMT_METADATA 2052
|
||||
#define CR_NO_RESULT_SET 2053
|
||||
#define CR_NOT_IMPLEMENTED 2054
|
||||
#define CR_ERROR_LAST /*Copy last error nr:*/ 2054
|
||||
#define CR_SERVER_LOST_EXTENDED 2055
|
||||
#define CR_ERROR_LAST /*Copy last error nr:*/ 2055
|
||||
/* Add error numbers before CR_ERROR_LAST and change it accordingly. */
|
||||
|
||||
|
@@ -869,9 +869,8 @@ typedef long my_ptrdiff_t;
|
||||
typedef long long my_ptrdiff_t;
|
||||
#endif
|
||||
|
||||
#if HAVE_SIZE_T
|
||||
typedef size_t my_size_t;
|
||||
#elif SIZEOF_CHARP <= SIZEOF_LONG
|
||||
/* We can't set my_size_t to size_t as we want my_size_t to be unsigned */
|
||||
#if SIZEOF_CHARP <= SIZEOF_LONG
|
||||
typedef unsigned long my_size_t;
|
||||
#else
|
||||
typedef unsigned long long my_size_t;
|
||||
@@ -886,6 +885,22 @@ typedef unsigned long long my_size_t;
|
||||
#define ADD_TO_PTR(ptr,size,type) (type) ((byte*) (ptr)+size)
|
||||
#define PTR_BYTE_DIFF(A,B) (my_ptrdiff_t) ((byte*) (A) - (byte*) (B))
|
||||
|
||||
/*
|
||||
Custom version of standard offsetof() macro which can be used to get
|
||||
offsets of members in class for non-POD types (according to the current
|
||||
version of C++ standard offsetof() macro can't be used in such cases and
|
||||
attempt to do so causes warnings to be emitted, OTOH in many cases it is
|
||||
still OK to assume that all instances of the class has the same offsets
|
||||
for the same members).
|
||||
|
||||
This is temporary solution which should be removed once File_parser class
|
||||
and related routines are refactored.
|
||||
*/
|
||||
|
||||
#define my_offsetof(TYPE, MEMBER) \
|
||||
((size_t)((char *)&(((TYPE *)0x10)->MEMBER) - (char*)0x10))
|
||||
|
||||
|
||||
#define NullS (char *) 0
|
||||
/* Nowdays we do not support MessyDos */
|
||||
#ifndef NEAR
|
||||
|
@@ -73,6 +73,8 @@ typedef long my_time_t;
|
||||
#define TIME_MAX_VALUE (TIME_MAX_HOUR*10000 + TIME_MAX_MINUTE*100 + \
|
||||
TIME_MAX_SECOND)
|
||||
|
||||
my_bool check_date(const MYSQL_TIME *ltime, my_bool not_zero_date,
|
||||
ulong flags, int *was_cut);
|
||||
enum enum_mysql_timestamp_type
|
||||
str_to_datetime(const char *str, uint length, MYSQL_TIME *l_time,
|
||||
uint flags, int *was_cut);
|
||||
|
@@ -89,8 +89,8 @@ DEFS = -DDEFAULT_CHARSET_HOME="\"$(MYSQLBASEdir)\"" \
|
||||
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" $(target_defs)
|
||||
|
||||
if HAVE_YASSL
|
||||
yassl_las = $(top_srcdir)/extra/yassl/src/libyassl.la \
|
||||
$(top_srcdir)/extra/yassl/taocrypt/src/libtaocrypt.la
|
||||
yassl_las = $(top_builddir)/extra/yassl/src/libyassl.la \
|
||||
$(top_builddir)/extra/yassl/taocrypt/src/libtaocrypt.la
|
||||
endif
|
||||
|
||||
# The automatic dependencies miss this
|
||||
|
@@ -82,6 +82,7 @@ const char *client_errors[]=
|
||||
"Prepared statement contains no metadata",
|
||||
"Attempt to read a row while there is no result set associated with the statement",
|
||||
"This feature is not implemented yet",
|
||||
"Lost connection to MySQL server at '%s', system error: %d",
|
||||
""
|
||||
};
|
||||
|
||||
@@ -145,6 +146,7 @@ const char *client_errors[]=
|
||||
"Prepared statement contains no metadata",
|
||||
"Attempt to read a row while there is no result set associated with the statement",
|
||||
"This feature is not implemented yet",
|
||||
"Lost connection to MySQL server at '%s', system error: %d",
|
||||
""
|
||||
};
|
||||
|
||||
@@ -206,6 +208,7 @@ const char *client_errors[]=
|
||||
"Prepared statement contains no metadata",
|
||||
"Attempt to read a row while there is no result set associated with the statement",
|
||||
"This feature is not implemented yet",
|
||||
"Lost connection to MySQL server at '%s', system error: %d",
|
||||
""
|
||||
};
|
||||
#endif
|
||||
|
@@ -176,6 +176,7 @@ void STDCALL mysql_server_end()
|
||||
end_embedded_server();
|
||||
#endif
|
||||
/* If library called my_init(), free memory allocated by it */
|
||||
finish_client_errs();
|
||||
if (!org_my_init_done)
|
||||
{
|
||||
my_end(MY_DONT_FREE_DBUG);
|
||||
@@ -184,8 +185,6 @@ void STDCALL mysql_server_end()
|
||||
}
|
||||
else
|
||||
mysql_thread_end();
|
||||
finish_client_errs();
|
||||
free_charsets();
|
||||
vio_end();
|
||||
mysql_client_init= org_my_init_done= 0;
|
||||
#ifdef EMBEDDED_SERVER
|
||||
@@ -2094,7 +2093,7 @@ mysql_stmt_prepare(MYSQL_STMT *stmt, const char *query, ulong length)
|
||||
}
|
||||
stmt->bind= stmt->params + stmt->param_count;
|
||||
stmt->state= MYSQL_STMT_PREPARE_DONE;
|
||||
DBUG_PRINT("info", ("Parameter count: %ld", stmt->param_count));
|
||||
DBUG_PRINT("info", ("Parameter count: %u", stmt->param_count));
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
@@ -2437,10 +2436,10 @@ static my_bool store_param(MYSQL_STMT *stmt, MYSQL_BIND *param)
|
||||
{
|
||||
NET *net= &stmt->mysql->net;
|
||||
DBUG_ENTER("store_param");
|
||||
DBUG_PRINT("enter",("type: %d, buffer:%lx, length: %lu is_null: %d",
|
||||
DBUG_PRINT("enter",("type: %d buffer: 0x%lx length: %lu is_null: %d",
|
||||
param->buffer_type,
|
||||
param->buffer ? param->buffer : "0", *param->length,
|
||||
*param->is_null));
|
||||
(long) (param->buffer ? param->buffer : NullS),
|
||||
*param->length, *param->is_null));
|
||||
|
||||
if (*param->is_null)
|
||||
store_param_null(net, param);
|
||||
@@ -3319,8 +3318,8 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number,
|
||||
MYSQL_BIND *param;
|
||||
DBUG_ENTER("mysql_stmt_send_long_data");
|
||||
DBUG_ASSERT(stmt != 0);
|
||||
DBUG_PRINT("enter",("param no : %d, data : %lx, length : %ld",
|
||||
param_number, data, length));
|
||||
DBUG_PRINT("enter",("param no: %d data: 0x%lx, length : %ld",
|
||||
param_number, (long) data, length));
|
||||
|
||||
/*
|
||||
We only need to check for stmt->param_count, if it's not null
|
||||
@@ -4403,7 +4402,7 @@ my_bool STDCALL mysql_stmt_bind_result(MYSQL_STMT *stmt, MYSQL_BIND *bind)
|
||||
ulong bind_count= stmt->field_count;
|
||||
uint param_count= 0;
|
||||
DBUG_ENTER("mysql_stmt_bind_result");
|
||||
DBUG_PRINT("enter",("field_count: %d", bind_count));
|
||||
DBUG_PRINT("enter",("field_count: %lu", bind_count));
|
||||
|
||||
if (!bind_count)
|
||||
{
|
||||
@@ -4763,14 +4762,6 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
if (result->data)
|
||||
{
|
||||
free_root(&result->alloc, MYF(MY_KEEP_PREALLOC));
|
||||
result->data= NULL;
|
||||
result->rows= 0;
|
||||
stmt->data_cursor= NULL;
|
||||
}
|
||||
|
||||
if (stmt->update_max_length && !stmt->bind_result_done)
|
||||
{
|
||||
/*
|
||||
|
@@ -36,12 +36,9 @@ libmysqlclient_r_la_LDFLAGS = $(target_ldflags)
|
||||
# This is called from the toplevel makefile
|
||||
link_sources:
|
||||
set -x; \
|
||||
for f in `cd $(top_srcdir)/libmysql && echo *.[ch]`; do \
|
||||
for d in $(top_srcdir)/libmysql $(top_builddir)/libmysql; do \
|
||||
for f in `cd $$d && echo *.[ch]`; do \
|
||||
rm -f $$f; \
|
||||
@LN_CP_F@ $(top_srcdir)/libmysql/$$f $$f; \
|
||||
@LN_CP_F@ $$d/$$f $$f; \
|
||||
done; \
|
||||
done
|
||||
for f in `cd $(top_builddir)/libmysql && echo *.[ch]`; do \
|
||||
rm -f $$f; \
|
||||
@LN_CP_F@ $(top_builddir)/libmysql/$$f $$f; \
|
||||
done
|
||||
|
||||
|
@@ -29,8 +29,8 @@ DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
|
||||
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" \
|
||||
-DLIBDIR="\"$(MYSQLLIBdir)\""
|
||||
INCLUDES= -I$(top_builddir)/include -I$(top_srcdir)/include \
|
||||
-I$(top_builddir)/include -I$(top_srcdir)/include \
|
||||
-I$(top_srcdir)/sql -I$(top_srcdir)/sql/examples \
|
||||
-I$(top_builddir)/sql -I$(top_srcdir)/sql \
|
||||
-I$(top_srcdir)/sql/examples \
|
||||
-I$(top_srcdir)/regex \
|
||||
$(openssl_includes) @ZLIB_INCLUDES@ \
|
||||
@condition_dependent_plugin_includes@
|
||||
@@ -94,8 +94,8 @@ INC_LIB= $(top_builddir)/regex/libregex.a \
|
||||
$(yassl_inc_libs)
|
||||
|
||||
if HAVE_YASSL
|
||||
yassl_inc_libs= $(top_srcdir)/extra/yassl/src/.libs/libyassl.a \
|
||||
$(top_srcdir)/extra/yassl/taocrypt/src/.libs/libtaocrypt.a
|
||||
yassl_inc_libs= $(top_builddir)/extra/yassl/src/.libs/libyassl.a \
|
||||
$(top_builddir)/extra/yassl/taocrypt/src/.libs/libtaocrypt.a
|
||||
endif
|
||||
|
||||
# Storage engine specific compilation options
|
||||
@@ -155,16 +155,28 @@ endif
|
||||
#libmysqld_la_LDFLAGS = -version-info @SHARED_LIB_VERSION@
|
||||
#CLEANFILES = $(libmysqld_la_LIBADD) libmysqld.la
|
||||
|
||||
# This is called from the toplevel makefile
|
||||
# This is called from the toplevel makefile. If we can link now
|
||||
# to an existing file in source, we do that, else we assume it
|
||||
# will show up in the build tree eventually (generated file).
|
||||
link_sources:
|
||||
set -x; \
|
||||
for f in $(sqlsources); do \
|
||||
rm -f $$f; \
|
||||
if test -e $(top_srcdir)/sql/$$f ; \
|
||||
then \
|
||||
@LN_CP_F@ $(top_srcdir)/sql/$$f $$f; \
|
||||
else \
|
||||
@LN_CP_F@ $(top_builddir)/sql/$$f $$f; \
|
||||
fi ; \
|
||||
done; \
|
||||
for f in $(libmysqlsources); do \
|
||||
rm -f $$f; \
|
||||
if test -e $(top_srcdir)/libmysql/$$f ; \
|
||||
then \
|
||||
@LN_CP_F@ $(top_srcdir)/libmysql/$$f $$f; \
|
||||
else \
|
||||
@LN_CP_F@ $(top_builddir)/libmysql/$$f $$f; \
|
||||
fi ; \
|
||||
done; \
|
||||
if test -n "$(sqlstoragesources)" ; \
|
||||
then \
|
||||
|
@@ -100,6 +100,7 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
|
||||
mysql->affected_rows= ~(my_ulonglong) 0;
|
||||
mysql->field_count= 0;
|
||||
net->last_errno= 0;
|
||||
thd->current_stmt= stmt;
|
||||
|
||||
thd->store_globals(); // Fix if more than one connect
|
||||
/*
|
||||
|
@@ -206,7 +206,7 @@ mysql_real_connect(MYSQL *mysql,const char *host, const char *user,
|
||||
}
|
||||
}
|
||||
|
||||
DBUG_PRINT("exit",("Mysql handler: %lx",mysql));
|
||||
DBUG_PRINT("exit",("Mysql handler: 0x%lx", (long) mysql));
|
||||
DBUG_RETURN(mysql);
|
||||
|
||||
error:
|
||||
|
@@ -5,7 +5,7 @@ source ./include/master-slave.inc;
|
||||
# remote table creation
|
||||
|
||||
connection slave;
|
||||
--replicate-ignore-db=federated
|
||||
#--replicate-ignore-db=federated
|
||||
stop slave;
|
||||
|
||||
--disable_warnings
|
||||
|
@@ -22,4 +22,5 @@ SHOW VARIABLES LIKE 'server_id';
|
||||
# Check that IM understands that mysqld1 is online, while mysqld2 is
|
||||
# offline.
|
||||
|
||||
--replace_result starting XXXXX online XXXXX
|
||||
SHOW INSTANCES;
|
||||
|
@@ -1588,7 +1588,7 @@ INSERT INTO t1 (id) VALUES (NULL);
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
-- Test that foreign keys in temporary tables are not accepted (bug #12084)
|
||||
# Test that foreign keys in temporary tables are not accepted (bug #12084)
|
||||
eval CREATE TABLE t1
|
||||
(
|
||||
id INT PRIMARY KEY
|
||||
|
@@ -7,7 +7,7 @@
|
||||
# 1.
|
||||
--connection slave
|
||||
--replace_column 1 <the_epoch>
|
||||
SELECT @the_epoch:=MAX(epoch) FROM cluster.apply_status;
|
||||
SELECT @the_epoch:=MAX(epoch) FROM mysql.apply_status;
|
||||
--let $the_epoch= `select @the_epoch`
|
||||
|
||||
# 2.
|
||||
@@ -15,7 +15,7 @@ SELECT @the_epoch:=MAX(epoch) FROM cluster.apply_status;
|
||||
--replace_result $the_epoch <the_epoch>
|
||||
--replace_column 1 <the_pos>
|
||||
eval SELECT @the_pos:=Position,@the_file:=SUBSTRING_INDEX(FILE, '/', -1)
|
||||
FROM cluster.binlog_index WHERE epoch > $the_epoch ORDER BY epoch ASC LIMIT 1;
|
||||
FROM mysql.binlog_index WHERE epoch > $the_epoch ORDER BY epoch ASC LIMIT 1;
|
||||
--let $the_pos= `SELECT @the_pos`
|
||||
--let $the_file= `SELECT @the_file`
|
||||
|
||||
|
@@ -100,4 +100,82 @@ eval set GLOBAL query_cache_size=$save_query_cache_size;
|
||||
--enable_query_log
|
||||
}
|
||||
|
||||
# End of 4.1 tests
|
||||
#
|
||||
# Test query cache with two interleaving transactions
|
||||
#
|
||||
|
||||
# Establish connection1
|
||||
connect (connection1,localhost,root,,);
|
||||
eval SET SESSION STORAGE_ENGINE = $engine_type;
|
||||
SET @@autocommit=1;
|
||||
|
||||
connection default;
|
||||
--echo connection default
|
||||
# This should be 'YES'.
|
||||
SHOW VARIABLES LIKE 'have_query_cache';
|
||||
|
||||
SET GLOBAL query_cache_size = 200000;
|
||||
flush status;
|
||||
SET @@autocommit=1;
|
||||
eval SET SESSION STORAGE_ENGINE = $engine_type;
|
||||
CREATE TABLE t2 (s1 int, s2 varchar(1000), key(s1));
|
||||
INSERT INTO t2 VALUES (1,repeat('a',10)),(2,repeat('a',10)),(3,repeat('a',10)),(4,repeat('a',10));
|
||||
COMMIT;
|
||||
START TRANSACTION;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
UPDATE t2 SET s2 = 'w' WHERE s1 = 3;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
show status like "Qcache_queries_in_cache";
|
||||
|
||||
connection connection1;
|
||||
--echo connection connection1
|
||||
START TRANSACTION;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
INSERT INTO t2 VALUES (5,'w');
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
COMMIT;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
|
||||
show status like "Qcache_queries_in_cache";
|
||||
|
||||
connection default;
|
||||
--echo connection default
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
COMMIT;
|
||||
|
||||
show status like "Qcache_queries_in_cache";
|
||||
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
show status like "Qcache_queries_in_cache";
|
||||
|
||||
connection connection1;
|
||||
--echo connection connection1
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
|
||||
START TRANSACTION;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
INSERT INTO t2 VALUES (6,'w');
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
|
||||
connection default;
|
||||
--echo connection default
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
START TRANSACTION;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
DELETE from t2 WHERE s1=3;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
COMMIT;
|
||||
|
||||
connection connection1;
|
||||
--echo connection connection1
|
||||
|
||||
COMMIT;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
|
||||
show status like "Qcache_queries_in_cache";
|
||||
show status like "Qcache_hits";
|
||||
|
||||
# Final cleanup
|
||||
connection default;
|
||||
drop table t2;
|
||||
disconnect connection1;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
delimiter |;
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE PROCEDURE sp_vars_check_dflt()
|
||||
BEGIN
|
||||
@@ -40,7 +40,7 @@ BEGIN
|
||||
SELECT v17, v18, v19, v20;
|
||||
END|
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE PROCEDURE sp_vars_check_assignment()
|
||||
BEGIN
|
||||
@@ -89,35 +89,35 @@ BEGIN
|
||||
SELECT d1, d2, d3;
|
||||
END|
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_check_ret1() RETURNS TINYINT
|
||||
BEGIN
|
||||
RETURN 1e200;
|
||||
END|
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_check_ret2() RETURNS TINYINT
|
||||
BEGIN
|
||||
RETURN 10 * 10 * 10;
|
||||
END|
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_check_ret3() RETURNS TINYINT
|
||||
BEGIN
|
||||
RETURN 'Hello, world';
|
||||
END|
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_check_ret4() RETURNS DECIMAL(64, 2)
|
||||
BEGIN
|
||||
RETURN 12 * 10 + 34 + 0.1234;
|
||||
END|
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
CREATE FUNCTION sp_vars_div_zero() RETURNS INTEGER
|
||||
BEGIN
|
||||
@@ -126,6 +126,6 @@ BEGIN
|
||||
RETURN div_zero;
|
||||
END|
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
delimiter ;|
|
||||
|
@@ -634,5 +634,4 @@ CREATE TABLE event (
|
||||
PRIMARY KEY (db, name)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 'Events';
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS cluster;
|
||||
CREATE TABLE IF NOT EXISTS cluster.binlog_index (Position BIGINT UNSIGNED NOT NULL, File VARCHAR(255) NOT NULL, epoch BIGINT UNSIGNED NOT NULL, inserts BIGINT UNSIGNED NOT NULL, updates BIGINT UNSIGNED NOT NULL, deletes BIGINT UNSIGNED NOT NULL, schemaops BIGINT UNSIGNED NOT NULL, PRIMARY KEY(epoch)) ENGINE=MYISAM;
|
||||
CREATE TABLE IF NOT EXISTS mysql.binlog_index (Position BIGINT UNSIGNED NOT NULL, File VARCHAR(255) NOT NULL, epoch BIGINT UNSIGNED NOT NULL, inserts BIGINT UNSIGNED NOT NULL, updates BIGINT UNSIGNED NOT NULL, deletes BIGINT UNSIGNED NOT NULL, schemaops BIGINT UNSIGNED NOT NULL, PRIMARY KEY(epoch)) ENGINE=MYISAM;
|
||||
|
@@ -708,7 +708,7 @@ sub mtr_wait_blocking($) {
|
||||
}
|
||||
}
|
||||
|
||||
# Start "mysqladmin shutdown" for a specific mysqld
|
||||
# Start "mysqladmin <command>" for a specific mysqld
|
||||
sub mtr_mysqladmin_start($$$) {
|
||||
my $srv= shift;
|
||||
my $command= shift;
|
||||
@@ -738,9 +738,8 @@ sub mtr_mysqladmin_start($$$) {
|
||||
# Shutdown time must be high as slave may be in reconnect
|
||||
mtr_add_arg($args, "--shutdown_timeout=$adm_shutdown_tmo");
|
||||
mtr_add_arg($args, "$command");
|
||||
my $path_mysqladmin_log= "$::opt_vardir/log/mysqladmin.log";
|
||||
my $pid= mtr_spawn($::exe_mysqladmin, $args,
|
||||
"", $path_mysqladmin_log, $path_mysqladmin_log, "",
|
||||
"", "", "", "",
|
||||
{ append_log_file => 1 });
|
||||
mtr_verbose("mtr_mysqladmin_start, pid: $pid");
|
||||
return $pid;
|
||||
|
@@ -43,7 +43,7 @@ sub mtr_show_failed_diff ($) {
|
||||
|
||||
my $reject_file= "r/$tname.reject";
|
||||
my $result_file= "r/$tname.result";
|
||||
my $log_file= "r/$tname.log";
|
||||
my $log_file= "$::opt_vardir/log/$tname.log";
|
||||
my $eval_file= "r/$tname.eval";
|
||||
|
||||
if ( $::opt_suite ne "main" )
|
||||
@@ -94,10 +94,14 @@ sub mtr_report_test_skipped ($) {
|
||||
{
|
||||
print "[ disabled ] $tinfo->{'comment'}\n";
|
||||
}
|
||||
else
|
||||
elsif ( $tinfo->{'comment'} )
|
||||
{
|
||||
print "[ skipped ] $tinfo->{'comment'}\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "[ skipped ]\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub mtr_report_tests_not_skipped_though_disabled ($) {
|
||||
@@ -248,6 +252,7 @@ sub mtr_report_stats ($) {
|
||||
foreach my $pattern ( "^Warning:", "^Error:", "^==.* at 0x",
|
||||
"InnoDB: Warning", "missing DBUG_RETURN",
|
||||
"mysqld: Warning",
|
||||
"allocated at line",
|
||||
"Attempting backtrace", "Assertion .* failed" )
|
||||
{
|
||||
foreach my $errlog ( sort glob("$::opt_vardir/log/*.err") )
|
||||
|
156
mysql-test/lib/mtr_unique.pl
Normal file
156
mysql-test/lib/mtr_unique.pl
Normal file
@@ -0,0 +1,156 @@
|
||||
#
|
||||
# This file is used from mysql-test-run.pl when choosing
|
||||
# port numbers and directories to use for running mysqld.
|
||||
#
|
||||
|
||||
use strict;
|
||||
use Fcntl ':flock';
|
||||
|
||||
#
|
||||
# Requested IDs are stored in a hash and released upon END.
|
||||
#
|
||||
my %mtr_unique_assigned_ids = ();
|
||||
END {
|
||||
while(my ($id,$file) = each(%mtr_unique_assigned_ids)) {
|
||||
print "Autoreleasing $file:$id\n";
|
||||
mtr_release_unique_id($file, $id);
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# Require a unique, numerical ID, given a file name (where all
|
||||
# requested IDs are stored), a minimum and a maximum value.
|
||||
#
|
||||
# We use flock to implement locking for the ID file and ignore
|
||||
# possible problems arising from lack of support for it on
|
||||
# some platforms (it should work on most, and the possible
|
||||
# race condition would occur rarely). The proper solution for
|
||||
# this is a daemon that manages IDs, of course.
|
||||
#
|
||||
# If no unique ID within the specified parameters can be
|
||||
# obtained, return undef.
|
||||
#
|
||||
sub mtr_require_unique_id($$$) {
|
||||
my $file = shift;
|
||||
my $min = shift;
|
||||
my $max = shift;
|
||||
my $ret = undef;
|
||||
my $changed = 0;
|
||||
|
||||
my $can_use_ps = `ps -e | grep '^[ ]*$$ '`;
|
||||
|
||||
if(eval("readlink '$file'") || eval("readlink '$file.sem'")) {
|
||||
die 'lock file is a symbolic link';
|
||||
}
|
||||
|
||||
chmod 0777, "$file.sem";
|
||||
open SEM, ">", "$file.sem" or die "can't write to $file.sem";
|
||||
flock SEM, LOCK_EX or die "can't lock $file.sem";
|
||||
if(! -e $file) {
|
||||
open FILE, ">", $file or die "can't create $file";
|
||||
close FILE;
|
||||
}
|
||||
|
||||
if(eval("readlink '$file'") || eval("readlink '$file.sem'")) {
|
||||
die 'lock file is a symbolic link';
|
||||
}
|
||||
|
||||
chmod 0777, $file;
|
||||
open FILE, "+<", $file or die "can't open $file";
|
||||
select undef,undef,undef,0.2;
|
||||
seek FILE, 0, 0;
|
||||
my %taken = ();
|
||||
while(<FILE>) {
|
||||
chomp;
|
||||
my ($id, $pid) = split / /;
|
||||
$taken{$id} = $pid;
|
||||
if($can_use_ps) {
|
||||
my $res = `ps -e | grep '^[ ]*$pid '`;
|
||||
if(!$res) {
|
||||
print "Ignoring slot $id used by missing process $pid.\n";
|
||||
delete $taken{$id};
|
||||
++$changed;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(my $i=$min; $i<=$max; ++$i) {
|
||||
if(! exists $taken{$i}) {
|
||||
$ret = $i;
|
||||
$taken{$i} = $$;
|
||||
++$changed;
|
||||
last;
|
||||
}
|
||||
}
|
||||
if($changed) {
|
||||
seek FILE, 0, 0;
|
||||
truncate FILE, 0 or die "can't truncate $file";
|
||||
for my $k (keys %taken) {
|
||||
print FILE $k . ' ' . $taken{$k} . "\n";
|
||||
}
|
||||
}
|
||||
close FILE;
|
||||
flock SEM, LOCK_UN or warn "can't unlock $file.sem";
|
||||
close SEM;
|
||||
$mtr_unique_assigned_ids{$ret} = $file if defined $ret;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
#
|
||||
# Require a unique ID like above, but sleep if no ID can be
|
||||
# obtained immediately.
|
||||
#
|
||||
sub mtr_require_unique_id_and_wait($$$) {
|
||||
my $ret = mtr_require_unique_id($_[0],$_[1],$_[2]);
|
||||
while(! defined $ret) {
|
||||
sleep 30;
|
||||
$ret = mtr_require_unique_id($_[0],$_[1],$_[2]);
|
||||
print "Waiting for unique id to become available...\n" unless $ret;
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
#
|
||||
# Release a unique ID.
|
||||
#
|
||||
sub mtr_release_unique_id($$) {
|
||||
my $file = shift;
|
||||
my $myid = shift;
|
||||
|
||||
if(eval("readlink '$file'") || eval("readlink '$file.sem'")) {
|
||||
die 'lock file is a symbolic link';
|
||||
}
|
||||
|
||||
open SEM, ">", "$file.sem" or die "can't write to $file.sem";
|
||||
flock SEM, LOCK_EX or die "can't lock $file.sem";
|
||||
|
||||
if(eval("readlink '$file'") || eval("readlink '$file.sem'")) {
|
||||
die 'lock file is a symbolic link';
|
||||
}
|
||||
|
||||
if(! -e $file) {
|
||||
open FILE, ">", $file or die "can't create $file";
|
||||
close FILE;
|
||||
}
|
||||
open FILE, "+<", $file or die "can't open $file";
|
||||
select undef,undef,undef,0.2;
|
||||
seek FILE, 0, 0;
|
||||
my %taken = ();
|
||||
while(<FILE>) {
|
||||
chomp;
|
||||
my ($id, $pid) = split / /;
|
||||
$taken{$id} = $pid;
|
||||
}
|
||||
delete $taken{$myid};
|
||||
seek FILE, 0, 0;
|
||||
truncate FILE, 0 or die "can't truncate $file";
|
||||
for my $k (keys %taken) {
|
||||
print FILE $k . ' ' . $taken{$k} . "\n";
|
||||
}
|
||||
close FILE;
|
||||
flock SEM, LOCK_UN or warn "can't unlock $file.sem";
|
||||
close SEM;
|
||||
delete $mtr_unique_assigned_ids{$myid};
|
||||
}
|
||||
|
||||
1;
|
||||
|
@@ -129,7 +129,7 @@ find_valgrind()
|
||||
fi
|
||||
# >=2.1.2 requires the --tool option, some versions write to stdout, some to stderr
|
||||
valgrind --help 2>&1 | grep "\-\-tool" > /dev/null && FIND_VALGRIND="$FIND_VALGRIND --tool=memcheck"
|
||||
FIND_VALGRIND="$FIND_VALGRIND --alignment=8 --leak-check=yes --num-callers=16 --suppressions=$CWD/valgrind.supp"
|
||||
FIND_VALGRIND="$FIND_VALGRIND --alignment=8 --leak-check=yes --num-callers=16 --suppressions=$MYSQL_TEST_DIR/valgrind.supp"
|
||||
}
|
||||
|
||||
# No paths below as we can't be sure where the program is!
|
||||
@@ -188,19 +188,14 @@ if [ -d ./sql ] ; then
|
||||
SOURCE_DIST=1
|
||||
else
|
||||
BINARY_DIST=1
|
||||
fi
|
||||
|
||||
# ... one level for tar.gz, two levels for a RPM installation
|
||||
if [ -d ./bin ] ; then
|
||||
# this is not perfect: we have
|
||||
# /usr/share/mysql/ # mysql-test-run is here, so this is "$MYSQL_TEST_DIR"
|
||||
# /usr/bin/ # with MySQL client programs
|
||||
# so the existence of "/usr/share/bin/" would make this test fail.
|
||||
BASEDIR=`pwd`
|
||||
else
|
||||
# ... one level for tar.gz, two levels for a RPM installation
|
||||
if [ ! -f ./bin/mysql_upgrade ] ; then
|
||||
# Has to be RPM installation
|
||||
cd ..
|
||||
BASEDIR=`pwd`
|
||||
fi
|
||||
fi
|
||||
BASEDIR=`pwd`
|
||||
|
||||
cd $MYSQL_TEST_DIR
|
||||
MYSQL_TEST_WINDIR=$MYSQL_TEST_DIR
|
||||
@@ -900,15 +895,15 @@ fi
|
||||
# Save path and name of mysqldump
|
||||
MYSQL_DUMP_DIR="$MYSQL_DUMP"
|
||||
export MYSQL_DUMP_DIR
|
||||
MYSQL_CHECK="$MYSQL_CHECK --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLCHECK_OPT"
|
||||
MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
MYSQL_CHECK="$MYSQL_CHECK --no-defaults --debug-info -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLCHECK_OPT"
|
||||
MYSQL_DUMP="$MYSQL_DUMP --no-defaults --debug-info -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
MYSQL_SLAP="$MYSQL_SLAP -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLSLAP_OPT"
|
||||
MYSQL_DUMP_SLAVE="$MYSQL_DUMP_DIR --no-defaults -uroot --socket=$SLAVE_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
MYSQL_SHOW="$MYSQL_SHOW -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLSHOW_OPT"
|
||||
MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR --character-sets-dir=$CHARSETSDIR $EXTRA_MYSQLBINLOG_OPT"
|
||||
MYSQL_IMPORT="$MYSQL_IMPORT -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
MYSQL_SHOW="$MYSQL_SHOW --no-defaults --debug-info -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLSHOW_OPT"
|
||||
MYSQL_BINLOG="$MYSQL_BINLOG --debug-info --no-defaults --local-load=$MYSQL_TMP_DIR --character-sets-dir=$CHARSETSDIR $EXTRA_MYSQLBINLOG_OPT"
|
||||
MYSQL_IMPORT="$MYSQL_IMPORT --debug-info -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT"
|
||||
MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose"
|
||||
MYSQL="$MYSQL --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD"
|
||||
MYSQL="$MYSQL --no-defaults --debug-info --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD"
|
||||
export MYSQL MYSQL_CHECK MYSQL_DUMP MYSQL_DUMP_SLAVE MYSQL_SHOW MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES MYSQL_IMPORT
|
||||
export CLIENT_BINDIR MYSQL_CLIENT_TEST CHARSETSDIR MYSQL_MY_PRINT_DEFAULTS
|
||||
export MYSQL_SLAP
|
||||
@@ -1281,8 +1276,8 @@ start_ndbcluster()
|
||||
|
||||
rm_ndbcluster_tables()
|
||||
{
|
||||
$RM -f $1/cluster/apply_status*
|
||||
$RM -f $1/cluster/schema*
|
||||
$RM -f $1/mysql/apply_status*
|
||||
$RM -f $1/mysql/schema*
|
||||
}
|
||||
|
||||
stop_ndbcluster()
|
||||
@@ -2182,12 +2177,15 @@ then
|
||||
# Remove files that can cause problems
|
||||
$RM -rf $MYSQL_TEST_DIR/var/ndbcluster
|
||||
$RM -rf $MYSQL_TEST_DIR/var/tmp/snapshot*
|
||||
$RM -f $MYSQL_TEST_DIR/var/run/* $MYSQL_TEST_DIR/var/tmp/*
|
||||
$RM -rf $MYSQL_TEST_DIR/var/run/* $MYSQL_TEST_DIR/var/tmp/*
|
||||
|
||||
# Remove old berkeley db log files that can confuse the server
|
||||
$RM -f $MASTER_MYDDIR/log.*
|
||||
$RM -f $MASTER_MYDDIR"1"/log.*
|
||||
|
||||
# Remove old log and reject files
|
||||
$RM -f r/*.reject r/*.progress r/*.log r/*.warnings
|
||||
|
||||
wait_for_master=$SLEEP_TIME_FOR_FIRST_MASTER
|
||||
wait_for_slave=$SLEEP_TIME_FOR_FIRST_SLAVE
|
||||
$ECHO "Installing Test Databases"
|
||||
|
@@ -63,10 +63,8 @@ use Getopt::Long;
|
||||
use Sys::Hostname;
|
||||
use IO::Socket;
|
||||
use IO::Socket::INET;
|
||||
use Data::Dumper;
|
||||
use strict;
|
||||
use warnings;
|
||||
use diagnostics;
|
||||
|
||||
select(STDOUT);
|
||||
$| = 1; # Automatically flush STDOUT
|
||||
@@ -88,6 +86,7 @@ require "lib/mtr_diff.pl";
|
||||
require "lib/mtr_match.pl";
|
||||
require "lib/mtr_misc.pl";
|
||||
require "lib/mtr_stress.pl";
|
||||
require "lib/mtr_unique.pl";
|
||||
|
||||
$Devel::Trace::TRACE= 1;
|
||||
|
||||
@@ -203,6 +202,7 @@ our $opt_client_ddd;
|
||||
our $opt_manual_gdb;
|
||||
our $opt_manual_ddd;
|
||||
our $opt_manual_debug;
|
||||
our $opt_mtr_build_thread=0;
|
||||
our $opt_debugger;
|
||||
our $opt_client_debugger;
|
||||
|
||||
@@ -217,6 +217,11 @@ our $clusters;
|
||||
|
||||
our $instance_manager;
|
||||
|
||||
our $opt_master_myport;
|
||||
our $opt_slave_myport;
|
||||
our $im_port;
|
||||
our $im_mysqld1_port;
|
||||
our $im_mysqld2_port;
|
||||
our $opt_ndbcluster_port;
|
||||
our $opt_ndbconnectstring;
|
||||
our $opt_ndbcluster_port_slave;
|
||||
@@ -311,11 +316,13 @@ my $source_dist= 0;
|
||||
sub main ();
|
||||
sub initial_setup ();
|
||||
sub command_line_setup ();
|
||||
sub datadir_setup ();
|
||||
sub set_mtr_build_thread_ports($);
|
||||
sub datadir_list_setup ();
|
||||
sub executable_setup ();
|
||||
sub environment_setup ();
|
||||
sub kill_running_servers ();
|
||||
sub cleanup_stale_files ();
|
||||
sub remove_stale_vardir ();
|
||||
sub setup_vardir ();
|
||||
sub check_ssl_support ($);
|
||||
sub check_running_as_root();
|
||||
sub check_ndbcluster_support ($);
|
||||
@@ -439,7 +446,6 @@ sub main () {
|
||||
mtr_exit(0);
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Default settings
|
||||
@@ -453,45 +459,26 @@ sub command_line_setup () {
|
||||
$opt_suite= "main"; # Special default suite
|
||||
my $opt_comment;
|
||||
|
||||
my $opt_master_myport= 9306;
|
||||
my $opt_slave_myport= 9308;
|
||||
$opt_master_myport= 9306;
|
||||
$opt_slave_myport= 9308;
|
||||
$opt_ndbcluster_port= 9310;
|
||||
$opt_ndbcluster_port_slave= 9311;
|
||||
my $im_port= 9312;
|
||||
my $im_mysqld1_port= 9313;
|
||||
my $im_mysqld2_port= 9314;
|
||||
$im_port= 9312;
|
||||
$im_mysqld1_port= 9313;
|
||||
$im_mysqld2_port= 9314;
|
||||
|
||||
#
|
||||
# To make it easier for different devs to work on the same host,
|
||||
# an environment variable can be used to control all ports. A small
|
||||
# number is to be used, 0 - 16 or similar.
|
||||
#
|
||||
# Note the MASTER_MYPORT has to be set the same in all 4.x and 5.x
|
||||
# versions of this script, else a 4.0 test run might conflict with a
|
||||
# 5.1 test run, even if different MTR_BUILD_THREAD is used. This means
|
||||
# all port numbers might not be used in this version of the script.
|
||||
#
|
||||
# Also note the limiteation of ports we are allowed to hand out. This
|
||||
# differs between operating systems and configuration, see
|
||||
# http://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html
|
||||
# But a fairly safe range seems to be 5001 - 32767
|
||||
if ( $ENV{'MTR_BUILD_THREAD'} )
|
||||
{
|
||||
# Up to two masters, up to three slaves
|
||||
$opt_master_myport= $ENV{'MTR_BUILD_THREAD'} * 10 + 10000; # and 1
|
||||
$opt_slave_myport= $opt_master_myport + 2; # and 3 4
|
||||
$opt_ndbcluster_port= $opt_master_myport + 5;
|
||||
$opt_ndbcluster_port_slave= $opt_master_myport + 6;
|
||||
$im_port= $opt_master_myport + 7;
|
||||
$im_mysqld1_port= $opt_master_myport + 8;
|
||||
$im_mysqld2_port= $opt_master_myport + 9;
|
||||
# If so requested, we try to avail ourselves of a unique build thread number.
|
||||
if ( $ENV{'MTR_BUILD_THREAD'} ) {
|
||||
if ( lc($ENV{'MTR_BUILD_THREAD'}) eq 'auto' ) {
|
||||
print "Requesting build thread... ";
|
||||
$ENV{'MTR_BUILD_THREAD'} = mtr_require_unique_id_and_wait("/tmp/mysql-test-ports", 200, 299);
|
||||
print "got ".$ENV{'MTR_BUILD_THREAD'}."\n";
|
||||
}
|
||||
}
|
||||
|
||||
if ( $opt_master_myport < 5001 or $opt_master_myport + 10 >= 32767 )
|
||||
if ( $ENV{'MTR_BUILD_THREAD'} )
|
||||
{
|
||||
mtr_error("MTR_BUILD_THREAD number results in a port",
|
||||
"outside 5001 - 32767",
|
||||
"($opt_master_myport - $opt_master_myport + 10)");
|
||||
set_mtr_build_thread_ports($ENV{'MTR_BUILD_THREAD'});
|
||||
}
|
||||
|
||||
# This is needed for test log evaluation in "gen-build-status-page"
|
||||
@@ -543,6 +530,7 @@ sub command_line_setup () {
|
||||
'im-port=i' => \$im_port, # Instance Manager port.
|
||||
'im-mysqld1-port=i' => \$im_mysqld1_port, # Port of mysqld, controlled by IM
|
||||
'im-mysqld2-port=i' => \$im_mysqld2_port, # Port of mysqld, controlled by IM
|
||||
'mtr-build-thread=i' => \$opt_mtr_build_thread,
|
||||
|
||||
# Test case authoring
|
||||
'record' => \$opt_record,
|
||||
@@ -623,6 +611,15 @@ sub command_line_setup () {
|
||||
|
||||
$glob_scriptname= basename($0);
|
||||
|
||||
if ($opt_mtr_build_thread != 0)
|
||||
{
|
||||
set_mtr_build_thread_ports($opt_mtr_build_thread)
|
||||
}
|
||||
elsif ($ENV{'MTR_BUILD_THREAD'})
|
||||
{
|
||||
$opt_mtr_build_thread= $ENV{'MTR_BUILD_THREAD'};
|
||||
}
|
||||
|
||||
# We require that we are in the "mysql-test" directory
|
||||
# to run mysql-test-run
|
||||
if (! -f $glob_scriptname)
|
||||
@@ -679,7 +676,7 @@ sub command_line_setup () {
|
||||
# number as early as possible
|
||||
#
|
||||
|
||||
# Look for the client binaries
|
||||
# Look for the client binaries directory
|
||||
$path_client_bindir= mtr_path_exists("$glob_basedir/client_release",
|
||||
"$glob_basedir/client_debug",
|
||||
vs_config_dirs('client', ''),
|
||||
@@ -771,7 +768,7 @@ sub command_line_setup () {
|
||||
{
|
||||
mtr_report("Using tmpfs in $fs");
|
||||
$opt_mem= "$fs/var";
|
||||
$opt_mem .= $ENV{'MTR_BUILD_THREAD'} if $ENV{'MTR_BUILD_THREAD'};
|
||||
$opt_mem .= $opt_mtr_build_thread if $opt_mtr_build_thread;
|
||||
last;
|
||||
}
|
||||
}
|
||||
@@ -813,13 +810,6 @@ sub command_line_setup () {
|
||||
$opt_vardir= "$glob_mysql_test_dir/$opt_vardir";
|
||||
}
|
||||
|
||||
# Ensure a proper error message
|
||||
mkpath("$opt_vardir");
|
||||
unless ( -d $opt_vardir and -w $opt_vardir )
|
||||
{
|
||||
mtr_error("Writable 'var' directory is needed, use the '--vardir' option");
|
||||
}
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# Set tmpdir
|
||||
# --------------------------------------------------------------------------
|
||||
@@ -1201,6 +1191,7 @@ sub command_line_setup () {
|
||||
|
||||
# Setup master->[0] with the settings for the extern server
|
||||
$master->[0]->{'path_sock'}= $opt_socket if $opt_socket;
|
||||
mtr_report("Using extern server at '$master->[0]->{path_sock}'");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1216,7 +1207,44 @@ sub command_line_setup () {
|
||||
$path_snapshot= "$opt_tmpdir/snapshot_$opt_master_myport/";
|
||||
}
|
||||
|
||||
sub datadir_setup () {
|
||||
#
|
||||
# To make it easier for different devs to work on the same host,
|
||||
# an environment variable can be used to control all ports. A small
|
||||
# number is to be used, 0 - 16 or similar.
|
||||
#
|
||||
# Note the MASTER_MYPORT has to be set the same in all 4.x and 5.x
|
||||
# versions of this script, else a 4.0 test run might conflict with a
|
||||
# 5.1 test run, even if different MTR_BUILD_THREAD is used. This means
|
||||
# all port numbers might not be used in this version of the script.
|
||||
#
|
||||
# Also note the limitation of ports we are allowed to hand out. This
|
||||
# differs between operating systems and configuration, see
|
||||
# http://www.ncftp.com/ncftpd/doc/misc/ephemeral_ports.html
|
||||
# But a fairly safe range seems to be 5001 - 32767
|
||||
#
|
||||
|
||||
sub set_mtr_build_thread_ports($) {
|
||||
my $mtr_build_thread= shift;
|
||||
|
||||
# Up to two masters, up to three slaves
|
||||
$opt_master_myport= $mtr_build_thread * 10 + 10000; # and 1
|
||||
$opt_slave_myport= $opt_master_myport + 2; # and 3 4
|
||||
$opt_ndbcluster_port= $opt_master_myport + 5;
|
||||
$opt_ndbcluster_port_slave= $opt_master_myport + 6;
|
||||
$im_port= $opt_master_myport + 7;
|
||||
$im_mysqld1_port= $opt_master_myport + 8;
|
||||
$im_mysqld2_port= $opt_master_myport + 9;
|
||||
|
||||
if ( $opt_master_myport < 5001 or $opt_master_myport + 10 >= 32767 )
|
||||
{
|
||||
mtr_error("MTR_BUILD_THREAD number results in a port",
|
||||
"outside 5001 - 32767",
|
||||
"($opt_master_myport - $opt_master_myport + 10)");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub datadir_list_setup () {
|
||||
|
||||
# Make a list of all data_dirs
|
||||
@data_dir_lst = (
|
||||
@@ -1246,26 +1274,15 @@ sub datadir_setup () {
|
||||
|
||||
|
||||
sub collect_mysqld_features () {
|
||||
#
|
||||
# Execute "mysqld --no-defaults --help --verbose", that will
|
||||
# print out version and a list of all features and settings
|
||||
#
|
||||
my $found_variable_list_start= 0;
|
||||
my $spec_file= "$glob_mysql_test_dir/mysqld.spec.$$";
|
||||
if ( mtr_run($exe_mysqld,
|
||||
["--no-defaults",
|
||||
"--verbose",
|
||||
"--help"],
|
||||
"", "$spec_file", "$spec_file", "") != 0 )
|
||||
{
|
||||
mtr_error("Failed to get version and list of features from %s",
|
||||
$exe_mysqld);
|
||||
}
|
||||
|
||||
my $F= IO::File->new($spec_file) or
|
||||
mtr_error("can't open file \"$spec_file\": $!");
|
||||
#
|
||||
# Execute "mysqld --no-defaults --help --verbose" to get a
|
||||
# of all features and settings
|
||||
#
|
||||
my $list= `$exe_mysqld --no-defaults --verbose --help`;
|
||||
|
||||
while ( my $line= <$F> )
|
||||
foreach my $line (split('\n', $list))
|
||||
{
|
||||
# First look for version
|
||||
if ( !$mysql_version_id )
|
||||
@@ -1318,7 +1335,7 @@ sub collect_mysqld_features () {
|
||||
}
|
||||
}
|
||||
}
|
||||
unlink($spec_file);
|
||||
|
||||
mtr_error("Could not find version of MySQL") unless $mysql_version_id;
|
||||
mtr_error("Could not find variabes list") unless $found_variable_list_start;
|
||||
|
||||
@@ -1505,7 +1522,7 @@ sub executable_setup () {
|
||||
sub generate_cmdline_mysqldump ($) {
|
||||
my($mysqld) = @_;
|
||||
return
|
||||
"$exe_mysqldump --no-defaults -uroot " .
|
||||
"$exe_mysqldump --no-defaults --debug-info -uroot " .
|
||||
"--port=$mysqld->{'port'} " .
|
||||
"--socket=$mysqld->{'path_sock'} --password=";
|
||||
}
|
||||
@@ -1601,7 +1618,8 @@ sub environment_setup () {
|
||||
if ( $source_dist )
|
||||
{
|
||||
push(@ld_library_paths, "$glob_basedir/libmysql/.libs/",
|
||||
"$glob_basedir/libmysql_r/.libs/");
|
||||
"$glob_basedir/libmysql_r/.libs/",
|
||||
"$glob_basedir/zlib.libs/");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1676,11 +1694,12 @@ sub environment_setup () {
|
||||
$ENV{'SLAVE_MYPORT1'}= $slave->[1]->{'port'};
|
||||
$ENV{'SLAVE_MYPORT2'}= $slave->[2]->{'port'};
|
||||
$ENV{'MYSQL_TCP_PORT'}= $mysqld_variables{'port'};
|
||||
$ENV{'DEFAULT_MASTER_PORT'}= $mysqld_variables{'master-port'};
|
||||
|
||||
$ENV{'IM_PATH_SOCK'}= $instance_manager->{path_sock};
|
||||
$ENV{'IM_USERNAME'}= $instance_manager->{admin_login};
|
||||
$ENV{'IM_PASSWORD'}= $instance_manager->{admin_password};
|
||||
$ENV{MTR_BUILD_THREAD}= 0 unless $ENV{MTR_BUILD_THREAD}; # Set if not set
|
||||
$ENV{MTR_BUILD_THREAD}= $opt_mtr_build_thread;
|
||||
|
||||
$ENV{'EXE_MYSQL'}= $exe_mysql;
|
||||
|
||||
@@ -1741,7 +1760,7 @@ sub environment_setup () {
|
||||
# Setup env so childs can execute mysqlcheck
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysqlcheck=
|
||||
"$exe_mysqlcheck --no-defaults -uroot " .
|
||||
"$exe_mysqlcheck --no-defaults --debug-info -uroot " .
|
||||
"--port=$master->[0]->{'port'} " .
|
||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||
|
||||
@@ -1792,7 +1811,7 @@ sub environment_setup () {
|
||||
# Setup env so childs can execute mysqlimport
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysqlimport=
|
||||
"$exe_mysqlimport -uroot " .
|
||||
"$exe_mysqlimport --debug-info -uroot " .
|
||||
"--port=$master->[0]->{'port'} " .
|
||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||
|
||||
@@ -1808,7 +1827,7 @@ sub environment_setup () {
|
||||
# Setup env so childs can execute mysqlshow
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysqlshow=
|
||||
"$exe_mysqlshow -uroot " .
|
||||
"$exe_mysqlshow --debug-info -uroot " .
|
||||
"--port=$master->[0]->{'port'} " .
|
||||
"--socket=$master->[0]->{'path_sock'} --password=";
|
||||
|
||||
@@ -1824,7 +1843,7 @@ sub environment_setup () {
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysqlbinlog=
|
||||
"$exe_mysqlbinlog" .
|
||||
" --no-defaults --local-load=$opt_tmpdir";
|
||||
" --no-defaults --debug-info --local-load=$opt_tmpdir";
|
||||
if ( $mysql_version_id >= 50000 )
|
||||
{
|
||||
$cmdline_mysqlbinlog .=" --character-sets-dir=$path_charsetsdir";
|
||||
@@ -1841,7 +1860,7 @@ sub environment_setup () {
|
||||
# Setup env so childs can execute mysql
|
||||
# ----------------------------------------------------
|
||||
my $cmdline_mysql=
|
||||
"$exe_mysql --no-defaults --host=localhost --user=root --password= " .
|
||||
"$exe_mysql --no-defaults --debug-info --host=localhost --user=root --password= " .
|
||||
"--port=$master->[0]->{'port'} " .
|
||||
"--socket=$master->[0]->{'path_sock'} ".
|
||||
"--character-sets-dir=$path_charsetsdir";
|
||||
@@ -1975,29 +1994,23 @@ sub kill_running_servers () {
|
||||
# This is different from terminating processes we have
|
||||
# started from this run of the script, this is terminating
|
||||
# leftovers from previous runs.
|
||||
|
||||
if ( ! -d $opt_vardir )
|
||||
{
|
||||
if ( -l $opt_vardir and ! -d readlink($opt_vardir) )
|
||||
{
|
||||
mtr_report("Removing $opt_vardir symlink without destination");
|
||||
unlink($opt_vardir);
|
||||
}
|
||||
# The "var" dir does not exist already
|
||||
# the processes that mtr_kill_leftovers start will write
|
||||
# their log files to var/log so it should be created
|
||||
mkpath("$opt_vardir/log");
|
||||
}
|
||||
mtr_kill_leftovers();
|
||||
}
|
||||
}
|
||||
|
||||
sub cleanup_stale_files () {
|
||||
|
||||
my $created_by_mem_file= "$glob_mysql_test_dir/var/created_by_mem";
|
||||
#
|
||||
# Remove var and any directories in var/ created by previous
|
||||
# tests
|
||||
#
|
||||
sub remove_stale_vardir () {
|
||||
|
||||
mtr_report("Removing Stale Files");
|
||||
|
||||
# Safety!
|
||||
mtr_error("No, don't remove the vardir when running with --extern")
|
||||
if $opt_extern;
|
||||
|
||||
mtr_verbose("opt_vardir: $opt_vardir");
|
||||
if ( $opt_vardir eq $default_vardir )
|
||||
{
|
||||
#
|
||||
@@ -2006,29 +2019,47 @@ sub cleanup_stale_files () {
|
||||
if ( -l $opt_vardir)
|
||||
{
|
||||
# var is a symlink
|
||||
if (-f $created_by_mem_file)
|
||||
|
||||
if ( $opt_mem and readlink($opt_vardir) eq $opt_mem )
|
||||
{
|
||||
# Remove the directory which the link points at
|
||||
mtr_verbose("Removing " . readlink($opt_vardir));
|
||||
rmtree(readlink($opt_vardir));
|
||||
# Remove the entire "var" dir
|
||||
rmtree("$opt_vardir/");
|
||||
|
||||
# Remove the "var" symlink
|
||||
mtr_verbose("unlink($opt_vardir)");
|
||||
unlink($opt_vardir);
|
||||
}
|
||||
elsif ( $opt_mem )
|
||||
{
|
||||
# Just remove the "var" symlink
|
||||
mtr_report("WARNING: Removing '$opt_vardir' symlink it's wrong");
|
||||
|
||||
mtr_verbose("unlink($opt_vardir)");
|
||||
unlink($opt_vardir);
|
||||
}
|
||||
else
|
||||
{
|
||||
# Some users creates a soft link in mysql-test/var to another area
|
||||
# - allow it
|
||||
# - allow it, but remove all files in it
|
||||
|
||||
mtr_report("WARNING: Using the 'mysql-test/var' symlink");
|
||||
rmtree("$opt_vardir/log");
|
||||
rmtree("$opt_vardir/ndbcluster-$opt_ndbcluster_port");
|
||||
rmtree("$opt_vardir/run");
|
||||
rmtree("$opt_vardir/tmp");
|
||||
|
||||
# Make sure the directory where it points exist
|
||||
mtr_error("The destination for symlink $opt_vardir does not exist")
|
||||
if ! -d readlink($opt_vardir);
|
||||
|
||||
foreach my $bin ( glob("$opt_vardir/*") )
|
||||
{
|
||||
mtr_verbose("Removing bin $bin");
|
||||
rmtree($bin);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# Remove the entire "var" dir
|
||||
mtr_verbose("Removing $opt_vardir/");
|
||||
rmtree("$opt_vardir/");
|
||||
}
|
||||
}
|
||||
@@ -2040,21 +2071,56 @@ sub cleanup_stale_files () {
|
||||
|
||||
# Remove the var/ dir in mysql-test dir if any
|
||||
# this could be an old symlink that shouldn't be there
|
||||
mtr_verbose("Removing $default_vardir");
|
||||
rmtree($default_vardir);
|
||||
|
||||
# Remove the "var" dir
|
||||
mtr_verbose("Removing $opt_vardir/");
|
||||
rmtree("$opt_vardir/");
|
||||
}
|
||||
}
|
||||
|
||||
if ( $opt_mem )
|
||||
#
|
||||
# Create var and the directories needed in var
|
||||
#
|
||||
sub setup_vardir() {
|
||||
mtr_report("Creating Directories");
|
||||
|
||||
if ( $opt_vardir eq $default_vardir )
|
||||
{
|
||||
# Runinng with var as a link to some "memory" location, normally tmpfs
|
||||
rmtree($opt_mem);
|
||||
#
|
||||
# Running with "var" in mysql-test dir
|
||||
#
|
||||
if ( -l $opt_vardir )
|
||||
{
|
||||
# it's a symlink
|
||||
|
||||
# Make sure the directory where it points exist
|
||||
mtr_error("The destination for symlink $opt_vardir does not exist")
|
||||
if ! -d readlink($opt_vardir);
|
||||
}
|
||||
elsif ( $opt_mem )
|
||||
{
|
||||
# Runinng with "var" as a link to some "memory" location, normally tmpfs
|
||||
mtr_verbose("Creating $opt_mem");
|
||||
mkpath($opt_mem);
|
||||
mtr_report("Creating symlink from $opt_vardir to $opt_mem");
|
||||
|
||||
mtr_report("Symlinking 'var' to '$opt_mem'");
|
||||
symlink($opt_mem, $opt_vardir);
|
||||
# Put a small file to recognize this dir was created by --mem
|
||||
mtr_tofile($created_by_mem_file, $opt_mem);
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! -d $opt_vardir )
|
||||
{
|
||||
mtr_verbose("Creating $opt_vardir");
|
||||
mkpath($opt_vardir);
|
||||
}
|
||||
|
||||
# Ensure a proper error message if vardir couldn't be created
|
||||
unless ( -d $opt_vardir and -w $opt_vardir )
|
||||
{
|
||||
mtr_error("Writable 'var' directory is needed, use the " .
|
||||
"'--vardir=<path>' option");
|
||||
}
|
||||
|
||||
mkpath("$opt_vardir/log");
|
||||
@@ -2062,10 +2128,9 @@ sub cleanup_stale_files () {
|
||||
mkpath("$opt_vardir/tmp");
|
||||
mkpath($opt_tmpdir) if $opt_tmpdir ne "$opt_vardir/tmp";
|
||||
|
||||
# Remove old and create new data dirs
|
||||
# Create new data dirs
|
||||
foreach my $data_dir (@data_dir_lst)
|
||||
{
|
||||
rmtree("$data_dir");
|
||||
mkpath("$data_dir/mysql");
|
||||
mkpath("$data_dir/test");
|
||||
}
|
||||
@@ -2087,6 +2152,12 @@ sub cleanup_stale_files () {
|
||||
}
|
||||
closedir(DIR);
|
||||
}
|
||||
|
||||
# Remove old log files
|
||||
foreach my $name (glob("r/*.progress r/*.log r/*.warnings"))
|
||||
{
|
||||
unlink($name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2467,8 +2538,8 @@ sub ndbcluster_start ($$) {
|
||||
|
||||
sub rm_ndbcluster_tables ($) {
|
||||
my $dir= shift;
|
||||
foreach my $bin ( glob("$dir/cluster/apply_status*"),
|
||||
glob("$dir/cluster/schema*") )
|
||||
foreach my $bin ( glob("$dir/mysql/apply_status*"),
|
||||
glob("$dir/mysql/schema*"))
|
||||
{
|
||||
unlink($bin);
|
||||
}
|
||||
@@ -2602,23 +2673,41 @@ sub run_suite () {
|
||||
|
||||
sub initialize_servers () {
|
||||
|
||||
datadir_setup();
|
||||
datadir_list_setup();
|
||||
|
||||
if ( ! $opt_extern )
|
||||
if ( $opt_extern )
|
||||
{
|
||||
# Running against an already started server, if the specified
|
||||
# vardir does not already exist it should be created
|
||||
if ( ! -d $opt_vardir )
|
||||
{
|
||||
mtr_report("Creating '$opt_vardir'");
|
||||
setup_vardir();
|
||||
}
|
||||
else
|
||||
{
|
||||
mtr_report("No need to create '$opt_vardir' it already exists");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
kill_running_servers();
|
||||
|
||||
if ( ! $opt_start_dirty )
|
||||
{
|
||||
cleanup_stale_files();
|
||||
remove_stale_vardir();
|
||||
setup_vardir();
|
||||
|
||||
mysql_install_db();
|
||||
if ( $opt_force )
|
||||
{
|
||||
# Save a snapshot of the freshly installed db
|
||||
# to make it possible to restore to a known point in time
|
||||
save_installed_db();
|
||||
}
|
||||
}
|
||||
check_running_as_root();
|
||||
}
|
||||
check_running_as_root();
|
||||
}
|
||||
|
||||
sub mysql_install_db () {
|
||||
@@ -2985,26 +3074,15 @@ sub do_before_run_mysqltest($)
|
||||
unlink("$result_dir/$tname.log");
|
||||
unlink("$result_dir/$tname.warnings");
|
||||
|
||||
mtr_tonewfile($path_current_test_log,"$tname\n"); # Always tell where we are
|
||||
|
||||
# output current test to ndbcluster log file to enable diagnostics
|
||||
mtr_tofile($path_ndb_testrun_log,"CURRENT TEST $tname\n");
|
||||
|
||||
mtr_tofile($master->[0]->{'path_myerr'},"CURRENT_TEST: $tname\n");
|
||||
if ( $master->[1]->{'pid'} )
|
||||
{
|
||||
mtr_tofile($master->[1]->{'path_myerr'},"CURRENT_TEST: $tname\n");
|
||||
}
|
||||
|
||||
if ( $mysql_version_id < 50000 )
|
||||
{
|
||||
# Set envirnoment variable NDB_STATUS_OK to 1
|
||||
# Set environment variable NDB_STATUS_OK to 1
|
||||
# if script decided to run mysqltest cluster _is_ installed ok
|
||||
$ENV{'NDB_STATUS_OK'} = "1";
|
||||
}
|
||||
elsif ( $mysql_version_id < 50100 )
|
||||
{
|
||||
# Set envirnoment variable NDB_STATUS_OK to YES
|
||||
# Set environment variable NDB_STATUS_OK to YES
|
||||
# if script decided to run mysqltest cluster _is_ installed ok
|
||||
$ENV{'NDB_STATUS_OK'} = "YES";
|
||||
}
|
||||
@@ -3015,30 +3093,46 @@ sub do_after_run_mysqltest($)
|
||||
my $tinfo= shift;
|
||||
my $tname= $tinfo->{'name'};
|
||||
|
||||
mtr_tofile($path_mysqltest_log,"CURRENT TEST $tname\n");
|
||||
|
||||
# Save info from this testcase run to mysqltest.log
|
||||
mtr_appendfile_to_file($path_current_test_log, $path_mysqltest_log)
|
||||
if -f $path_current_test_log;
|
||||
mtr_appendfile_to_file($path_timefile, $path_mysqltest_log)
|
||||
if -f $path_timefile;
|
||||
|
||||
# Remove the file that mysqltest writes info to
|
||||
unlink($path_timefile);
|
||||
|
||||
}
|
||||
|
||||
|
||||
sub run_testcase_mark_logs($)
|
||||
{
|
||||
my ($log_msg)= @_;
|
||||
|
||||
# Write a marker to all log files
|
||||
|
||||
# The file indicating current test name
|
||||
mtr_tonewfile($path_current_test_log, $log_msg);
|
||||
|
||||
# each mysqld's .err file
|
||||
foreach my $mysqld (@{$master}, @{$slave})
|
||||
{
|
||||
mtr_tofile($mysqld->{path_myerr}, $log_msg);
|
||||
}
|
||||
|
||||
# ndbcluster log file
|
||||
mtr_tofile($path_ndb_testrun_log, $log_msg);
|
||||
|
||||
}
|
||||
|
||||
sub find_testcase_skipped_reason($)
|
||||
{
|
||||
my ($tinfo)= @_;
|
||||
|
||||
# Open mysqltest.log
|
||||
# Open mysqltest-time
|
||||
my $F= IO::File->new($path_timefile) or
|
||||
mtr_error("can't open file \"$path_timefile\": $!");
|
||||
my $reason;
|
||||
|
||||
while ( my $line= <$F> )
|
||||
{
|
||||
# Look for "reason: <reason fo skiping test>"
|
||||
# Look for "reason: <reason for skipping test>"
|
||||
if ( $line =~ /reason: (.*)/ )
|
||||
{
|
||||
$reason= $1;
|
||||
@@ -3146,6 +3240,10 @@ sub run_testcase ($) {
|
||||
|
||||
run_testcase_stop_servers($tinfo, $master_restart, $slave_restart);
|
||||
}
|
||||
|
||||
# Write to all log files to indicate start of testcase
|
||||
run_testcase_mark_logs("CURRENT_TEST: $tinfo->{name}\n");
|
||||
|
||||
my $died= mtr_record_dead_children();
|
||||
if ($died or $master_restart or $slave_restart)
|
||||
{
|
||||
@@ -3173,6 +3271,9 @@ sub run_testcase ($) {
|
||||
|
||||
my $res= run_mysqltest($tinfo);
|
||||
mtr_report_test_name($tinfo);
|
||||
|
||||
do_after_run_mysqltest($tinfo);
|
||||
|
||||
if ( $res == 0 )
|
||||
{
|
||||
mtr_report_test_passed($tinfo);
|
||||
@@ -3206,10 +3307,11 @@ sub run_testcase ($) {
|
||||
"mysqltest returned unexpected code $res, it has probably crashed";
|
||||
report_failure_and_restart($tinfo);
|
||||
}
|
||||
|
||||
do_after_run_mysqltest($tinfo);
|
||||
}
|
||||
|
||||
# Remove the file that mysqltest writes info to
|
||||
unlink($path_timefile);
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Stop Instance Manager if we are processing an IM-test case.
|
||||
# ----------------------------------------------------------------------
|
||||
@@ -3487,6 +3589,17 @@ sub mysqld_arguments ($$$$$) {
|
||||
mtr_add_arg($args, "%s--ndb-extra-logging", $prefix);
|
||||
}
|
||||
}
|
||||
|
||||
if ( $mysql_version_id <= 50106 )
|
||||
{
|
||||
# Force mysqld to use log files up until 5.1.6
|
||||
mtr_add_arg($args, "%s--log=%s", $prefix, $master->[0]->{'path_mylog'});
|
||||
}
|
||||
else
|
||||
{
|
||||
# Turn on logging, will be sent to tables
|
||||
mtr_add_arg($args, "%s--log=", $prefix);
|
||||
}
|
||||
}
|
||||
|
||||
if ( $type eq 'slave' )
|
||||
@@ -3504,8 +3617,6 @@ sub mysqld_arguments ($$$$$) {
|
||||
mtr_add_arg($args, "%s--log-slave-updates", $prefix);
|
||||
}
|
||||
|
||||
mtr_add_arg($args, "%s--log=%s", $prefix,
|
||||
$slave->[$idx]->{'path_mylog'});
|
||||
mtr_add_arg($args, "%s--master-retry-count=10", $prefix);
|
||||
mtr_add_arg($args, "%s--pid-file=%s", $prefix,
|
||||
$slave->[$idx]->{'path_pid'});
|
||||
@@ -3566,6 +3677,18 @@ sub mysqld_arguments ($$$$$) {
|
||||
mtr_add_arg($args, "%s--ndb-extra-logging", $prefix);
|
||||
}
|
||||
}
|
||||
|
||||
if ( $mysql_version_id <= 50106 )
|
||||
{
|
||||
# Force mysqld to use log files up until 5.1.6
|
||||
mtr_add_arg($args, "%s--log=%s", $prefix, $master->[0]->{'path_mylog'});
|
||||
}
|
||||
else
|
||||
{
|
||||
# Turn on logging, will be sent to tables
|
||||
mtr_add_arg($args, "%s--log=", $prefix);
|
||||
}
|
||||
|
||||
} # end slave
|
||||
|
||||
if ( $opt_debug )
|
||||
@@ -3642,7 +3765,6 @@ sub mysqld_arguments ($$$$$) {
|
||||
elsif ( $type eq 'master' )
|
||||
{
|
||||
mtr_add_arg($args, "%s--open-files-limit=1024", $prefix);
|
||||
mtr_add_arg($args, "%s--log=%s", $prefix, $master->[0]->{'path_mylog'});
|
||||
}
|
||||
|
||||
return $args;
|
||||
@@ -4138,17 +4260,15 @@ sub run_testcase_start_servers($) {
|
||||
# tables ok FIXME This is a workaround so that only one mysqld
|
||||
# create the tables
|
||||
if ( ! sleep_until_file_created(
|
||||
"$master->[0]->{'path_myddir'}/cluster/apply_status.ndb",
|
||||
"$master->[0]->{'path_myddir'}/mysql/apply_status.ndb",
|
||||
$master->[0]->{'start_timeout'},
|
||||
$master->[0]->{'pid'}))
|
||||
{
|
||||
|
||||
$tinfo->{'comment'}= "Failed to create 'cluster/apply_status' table";
|
||||
$tinfo->{'comment'}= "Failed to create 'mysql/apply_status' table";
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
mtr_tofile($master->[1]->{'path_myerr'},"CURRENT_TEST: $tname\n");
|
||||
|
||||
mysqld_start($master->[1],$tinfo->{'master_opt'},[]);
|
||||
}
|
||||
|
||||
@@ -4176,8 +4296,6 @@ sub run_testcase_start_servers($) {
|
||||
# ----------------------------------------------------------------------
|
||||
if ( $tinfo->{'slave_num'} )
|
||||
{
|
||||
mtr_tofile($slave->[0]->{'path_myerr'},"CURRENT_TEST: $tname\n");
|
||||
|
||||
restore_slave_databases($tinfo->{'slave_num'});
|
||||
|
||||
do_before_start_slave($tinfo);
|
||||
@@ -4342,6 +4460,7 @@ sub run_mysqltest ($) {
|
||||
mtr_add_arg($args, "--skip-safemalloc");
|
||||
mtr_add_arg($args, "--tmpdir=%s", $opt_tmpdir);
|
||||
mtr_add_arg($args, "--character-sets-dir=%s", $path_charsetsdir);
|
||||
mtr_add_arg($args, "--logdir=%s/log", $opt_vardir);
|
||||
|
||||
if ($tinfo->{'component_id'} eq 'im')
|
||||
{
|
||||
@@ -4791,6 +4910,8 @@ Options that specify ports
|
||||
slave_port=PORT Specify the port number used by the first slave
|
||||
ndbcluster-port=PORT Specify the port number used by cluster
|
||||
ndbcluster-port-slave=PORT Specify the port number used by slave cluster
|
||||
mtr-build-thread=# Specify unique collection of ports. Can also be set by
|
||||
setting the environment variable MTR_BUILD_THREAD.
|
||||
|
||||
Options for test case authoring
|
||||
|
||||
@@ -4803,7 +4924,7 @@ Options that pass on options
|
||||
|
||||
Options to run test on running server
|
||||
|
||||
extern Use running server for tests FIXME DANGEROUS
|
||||
extern Use running server for tests
|
||||
ndb-connectstring=STR Use running cluster, and connect using STR
|
||||
ndb-connectstring-slave=STR Use running slave cluster, and connect using STR
|
||||
user=USER User for connection to extern server
|
||||
@@ -4869,4 +4990,3 @@ HERE
|
||||
mtr_exit(1);
|
||||
|
||||
}
|
||||
|
||||
|
29
mysql-test/r/1st.result
Normal file
29
mysql-test/r/1st.result
Normal file
@@ -0,0 +1,29 @@
|
||||
show databases;
|
||||
Database
|
||||
information_schema
|
||||
mysql
|
||||
test
|
||||
show tables in mysql;
|
||||
Tables_in_mysql
|
||||
binlog_index
|
||||
columns_priv
|
||||
db
|
||||
event
|
||||
func
|
||||
general_log
|
||||
help_category
|
||||
help_keyword
|
||||
help_relation
|
||||
help_topic
|
||||
host
|
||||
plugin
|
||||
proc
|
||||
procs_priv
|
||||
slow_log
|
||||
tables_priv
|
||||
time_zone
|
||||
time_zone_leap_second
|
||||
time_zone_name
|
||||
time_zone_transition
|
||||
time_zone_transition_type
|
||||
user
|
@@ -128,3 +128,94 @@ select t1.* from t1, t2, t3 where t3.state & 1 = 0 and t3.t1_id = t1.id and t3.t
|
||||
id a
|
||||
1 me
|
||||
drop table t3,t2,t1;
|
||||
SET SESSION STORAGE_ENGINE = InnoDB;
|
||||
SET @@autocommit=1;
|
||||
connection default
|
||||
SHOW VARIABLES LIKE 'have_query_cache';
|
||||
Variable_name Value
|
||||
have_query_cache YES
|
||||
SET GLOBAL query_cache_size = 200000;
|
||||
flush status;
|
||||
SET @@autocommit=1;
|
||||
SET SESSION STORAGE_ENGINE = InnoDB;
|
||||
CREATE TABLE t2 (s1 int, s2 varchar(1000), key(s1));
|
||||
INSERT INTO t2 VALUES (1,repeat('a',10)),(2,repeat('a',10)),(3,repeat('a',10)),(4,repeat('a',10));
|
||||
COMMIT;
|
||||
START TRANSACTION;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
0
|
||||
UPDATE t2 SET s2 = 'w' WHERE s1 = 3;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 0
|
||||
connection connection1
|
||||
START TRANSACTION;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
0
|
||||
INSERT INTO t2 VALUES (5,'w');
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
1
|
||||
COMMIT;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
1
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 0
|
||||
connection default
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
1
|
||||
COMMIT;
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 0
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
2
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
connection connection1
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
2
|
||||
START TRANSACTION;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
2
|
||||
INSERT INTO t2 VALUES (6,'w');
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
3
|
||||
connection default
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
2
|
||||
START TRANSACTION;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
2
|
||||
DELETE from t2 WHERE s1=3;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
1
|
||||
COMMIT;
|
||||
connection connection1
|
||||
COMMIT;
|
||||
SELECT sql_cache count(*) FROM t2 WHERE s2 = 'w';
|
||||
count(*)
|
||||
2
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
show status like "Qcache_hits";
|
||||
Variable_name Value
|
||||
Qcache_hits 2
|
||||
drop table t2;
|
||||
|
@@ -1,6 +1,7 @@
|
||||
drop table if exists t1,t2;
|
||||
show tables;
|
||||
Tables_in_mysql
|
||||
binlog_index
|
||||
columns_priv
|
||||
db
|
||||
event
|
||||
@@ -32,6 +33,7 @@ grant ALL on *.* to test@localhost identified by "gambling";
|
||||
grant ALL on *.* to test@127.0.0.1 identified by "gambling";
|
||||
show tables;
|
||||
Tables_in_mysql
|
||||
binlog_index
|
||||
columns_priv
|
||||
db
|
||||
event
|
||||
@@ -71,6 +73,7 @@ ERROR HY000: Password hash should be a 41-digit hexadecimal number
|
||||
set password=old_password('gambling3');
|
||||
show tables;
|
||||
Tables_in_mysql
|
||||
binlog_index
|
||||
columns_priv
|
||||
db
|
||||
event
|
||||
|
@@ -820,3 +820,19 @@ SELECT * from t2;
|
||||
a b
|
||||
1 1
|
||||
drop table t1,t2;
|
||||
CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
DROP DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
RENAME DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa TO a;
|
||||
ERROR 42000: Unknown database 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
create database mysqltest;
|
||||
RENAME DATABASE mysqltest TO aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
drop database mysqltest;
|
||||
USE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
SHOW CREATE DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
|
@@ -1,4 +1,5 @@
|
||||
drop table if exists t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
SHOW COLLATION LIKE 'cp1250_czech_cs';
|
||||
Collation Charset Id Default Compiled Sortlen
|
||||
cp1250_czech_cs cp1250 34 Yes 2
|
||||
|
@@ -72,3 +72,7 @@ mysqltest2 CREATE DATABASE `mysqltest2` /*!40100 DEFAULT CHARACTER SET latin2 */
|
||||
drop database mysqltest2;
|
||||
ALTER DATABASE DEFAULT CHARACTER SET latin2;
|
||||
ERROR 3D000: No database selected
|
||||
ALTER DATABASE aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa DEFAULT CHARACTER SET latin2;
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
ALTER DATABASE `` DEFAULT CHARACTER SET latin2;
|
||||
ERROR 42000: Incorrect database name ''
|
||||
|
@@ -47,7 +47,6 @@ create database mysqltest;
|
||||
show databases;
|
||||
Database
|
||||
information_schema
|
||||
cluster
|
||||
mysql
|
||||
mysqltest
|
||||
test
|
||||
@@ -59,7 +58,6 @@ drop database mysqltest;
|
||||
show databases;
|
||||
Database
|
||||
information_schema
|
||||
cluster
|
||||
mysql
|
||||
test
|
||||
drop database mysqltest;
|
||||
|
@@ -394,4 +394,10 @@ create trigger t1_ai after insert on t1 for each row show create event e1;
|
||||
ERROR 0A000: Not allowed to return a result set from a trigger
|
||||
drop table t1;
|
||||
drop event e1;
|
||||
SHOW EVENTS FROM aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
|
||||
ERROR 42000: Incorrect database name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
SHOW EVENTS FROM ``;
|
||||
ERROR 42000: Incorrect database name ''
|
||||
SHOW EVENTS FROM `events\\test`;
|
||||
Db Name Definer Type Execute at Interval value Interval field Starts Ends Status
|
||||
drop database events_test;
|
||||
|
@@ -1020,3 +1020,29 @@ t1 CREATE TABLE `t1` (
|
||||
`stddev(0)` double(8,4) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8);
|
||||
INSERT INTO t1 SELECT a, b+8 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+16 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+32 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+64 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+128 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+256 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+512 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+1024 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+2048 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+4096 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+8192 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+16384 FROM t1;
|
||||
INSERT INTO t1 SELECT a, b+32768 FROM t1;
|
||||
SELECT a,COUNT(DISTINCT b) AS cnt FROM t1 GROUP BY a HAVING cnt > 50;
|
||||
a cnt
|
||||
1 65536
|
||||
SELECT a,SUM(DISTINCT b) AS sumation FROM t1 GROUP BY a HAVING sumation > 50;
|
||||
a sumation
|
||||
1 2147516416
|
||||
SELECT a,AVG(DISTINCT b) AS average FROM t1 GROUP BY a HAVING average > 50;
|
||||
a average
|
||||
1 32768.5000
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@@ -873,3 +873,11 @@ SELECT 1 FROM t1 WHERE foo != PointFromWKB(POINT(0,0));
|
||||
1
|
||||
1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(foo GEOMETRY NOT NULL, SPATIAL INDEX(foo) );
|
||||
INSERT INTO t1(foo) VALUES (NULL);
|
||||
ERROR 23000: Column 'foo' cannot be null
|
||||
INSERT INTO t1() VALUES ();
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
INSERT INTO t1(foo) VALUES ('');
|
||||
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
|
||||
DROP TABLE t1;
|
||||
|
@@ -3,7 +3,7 @@ Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name state
|
||||
mysqld1 starting
|
||||
mysqld1 XXXXX
|
||||
mysqld2 offline
|
||||
--> Listing users...
|
||||
im_admin
|
||||
|
@@ -3,7 +3,7 @@ Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name state
|
||||
mysqld1 online
|
||||
mysqld1 XXXXX
|
||||
mysqld2 offline
|
||||
Killing the process...
|
||||
Sleeping...
|
||||
|
@@ -3,7 +3,7 @@ Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name state
|
||||
mysqld1 online
|
||||
mysqld1 XXXXX
|
||||
mysqld2 offline
|
||||
--------------------------------------------------------------------
|
||||
server_id = 1
|
||||
|
@@ -3,7 +3,7 @@ Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name state
|
||||
mysqld1 online
|
||||
mysqld1 XXXXX
|
||||
mysqld2 offline
|
||||
|
||||
--------------------------------------------------------------------
|
||||
|
@@ -3,7 +3,7 @@ Variable_name Value
|
||||
server_id 1
|
||||
SHOW INSTANCES;
|
||||
instance_name state
|
||||
mysqld1 online
|
||||
mysqld1 XXXXX
|
||||
mysqld2 offline
|
||||
SHOW INSTANCE OPTIONS mysqld1;
|
||||
option_name value
|
||||
|
@@ -14,7 +14,6 @@ NULL test latin1 latin1_swedish_ci NULL
|
||||
select schema_name from information_schema.schemata;
|
||||
schema_name
|
||||
information_schema
|
||||
cluster
|
||||
mysql
|
||||
test
|
||||
show databases like 't%';
|
||||
@@ -23,7 +22,6 @@ test
|
||||
show databases;
|
||||
Database
|
||||
information_schema
|
||||
cluster
|
||||
mysql
|
||||
test
|
||||
show databases where `database` = 't%';
|
||||
@@ -35,7 +33,7 @@ create table t3(a int, KEY a_data (a));
|
||||
create table mysqltest.t4(a int);
|
||||
create table t5 (id int auto_increment primary key);
|
||||
insert into t5 values (10);
|
||||
create view v1 (c) as select table_name from information_schema.TABLES where table_schema!='cluster';
|
||||
create view v1 (c) as select table_name from information_schema.TABLES where table_name<>'binlog_index' AND table_name<>'apply_status';
|
||||
select * from v1;
|
||||
c
|
||||
CHARACTER_SETS
|
||||
@@ -352,7 +350,6 @@ create view v0 (c) as select schema_name from information_schema.schemata;
|
||||
select * from v0;
|
||||
c
|
||||
information_schema
|
||||
cluster
|
||||
mysql
|
||||
test
|
||||
explain select * from v0;
|
||||
@@ -852,7 +849,7 @@ VIEWS TABLE_NAME select
|
||||
delete from mysql.user where user='mysqltest_4';
|
||||
delete from mysql.db where user='mysqltest_4';
|
||||
flush privileges;
|
||||
SELECT table_schema, count(*) FROM information_schema.TABLES where TABLE_SCHEMA!='cluster' GROUP BY TABLE_SCHEMA;
|
||||
SELECT table_schema, count(*) FROM information_schema.TABLES where table_name<>'binlog_index' AND table_name<>'apply_status' GROUP BY TABLE_SCHEMA;
|
||||
table_schema count(*)
|
||||
information_schema 27
|
||||
mysql 21
|
||||
@@ -1329,6 +1326,21 @@ COLUMN_NAME MD5(COLUMN_DEFAULT) LENGTH(COLUMN_DEFAULT) COLUMN_DEFAULT=get_value(
|
||||
fld1 7cf7a6782be951a1f2464a350da926a5 65532 1
|
||||
DROP TABLE bug23037;
|
||||
DROP FUNCTION get_value;
|
||||
create view v1 as
|
||||
select table_schema as object_schema,
|
||||
table_name as object_name,
|
||||
table_type as object_type
|
||||
from information_schema.tables
|
||||
order by object_schema;
|
||||
explain select * from v1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||
2 DERIVED tables ALL NULL NULL NULL NULL 0 Using filesort
|
||||
explain select * from (select table_name from information_schema.tables) as a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||
2 DERIVED tables ALL NULL NULL NULL NULL 2
|
||||
drop view v1;
|
||||
End of 5.0 tests.
|
||||
select * from information_schema.engines WHERE ENGINE="MyISAM";
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
|
@@ -280,6 +280,7 @@ create table general_log_new like general_log;
|
||||
create table slow_log_new like slow_log;
|
||||
show tables like "%log%";
|
||||
Tables_in_mysql (%log%)
|
||||
binlog_index
|
||||
general_log
|
||||
general_log_new
|
||||
slow_log
|
||||
|
@@ -96,3 +96,37 @@ i
|
||||
2
|
||||
affected rows: 1
|
||||
affected rows: 0
|
||||
create table t1 (id int(10));
|
||||
insert into t1 values (1);
|
||||
CREATE VIEW v1 AS select t1.id as id from t1;
|
||||
CREATE VIEW v2 AS select t1.id as renamed from t1;
|
||||
CREATE VIEW v3 AS select t1.id + 12 as renamed from t1;
|
||||
select * from v1 group by id limit 1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 v1 id id 3 10 1 Y 32768 0 63
|
||||
id
|
||||
1
|
||||
select * from v1 group by id limit 0;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 v1 id id 3 10 0 Y 32768 0 63
|
||||
id
|
||||
select * from v1 where id=1000 group by id;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 v1 id id 3 10 0 Y 32768 0 63
|
||||
id
|
||||
select * from v1 where id=1 group by id;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 v1 id id 3 10 1 Y 32768 0 63
|
||||
id
|
||||
1
|
||||
select * from v2 where renamed=1 group by renamed;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 v2 id renamed 3 10 1 Y 32768 0 63
|
||||
renamed
|
||||
1
|
||||
select * from v3 where renamed=1 group by renamed;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def v3 renamed 8 12 0 Y 32896 0 63
|
||||
renamed
|
||||
drop table t1;
|
||||
drop view v1,v2,v3;
|
||||
|
@@ -1,5 +1,5 @@
|
||||
Run mysql_upgrade once
|
||||
cluster.binlog_index OK
|
||||
mysql.binlog_index OK
|
||||
mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
@@ -107,7 +107,7 @@ Run it again - should say already completed
|
||||
1
|
||||
1
|
||||
Force should run it regardless of wheter it's been run before
|
||||
cluster.binlog_index OK
|
||||
mysql.binlog_index OK
|
||||
mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
|
@@ -2,7 +2,7 @@ drop database if exists client_test_db;
|
||||
DROP SCHEMA test;
|
||||
CREATE SCHEMA test;
|
||||
use test;
|
||||
cluster.binlog_index OK
|
||||
mysql.binlog_index OK
|
||||
mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
@@ -26,6 +26,7 @@ mysql.time_zone_name OK
|
||||
mysql.time_zone_transition OK
|
||||
mysql.time_zone_transition_type OK
|
||||
mysql.user OK
|
||||
mysql.binlog_index OK
|
||||
mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
|
@@ -6,7 +6,7 @@ drop database mysqltest;
|
||||
use test;
|
||||
create table t1 (a int primary key) engine=ndb;
|
||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||
select @max_epoch:=max(epoch)-1 from cluster.binlog_index;
|
||||
select @max_epoch:=max(epoch)-1 from mysql.binlog_index;
|
||||
@max_epoch:=max(epoch)-1
|
||||
#
|
||||
delete from t1;
|
||||
@@ -19,19 +19,19 @@ update t2 set b=1 where a=3;
|
||||
delete from t2 where a=4;
|
||||
commit;
|
||||
drop table t2;
|
||||
select inserts from cluster.binlog_index where epoch > @max_epoch and inserts > 5;
|
||||
select inserts from mysql.binlog_index where epoch > @max_epoch and inserts > 5;
|
||||
inserts
|
||||
10
|
||||
select deletes from cluster.binlog_index where epoch > @max_epoch and deletes > 5;
|
||||
select deletes from mysql.binlog_index where epoch > @max_epoch and deletes > 5;
|
||||
deletes
|
||||
10
|
||||
select inserts,updates,deletes from
|
||||
cluster.binlog_index where epoch > @max_epoch and updates > 0;
|
||||
mysql.binlog_index where epoch > @max_epoch and updates > 0;
|
||||
inserts updates deletes
|
||||
2 1 1
|
||||
flush logs;
|
||||
purge master logs before now();
|
||||
select count(*) from cluster.binlog_index;
|
||||
select count(*) from mysql.binlog_index;
|
||||
count(*)
|
||||
0
|
||||
create table t1 (a int primary key, b int) engine=ndb;
|
||||
@@ -40,12 +40,12 @@ use mysqltest;
|
||||
create table t1 (c int, d int primary key) engine=ndb;
|
||||
use test;
|
||||
insert into mysqltest.t1 values (2,1),(2,2);
|
||||
select @max_epoch:=max(epoch)-1 from cluster.binlog_index;
|
||||
select @max_epoch:=max(epoch)-1 from mysql.binlog_index;
|
||||
@max_epoch:=max(epoch)-1
|
||||
#
|
||||
drop table t1;
|
||||
drop database mysqltest;
|
||||
select inserts,updates,deletes from
|
||||
cluster.binlog_index where epoch > @max_epoch and inserts > 0;
|
||||
mysql.binlog_index where epoch > @max_epoch and inserts > 0;
|
||||
inserts updates deletes
|
||||
2 0 0
|
||||
|
@@ -23,7 +23,7 @@ reset master;
|
||||
alter table t2 add column (b int);
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin1.000001 # Query # # use `test`; alter table t2 add column (b int)
|
||||
master-bin.000001 # Query # # use `test`; alter table t2 add column (b int)
|
||||
reset master;
|
||||
reset master;
|
||||
ALTER DATABASE mysqltest CHARACTER SET latin1;
|
||||
@@ -44,7 +44,7 @@ show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin1.000001 # Query # # BEGIN
|
||||
master-bin1.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin1.000001 # Table_map # # table_id: # (cluster.apply_status)
|
||||
master-bin1.000001 # Table_map # # table_id: # (mysql.apply_status)
|
||||
master-bin1.000001 # Write_rows # # table_id: #
|
||||
master-bin1.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin1.000001 # Query # # COMMIT
|
||||
@@ -180,14 +180,14 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin1.000001 # Query # # use `test`; create table t1 (a int key) engine=ndb
|
||||
master-bin1.000001 # Query # # BEGIN
|
||||
master-bin1.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin1.000001 # Table_map # # table_id: # (cluster.apply_status)
|
||||
master-bin1.000001 # Table_map # # table_id: # (mysql.apply_status)
|
||||
master-bin1.000001 # Write_rows # # table_id: #
|
||||
master-bin1.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin1.000001 # Query # # COMMIT
|
||||
master-bin1.000001 # Query # # use `test`; rename table `test.t1` to `test.t2`
|
||||
master-bin1.000001 # Query # # BEGIN
|
||||
master-bin1.000001 # Table_map # # table_id: # (test.t2)
|
||||
master-bin1.000001 # Table_map # # table_id: # (cluster.apply_status)
|
||||
master-bin1.000001 # Table_map # # table_id: # (mysql.apply_status)
|
||||
master-bin1.000001 # Write_rows # # table_id: #
|
||||
master-bin1.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin1.000001 # Query # # COMMIT
|
||||
|
@@ -5,7 +5,7 @@ show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Table_map # # table_id: # (cluster.apply_status)
|
||||
master-bin.000001 # Table_map # # table_id: # (mysql.apply_status)
|
||||
master-bin.000001 # Write_rows # # table_id: #
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user