mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Merge pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-rpl
into pilot.mysql.com:/data/msvensson/mysql/mysql-5.1-mtr
This commit is contained in:
@ -100,8 +100,10 @@ if [ "x$warning_mode" != "xpedantic" ]; then
|
||||
# C warnings
|
||||
c_warnings="$warnings -Wunused-parameter"
|
||||
# C++ warnings
|
||||
cxx_warnings="$warnings -Woverloaded-virtual -Wsign-promo -Wreorder"
|
||||
cxx_warnings="$warnings -Wctor-dtor-privacy -Wnon-virtual-dtor"
|
||||
cxx_warnings="$warnings"
|
||||
# cxx_warnings="$cxx_warnings -Woverloaded-virtual -Wsign-promo"
|
||||
cxx_warnings="$cxx_warnings -Wreorder"
|
||||
cxx_warnings="$cxx_warnings -Wctor-dtor-privacy -Wnon-virtual-dtor"
|
||||
# Added unless --with-debug=full
|
||||
debug_extra_cflags="-O1 -Wuninitialized"
|
||||
else
|
||||
|
1516
BUILD/build_mccge.sh
Executable file
1516
BUILD/build_mccge.sh
Executable file
File diff suppressed because it is too large
Load Diff
145
BUILD/check-cpu
145
BUILD/check-cpu
@ -2,6 +2,9 @@
|
||||
#
|
||||
# Check cpu of current machine and find the
|
||||
# best compiler optimization flags for gcc
|
||||
# Will return result in:
|
||||
# cpu_arg : Type of CPU
|
||||
# check_cpu_args : Arguments for GCC compiler settings
|
||||
#
|
||||
|
||||
check_cpu () {
|
||||
@ -33,7 +36,7 @@ check_cpu () {
|
||||
|
||||
# parse CPU flags
|
||||
for flag in `$cpuinfo | grep '^flags' | sed -e 's/^flags.*: //' -e 's/[^a-zA-Z0-9_ ]/_/g'`; do
|
||||
eval cpu_flag_$flag=yes
|
||||
eval cpu_flag_$flag=yes
|
||||
done
|
||||
else
|
||||
# Fallback when there is no /proc/cpuinfo
|
||||
@ -62,92 +65,95 @@ check_cpu () {
|
||||
Alpha*EV6*)
|
||||
cpu_arg="ev6";
|
||||
;;
|
||||
|
||||
# Intel ia32
|
||||
*Intel*Core*|*X[eE][oO][nN]*)
|
||||
# a Xeon is just another pentium4 ...
|
||||
# ... unless it has the "lm" (long-mode) flag set,
|
||||
# in that case it's a Xeon with EM64T support
|
||||
# If SSE3 support exists it is a Core2 Duo or newer
|
||||
# So is Intel Core.
|
||||
if [ -z "$cpu_flag_lm" ]; then
|
||||
cpu_arg="pentium4";
|
||||
else
|
||||
cpu_arg="nocona";
|
||||
if [ -z "$cpu_flag_lm" ]; then
|
||||
cpu_arg="pentium4"
|
||||
else
|
||||
cpu_arg="nocona"
|
||||
fi
|
||||
if test -z "$cpu_flag_ssse3" ; then
|
||||
core2="no"
|
||||
else
|
||||
core2="yes"
|
||||
fi
|
||||
;;
|
||||
*Pentium*4*Mobile*)
|
||||
cpu_arg="pentium4m";
|
||||
;;
|
||||
cpu_arg="pentium4m"
|
||||
;;
|
||||
*Pentium*4*)
|
||||
cpu_arg="pentium4";
|
||||
cpu_arg="pentium4"
|
||||
;;
|
||||
*Pentium*III*Mobile*)
|
||||
cpu_arg="pentium3m";
|
||||
;;
|
||||
cpu_arg="pentium3m"
|
||||
;;
|
||||
*Pentium*III*)
|
||||
cpu_arg="pentium3";
|
||||
;;
|
||||
cpu_arg="pentium3"
|
||||
;;
|
||||
*Pentium*M*pro*)
|
||||
cpu_arg="pentium-m";
|
||||
cpu_arg="pentium-m"
|
||||
;;
|
||||
*Celeron\(R\)*\ M*)
|
||||
cpu_arg="pentium-m";
|
||||
;;
|
||||
cpu_arg="pentium-m"
|
||||
;;
|
||||
*Celeron*Coppermine*)
|
||||
cpu_arg="pentium3"
|
||||
;;
|
||||
;;
|
||||
*Celeron\(R\)*)
|
||||
cpu_arg="pentium4"
|
||||
;;
|
||||
;;
|
||||
*Celeron*)
|
||||
cpu_arg="pentium2";
|
||||
;;
|
||||
*Athlon*64*)
|
||||
cpu_arg="athlon64";
|
||||
cpu_arg="pentium2"
|
||||
;;
|
||||
*Turion*)
|
||||
cpu_arg="athlon64";
|
||||
cpu_arg="athlon64"
|
||||
;;
|
||||
*Opteron*)
|
||||
cpu_arg="athlon64";
|
||||
*Athlon*64*)
|
||||
cpu_arg="athlon64"
|
||||
;;
|
||||
*Athlon*)
|
||||
cpu_arg="athlon";
|
||||
cpu_arg="athlon"
|
||||
;;
|
||||
*Opteron*)
|
||||
cpu_arg="opteron";
|
||||
cpu_arg="opteron"
|
||||
;;
|
||||
# MacOSX / Intel
|
||||
*i386*i486*)
|
||||
cpu_arg="pentium-m";
|
||||
cpu_arg="pentium-m"
|
||||
;;
|
||||
*i386*)
|
||||
cpu_arg="i386"
|
||||
;;
|
||||
#Core 2 Duo
|
||||
*Intel*Core\(TM\)2*)
|
||||
cpu_arg="nocona";
|
||||
cpu_arg="nocona"
|
||||
;;
|
||||
|
||||
# Intel ia64
|
||||
*Itanium*)
|
||||
# Don't need to set any flags for itanium(at the moment)
|
||||
cpu_arg="";
|
||||
cpu_arg="itanium"
|
||||
;;
|
||||
|
||||
#
|
||||
# Solaris Sparc
|
||||
*sparc*sun4u*)
|
||||
cpu_arg="sparc"
|
||||
;;
|
||||
# Power PC
|
||||
*ppc*)
|
||||
cpu_arg='powerpc'
|
||||
cpu_arg="powerpc"
|
||||
;;
|
||||
|
||||
*powerpc*)
|
||||
cpu_arg='powerpc'
|
||||
cpu_arg="powerpc"
|
||||
;;
|
||||
|
||||
# unknown
|
||||
*)
|
||||
cpu_arg="";
|
||||
cpu_arg=""
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
if test -z "$cpu_arg" ; then
|
||||
if test "$CPUINFO" != " " ; then
|
||||
# fallback to uname if necessary
|
||||
@ -176,29 +182,22 @@ check_cpu () {
|
||||
cc_minor=$2
|
||||
cc_patch=$3
|
||||
cc_comp=`expr $cc_major '*' 100 '+' $cc_minor`
|
||||
|
||||
|
||||
case "$cc_ver--$cc_verno" in
|
||||
*GCC*)
|
||||
# different gcc backends (and versions) have different CPU flags
|
||||
case `gcc -dumpmachine` in
|
||||
i?86-*)
|
||||
if test "$cc_comp" -lt 304
|
||||
then
|
||||
check_cpu_args='-mcpu=$cpu_arg'
|
||||
i?86-* | x86_64-*)
|
||||
if test "$cc_comp" -lt 304 ; then
|
||||
check_cpu_cflags="-mcpu=${cpu_arg}"
|
||||
elif test "$cc_comp" -ge 402 ; then
|
||||
check_cpu_cflags="-mtune=native"
|
||||
else
|
||||
check_cpu_args='-mtune=$cpu_arg'
|
||||
check_cpu_cflags="-mtune=${cpu_arg}"
|
||||
fi
|
||||
;;
|
||||
ppc-*)
|
||||
check_cpu_args='-mcpu=$cpu_arg -mtune=$cpu_arg'
|
||||
;;
|
||||
x86_64-*)
|
||||
if test "$cc_comp" -lt 304
|
||||
then
|
||||
check_cpu_args='-mcpu=$cpu_arg'
|
||||
else
|
||||
check_cpu_args='-mtune=$cpu_arg'
|
||||
fi
|
||||
check_cpu_cflags="-mcpu=${cpu_arg} -mtune=${cpu_arg}"
|
||||
;;
|
||||
*)
|
||||
check_cpu_cflags=""
|
||||
@ -208,7 +207,7 @@ check_cpu () {
|
||||
;;
|
||||
2.95.*)
|
||||
# GCC 2.95 doesn't expose its name in --version output
|
||||
check_cpu_args='-m$cpu_arg'
|
||||
check_cpu_cflags="-m${cpu_arg}"
|
||||
;;
|
||||
*)
|
||||
check_cpu_cflags=""
|
||||
@ -219,41 +218,23 @@ check_cpu () {
|
||||
# now we check whether the compiler really understands the cpu type
|
||||
touch __test.c
|
||||
|
||||
if test "x$core2" = "xyes" ; then
|
||||
cpu_arg="core2"
|
||||
fi
|
||||
while [ "$cpu_arg" ] ; do
|
||||
printf "testing $cpu_arg ... " >&2
|
||||
|
||||
# compile check
|
||||
check_cpu_cflags=`eval echo $check_cpu_args`
|
||||
if $cc -c $check_cpu_cflags __test.c 2>/dev/null; then
|
||||
echo ok >&2
|
||||
break;
|
||||
eval "$cc -c $check_cpu_cflags __test.c" 2>/dev/null
|
||||
if test "x$?" = "x0" ; then
|
||||
echo ok >&2
|
||||
break;
|
||||
fi
|
||||
|
||||
echo failed >&2
|
||||
check_cpu_cflags=""
|
||||
|
||||
# if compile failed: check whether it supports a predecessor of this CPU
|
||||
# this list is not complete, feel free to add further entries
|
||||
case "$cpu_arg" in
|
||||
# Intel ia32
|
||||
nocona) cpu_arg=pentium4 ;;
|
||||
prescott) cpu_arg=pentium4 ;;
|
||||
pentium4m) cpu_arg=pentium4 ;;
|
||||
pentium4) cpu_arg=pentium3 ;;
|
||||
pentium3m) cpu_arg=pentium3 ;;
|
||||
pentium3) cpu_arg=pentium2 ;;
|
||||
pentium2) cpu_arg=pentiumpro ;;
|
||||
pentiumpro) cpu_arg=pentium ;;
|
||||
pentium) cpu_arg=i486 ;;
|
||||
i486) cpu_arg=i386 ;;
|
||||
|
||||
# power / powerPC
|
||||
7450) cpu_arg=7400 ;;
|
||||
|
||||
*) cpu_arg="" ;;
|
||||
esac
|
||||
break;
|
||||
done
|
||||
|
||||
rm __test.*
|
||||
}
|
||||
|
||||
|
@ -104,6 +104,10 @@ SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -DDBUG_OFF
|
||||
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF")
|
||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -DDBUG_OFF")
|
||||
|
||||
#TODO: update the code and remove the disabled warnings
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4800 /wd4805")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4800 /wd4805")
|
||||
|
||||
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /wd4996")
|
||||
@ -153,6 +157,14 @@ IF(WIN32)
|
||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
||||
ENDIF(WIN32)
|
||||
|
||||
# This definition is necessary to work around a bug with Intellisense described
|
||||
# here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper
|
||||
# debugger functionality.
|
||||
IF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
MESSAGE(STATUS "Detected 64-bit platform.")
|
||||
ADD_DEFINITIONS("-D_WIN64")
|
||||
ENDIF(CMAKE_SIZEOF_VOID_P MATCHES 8)
|
||||
|
||||
IF(EMBED_MANIFESTS)
|
||||
# Search for the tools (mt, makecat, signtool) necessary for embedding
|
||||
# manifests and signing executables with the MySQL AB authenticode cert.
|
||||
|
@ -1126,6 +1126,7 @@ int main(int argc,char *argv[])
|
||||
if (mysql_server_init(embedded_server_arg_count, embedded_server_args,
|
||||
(char**) embedded_server_groups))
|
||||
{
|
||||
put_error(NULL);
|
||||
free_defaults(defaults_argv);
|
||||
my_end(0);
|
||||
exit(1);
|
||||
@ -1268,12 +1269,12 @@ sig_handler handle_sigint(int sig)
|
||||
|
||||
/* terminate if no query being executed, or we already tried interrupting */
|
||||
if (!executing_query || interrupted_query)
|
||||
mysql_end(sig);
|
||||
goto err;
|
||||
|
||||
kill_mysql= mysql_init(kill_mysql);
|
||||
if (!mysql_real_connect(kill_mysql,current_host, current_user, opt_password,
|
||||
"", opt_mysql_port, opt_mysql_unix_port,0))
|
||||
mysql_end(sig);
|
||||
goto err;
|
||||
|
||||
/* kill_buffer is always big enough because max length of %lu is 15 */
|
||||
sprintf(kill_buffer, "KILL /*!50000 QUERY */ %lu", mysql_thread_id(&mysql));
|
||||
@ -1282,6 +1283,22 @@ sig_handler handle_sigint(int sig)
|
||||
tee_fprintf(stdout, "Query aborted by Ctrl+C\n");
|
||||
|
||||
interrupted_query= 1;
|
||||
|
||||
return;
|
||||
|
||||
err:
|
||||
#ifdef _WIN32
|
||||
/*
|
||||
When SIGINT is raised on Windows, the OS creates a new thread to handle the
|
||||
interrupt. Once that thread completes, the main thread continues running
|
||||
only to find that it's resources have already been free'd when the sigint
|
||||
handler called mysql_end().
|
||||
*/
|
||||
mysql_thread_end();
|
||||
return;
|
||||
#else
|
||||
mysql_end(sig);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -74,7 +74,7 @@ static struct my_option my_long_options[]=
|
||||
{"debug", '#', "Output debug log", (uchar* *) & default_dbug_option,
|
||||
(uchar* *) & default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
|
||||
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag,
|
||||
|
@ -97,7 +97,7 @@ 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-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
|
||||
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||
|
@ -113,6 +113,8 @@ static char *opt_password=0,*current_user=0,
|
||||
*log_error_file= NULL;
|
||||
static char **defaults_argv= 0;
|
||||
static char compatible_mode_normal_str[255];
|
||||
/* Server supports character_set_results session variable? */
|
||||
static my_bool server_supports_switching_charsets= TRUE;
|
||||
static ulong opt_compatible_mode= 0;
|
||||
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
|
||||
#define MYSQL_OPT_MASTER_DATA_COMMENTED_SQL 2
|
||||
@ -243,7 +245,7 @@ static struct my_option my_long_options[] =
|
||||
{"debug", '#', "Output debug log", (uchar**) &default_dbug_option,
|
||||
(uchar**) &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
|
||||
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||
@ -1239,11 +1241,27 @@ static void restore_time_zone(FILE *sql_file,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Switch charset for results to some specified charset. If the server does not
|
||||
support character_set_results variable, nothing can be done here. As for
|
||||
whether something should be done here, future new callers of this function
|
||||
should be aware that the server lacking the facility of switching charsets is
|
||||
treated as success.
|
||||
|
||||
@note If the server lacks support, then nothing is changed and no error
|
||||
condition is returned.
|
||||
|
||||
@returns whether there was an error or not
|
||||
*/
|
||||
static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
|
||||
{
|
||||
char query_buffer[QUERY_LENGTH];
|
||||
size_t query_length;
|
||||
|
||||
/* Server lacks facility. This is not an error, by arbitrary decision . */
|
||||
if (!server_supports_switching_charsets)
|
||||
return FALSE;
|
||||
|
||||
query_length= my_snprintf(query_buffer,
|
||||
sizeof (query_buffer),
|
||||
"SET SESSION character_set_results = '%s'",
|
||||
@ -1457,11 +1475,14 @@ static int connect_to_db(char *host, char *user,char *passwd)
|
||||
DB_error(&mysql_connection, "when trying to connect");
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
/*
|
||||
Don't dump SET NAMES with a pre-4.1 server (bug#7997).
|
||||
*/
|
||||
if (mysql_get_server_version(&mysql_connection) < 40100)
|
||||
{
|
||||
/* Don't dump SET NAMES with a pre-4.1 server (bug#7997). */
|
||||
opt_set_charset= 0;
|
||||
|
||||
/* Don't switch charsets for 4.1 and earlier. (bug#34192). */
|
||||
server_supports_switching_charsets= FALSE;
|
||||
}
|
||||
/*
|
||||
As we're going to set SQL_MODE, it would be lost on reconnect, so we
|
||||
cannot reconnect.
|
||||
@ -4306,6 +4327,7 @@ static int do_show_master_status(MYSQL *mysql_con)
|
||||
my_printf_error(0, "Error: Binlogging on server not active",
|
||||
MYF(0));
|
||||
mysql_free_result(master);
|
||||
maybe_exit(EX_MYSQLERR);
|
||||
return 1;
|
||||
}
|
||||
mysql_free_result(master);
|
||||
|
@ -87,7 +87,7 @@ 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-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
|
||||
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||
|
@ -178,7 +178,7 @@ 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-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
|
||||
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||
|
@ -569,13 +569,13 @@ static struct my_option my_long_options[] =
|
||||
OPT_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},
|
||||
0, 0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#else
|
||||
{"debug", '#', "Output debug log. Often this is 'd:t:o,filename'.",
|
||||
(uchar**) &default_dbug_option, (uchar**) &default_dbug_option, 0, GET_STR,
|
||||
OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
|
||||
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", 'T', "Print some debug info at exit.", (uchar**) &debug_info_flag,
|
||||
|
@ -538,6 +538,17 @@ static int do_send_query(struct st_connection *cn, const char *q, int q_len,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void wait_query_thread_end(struct st_connection *con)
|
||||
{
|
||||
if (!con->query_done)
|
||||
{
|
||||
pthread_mutex_lock(&con->mutex);
|
||||
while (!con->query_done)
|
||||
pthread_cond_wait(&con->cond, &con->mutex);
|
||||
pthread_mutex_unlock(&con->mutex);
|
||||
}
|
||||
}
|
||||
|
||||
#else /*EMBEDDED_LIBRARY*/
|
||||
|
||||
#define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len)
|
||||
@ -4122,7 +4133,14 @@ void do_close_connection(struct st_command *command)
|
||||
con->mysql.net.vio = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
/*
|
||||
As query could be still executed in a separate theread
|
||||
we need to check if the query's thread was finished and probably wait
|
||||
(embedded-server specific)
|
||||
*/
|
||||
wait_query_thread_end(con);
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
if (con->stmt)
|
||||
mysql_stmt_close(con->stmt);
|
||||
con->stmt= 0;
|
||||
@ -4274,11 +4292,13 @@ int connect_n_handle_errors(struct st_command *command,
|
||||
if (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0,
|
||||
CLIENT_MULTI_STATEMENTS))
|
||||
{
|
||||
var_set_errno(mysql_errno(con));
|
||||
handle_error(command, mysql_errno(con), mysql_error(con),
|
||||
mysql_sqlstate(con), ds);
|
||||
return 0; /* Not connected */
|
||||
}
|
||||
|
||||
var_set_errno(0);
|
||||
handle_no_error(command);
|
||||
return 1; /* Connected */
|
||||
}
|
||||
@ -4408,6 +4428,9 @@ void do_connect(struct st_command *command)
|
||||
(int) (sizeof(connections)/sizeof(struct st_connection)));
|
||||
}
|
||||
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
con_slot->query_done= 1;
|
||||
#endif
|
||||
if (!mysql_init(&con_slot->mysql))
|
||||
die("Failed on mysql_init()");
|
||||
if (opt_compress || con_compress)
|
||||
@ -5124,7 +5147,7 @@ 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-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit .",
|
||||
{"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
|
||||
(uchar**) &debug_check_flag, (uchar**) &debug_check_flag, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"debug-info", OPT_DEBUG_INFO, "Print some debug info at exit.",
|
||||
@ -5909,16 +5932,11 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
||||
}
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
/*
|
||||
Here we handle 'reap' command, so we need to check if the
|
||||
query's thread was finished and probably wait
|
||||
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);
|
||||
}
|
||||
wait_query_thread_end(cn);
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
if (!(flags & QUERY_REAP_FLAG))
|
||||
DBUG_VOID_RETURN;
|
||||
@ -7391,7 +7409,7 @@ void timer_output(void)
|
||||
|
||||
ulonglong timer_now(void)
|
||||
{
|
||||
return my_getsystime() / 10000;
|
||||
return my_micro_time() / 1000;
|
||||
}
|
||||
|
||||
|
||||
|
@ -136,6 +136,8 @@ struct editline {
|
||||
|
||||
protected int el_editmode(EditLine *, int, const char **);
|
||||
|
||||
#define el_isprint(x) ((unsigned char) (x) < 0x80 ? isprint(x) : 1)
|
||||
|
||||
#ifdef DEBUG
|
||||
#define EL_ABORT(a) do { \
|
||||
fprintf(el->el_errfile, "%s, %d: ", \
|
||||
|
@ -618,7 +618,7 @@ key__decode_char(char *buf, int cnt, int ch)
|
||||
} else if (ch == '\\') {
|
||||
buf[cnt++] = '\\';
|
||||
buf[cnt] = '\\';
|
||||
} else if (ch == ' ' || (isprint(ch) && !isspace(ch))) {
|
||||
} else if (ch == ' ' || (el_isprint(ch) && !isspace(ch))) {
|
||||
buf[cnt] = ch;
|
||||
} else {
|
||||
buf[cnt++] = '\\';
|
||||
@ -660,7 +660,7 @@ key__decode_str(const char *str, char *buf, const char *sep)
|
||||
} else if (*p == '^' || *p == '\\') {
|
||||
*b++ = '\\';
|
||||
*b++ = *p;
|
||||
} else if (*p == ' ' || (isprint((unsigned char) *p) &&
|
||||
} else if (*p == ' ' || (el_isprint((unsigned char) *p) &&
|
||||
!isspace((unsigned char) *p))) {
|
||||
*b++ = *p;
|
||||
} else {
|
||||
|
@ -961,7 +961,7 @@ map_init_nls(EditLine *el)
|
||||
el_action_t *map = el->el_map.key;
|
||||
|
||||
for (i = 0200; i <= 0377; i++)
|
||||
if (isprint(i))
|
||||
if (el_isprint(i))
|
||||
map[i] = ED_INSERT;
|
||||
}
|
||||
|
||||
|
@ -508,7 +508,7 @@ el_gets(EditLine *el, int *nread)
|
||||
el->el_chared.c_redo.pos < el->el_chared.c_redo.lim) {
|
||||
if (cmdnum == VI_DELETE_PREV_CHAR &&
|
||||
el->el_chared.c_redo.pos != el->el_chared.c_redo.buf
|
||||
&& isprint((unsigned char)el->el_chared.c_redo.pos[-1]))
|
||||
&& el_isprint((unsigned char)el->el_chared.c_redo.pos[-1]))
|
||||
el->el_chared.c_redo.pos--;
|
||||
else
|
||||
*el->el_chared.c_redo.pos++ = ch;
|
||||
|
@ -88,7 +88,7 @@ private void
|
||||
re_addc(EditLine *el, int c)
|
||||
{
|
||||
|
||||
if (isprint(c)) {
|
||||
if (el_isprint(c)) {
|
||||
re_putc(el, c, 1);
|
||||
return;
|
||||
}
|
||||
@ -964,7 +964,7 @@ re_refresh_cursor(EditLine *el)
|
||||
h = 1;
|
||||
v++;
|
||||
}
|
||||
} else if (!isprint((unsigned char) c)) {
|
||||
} else if (!el_isprint((unsigned char) c)) {
|
||||
h += 3;
|
||||
if (h > th) { /* if overflow, compensate */
|
||||
h = h - th;
|
||||
@ -1057,7 +1057,7 @@ re_fastaddc(EditLine *el)
|
||||
char mc = (c == '\177') ? '?' : (c | 0100);
|
||||
re_fastputc(el, '^');
|
||||
re_fastputc(el, mc);
|
||||
} else if (isprint((unsigned char) c)) { /* normal char */
|
||||
} else if (el_isprint((unsigned char) c)) { /* normal char */
|
||||
re_fastputc(el, c);
|
||||
} else {
|
||||
re_fastputc(el, '\\');
|
||||
|
@ -199,7 +199,7 @@ do
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Charset '$cs' not available. (Available are: $CHARSETS_AVAILABLE).
|
||||
See the Installation chapter in the Reference Manual.]);
|
||||
See the Installation chapter in the Reference Manual.])
|
||||
esac
|
||||
done
|
||||
|
||||
@ -380,7 +380,7 @@ case $default_charset in
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Charset $cs not available. (Available are: $CHARSETS_AVAILABLE).
|
||||
See the Installation chapter in the Reference Manual.]);
|
||||
See the Installation chapter in the Reference Manual.])
|
||||
esac
|
||||
|
||||
if test "$default_collation" = default; then
|
||||
@ -405,7 +405,7 @@ else
|
||||
Collation $default_collation is not valid for character set $default_charset.
|
||||
Valid collations are: $default_charset_collations.
|
||||
See the Installation chapter in the Reference Manual.
|
||||
]);
|
||||
])
|
||||
fi
|
||||
|
||||
AC_DEFINE_UNQUOTED([MYSQL_DEFAULT_CHARSET_NAME], ["$default_charset"],
|
||||
|
@ -2,9 +2,9 @@ dnl ---------------------------------------------------------------------------
|
||||
dnl Macro: MYSQL_CHECK_NDBCLUSTER
|
||||
dnl ---------------------------------------------------------------------------
|
||||
|
||||
NDB_VERSION_MAJOR=`echo $MYSQL_NO_DASH_VERSION | cut -d. -f1`
|
||||
NDB_VERSION_MINOR=`echo $MYSQL_NO_DASH_VERSION | cut -d. -f2`
|
||||
NDB_VERSION_BUILD=`echo $MYSQL_NO_DASH_VERSION | cut -d. -f3`
|
||||
NDB_VERSION_MAJOR=`echo $MYSQL_NUMERIC_VERSION | cut -d. -f1`
|
||||
NDB_VERSION_MINOR=`echo $MYSQL_NUMERIC_VERSION | cut -d. -f2`
|
||||
NDB_VERSION_BUILD=`echo $MYSQL_NUMERIC_VERSION | cut -d. -f3`
|
||||
NDB_VERSION_STATUS=`echo $VERSION | sed 's/^[[-.0-9]]*//'`
|
||||
TEST_NDBCLUSTER=""
|
||||
|
||||
|
@ -631,7 +631,7 @@ case $SYSTEM_TYPE in
|
||||
esac
|
||||
if test "$CXX_VERSION"
|
||||
then
|
||||
AC_MSG_CHECKING("C++ compiler version");
|
||||
AC_MSG_CHECKING("C++ compiler version")
|
||||
AC_MSG_RESULT("$CXX $CXX_VERSION")
|
||||
fi
|
||||
AC_SUBST(CXX_VERSION)
|
||||
|
22
configure.in
22
configure.in
@ -10,7 +10,7 @@ AC_CANONICAL_SYSTEM
|
||||
#
|
||||
# When changing major version number please also check switch statement
|
||||
# in mysqlbinlog::check_master_version().
|
||||
AM_INIT_AUTOMAKE(mysql, 5.1.24-rc)
|
||||
AM_INIT_AUTOMAKE(mysql, 5.1.25-rc)
|
||||
AM_CONFIG_HEADER([include/config.h:config.h.in])
|
||||
|
||||
PROTOCOL_VERSION=10
|
||||
@ -23,9 +23,19 @@ NDB_SHARED_LIB_VERSION=$NDB_SHARED_LIB_MAJOR_VERSION:0:0
|
||||
|
||||
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
||||
# Remember that regexps needs to quote [ and ] since this is run through m4
|
||||
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"`
|
||||
MYSQL_BASE_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|\.[[^.]]*$||"`
|
||||
MYSQL_VERSION_ID=`echo $MYSQL_NO_DASH_VERSION | sed -e 's|[[^0-9.]].*$||;s|$|.|' | sed -e 's/[[^0-9.]]//g; s/\./ /g; s/ \([[0-9]]\) / 0\\1 /g; s/ //g'`
|
||||
# We take some made up examples
|
||||
#
|
||||
# VERSION 5.1.40sp1-alpha 5.0.34a
|
||||
# MYSQL_NO_DASH_VERSION 5.1.40sp1 5.0.34a
|
||||
# MYSQL_NUMERIC_VERSION 5.1.40 5.0.34
|
||||
# MYSQL_BASE_VERSION 5.1 5.0
|
||||
# MYSQL_VERSION_ID 50140 50034
|
||||
#
|
||||
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|-.*$||"`
|
||||
MYSQL_NUMERIC_VERSION=`echo $MYSQL_NO_DASH_VERSION | sed -e "s|[[a-z]][[a-z0-9]]*$||"`
|
||||
MYSQL_BASE_VERSION=`echo $MYSQL_NUMERIC_VERSION | sed -e "s|\.[[^.]]*$||"`
|
||||
MYSQL_VERSION_ID=`echo $MYSQL_NUMERIC_VERSION | \
|
||||
awk -F. '{printf "%d%0.2d%0.2d", $1, $2, $3}'`
|
||||
|
||||
# Add previous major version for debian package upgrade path
|
||||
MYSQL_PREVIOUS_BASE_VERSION=5.0
|
||||
@ -1031,8 +1041,8 @@ case $SYSTEM_TYPE in
|
||||
;;
|
||||
*hpux11.*)
|
||||
AC_MSG_WARN([Enabling workarounds for hpux 11])
|
||||
CFLAGS="$CFLAGS -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT"
|
||||
CXXFLAGS="$CXXFLAGS -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -D_INCLUDE_LONGLONG -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT"
|
||||
CFLAGS="$CFLAGS -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -DHAVE_BROKEN_GETPASS -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT"
|
||||
CXXFLAGS="$CXXFLAGS -DHPUX11 -DSNPRINTF_RETURN_TRUNC -DHAVE_BROKEN_PREAD -D_INCLUDE_LONGLONG -DNO_FCNTL_NONBLOCK -DDO_NOT_REMOVE_THREAD_WRAPPERS -DHAVE_BROKEN_PTHREAD_COND_TIMEDWAIT"
|
||||
if test "$with_named_thread" = "no"
|
||||
then
|
||||
AC_MSG_WARN([Using --with-named-thread=-lpthread])
|
||||
|
@ -13,9 +13,9 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
/* Return error-text for system error messages and nisam messages */
|
||||
/* Return error-text for system error messages and handler messages */
|
||||
|
||||
#define PERROR_VERSION "2.10"
|
||||
#define PERROR_VERSION "2.11"
|
||||
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
@ -30,6 +30,10 @@
|
||||
|
||||
static my_bool verbose, print_all_codes;
|
||||
|
||||
#include "../include/my_base.h"
|
||||
#include "../mysys/my_handler_errors.h"
|
||||
#include "../include/my_handler.h"
|
||||
|
||||
#ifdef WITH_NDBCLUSTER_STORAGE_ENGINE
|
||||
static my_bool ndb_code;
|
||||
static char ndb_string[1024];
|
||||
@ -82,36 +86,6 @@ typedef struct ha_errors {
|
||||
|
||||
static HA_ERRORS ha_errlist[]=
|
||||
{
|
||||
{ 120,"Didn't find key on read or update" },
|
||||
{ 121,"Duplicate key on write or update" },
|
||||
{ 123,"Someone has changed the row since it was read (while the table was locked to prevent it)" },
|
||||
{ 124,"Wrong index given to function" },
|
||||
{ 126,"Index file is crashed" },
|
||||
{ 127,"Record-file is crashed" },
|
||||
{ 128,"Out of memory" },
|
||||
{ 130,"Incorrect file format" },
|
||||
{ 131,"Command not supported by database" },
|
||||
{ 132,"Old database file" },
|
||||
{ 133,"No record read before update" },
|
||||
{ 134,"Record was already deleted (or record file crashed)" },
|
||||
{ 135,"No more room in record file" },
|
||||
{ 136,"No more room in index file" },
|
||||
{ 137,"No more records (read after end of file)" },
|
||||
{ 138,"Unsupported extension used for table" },
|
||||
{ 139,"Too big row"},
|
||||
{ 140,"Wrong create options"},
|
||||
{ 141,"Duplicate unique key or constraint on write or update"},
|
||||
{ 142,"Unknown character set used"},
|
||||
{ 143,"Conflicting table definitions in sub-tables of MERGE table"},
|
||||
{ 144,"Table is crashed and last repair failed"},
|
||||
{ 145,"Table was marked as crashed and should be repaired"},
|
||||
{ 146,"Lock timed out; Retry transaction"},
|
||||
{ 147,"Lock table is full; Restart program with a larger locktable"},
|
||||
{ 148,"Updates are not allowed under a read only transactions"},
|
||||
{ 149,"Lock deadlock; Retry transaction"},
|
||||
{ 150,"Foreign key constraint is incorrectly formed"},
|
||||
{ 151,"Cannot add a child row"},
|
||||
{ 152,"Cannot delete a parent row"},
|
||||
{ -30999, "DB_INCOMPLETE: Sync didn't finish"},
|
||||
{ -30998, "DB_KEYEMPTY: Key/data deleted or never created"},
|
||||
{ -30997, "DB_KEYEXIST: The key/data pair already exists"},
|
||||
@ -193,6 +167,17 @@ static const char *get_ha_error_msg(int code)
|
||||
{
|
||||
HA_ERRORS *ha_err_ptr;
|
||||
|
||||
/*
|
||||
If you got compilation error here about compile_time_assert array, check
|
||||
that every HA_ERR_xxx constant has a corresponding error message in
|
||||
handler_error_messages[] list (check mysys/ma_handler_errors.h and
|
||||
include/my_base.h).
|
||||
*/
|
||||
compile_time_assert(HA_ERR_FIRST + array_elements(handler_error_messages) ==
|
||||
HA_ERR_LAST + 1);
|
||||
if (code >= HA_ERR_FIRST && code <= HA_ERR_LAST)
|
||||
return handler_error_messages[code - HA_ERR_FIRST];
|
||||
|
||||
for (ha_err_ptr=ha_errlist ; ha_err_ptr->errcode ;ha_err_ptr++)
|
||||
if (ha_err_ptr->errcode == code)
|
||||
return ha_err_ptr->msg;
|
||||
@ -210,6 +195,8 @@ int main(int argc,char *argv[])
|
||||
if (get_options(&argc,&argv))
|
||||
exit(1);
|
||||
|
||||
my_handler_error_register();
|
||||
|
||||
error=0;
|
||||
#ifdef HAVE_SYS_ERRLIST
|
||||
if (print_all_codes)
|
||||
@ -290,29 +277,24 @@ int main(int argc,char *argv[])
|
||||
(const uchar*) "Unknown Error", 13) &&
|
||||
(!unknown_error || strcmp(msg, unknown_error)))
|
||||
{
|
||||
found=1;
|
||||
found= 1;
|
||||
if (verbose)
|
||||
printf("OS error code %3d: %s\n",code,msg);
|
||||
printf("OS error code %3d: %s\n", code, msg);
|
||||
else
|
||||
puts(msg);
|
||||
}
|
||||
|
||||
if ((msg= get_ha_error_msg(code)))
|
||||
{
|
||||
found= 1;
|
||||
if (verbose)
|
||||
printf("MySQL error code %3d: %s\n", code, msg);
|
||||
else
|
||||
puts(msg);
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
/* Error message still not found, look in handler error codes */
|
||||
if (!(msg=get_ha_error_msg(code)))
|
||||
{
|
||||
fprintf(stderr,"Illegal error code: %d\n",code);
|
||||
error=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
found= 1;
|
||||
if (verbose)
|
||||
printf("MySQL error code %3d: %s\n",code,msg);
|
||||
else
|
||||
puts(msg);
|
||||
}
|
||||
fprintf(stderr,"Illegal error code: %d\n", code);
|
||||
error= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ pkginclude_HEADERS = $(HEADERS_ABI) my_dbug.h m_string.h my_sys.h \
|
||||
my_getopt.h sslopt-longopts.h my_dir.h \
|
||||
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
|
||||
m_ctype.h my_attribute.h $(HEADERS_GEN)
|
||||
noinst_HEADERS = config-win.h config-netware.h \
|
||||
noinst_HEADERS = config-win.h config-netware.h my_bit.h \
|
||||
heap.h my_bitmap.h my_uctype.h \
|
||||
myisam.h myisampack.h myisammrg.h ft_global.h\
|
||||
mysys_err.h my_base.h help_start.h help_end.h \
|
||||
|
@ -158,14 +158,12 @@ typedef uint rf_SetTimer;
|
||||
|
||||
#define Socket_defined
|
||||
#define my_socket SOCKET
|
||||
#define bool BOOL
|
||||
#define SIGPIPE SIGINT
|
||||
#define RETQSORTTYPE void
|
||||
#define QSORT_TYPE_IS_VOID
|
||||
#define RETSIGTYPE void
|
||||
#define SOCKET_SIZE_TYPE int
|
||||
#define my_socket_defined
|
||||
#define bool_defined
|
||||
#define byte_defined
|
||||
#define HUGE_PTR
|
||||
#define STDCALL __stdcall /* Used by libmysql.dll */
|
||||
@ -257,73 +255,10 @@ inline double ulonglong2double(ulonglong value)
|
||||
#define tell(A) _telli64(A)
|
||||
#endif
|
||||
|
||||
|
||||
#define STACK_DIRECTION -1
|
||||
|
||||
/* Optimized store functions for Intel x86 */
|
||||
|
||||
#ifndef _WIN64
|
||||
#define sint2korr(A) (*((int16 *) (A)))
|
||||
#define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \
|
||||
(((uint32) 255L << 24) | \
|
||||
(((uint32) (uchar) (A)[2]) << 16) |\
|
||||
(((uint32) (uchar) (A)[1]) << 8) | \
|
||||
((uint32) (uchar) (A)[0])) : \
|
||||
(((uint32) (uchar) (A)[2]) << 16) |\
|
||||
(((uint32) (uchar) (A)[1]) << 8) | \
|
||||
((uint32) (uchar) (A)[0])))
|
||||
#define sint4korr(A) (*((long *) (A)))
|
||||
#define uint2korr(A) (*((uint16 *) (A)))
|
||||
/*
|
||||
ATTENTION !
|
||||
|
||||
Please, note, uint3korr reads 4 bytes (not 3) !
|
||||
It means, that you have to provide enough allocated space !
|
||||
*/
|
||||
#define uint3korr(A) (long) (*((unsigned int *) (A)) & 0xFFFFFF)
|
||||
#define uint4korr(A) (*((unsigned long *) (A)))
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16) +\
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) +\
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32))
|
||||
#define uint6korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) + \
|
||||
(((uint32) ((uchar) (A)[1])) << 8) + \
|
||||
(((uint32) ((uchar) (A)[2])) << 16) + \
|
||||
(((uint32) ((uchar) (A)[3])) << 24)) + \
|
||||
(((ulonglong) ((uchar) (A)[4])) << 32) + \
|
||||
(((ulonglong) ((uchar) (A)[5])) << 40))
|
||||
#define uint8korr(A) (*((ulonglong *) (A)))
|
||||
#define sint8korr(A) (*((longlong *) (A)))
|
||||
#define int2store(T,A) *((uint16*) (T))= (uint16) (A)
|
||||
#define int3store(T,A) { *(T)= (uchar) ((A));\
|
||||
*(T+1)=(uchar) (((uint) (A) >> 8));\
|
||||
*(T+2)=(uchar) (((A) >> 16)); }
|
||||
#define int4store(T,A) *((long *) (T))= (long) (A)
|
||||
#define int5store(T,A) { *(T)= (uchar)((A));\
|
||||
*((T)+1)=(uchar) (((A) >> 8));\
|
||||
*((T)+2)=(uchar) (((A) >> 16));\
|
||||
*((T)+3)=(uchar) (((A) >> 24)); \
|
||||
*((T)+4)=(uchar) (((A) >> 32)); }
|
||||
#define int6store(T,A) { *(T) =(uchar)((A)); \
|
||||
*((T)+1)=(uchar) (((A) >> 8)); \
|
||||
*((T)+2)=(uchar) (((A) >> 16)); \
|
||||
*((T)+3)=(uchar) (((A) >> 24)); \
|
||||
*((T)+4)=(uchar) (((A) >> 32)); \
|
||||
*((T)+5)=(uchar) (((A) >> 40)); }
|
||||
#define int8store(T,A) *((ulonglong *) (T))= (ulonglong) (A)
|
||||
|
||||
#define doubleget(V,M) do { *((long *) &V) = *((long*) M); \
|
||||
*(((long *) &V)+1) = *(((long*) M)+1); } while(0)
|
||||
#define doublestore(T,V) do { *((long *) T) = *((long*) &V); \
|
||||
*(((long *) T)+1) = *(((long*) &V)+1); } while(0)
|
||||
#define float4get(V,M) { *((long *) &(V)) = *((long*) (M)); }
|
||||
#define floatstore(T,V) memcpy((uchar*)(T), (uchar*)(&V), sizeof(float))
|
||||
#define floatget(V,M) memcpy((uchar*)(&V), (uchar*)(M), sizeof(float))
|
||||
#define float8get(V,M) doubleget((V),(M))
|
||||
#define float4store(V,M) memcpy((uchar*) V,(uchar*) (&M),sizeof(float))
|
||||
#define float8store(V,M) doublestore((V),(M))
|
||||
#endif /* _WIN64 */
|
||||
/* Difference between GetSystemTimeAsFileTime() and now() */
|
||||
#define OFFSET_TO_EPOCH ULL(116444736000000000)
|
||||
|
||||
#define HAVE_PERROR
|
||||
#define HAVE_VFPRINT
|
||||
@ -472,4 +407,4 @@ inline double ulonglong2double(ulonglong value)
|
||||
#define HAVE_CHARSET_ujis 1
|
||||
#define HAVE_CHARSET_utf8 1
|
||||
#define HAVE_UCA_COLLATIONS 1
|
||||
|
||||
#define HAVE_BOOL 1
|
||||
|
@ -47,8 +47,9 @@ typedef struct st_hash {
|
||||
/* A search iterator state */
|
||||
typedef uint HASH_SEARCH_STATE;
|
||||
|
||||
#define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,B,C,D,E,F,G, H CALLER_INFO)
|
||||
my_bool _hash_init(HASH *hash, CHARSET_INFO *charset,
|
||||
#define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,0,B,C,D,E,F,G,H CALLER_INFO)
|
||||
#define hash_init2(A,B,C,D,E,F,G,H,I) _hash_init(A,B,C,D,E,F,G,H,I CALLER_INFO)
|
||||
my_bool _hash_init(HASH *hash, uint growth_size,CHARSET_INFO *charset,
|
||||
ulong default_array_elements, size_t key_offset,
|
||||
size_t key_length, hash_get_key get_key,
|
||||
void (*free_element)(void*), uint flags CALLER_INFO_PROTO);
|
||||
@ -69,7 +70,7 @@ my_bool hash_check(HASH *hash); /* Only in debug library */
|
||||
#define hash_clear(H) bzero((char*) (H),sizeof(*(H)))
|
||||
#define hash_inited(H) ((H)->array.buffer != 0)
|
||||
#define hash_init_opt(A,B,C,D,E,F,G,H) \
|
||||
(!hash_inited(A) && _hash_init(A,B,C,D,E,F,G, H CALLER_INFO))
|
||||
(!hash_inited(A) && _hash_init(A,0,B,C,D,E,F,G, H CALLER_INFO))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -67,7 +67,7 @@
|
||||
# define bcopy(s, d, n) memcpy((d), (s), (n))
|
||||
# define bcmp(A,B,C) memcmp((A),(B),(C))
|
||||
# define bzero(A,B) memset((A),0,(B))
|
||||
# define bmove_align(A,B,C) memcpy((A),(B),(C))
|
||||
# define bmove_align(A,B,C) memcpy((A),(B),(C))
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
@ -129,7 +129,10 @@ extern size_t bcmp(const uchar *s1,const uchar *s2,size_t len);
|
||||
extern size_t my_bcmp(const uchar *s1,const uchar *s2,size_t len);
|
||||
#undef bcmp
|
||||
#define bcmp(A,B,C) my_bcmp((A),(B),(C))
|
||||
#endif
|
||||
#define bzero_if_purify(A,B) bzero(A,B)
|
||||
#else
|
||||
#define bzero_if_purify(A,B)
|
||||
#endif /* HAVE_purify */
|
||||
|
||||
#ifndef bmove512
|
||||
extern void bmove512(uchar *dst,const uchar *src,size_t len);
|
||||
|
@ -35,7 +35,7 @@
|
||||
#ifdef HAVE_INLINE
|
||||
|
||||
#define make_atomic_add(S) \
|
||||
static inline int ## S my_atomic_add ## S( \
|
||||
STATIC_INLINE int ## S my_atomic_add ## S( \
|
||||
int ## S volatile *a, int ## S v) \
|
||||
{ \
|
||||
make_atomic_add_body(S); \
|
||||
@ -43,7 +43,7 @@ static inline int ## S my_atomic_add ## S( \
|
||||
}
|
||||
|
||||
#define make_atomic_swap(S) \
|
||||
static inline int ## S my_atomic_swap ## S( \
|
||||
STATIC_INLINE int ## S my_atomic_swap ## S( \
|
||||
int ## S volatile *a, int ## S v) \
|
||||
{ \
|
||||
make_atomic_swap_body(S); \
|
||||
@ -51,7 +51,7 @@ static inline int ## S my_atomic_swap ## S( \
|
||||
}
|
||||
|
||||
#define make_atomic_cas(S) \
|
||||
static inline int my_atomic_cas ## S(int ## S volatile *a, \
|
||||
STATIC_INLINE int my_atomic_cas ## S(int ## S volatile *a, \
|
||||
int ## S *cmp, int ## S set) \
|
||||
{ \
|
||||
int8 ret; \
|
||||
@ -60,7 +60,7 @@ static inline int my_atomic_cas ## S(int ## S volatile *a, \
|
||||
}
|
||||
|
||||
#define make_atomic_load(S) \
|
||||
static inline int ## S my_atomic_load ## S(int ## S volatile *a) \
|
||||
STATIC_INLINE int ## S my_atomic_load ## S(int ## S volatile *a) \
|
||||
{ \
|
||||
int ## S ret; \
|
||||
make_atomic_load_body(S); \
|
||||
@ -68,7 +68,7 @@ static inline int ## S my_atomic_load ## S(int ## S volatile *a) \
|
||||
}
|
||||
|
||||
#define make_atomic_store(S) \
|
||||
static inline void my_atomic_store ## S( \
|
||||
STATIC_INLINE void my_atomic_store ## S( \
|
||||
int ## S volatile *a, int ## S v) \
|
||||
{ \
|
||||
make_atomic_store_body(S); \
|
||||
|
@ -14,7 +14,6 @@
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
/* This file includes constants used with all databases */
|
||||
/* Author: Michael Widenius */
|
||||
|
||||
#ifndef _my_base_h
|
||||
#define _my_base_h
|
||||
@ -48,10 +47,11 @@
|
||||
#define HA_OPEN_FOR_REPAIR 32 /* open even if crashed */
|
||||
#define HA_OPEN_FROM_SQL_LAYER 64
|
||||
#define HA_OPEN_MMAP 128 /* open memory mapped */
|
||||
#define HA_OPEN_COPY 256 /* Open copy (for repair) */
|
||||
/* Internal temp table, used for temporary results */
|
||||
#define HA_OPEN_INTERNAL_TABLE 256
|
||||
#define HA_OPEN_INTERNAL_TABLE 512
|
||||
|
||||
/* The following is parameter to ha_rkey() how to use key */
|
||||
/* The following is parameter to ha_rkey() how to use key */
|
||||
|
||||
/*
|
||||
We define a complete-field prefix of a key value as a prefix where
|
||||
@ -137,7 +137,7 @@ enum ha_extra_function {
|
||||
HA_EXTRA_RESET_STATE, /* Reset positions */
|
||||
HA_EXTRA_IGNORE_DUP_KEY, /* Dup keys don't rollback everything*/
|
||||
HA_EXTRA_NO_IGNORE_DUP_KEY,
|
||||
HA_EXTRA_PREPARE_FOR_DELETE,
|
||||
HA_EXTRA_PREPARE_FOR_DROP,
|
||||
HA_EXTRA_PREPARE_FOR_UPDATE, /* Remove read cache if problems */
|
||||
HA_EXTRA_PRELOAD_BUFFER_SIZE, /* Set buffer size for preloading */
|
||||
/*
|
||||
@ -188,6 +188,8 @@ enum ha_extra_function {
|
||||
executed. This condition is unset by HA_EXTRA_NO_IGNORE_DUP_KEY.
|
||||
*/
|
||||
HA_EXTRA_INSERT_WITH_UPDATE,
|
||||
/* Inform handler that we will do a rename */
|
||||
HA_EXTRA_PREPARE_FOR_RENAME,
|
||||
/*
|
||||
Orders MERGE handler to attach or detach its child tables. Used at
|
||||
begin and end of a statement.
|
||||
@ -196,6 +198,9 @@ enum ha_extra_function {
|
||||
HA_EXTRA_DETACH_CHILDREN
|
||||
};
|
||||
|
||||
/* Compatible option, to be deleted in 6.0 */
|
||||
#define HA_EXTRA_PREPARE_FOR_DELETE HA_EXTRA_PREPARE_FOR_DROP
|
||||
|
||||
/* The following is parameter to ha_panic() */
|
||||
|
||||
enum ha_panic_function {
|
||||
@ -300,6 +305,8 @@ enum ha_base_keytype {
|
||||
#define HA_OPTION_NO_PACK_KEYS 128 /* Reserved for MySQL */
|
||||
#define HA_OPTION_CREATE_FROM_ENGINE 256
|
||||
#define HA_OPTION_RELIES_ON_SQL_LAYER 512
|
||||
#define HA_OPTION_NULL_FIELDS 1024
|
||||
#define HA_OPTION_PAGE_CHECKSUM 2048
|
||||
#define HA_OPTION_TEMP_COMPRESS_RECORD ((uint) 16384) /* set by isamchk */
|
||||
#define HA_OPTION_READ_ONLY_DATA ((uint) 32768) /* Set by isamchk */
|
||||
|
||||
@ -310,6 +317,7 @@ enum ha_base_keytype {
|
||||
#define HA_CREATE_TMP_TABLE 4
|
||||
#define HA_CREATE_CHECKSUM 8
|
||||
#define HA_CREATE_KEEP_FILES 16 /* don't overwrite .MYD and MYI */
|
||||
#define HA_CREATE_PAGE_CHECKSUM 32
|
||||
#define HA_CREATE_DELAY_KEY_WRITE 64
|
||||
#define HA_CREATE_RELIES_ON_SQL_LAYER 128
|
||||
|
||||
@ -356,14 +364,18 @@ enum ha_base_keytype {
|
||||
*/
|
||||
#define HA_STATUS_AUTO 64
|
||||
|
||||
/* Errorcodes given by functions */
|
||||
/*
|
||||
Errorcodes given by handler functions
|
||||
|
||||
opt_sum_query() assumes these codes are > 1
|
||||
Do not add error numbers before HA_ERR_FIRST.
|
||||
If necessary to add lower numbers, change HA_ERR_FIRST accordingly.
|
||||
*/
|
||||
#define HA_ERR_FIRST 120 /* Copy of first error nr.*/
|
||||
|
||||
/* opt_sum_query() assumes these codes are > 1 */
|
||||
/* Do not add error numbers before HA_ERR_FIRST. */
|
||||
/* If necessary to add lower numbers, change HA_ERR_FIRST accordingly. */
|
||||
#define HA_ERR_FIRST 120 /*Copy first error nr.*/
|
||||
#define HA_ERR_KEY_NOT_FOUND 120 /* Didn't find key on read or update */
|
||||
#define HA_ERR_FOUND_DUPP_KEY 121 /* Dupplicate key on write */
|
||||
#define HA_ERR_INTERNAL_ERROR 122 /* Internal error */
|
||||
#define HA_ERR_RECORD_CHANGED 123 /* Uppdate with is recoverable */
|
||||
#define HA_ERR_WRONG_INDEX 124 /* Wrong index given to function */
|
||||
#define HA_ERR_CRASHED 126 /* Indexfile is crashed */
|
||||
@ -382,7 +394,7 @@ enum ha_base_keytype {
|
||||
#define HA_WRONG_CREATE_OPTION 140 /* Wrong create option */
|
||||
#define HA_ERR_FOUND_DUPP_UNIQUE 141 /* Dupplicate unique on write */
|
||||
#define HA_ERR_UNKNOWN_CHARSET 142 /* Can't open charset */
|
||||
#define HA_ERR_WRONG_MRG_TABLE_DEF 143 /* conflicting MyISAM tables in MERGE */
|
||||
#define HA_ERR_WRONG_MRG_TABLE_DEF 143 /* conflicting tables in MERGE */
|
||||
#define HA_ERR_CRASHED_ON_REPAIR 144 /* Last (automatic?) repair failed */
|
||||
#define HA_ERR_CRASHED_ON_USAGE 145 /* Table must be repaired */
|
||||
#define HA_ERR_LOCK_WAIT_TIMEOUT 146
|
||||
@ -397,32 +409,41 @@ enum ha_base_keytype {
|
||||
#define HA_ERR_NO_SUCH_TABLE 155 /* The table does not exist in engine */
|
||||
#define HA_ERR_TABLE_EXIST 156 /* The table existed in storage engine */
|
||||
#define HA_ERR_NO_CONNECTION 157 /* Could not connect to storage engine */
|
||||
#define HA_ERR_NULL_IN_SPATIAL 158 /* NULLs are not supported in spatial index */
|
||||
/* NULLs are not supported in spatial index */
|
||||
#define HA_ERR_NULL_IN_SPATIAL 158
|
||||
#define HA_ERR_TABLE_DEF_CHANGED 159 /* The table changed in storage engine */
|
||||
#define HA_ERR_NO_PARTITION_FOUND 160 /* There's no partition in table for
|
||||
given value */
|
||||
/* There's no partition in table for given value */
|
||||
#define HA_ERR_NO_PARTITION_FOUND 160
|
||||
#define HA_ERR_RBR_LOGGING_FAILED 161 /* Row-based binlogging of row failed */
|
||||
#define HA_ERR_DROP_INDEX_FK 162 /* Index needed in foreign key constr. */
|
||||
#define HA_ERR_FOREIGN_DUPLICATE_KEY 163 /* Upholding foreign key constraints
|
||||
would lead to a duplicate key
|
||||
error in some other table. */
|
||||
#define HA_ERR_TABLE_NEEDS_UPGRADE 164 /* The table changed in storage engine */
|
||||
#define HA_ERR_TABLE_READONLY 165 /* The table is not writable */
|
||||
#define HA_ERR_DROP_INDEX_FK 162 /* Index needed in foreign key constr */
|
||||
/*
|
||||
Upholding foreign key constraints would lead to a duplicate key error
|
||||
in some other table.
|
||||
*/
|
||||
#define HA_ERR_FOREIGN_DUPLICATE_KEY 163
|
||||
/* The table changed in storage engine */
|
||||
#define HA_ERR_TABLE_NEEDS_UPGRADE 164
|
||||
#define HA_ERR_TABLE_READONLY 165 /* The table is not writable */
|
||||
|
||||
#define HA_ERR_AUTOINC_READ_FAILED 166 /* Failed to get next autoinc value */
|
||||
#define HA_ERR_AUTOINC_ERANGE 167 /* Failed to set row autoinc value */
|
||||
#define HA_ERR_GENERIC 168 /* Generic error */
|
||||
#define HA_ERR_RECORD_IS_THE_SAME 169 /* row not actually updated :
|
||||
new values same as the old values */
|
||||
|
||||
/* row not actually updated: new values same as the old values */
|
||||
#define HA_ERR_RECORD_IS_THE_SAME 169
|
||||
/* It is not possible to log this statement */
|
||||
#define HA_ERR_LOGGING_IMPOSSIBLE 170 /* It is not possible to log this
|
||||
statement */
|
||||
#define HA_ERR_CORRUPT_EVENT 171 /* The event was corrupt, leading to
|
||||
illegal data being read */
|
||||
#define HA_ERR_ROWS_EVENT_APPLY 172 /* The event could not be processed
|
||||
#define HA_ERR_NEW_FILE 172 /* New file format */
|
||||
#define HA_ERR_ROWS_EVENT_APPLY 173 /* The event could not be processed
|
||||
no other hanlder error happened */
|
||||
#define HA_ERR_LAST 172 /*Copy last error nr.*/
|
||||
/* Add error numbers before HA_ERR_LAST and change it accordingly. */
|
||||
#define HA_ERR_INITIALIZATION 174 /* Error during initialization */
|
||||
#define HA_ERR_FILE_TOO_SHORT 175 /* File too short */
|
||||
#define HA_ERR_WRONG_CRC 176 /* Wrong CRC on page */
|
||||
#define HA_ERR_LAST 176 /* Copy of last error nr */
|
||||
|
||||
/* Number of different errors */
|
||||
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
|
||||
|
||||
/* Other constants */
|
||||
@ -486,7 +507,7 @@ enum en_fieldtype {
|
||||
};
|
||||
|
||||
enum data_file_type {
|
||||
STATIC_RECORD,DYNAMIC_RECORD,COMPRESSED_RECORD
|
||||
STATIC_RECORD, DYNAMIC_RECORD, COMPRESSED_RECORD, BLOCK_RECORD
|
||||
};
|
||||
|
||||
/* For key ranges */
|
||||
@ -538,4 +559,7 @@ typedef ulong ha_rows;
|
||||
|
||||
#define HA_VARCHAR_PACKLENGTH(field_length) ((field_length) < 256 ? 1 :2)
|
||||
|
||||
/* invalidator function reference for Query Cache */
|
||||
typedef void (* invalidator_by_filename)(const char * filename);
|
||||
|
||||
#endif /* _my_base_h */
|
||||
|
109
include/my_bit.h
Normal file
109
include/my_bit.h
Normal file
@ -0,0 +1,109 @@
|
||||
/*
|
||||
Some useful bit functions
|
||||
*/
|
||||
|
||||
C_MODE_START
|
||||
#ifdef HAVE_INLINE
|
||||
|
||||
extern const char _my_bits_nbits[256];
|
||||
extern const uchar _my_bits_reverse_table[256];
|
||||
|
||||
/*
|
||||
Find smallest X in 2^X >= value
|
||||
This can be used to divide a number with value by doing a shift instead
|
||||
*/
|
||||
|
||||
STATIC_INLINE uint my_bit_log2(ulong value)
|
||||
{
|
||||
uint bit;
|
||||
for (bit=0 ; value > 1 ; value>>=1, bit++) ;
|
||||
return bit;
|
||||
}
|
||||
|
||||
STATIC_INLINE uint my_count_bits(ulonglong v)
|
||||
{
|
||||
#if SIZEOF_LONG_LONG > 4
|
||||
/* The following code is a bit faster on 16 bit machines than if we would
|
||||
only shift v */
|
||||
ulong v2=(ulong) (v >> 32);
|
||||
return (uint) (uchar) (_my_bits_nbits[(uchar) v] +
|
||||
_my_bits_nbits[(uchar) (v >> 8)] +
|
||||
_my_bits_nbits[(uchar) (v >> 16)] +
|
||||
_my_bits_nbits[(uchar) (v >> 24)] +
|
||||
_my_bits_nbits[(uchar) (v2)] +
|
||||
_my_bits_nbits[(uchar) (v2 >> 8)] +
|
||||
_my_bits_nbits[(uchar) (v2 >> 16)] +
|
||||
_my_bits_nbits[(uchar) (v2 >> 24)]);
|
||||
#else
|
||||
return (uint) (uchar) (_my_bits_nbits[(uchar) v] +
|
||||
_my_bits_nbits[(uchar) (v >> 8)] +
|
||||
_my_bits_nbits[(uchar) (v >> 16)] +
|
||||
_my_bits_nbits[(uchar) (v >> 24)]);
|
||||
#endif
|
||||
}
|
||||
|
||||
STATIC_INLINE uint my_count_bits_ushort(ushort v)
|
||||
{
|
||||
return _my_bits_nbits[v];
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Next highest power of two
|
||||
|
||||
SYNOPSIS
|
||||
my_round_up_to_next_power()
|
||||
v Value to check
|
||||
|
||||
RETURN
|
||||
Next or equal power of 2
|
||||
Note: 0 will return 0
|
||||
|
||||
NOTES
|
||||
Algorithm by Sean Anderson, according to:
|
||||
http://graphics.stanford.edu/~seander/bithacks.html
|
||||
(Orignal code public domain)
|
||||
|
||||
Comments shows how this works with 01100000000000000000000000001011
|
||||
*/
|
||||
|
||||
STATIC_INLINE uint32 my_round_up_to_next_power(uint32 v)
|
||||
{
|
||||
v--; /* 01100000000000000000000000001010 */
|
||||
v|= v >> 1; /* 01110000000000000000000000001111 */
|
||||
v|= v >> 2; /* 01111100000000000000000000001111 */
|
||||
v|= v >> 4; /* 01111111110000000000000000001111 */
|
||||
v|= v >> 8; /* 01111111111111111100000000001111 */
|
||||
v|= v >> 16; /* 01111111111111111111111111111111 */
|
||||
return v+1; /* 10000000000000000000000000000000 */
|
||||
}
|
||||
|
||||
STATIC_INLINE uint32 my_clear_highest_bit(uint32 v)
|
||||
{
|
||||
uint32 w=v >> 1;
|
||||
w|= w >> 1;
|
||||
w|= w >> 2;
|
||||
w|= w >> 4;
|
||||
w|= w >> 8;
|
||||
w|= w >> 16;
|
||||
return v & w;
|
||||
}
|
||||
|
||||
STATIC_INLINE uint32 my_reverse_bits(uint32 key)
|
||||
{
|
||||
return
|
||||
(_my_bits_reverse_table[ key & 255] << 24) |
|
||||
(_my_bits_reverse_table[(key>> 8) & 255] << 16) |
|
||||
(_my_bits_reverse_table[(key>>16) & 255] << 8) |
|
||||
_my_bits_reverse_table[(key>>24) ];
|
||||
}
|
||||
|
||||
#else /* HAVE_INLINE */
|
||||
extern uint my_bit_log2(ulong value);
|
||||
extern uint32 my_round_up_to_next_power(uint32 v);
|
||||
uint32 my_clear_highest_bit(uint32 v);
|
||||
uint32 my_reverse_bits(uint32 key);
|
||||
extern uint my_count_bits(ulonglong v);
|
||||
extern uint my_count_bits_ushort(ushort v);
|
||||
#endif /* HAVE_INLINE */
|
||||
C_MODE_END
|
@ -101,7 +101,7 @@ extern FILE *_db_fp_(void);
|
||||
#define DBUG_LONGJMP(a1) longjmp(a1)
|
||||
#define DBUG_DUMP(keyword,a1,a2)
|
||||
#define DBUG_END()
|
||||
#define DBUG_ASSERT(A)
|
||||
#define DBUG_ASSERT(A) do { } while(0)
|
||||
#define DBUG_LOCK_FILE
|
||||
#define DBUG_FILE (stderr)
|
||||
#define DBUG_UNLOCK_FILE
|
||||
|
@ -242,6 +242,8 @@
|
||||
#endif
|
||||
#undef inline_test_2
|
||||
#undef inline_test_1
|
||||
/* helper macro for "instantiating" inline functions */
|
||||
#define STATIC_INLINE static inline
|
||||
|
||||
/*
|
||||
The following macros are used to control inlining a bit more than
|
||||
@ -486,9 +488,6 @@ C_MODE_END
|
||||
#include <sys/stream.h> /* HPUX 10.20 defines ulong here. UGLY !!! */
|
||||
#define HAVE_ULONG
|
||||
#endif
|
||||
#ifdef DONT_USE_FINITE /* HPUX 11.x has is_finite() */
|
||||
#undef HAVE_FINITE
|
||||
#endif
|
||||
#if defined(HPUX10) && defined(_LARGEFILE64_SOURCE) && defined(THREAD)
|
||||
/* Fix bug in setrlimit */
|
||||
#undef setrlimit
|
||||
@ -858,9 +857,13 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
||||
#define SIZE_T_MAX ~((size_t) 0)
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_FINITE
|
||||
#ifndef isfinite
|
||||
#ifdef HAVE_FINITE
|
||||
#define isfinite(x) finite(x)
|
||||
#else
|
||||
#define finite(x) (1.0 / fabs(x) > 0.0)
|
||||
#endif
|
||||
#endif /* HAVE_FINITE */
|
||||
#endif /* isfinite */
|
||||
|
||||
#ifndef HAVE_ISNAN
|
||||
#define isnan(x) ((x) != (x))
|
||||
@ -870,7 +873,7 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
||||
/* isinf() can be used in both C and C++ code */
|
||||
#define my_isinf(X) isinf(X)
|
||||
#else
|
||||
#define my_isinf(X) (!finite(X) && !isnan(X))
|
||||
#define my_isinf(X) (!isfinite(X) && !isnan(X))
|
||||
#endif
|
||||
|
||||
/* Define missing math constants. */
|
||||
@ -1015,6 +1018,8 @@ typedef long long intptr;
|
||||
#error sizeof(void *) is neither sizeof(int) nor sizeof(long) nor sizeof(long long)
|
||||
#endif
|
||||
|
||||
#define MY_ERRPTR ((void*)(intptr)1)
|
||||
|
||||
#ifdef USE_RAID
|
||||
/*
|
||||
The following is done with a if to not get problems with pre-processors
|
||||
@ -1066,7 +1071,7 @@ typedef uint8 int7; /* Most effective integer 0 <= x <= 127 */
|
||||
typedef short int15; /* Most effective integer 0 <= x <= 32767 */
|
||||
typedef int myf; /* Type of MyFlags in my_funcs */
|
||||
typedef char my_bool; /* Small bool */
|
||||
#if !defined(bool) && !defined(bool_defined) && (!defined(HAVE_BOOL) || !defined(__cplusplus))
|
||||
#if !defined(bool) && (!defined(HAVE_BOOL) || !defined(__cplusplus))
|
||||
typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
#endif
|
||||
/* Macros for converting *constants* to the right type */
|
||||
@ -1139,7 +1144,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
*/
|
||||
|
||||
/* Optimized store functions for Intel x86 */
|
||||
#if defined(__i386__) && !defined(_WIN64)
|
||||
#if defined(__i386__) || defined(_WIN32)
|
||||
#define sint2korr(A) (*((int16 *) (A)))
|
||||
#define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \
|
||||
(((uint32) 255L << 24) | \
|
||||
@ -1151,7 +1156,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
((uint32) (uchar) (A)[0])))
|
||||
#define sint4korr(A) (*((long *) (A)))
|
||||
#define uint2korr(A) (*((uint16 *) (A)))
|
||||
#ifdef HAVE_purify
|
||||
#if defined(HAVE_purify) && !defined(_WIN32)
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16))
|
||||
@ -1163,7 +1168,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
It means, that you have to provide enough allocated space !
|
||||
*/
|
||||
#define uint3korr(A) (long) (*((unsigned int *) (A)) & 0xFFFFFF)
|
||||
#endif
|
||||
#endif /* HAVE_purify && !_WIN32 */
|
||||
#define uint4korr(A) (*((uint32 *) (A)))
|
||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
@ -1214,9 +1219,8 @@ do { doubleget_union _tmp; \
|
||||
#define floatstore(T,V) memcpy((uchar*)(T), (uchar*)(&V),sizeof(float))
|
||||
#define floatget(V,M) memcpy((uchar*) &V,(uchar*) (M),sizeof(float))
|
||||
#define float8store(V,M) doublestore((V),(M))
|
||||
#endif /* __i386__ */
|
||||
#else
|
||||
|
||||
#ifndef sint2korr
|
||||
/*
|
||||
We're here if it's not a IA-32 architecture (Win32 and UNIX IA-32 defines
|
||||
were done before)
|
||||
@ -1355,7 +1359,7 @@ do { doubleget_union _tmp; \
|
||||
#define float8store(V,M) doublestore((V),(M))
|
||||
#endif /* WORDS_BIGENDIAN */
|
||||
|
||||
#endif /* sint2korr */
|
||||
#endif /* __i386__ OR _WIN32 */
|
||||
|
||||
/*
|
||||
Macro for reading 32-bit integer from network byte order (big-endian)
|
||||
@ -1476,6 +1480,7 @@ do { doubleget_union _tmp; \
|
||||
#define dlerror() ""
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef __NETWARE__
|
||||
/*
|
||||
* Include standard definitions of operator new and delete.
|
||||
@ -1506,6 +1511,13 @@ inline void operator delete[](void*, void*) { /* Do nothing */ }
|
||||
#if !defined(max)
|
||||
#define max(a, b) ((a) > (b) ? (a) : (b))
|
||||
#define min(a, b) ((a) < (b) ? (a) : (b))
|
||||
#endif
|
||||
/*
|
||||
Only Linux is known to need an explicit sync of the directory to make sure a
|
||||
file creation/deletion/renaming in(from,to) this directory durable.
|
||||
*/
|
||||
#ifdef TARGET_OS_LINUX
|
||||
#define NEED_EXPLICIT_SYNC_DIR 1
|
||||
#endif
|
||||
|
||||
#if !defined(__cplusplus) && !defined(bool)
|
||||
|
@ -18,9 +18,32 @@
|
||||
#ifndef _my_handler_h
|
||||
#define _my_handler_h
|
||||
|
||||
#include "my_base.h"
|
||||
#include "m_ctype.h"
|
||||
#include "myisampack.h"
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
There is a hard limit for the maximum number of keys as there are only
|
||||
8 bits in the index file header for the number of keys in a table.
|
||||
This means that 0..255 keys can exist for a table. The idea of
|
||||
HA_MAX_POSSIBLE_KEY is to ensure that one can use myisamchk & tools on
|
||||
a MyISAM table for which one has more keys than MyISAM is normally
|
||||
compiled for. If you don't have this, you will get a core dump when
|
||||
running myisamchk compiled for 128 keys on a table with 255 keys.
|
||||
*/
|
||||
|
||||
#define HA_MAX_POSSIBLE_KEY 255 /* For myisamchk */
|
||||
/*
|
||||
The following defines can be increased if necessary.
|
||||
But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and HA_MAX_KEY_LENGTH.
|
||||
*/
|
||||
|
||||
#define HA_MAX_KEY_LENGTH 1000 /* Max length in bytes */
|
||||
#define HA_MAX_KEY_SEG 16 /* Max segments for key */
|
||||
|
||||
#define HA_MAX_POSSIBLE_KEY_BUFF (HA_MAX_KEY_LENGTH + 24+ 6+6)
|
||||
#define HA_MAX_KEY_BUFF (HA_MAX_KEY_LENGTH+HA_MAX_KEY_SEG*6+8+8)
|
||||
|
||||
typedef struct st_HA_KEYSEG /* Key-portion */
|
||||
{
|
||||
@ -38,33 +61,35 @@ typedef struct st_HA_KEYSEG /* Key-portion */
|
||||
} HA_KEYSEG;
|
||||
|
||||
#define get_key_length(length,key) \
|
||||
{ if ((uchar) *(key) != 255) \
|
||||
length= (uint) (uchar) *((key)++); \
|
||||
{ if (*(uchar*) (key) != 255) \
|
||||
length= (uint) *(uchar*) ((key)++); \
|
||||
else \
|
||||
{ length=mi_uint2korr((key)+1); (key)+=3; } \
|
||||
{ length= mi_uint2korr((key)+1); (key)+=3; } \
|
||||
}
|
||||
|
||||
#define get_key_length_rdonly(length,key) \
|
||||
{ if ((uchar) *(key) != 255) \
|
||||
length= ((uint) (uchar) *((key))); \
|
||||
{ if (*(uchar*) (key) != 255) \
|
||||
length= ((uint) *(uchar*) ((key))); \
|
||||
else \
|
||||
{ length=mi_uint2korr((key)+1); } \
|
||||
{ length= mi_uint2korr((key)+1); } \
|
||||
}
|
||||
|
||||
#define get_key_pack_length(length,length_pack,key) \
|
||||
{ if ((uchar) *(key) != 255) \
|
||||
{ length= (uint) (uchar) *((key)++); length_pack=1; }\
|
||||
{ if (*(uchar*) (key) != 255) \
|
||||
{ length= (uint) *(uchar*) ((key)++); length_pack= 1; }\
|
||||
else \
|
||||
{ length=mi_uint2korr((key)+1); (key)+=3; length_pack=3; } \
|
||||
{ length=mi_uint2korr((key)+1); (key)+= 3; length_pack= 3; } \
|
||||
}
|
||||
|
||||
#define store_key_length_inc(key,length) \
|
||||
{ if ((length) < 255) \
|
||||
{ *(key)++=(length); } \
|
||||
{ *(key)++= (length); } \
|
||||
else \
|
||||
{ *(key)=255; mi_int2store((key)+1,(length)); (key)+=3; } \
|
||||
}
|
||||
|
||||
#define size_to_store_key_length(length) ((length) < 255 ? 1 : 3)
|
||||
|
||||
#define get_rec_bits(bit_ptr, bit_ofs, bit_len) \
|
||||
(((((uint16) (bit_ptr)[1] << 8) | (uint16) (bit_ptr)[0]) >> (bit_ofs)) & \
|
||||
((1 << (bit_len)) - 1))
|
||||
@ -81,12 +106,23 @@ typedef struct st_HA_KEYSEG /* Key-portion */
|
||||
#define clr_rec_bits(bit_ptr, bit_ofs, bit_len) \
|
||||
set_rec_bits(0, bit_ptr, bit_ofs, bit_len)
|
||||
|
||||
extern int mi_compare_text(CHARSET_INFO *, uchar *, uint, uchar *, uint ,
|
||||
extern int ha_compare_text(CHARSET_INFO *, uchar *, uint, uchar *, uint ,
|
||||
my_bool, my_bool);
|
||||
extern int ha_key_cmp(register HA_KEYSEG *keyseg, register uchar *a,
|
||||
register uchar *b, uint key_length, uint nextflag,
|
||||
uint *diff_pos);
|
||||
|
||||
extern HA_KEYSEG *ha_find_null(HA_KEYSEG *keyseg, uchar *a);
|
||||
extern void my_handler_error_register(void);
|
||||
extern void my_handler_error_unregister(void);
|
||||
/*
|
||||
Inside an in-memory data record, memory pointers to pieces of the
|
||||
record (like BLOBs) are stored in their native byte order and in
|
||||
this amount of bytes.
|
||||
*/
|
||||
#define portable_sizeof_char_ptr 8
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _my_handler_h */
|
||||
|
@ -161,7 +161,7 @@ void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/
|
||||
#define pthread_mutex_unlock(A) LeaveCriticalSection(A)
|
||||
#define pthread_mutex_destroy(A) DeleteCriticalSection(A)
|
||||
#define my_pthread_setprio(A,B) SetThreadPriority(GetCurrentThread(), (B))
|
||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
|
||||
#define pthread_join(A,B) (WaitForSingleObject((A), INFINITE) != WAIT_OBJECT_0)
|
||||
|
||||
@ -343,14 +343,14 @@ struct tm *gmtime_r(const time_t *clock, struct tm *res);
|
||||
#define pthread_attr_setdetachstate(A,B) pthread_dummy(0)
|
||||
#define pthread_create(A,B,C,D) pthread_create((A),*(B),(C),(D))
|
||||
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
#undef pthread_detach_this_thread
|
||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DARWIN5_THREADS
|
||||
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
#define pthread_condattr_init(A) pthread_dummy(0)
|
||||
#define pthread_condattr_destroy(A) pthread_dummy(0)
|
||||
#undef pthread_detach_this_thread
|
||||
@ -370,7 +370,7 @@ struct tm *gmtime_r(const time_t *clock, struct tm *res);
|
||||
#ifndef pthread_sigmask
|
||||
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
||||
#endif
|
||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
||||
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||
#undef pthread_detach_this_thread
|
||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
||||
#elif !defined(__NETWARE__) /* HAVE_PTHREAD_ATTR_CREATE && !HAVE_SIGWAIT */
|
||||
|
@ -51,6 +51,7 @@ extern int NEAR my_errno; /* Last error in mysys */
|
||||
#define MY_WME 16 /* Write message on error */
|
||||
#define MY_WAIT_IF_FULL 32 /* Wait and try again if disk full error */
|
||||
#define MY_IGNORE_BADFD 32 /* my_sync: ignore 'bad descriptor' errors */
|
||||
#define MY_SYNC_DIR 1024 /* my_create/delete/rename: sync directory */
|
||||
#define MY_RAID 64 /* Support for RAID */
|
||||
#define MY_FULL_IO 512 /* For my_read - loop intil I/O is complete */
|
||||
#define MY_DONT_CHECK_FILESIZE 128 /* Option to init_io_cache() */
|
||||
@ -212,6 +213,7 @@ extern int (*error_handler_hook)(uint my_err, const char *str,myf MyFlags);
|
||||
extern int (*fatal_error_handler_hook)(uint my_err, const char *str,
|
||||
myf MyFlags);
|
||||
extern uint my_file_limit;
|
||||
extern ulong my_thread_stack_size;
|
||||
|
||||
#ifdef HAVE_LARGE_PAGES
|
||||
extern my_bool my_use_large_pages;
|
||||
@ -276,7 +278,14 @@ enum cache_type
|
||||
|
||||
enum flush_type
|
||||
{
|
||||
FLUSH_KEEP, FLUSH_RELEASE, FLUSH_IGNORE_CHANGED, FLUSH_FORCE_WRITE
|
||||
FLUSH_KEEP, /* flush block and keep it in the cache */
|
||||
FLUSH_RELEASE, /* flush block and remove it from the cache */
|
||||
FLUSH_IGNORE_CHANGED, /* remove block from the cache */
|
||||
/*
|
||||
As my_disable_flush_pagecache_blocks is always 0, the following option
|
||||
is strictly equivalent to FLUSH_KEEP
|
||||
*/
|
||||
FLUSH_FORCE_WRITE
|
||||
};
|
||||
|
||||
typedef struct st_record_cache /* Used when cacheing records */
|
||||
@ -632,6 +641,8 @@ extern FILE *my_fdopen(File Filedes,const char *name, int Flags,myf MyFlags);
|
||||
extern int my_fclose(FILE *fd,myf MyFlags);
|
||||
extern int my_chsize(File fd,my_off_t newlength, int filler, myf MyFlags);
|
||||
extern int my_sync(File fd, myf my_flags);
|
||||
extern int my_sync_dir(const char *dir_name, myf my_flags);
|
||||
extern int my_sync_dir_by_file(const char *file_name, myf my_flags);
|
||||
extern int my_error _VARARGS((int nr,myf MyFlags, ...));
|
||||
extern int my_printf_error _VARARGS((uint my_err, const char *format,
|
||||
myf MyFlags, ...))
|
||||
@ -666,7 +677,7 @@ extern char *my_tmpdir(MY_TMPDIR *tmpdir);
|
||||
extern void free_tmpdir(MY_TMPDIR *tmpdir);
|
||||
|
||||
extern void my_remember_signal(int signal_number,sig_handler (*func)(int));
|
||||
extern size_t dirname_part(char * to, const char *name, size_t *to_res_length);
|
||||
extern size_t dirname_part(char * to,const char *name, size_t *to_res_length);
|
||||
extern size_t dirname_length(const char *name);
|
||||
#define base_name(A) (A+dirname_length(A))
|
||||
extern int test_if_hard_path(const char *dir_name);
|
||||
@ -714,7 +725,7 @@ extern sig_handler sigtstp_handler(int signal_number);
|
||||
extern void handle_recived_signals(void);
|
||||
|
||||
extern sig_handler my_set_alarm_variable(int signo);
|
||||
extern void my_string_ptr_sort(uchar *base, uint items, size_t size);
|
||||
extern void my_string_ptr_sort(uchar *base,uint items,size_t size);
|
||||
extern void radixsort_for_str_ptr(uchar* base[], uint number_of_elements,
|
||||
size_t size_of_element,uchar *buffer[]);
|
||||
extern qsort_t my_qsort(void *base_ptr, size_t total_elems, size_t size,
|
||||
@ -782,6 +793,7 @@ extern my_bool insert_dynamic(DYNAMIC_ARRAY *array,uchar * element);
|
||||
extern uchar *alloc_dynamic(DYNAMIC_ARRAY *array);
|
||||
extern uchar *pop_dynamic(DYNAMIC_ARRAY*);
|
||||
extern my_bool set_dynamic(DYNAMIC_ARRAY *array,uchar * element,uint array_index);
|
||||
extern my_bool allocate_dynamic(DYNAMIC_ARRAY *array, uint max_elements);
|
||||
extern void get_dynamic(DYNAMIC_ARRAY *array,uchar * element,uint array_index);
|
||||
extern void delete_dynamic(DYNAMIC_ARRAY *array);
|
||||
extern void delete_dynamic_element(DYNAMIC_ARRAY *array, uint array_index);
|
||||
@ -848,11 +860,8 @@ extern int unpackfrm(uchar **, size_t *, const uchar *);
|
||||
|
||||
extern ha_checksum my_checksum(ha_checksum crc, const uchar *mem,
|
||||
size_t count);
|
||||
extern uint my_bit_log2(ulong value);
|
||||
extern uint32 my_round_up_to_next_power(uint32 v);
|
||||
extern uint my_count_bits(ulonglong v);
|
||||
extern uint my_count_bits_ushort(ushort v);
|
||||
extern void my_sleep(ulong m_seconds);
|
||||
extern ulong crc32(ulong crc, const uchar *buf, uint len);
|
||||
extern uint my_set_max_open_files(uint files);
|
||||
void my_free_open_file_info(void);
|
||||
|
||||
@ -870,7 +879,7 @@ extern int my_getncpus();
|
||||
#ifndef MAP_NOSYNC
|
||||
#define MAP_NOSYNC 0
|
||||
#endif
|
||||
#ifndef MAP_NORESERVE
|
||||
#ifndef MAP_NORESERVE
|
||||
#define MAP_NORESERVE 0 /* For irix and AIX */
|
||||
#endif
|
||||
|
||||
|
@ -34,22 +34,16 @@ extern "C" {
|
||||
#include <mysql/plugin.h>
|
||||
|
||||
/*
|
||||
There is a hard limit for the maximum number of keys as there are only
|
||||
8 bits in the index file header for the number of keys in a table.
|
||||
This means that 0..255 keys can exist for a table. The idea of
|
||||
MI_MAX_POSSIBLE_KEY is to ensure that one can use myisamchk & tools on
|
||||
a MyISAM table for which one has more keys than MyISAM is normally
|
||||
compiled for. If you don't have this, you will get a core dump when
|
||||
running myisamchk compiled for 128 keys on a table with 255 keys.
|
||||
Limit max keys according to HA_MAX_POSSIBLE_KEY
|
||||
*/
|
||||
#define MI_MAX_POSSIBLE_KEY 255 /* For myisam_chk */
|
||||
#if MAX_INDEXES > MI_MAX_POSSIBLE_KEY
|
||||
#define MI_MAX_KEY MI_MAX_POSSIBLE_KEY /* Max allowed keys */
|
||||
|
||||
#if MAX_INDEXES > HA_MAX_POSSIBLE_KEY
|
||||
#define MI_MAX_KEY HA_MAX_POSSIBLE_KEY /* Max allowed keys */
|
||||
#else
|
||||
#define MI_MAX_KEY MAX_INDEXES /* Max allowed keys */
|
||||
#endif
|
||||
|
||||
#define MI_MAX_POSSIBLE_KEY_BUFF (1024+6+6) /* For myisam_chk */
|
||||
#define MI_MAX_POSSIBLE_KEY_BUFF HA_MAX_POSSIBLE_KEY_BUFF
|
||||
/*
|
||||
The following defines can be increased if necessary.
|
||||
But beware the dependency of MI_MAX_POSSIBLE_KEY_BUFF and MI_MAX_KEY_LENGTH.
|
||||
@ -69,8 +63,6 @@ extern "C" {
|
||||
#define MI_MIN_KEY_BLOCK_LENGTH 1024 /* Min key block length */
|
||||
#define MI_MAX_KEY_BLOCK_LENGTH 16384
|
||||
|
||||
#define mi_portable_sizeof_char_ptr 8
|
||||
|
||||
/*
|
||||
In the following macros '_keyno_' is 0 .. keys-1.
|
||||
If there can be more keys than bits in the key_map, the highest bit
|
||||
@ -256,8 +248,6 @@ typedef struct st_columndef /* column information */
|
||||
#endif
|
||||
} MI_COLUMNDEF;
|
||||
|
||||
/* invalidator function reference for Query Cache */
|
||||
typedef void (* invalidator_by_filename)(const char * filename);
|
||||
|
||||
extern char * myisam_log_filename; /* Name of logfile */
|
||||
extern ulong myisam_block_size;
|
||||
@ -310,7 +300,7 @@ extern int mi_delete_all_rows(struct st_myisam_info *info);
|
||||
extern ulong _mi_calc_blob_length(uint length , const uchar *pos);
|
||||
extern uint mi_get_pointer_length(ulonglong file_length, uint def);
|
||||
|
||||
/* this is used to pass to mysql_myisamchk_table -- by Sasha Pachev */
|
||||
/* this is used to pass to mysql_myisamchk_table */
|
||||
|
||||
#define MYISAMCHK_REPAIR 1 /* equivalent to myisamchk -r */
|
||||
#define MYISAMCHK_VERIFY 2 /* Verify, run repair if failure */
|
||||
@ -431,8 +421,8 @@ typedef struct st_mi_check_param
|
||||
ulonglong unique_count[MI_MAX_KEY_SEG+1];
|
||||
ulonglong notnull_count[MI_MAX_KEY_SEG+1];
|
||||
|
||||
ha_checksum key_crc[MI_MAX_POSSIBLE_KEY];
|
||||
ulong rec_per_key_part[MI_MAX_KEY_SEG*MI_MAX_POSSIBLE_KEY];
|
||||
ha_checksum key_crc[HA_MAX_POSSIBLE_KEY];
|
||||
ulong rec_per_key_part[MI_MAX_KEY_SEG*HA_MAX_POSSIBLE_KEY];
|
||||
void *thd;
|
||||
const char *db_name, *table_name;
|
||||
const char *op_name;
|
||||
|
@ -187,7 +187,7 @@ typedef int (*mysql_var_check_func)(MYSQL_THD thd,
|
||||
*/
|
||||
typedef void (*mysql_var_update_func)(MYSQL_THD thd,
|
||||
struct st_mysql_sys_var *var,
|
||||
void *var_ptr, void *save);
|
||||
void *var_ptr, const void *save);
|
||||
|
||||
|
||||
/* the following declarations are for internal use only */
|
||||
|
@ -148,6 +148,37 @@ enum enum_server_command
|
||||
#define CLIENT_SSL_VERIFY_SERVER_CERT (1UL << 30)
|
||||
#define CLIENT_REMEMBER_OPTIONS (1UL << 31)
|
||||
|
||||
/* Gather all possible capabilites (flags) supported by the server */
|
||||
#define CLIENT_ALL_FLAGS (CLIENT_LONG_PASSWORD | \
|
||||
CLIENT_FOUND_ROWS | \
|
||||
CLIENT_LONG_FLAG | \
|
||||
CLIENT_CONNECT_WITH_DB | \
|
||||
CLIENT_NO_SCHEMA | \
|
||||
CLIENT_COMPRESS | \
|
||||
CLIENT_ODBC | \
|
||||
CLIENT_LOCAL_FILES | \
|
||||
CLIENT_IGNORE_SPACE | \
|
||||
CLIENT_PROTOCOL_41 | \
|
||||
CLIENT_INTERACTIVE | \
|
||||
CLIENT_SSL | \
|
||||
CLIENT_IGNORE_SIGPIPE | \
|
||||
CLIENT_TRANSACTIONS | \
|
||||
CLIENT_RESERVED | \
|
||||
CLIENT_SECURE_CONNECTION | \
|
||||
CLIENT_MULTI_STATEMENTS | \
|
||||
CLIENT_MULTI_RESULTS | \
|
||||
CLIENT_SSL_VERIFY_SERVER_CERT | \
|
||||
CLIENT_REMEMBER_OPTIONS)
|
||||
|
||||
/*
|
||||
Switch off the flags that are optional and depending on build flags
|
||||
If any of the optional flags is supported by the build it will be switched
|
||||
on before sending to the client during the connection handshake.
|
||||
*/
|
||||
#define CLIENT_BASIC_FLAGS (((CLIENT_ALL_FLAGS & ~CLIENT_SSL) \
|
||||
& ~CLIENT_COMPRESS) \
|
||||
& ~CLIENT_SSL_VERIFY_SERVER_CERT)
|
||||
|
||||
#define SERVER_STATUS_IN_TRANS 1 /* Transaction has started */
|
||||
#define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */
|
||||
#define SERVER_MORE_RESULTS_EXISTS 8 /* Multi query - next query exists */
|
||||
|
@ -15,6 +15,7 @@
|
||||
|
||||
|
||||
extern const char *unknown_sqlstate;
|
||||
extern const char *cant_connect_sqlstate;
|
||||
extern const char *not_error_sqlstate;
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -98,7 +98,7 @@ SET(CLIENT_SOURCES ../mysys/array.c ../strings/bchange.c ../strings/bmove.c
|
||||
../strings/strtoll.c ../strings/strtoull.c ../strings/strxmov.c ../strings/strxnmov.c
|
||||
../mysys/thr_mutex.c ../mysys/typelib.c ../vio/vio.c ../vio/viosocket.c
|
||||
../vio/viossl.c ../vio/viosslfactories.c ../strings/xml.c ../mysys/mf_qsort.c
|
||||
../mysys/my_getsystime.c ${LIB_SOURCES})
|
||||
../mysys/my_getsystime.c ../mysys/my_sync.c ${LIB_SOURCES})
|
||||
|
||||
# Need to set USE_TLS for building the DLL, since __declspec(thread)
|
||||
# approach to thread local storage does not work properly in DLLs.
|
||||
|
@ -68,7 +68,7 @@ mysysobjects1 = my_init.lo my_static.lo my_malloc.lo my_realloc.lo \
|
||||
mf_iocache2.lo my_seek.lo my_sleep.lo \
|
||||
my_pread.lo mf_cache.lo md5.lo sha1.lo \
|
||||
my_getopt.lo my_gethostbyname.lo my_port.lo \
|
||||
my_rename.lo my_chsize.lo my_getsystime.lo
|
||||
my_rename.lo my_chsize.lo my_sync.lo my_getsystime.lo
|
||||
sqlobjects = net.lo
|
||||
sql_cmn_objects = pack.lo client.lo my_time.lo
|
||||
|
||||
|
@ -1500,7 +1500,7 @@ my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql)
|
||||
|
||||
const char *STDCALL mysql_sqlstate(MYSQL *mysql)
|
||||
{
|
||||
return mysql->net.sqlstate;
|
||||
return mysql ? mysql->net.sqlstate : cant_connect_sqlstate;
|
||||
}
|
||||
|
||||
uint STDCALL mysql_warning_count(MYSQL *mysql)
|
||||
@ -2467,7 +2467,7 @@ static my_bool execute(MYSQL_STMT *stmt, char *packet, ulong length)
|
||||
int4store(buff+5, 1); /* iteration count */
|
||||
|
||||
res= test(cli_advanced_command(mysql, COM_STMT_EXECUTE, buff, sizeof(buff),
|
||||
(uchar*) packet, length, 1, NULL) ||
|
||||
(uchar*) packet, length, 1, stmt) ||
|
||||
(*mysql->methods->read_query_result)(mysql));
|
||||
stmt->affected_rows= mysql->affected_rows;
|
||||
stmt->server_status= mysql->server_status;
|
||||
@ -2683,7 +2683,7 @@ stmt_read_row_from_cursor(MYSQL_STMT *stmt, unsigned char **row)
|
||||
int4store(buff + 4, stmt->prefetch_rows); /* number of rows to fetch */
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_FETCH,
|
||||
buff, sizeof(buff), (uchar*) 0, 0,
|
||||
1, NULL))
|
||||
1, stmt))
|
||||
{
|
||||
set_stmt_errmsg(stmt, net);
|
||||
return 1;
|
||||
@ -3350,7 +3350,7 @@ mysql_stmt_send_long_data(MYSQL_STMT *stmt, uint param_number,
|
||||
*/
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_SEND_LONG_DATA,
|
||||
buff, sizeof(buff), (uchar*) data,
|
||||
length, 1, NULL))
|
||||
length, 1, stmt))
|
||||
{
|
||||
set_stmt_errmsg(stmt, &mysql->net);
|
||||
DBUG_RETURN(1);
|
||||
@ -4748,6 +4748,13 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
|
||||
MYSQL_DATA *result= &stmt->result;
|
||||
DBUG_ENTER("mysql_stmt_store_result");
|
||||
|
||||
if (!mysql)
|
||||
{
|
||||
/* mysql can be reset in mysql_close called from mysql_reconnect */
|
||||
set_stmt_error(stmt, CR_SERVER_LOST, unknown_sqlstate, NULL);
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
|
||||
mysql= mysql->last_used_con;
|
||||
|
||||
if (!stmt->field_count)
|
||||
@ -4773,7 +4780,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
|
||||
int4store(buff, stmt->stmt_id);
|
||||
int4store(buff + 4, (int)~0); /* number of rows to fetch */
|
||||
if (cli_advanced_command(mysql, COM_STMT_FETCH, buff, sizeof(buff),
|
||||
(uchar*) 0, 0, 1, NULL))
|
||||
(uchar*) 0, 0, 1, stmt))
|
||||
{
|
||||
set_stmt_errmsg(stmt, net);
|
||||
DBUG_RETURN(1);
|
||||
@ -4960,7 +4967,7 @@ static my_bool reset_stmt_handle(MYSQL_STMT *stmt, uint flags)
|
||||
uchar buff[MYSQL_STMT_HEADER]; /* packet header: 4 bytes for stmt id */
|
||||
int4store(buff, stmt->stmt_id);
|
||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_RESET, buff,
|
||||
sizeof(buff), 0, 0, 0, NULL))
|
||||
sizeof(buff), 0, 0, 0, stmt))
|
||||
{
|
||||
set_stmt_errmsg(stmt, &mysql->net);
|
||||
stmt->state= MYSQL_STMT_INIT_DONE;
|
||||
|
@ -21,13 +21,14 @@ MYSQLDATAdir = $(localstatedir)
|
||||
MYSQLSHAREdir = $(pkgdatadir)
|
||||
MYSQLBASEdir= $(prefix)
|
||||
MYSQLLIBdir= $(libdir)
|
||||
pkgplugindir = $(pkglibdir)/plugin
|
||||
|
||||
EXTRA_DIST = libmysqld.def CMakeLists.txt
|
||||
DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
|
||||
-DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \
|
||||
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
||||
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" \
|
||||
-DLIBDIR="\"$(MYSQLLIBdir)\""
|
||||
-DPLUGINDIR="\"$(pkgplugindir)\""
|
||||
INCLUDES= -I$(top_builddir)/include -I$(top_srcdir)/include \
|
||||
-I$(top_builddir)/sql -I$(top_srcdir)/sql \
|
||||
-I$(top_srcdir)/sql/examples \
|
||||
|
@ -38,6 +38,8 @@ C_MODE_START
|
||||
#include <sql_common.h>
|
||||
#include "embedded_priv.h"
|
||||
|
||||
extern unsigned int mysql_server_last_errno;
|
||||
extern char mysql_server_last_error[MYSQL_ERRMSG_SIZE];
|
||||
static my_bool emb_read_query_result(MYSQL *mysql);
|
||||
|
||||
|
||||
@ -1122,3 +1124,12 @@ bool Protocol::net_store_data(const uchar *from, size_t length)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
int vprint_msg_to_log(enum loglevel level __attribute__((unused)),
|
||||
const char *format, va_list argsi)
|
||||
{
|
||||
vsnprintf(mysql_server_last_error, sizeof(mysql_server_last_error),
|
||||
format, argsi);
|
||||
mysql_server_last_errno= CR_UNKNOWN_ERROR;
|
||||
return 0;
|
||||
}
|
||||
|
@ -151,7 +151,6 @@ CREATE TABLE t1(a INT) ENGINE=BLACKHOLE;
|
||||
INSERT DELAYED INTO t1 VALUES(1);
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
#Bug#19717: DELETE Query Error on BLACKHOLE when using WHERE on column with UNIQUE INDEX
|
||||
@ -168,7 +167,6 @@ ALTER TABLE t1 ADD PRIMARY KEY(a);
|
||||
DELETE FROM t1 WHERE a=10;
|
||||
DROP TABLE t1;
|
||||
|
||||
# End of 5.0 tests
|
||||
|
||||
# Test that a transaction which is rolled back does not go into binlog
|
||||
# and that a transaction which is committed does
|
||||
@ -193,4 +191,27 @@ show binlog events;
|
||||
|
||||
drop table if exists t1;
|
||||
|
||||
# End of 5.1 tests
|
||||
#
|
||||
# Bug#35178 INSERT_ID not written to binary log for inserts against BLACKHOLE backed tables
|
||||
#
|
||||
#
|
||||
# the test checks that explicitly prescribed with set insert_id= value
|
||||
# preceeds the following autoincrement insert in a blachhole
|
||||
#
|
||||
|
||||
reset master;
|
||||
create table t1 (a int auto_increment, primary key (a)) engine=blackhole;
|
||||
|
||||
# not insert_id prescribed insert binlogs with the default set insert_id 1
|
||||
insert into t1 values (11), (NULL), (NULL), (NULL);
|
||||
set insert_id= 3;
|
||||
insert into t1 values (NULL), (33), (NULL);
|
||||
set insert_id= 5;
|
||||
insert into t1 values (55), (NULL);
|
||||
source include/show_binlog_events2.inc;
|
||||
|
||||
# cleanup
|
||||
drop table t1;
|
||||
|
||||
|
||||
# End of tests
|
||||
|
@ -15,7 +15,6 @@ SELECT * FROM t1 ORDER BY a;
|
||||
sync_slave_with_master;
|
||||
|
||||
connection master;
|
||||
source include/show_binlog_events.inc;
|
||||
sync_slave_with_master;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
connection master;
|
||||
|
@ -542,17 +542,25 @@ call p_verify_status_increment(0, 0, 0, 0);
|
||||
|
||||
--echo # 16. A function changes non-trans-table.
|
||||
--echo #
|
||||
--echo # For row-based logging, there is an extra commit for the
|
||||
--echo # non-transactional changes saved in the transaction cache to
|
||||
--echo # the binary log.
|
||||
--echo #
|
||||
select f1();
|
||||
call p_verify_status_increment(0, 0, 0, 0);
|
||||
call p_verify_status_increment(0, 0, 1, 0);
|
||||
commit;
|
||||
call p_verify_status_increment(0, 0, 0, 0);
|
||||
call p_verify_status_increment(0, 0, 1, 0);
|
||||
|
||||
--echo # 17. Read-only statement, a function changes non-trans-table.
|
||||
--echo #
|
||||
--echo # For row-based logging, there is an extra commit for the
|
||||
--echo # non-transactional changes saved in the transaction cache to
|
||||
--echo # the binary log.
|
||||
--echo #
|
||||
select f1() from t1;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(1, 0, 2, 0);
|
||||
commit;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(1, 0, 2, 0);
|
||||
|
||||
--echo # 18. Read-write statement: UPDATE, change 0 (transactional) rows.
|
||||
--echo #
|
||||
|
56
mysql-test/include/connect2.inc
Normal file
56
mysql-test/include/connect2.inc
Normal file
@ -0,0 +1,56 @@
|
||||
# include/connect2.inc
|
||||
#
|
||||
# SUMMARY
|
||||
#
|
||||
# Make several attempts to connect.
|
||||
#
|
||||
# USAGE
|
||||
#
|
||||
# EXAMPLE
|
||||
#
|
||||
# connect.test
|
||||
#
|
||||
|
||||
--disable_query_log
|
||||
|
||||
let $wait_counter= 300;
|
||||
if ($wait_timeout)
|
||||
{
|
||||
let $wait_counter= `SELECT $wait_timeout * 10`;
|
||||
}
|
||||
# Reset $wait_timeout so that its value won't be used on subsequent
|
||||
# calls, and default will be used instead.
|
||||
let $wait_timeout= 0;
|
||||
|
||||
--echo # -- Establishing connection '$con_name' (user: $con_user_name)...
|
||||
|
||||
while ($wait_counter)
|
||||
{
|
||||
--disable_abort_on_error
|
||||
--disable_result_log
|
||||
--connect ($con_name,localhost,$con_user_name)
|
||||
--enable_result_log
|
||||
--enable_abort_on_error
|
||||
|
||||
let $error = $mysql_errno;
|
||||
|
||||
if (!$error)
|
||||
{
|
||||
let $wait_counter= 0;
|
||||
}
|
||||
if ($error)
|
||||
{
|
||||
real_sleep 0.1;
|
||||
dec $wait_counter;
|
||||
}
|
||||
}
|
||||
if ($error)
|
||||
{
|
||||
--echo # -- Error: can not establish connection '$con_name'.
|
||||
}
|
||||
if (!$error)
|
||||
{
|
||||
--echo # -- Connection '$con_name' has been established.
|
||||
}
|
||||
|
||||
--enable_query_log
|
@ -13,6 +13,8 @@
|
||||
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -62,8 +64,22 @@ select a sounds like a from t1;
|
||||
select 1 from t1 order by cast(a as char(1));
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#27580 SPACE() function collation bug?
|
||||
#
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
drop table t1;
|
||||
|
||||
DROP DATABASE d1;
|
||||
# Restore settings
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
|
@ -1091,6 +1091,19 @@ SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #34223: Assertion failed: (optp->var_type & 127) == 8,
|
||||
# file .\my_getopt.c, line 830
|
||||
#
|
||||
|
||||
set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment;
|
||||
set global innodb_autoextend_increment=8;
|
||||
set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
|
||||
|
||||
set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
|
||||
set global innodb_commit_concurrency=0;
|
||||
set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
# Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY
|
||||
|
@ -1,4 +1,9 @@
|
||||
--let $binlog_start=106
|
||||
# $binlog_start can be set by caller or take a default value
|
||||
|
||||
if (!$binlog_start)
|
||||
{
|
||||
let $binlog_start=106;
|
||||
}
|
||||
--replace_result $binlog_start <binlog_start>
|
||||
--replace_column 2 # 4 # 5 #
|
||||
--replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/ /file_id=[0-9]+/file_id=#/
|
||||
|
@ -9,7 +9,10 @@
|
||||
# sql threads to stop
|
||||
# 3) If loops too long die.
|
||||
####################################################
|
||||
connection slave;
|
||||
if (!$keep_connection)
|
||||
{
|
||||
connection slave;
|
||||
}
|
||||
let $row_number= 1;
|
||||
let $run= 1;
|
||||
let $counter= 300;
|
||||
|
@ -262,6 +262,8 @@ sub mtr_report_stats ($) {
|
||||
/Failed to open log/ or
|
||||
/Failed to open the existing master info file/ or
|
||||
/Forcing shutdown of [0-9]* plugins/ or
|
||||
/Can't open shared library .*\bha_example\b/ or
|
||||
/Couldn't load plugin .*\bha_example\b/ or
|
||||
|
||||
# Due to timing issues, it might be that this warning
|
||||
# is printed when the server shuts down and the
|
||||
@ -307,9 +309,9 @@ sub mtr_report_stats ($) {
|
||||
/Slave SQL:.*(?:Error_code: \d+|Query:.*)/ or
|
||||
/Sort aborted/ or
|
||||
/Time-out in NDB/ or
|
||||
/Warning:\s+One can only use the --user.*root/ or
|
||||
/Warning:\s+Setting lower_case_table_names=2/ or
|
||||
/Warning:\s+Table:.* on (delete|rename)/ or
|
||||
/One can only use the --user.*root/ or
|
||||
/Setting lower_case_table_names=2/ or
|
||||
/Table:.* on (delete|rename)/ or
|
||||
/You have an error in your SQL syntax/ or
|
||||
/deprecated/ or
|
||||
/description of time zone/ or
|
||||
@ -380,7 +382,10 @@ sub mtr_report_stats ($) {
|
||||
# rpl_temporary has an error on slave that can be ignored
|
||||
($testname eq 'rpl.rpl_temporary' and
|
||||
(/Slave: Can\'t find record in \'user\' Error_code: 1032/
|
||||
))
|
||||
)) or
|
||||
|
||||
# Test case for Bug#31590 produces the following error:
|
||||
/Out of sort memory; increase server sort buffer size/
|
||||
)
|
||||
{
|
||||
next; # Skip these lines
|
||||
|
@ -539,7 +539,7 @@ F2E5F1F2
|
||||
drop table t1;
|
||||
create table t1 ( a timestamp );
|
||||
alter table t1 add unique ( a(1) );
|
||||
ERROR HY000: Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys
|
||||
ERROR HY000: Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys
|
||||
drop table t1;
|
||||
drop table if exists t1;
|
||||
create table t1 (a int, key(a));
|
||||
@ -953,12 +953,12 @@ t1 CREATE TABLE `t1` (
|
||||
KEY `b_2` (`b`(50))
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
CREATE TABLE t2 (a INT, KEY (a(20)));
|
||||
ERROR HY000: Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys
|
||||
ERROR HY000: Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys
|
||||
ALTER TABLE t1 ADD d INT;
|
||||
ALTER TABLE t1 ADD KEY (d(20));
|
||||
ERROR HY000: Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys
|
||||
ERROR HY000: Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys
|
||||
ALTER TABLE t1 ADD e GEOMETRY NOT NULL, ADD SPATIAL KEY (e(30));
|
||||
ERROR HY000: Incorrect sub part key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique sub keys
|
||||
ERROR HY000: Incorrect prefix key; the used key part isn't a string, the used length is longer than the key part, or the storage engine doesn't support unique prefix keys
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (s CHAR(8) BINARY);
|
||||
INSERT INTO t1 VALUES ('test');
|
||||
|
39
mysql-test/r/binlog_index.result
Normal file
39
mysql-test/r/binlog_index.result
Normal file
@ -0,0 +1,39 @@
|
||||
flush logs;
|
||||
flush logs;
|
||||
flush logs;
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000001 #
|
||||
master-bin.000002 #
|
||||
master-bin.000003 #
|
||||
master-bin.000004 #
|
||||
purge binary logs TO 'master-bin.000004';
|
||||
Warnings:
|
||||
Warning 1612 Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found
|
||||
*** must show a list starting from the 'TO' argument of PURGE ***
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000004 #
|
||||
reset master;
|
||||
flush logs;
|
||||
flush logs;
|
||||
flush logs;
|
||||
*** must be a warning master-bin.000001 was not found ***
|
||||
Warnings:
|
||||
Warning 1612 Being purged log MYSQLTEST_VARDIR/log/master-bin.000001 was not found
|
||||
*** must show one record, of the active binlog, left in the index file after PURGE ***
|
||||
show binary logs;
|
||||
Log_name File_size
|
||||
master-bin.000004 #
|
||||
reset master;
|
||||
flush logs;
|
||||
flush logs;
|
||||
flush logs;
|
||||
purge binary logs TO 'master-bin.000002';
|
||||
ERROR HY000: Fatal error during log purge
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1377 a problem with deleting MYSQLTEST_VARDIR/log/master-bin.000001; consider examining correspondence of your binlog index file to the actual binlog files
|
||||
Error 1377 Fatal error during log purge
|
||||
reset master;
|
||||
End of tests
|
@ -4,14 +4,14 @@ SELECT @@session.sql_big_selects;
|
||||
1
|
||||
SELECT @@global.max_join_size;
|
||||
@@global.max_join_size
|
||||
18446744073709551615
|
||||
HA_POS_ERROR
|
||||
change_user
|
||||
SELECT @@session.sql_big_selects;
|
||||
@@session.sql_big_selects
|
||||
1
|
||||
SELECT @@global.max_join_size;
|
||||
@@global.max_join_size
|
||||
18446744073709551615
|
||||
HA_POS_ERROR
|
||||
SET @@global.max_join_size = 10000;
|
||||
SET @@session.max_join_size = default;
|
||||
change_user
|
||||
|
@ -571,27 +571,35 @@ SUCCESS
|
||||
|
||||
# 16. A function changes non-trans-table.
|
||||
#
|
||||
# For row-based logging, there is an extra commit for the
|
||||
# non-transactional changes saved in the transaction cache to
|
||||
# the binary log.
|
||||
#
|
||||
select f1();
|
||||
f1()
|
||||
2
|
||||
call p_verify_status_increment(0, 0, 0, 0);
|
||||
call p_verify_status_increment(0, 0, 1, 0);
|
||||
SUCCESS
|
||||
|
||||
commit;
|
||||
call p_verify_status_increment(0, 0, 0, 0);
|
||||
call p_verify_status_increment(0, 0, 1, 0);
|
||||
SUCCESS
|
||||
|
||||
# 17. Read-only statement, a function changes non-trans-table.
|
||||
#
|
||||
# For row-based logging, there is an extra commit for the
|
||||
# non-transactional changes saved in the transaction cache to
|
||||
# the binary log.
|
||||
#
|
||||
select f1() from t1;
|
||||
f1()
|
||||
2
|
||||
2
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(1, 0, 2, 0);
|
||||
SUCCESS
|
||||
|
||||
commit;
|
||||
call p_verify_status_increment(1, 0, 1, 0);
|
||||
call p_verify_status_increment(1, 0, 2, 0);
|
||||
SUCCESS
|
||||
|
||||
# 18. Read-write statement: UPDATE, change 0 (transactional) rows.
|
||||
|
@ -53,3 +53,41 @@ a b
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: ''
|
||||
drop table if exists t1;
|
||||
CREATE TABLE t1 (b int(2) zerofill, c int(2) zerofill);
|
||||
INSERT INTO t1 (b,c) VALUES (1,2), (1,1), (2,2);
|
||||
SELECT CONCAT(b,c), CONCAT(b,c) = '0101' FROM t1;
|
||||
CONCAT(b,c) CONCAT(b,c) = '0101'
|
||||
0102 0
|
||||
0101 1
|
||||
0202 0
|
||||
EXPLAIN EXTENDED SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where ((`test`.`t1`.`b` = 1) and (concat('01',`test`.`t1`.`c`) = '0101'))
|
||||
SELECT b,c FROM t1 WHERE b = 1 AND CONCAT(b,c) = '0101';
|
||||
b c
|
||||
01 01
|
||||
CREATE TABLE t2 (a int);
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
SELECT a,
|
||||
(SELECT COUNT(*) FROM t1
|
||||
WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x
|
||||
FROM t2 ORDER BY a;
|
||||
a x
|
||||
1 1
|
||||
2 0
|
||||
EXPLAIN EXTENDED
|
||||
SELECT a,
|
||||
(SELECT COUNT(*) FROM t1
|
||||
WHERE b = t2.a AND CONCAT(b,c) = CONCAT('0',t2.a,'01')) x
|
||||
FROM t2 ORDER BY a;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using filesort
|
||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1276 Field or reference 'test.t2.a' of SELECT #2 was resolved in SELECT #1
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,(select count(0) AS `COUNT(*)` from `test`.`t1` where ((`test`.`t1`.`b` = `test`.`t2`.`a`) and (concat(`test`.`t1`.`b`,`test`.`t1`.`c`) = concat('0',`test`.`t2`.`a`,'01')))) AS `x` from `test`.`t2` order by `test`.`t2`.`a`
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.0 tests
|
||||
|
@ -115,3 +115,106 @@ create temporary table t2(id integer not null auto_increment primary key);
|
||||
set @id := 1;
|
||||
delete from t1 where id like @id;
|
||||
drop table t1;
|
||||
# ------------------------------------------------------------------
|
||||
# -- End of 4.1 tests
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
# -- Bug#33507: Event scheduler creates more threads than max_connections
|
||||
# -- which results in user lockout.
|
||||
|
||||
GRANT USAGE ON *.* TO mysqltest_u1@localhost;
|
||||
|
||||
SET GLOBAL max_connections = 3;
|
||||
SET GLOBAL event_scheduler = ON;
|
||||
|
||||
# -- Waiting for Event Scheduler to start...
|
||||
|
||||
# -- Disconnecting default connection...
|
||||
|
||||
# -- Check that we allow exactly three user connections, no matter how
|
||||
# -- many threads are running.
|
||||
|
||||
# -- Connecting (1)...
|
||||
# -- Establishing connection 'con_1' (user: mysqltest_u1)...
|
||||
# -- Connection 'con_1' has been established.
|
||||
|
||||
# -- Connecting (2)...
|
||||
# -- Establishing connection 'con_2' (user: mysqltest_u1)...
|
||||
# -- Connection 'con_2' has been established.
|
||||
|
||||
# -- Connecting (3)...
|
||||
# -- Establishing connection 'con_3' (user: mysqltest_u1)...
|
||||
# -- Connection 'con_3' has been established.
|
||||
|
||||
# -- Connecting (4) [should fail]...
|
||||
# -- Establishing connection 'con_4' (user: mysqltest_u1)...
|
||||
# -- Error: can not establish connection 'con_4'.
|
||||
|
||||
# -- Check that we allow one extra SUPER-user connection.
|
||||
|
||||
# -- Connecting super (1)...
|
||||
# -- Establishing connection 'con_super_1' (user: root)...
|
||||
# -- Connection 'con_super_1' has been established.
|
||||
|
||||
# -- Connecting super (2) [should fail]...
|
||||
# -- Establishing connection 'con_super_2' (user: root)...
|
||||
# -- Error: can not establish connection 'con_super_2'.
|
||||
|
||||
# -- Ensure that we have Event Scheduler thread, 3 ordinary user
|
||||
# -- connections and one extra super-user connection.
|
||||
SELECT user FROM information_schema.processlist ORDER BY id;
|
||||
user
|
||||
event_scheduler
|
||||
mysqltest_u1
|
||||
mysqltest_u1
|
||||
mysqltest_u1
|
||||
root
|
||||
|
||||
# -- Resetting variables...
|
||||
SET GLOBAL max_connections = 151;
|
||||
|
||||
# -- Stopping Event Scheduler...
|
||||
SET GLOBAL event_scheduler = OFF;
|
||||
|
||||
# -- Waiting for Event Scheduler to stop...
|
||||
|
||||
# -- That's it. Closing connections...
|
||||
|
||||
# -- Restoring default connection...
|
||||
|
||||
# -- Waiting for connections to close...
|
||||
|
||||
DROP USER mysqltest_u1@localhost;
|
||||
|
||||
# -- End of Bug#33507.
|
||||
|
||||
# -- Bug#35074: max_used_connections is not correct.
|
||||
|
||||
FLUSH STATUS;
|
||||
|
||||
SHOW STATUS LIKE 'max_used_connections';
|
||||
Variable_name Value
|
||||
Max_used_connections 1
|
||||
|
||||
# -- Starting Event Scheduler...
|
||||
SET GLOBAL event_scheduler = ON;
|
||||
# -- Waiting for Event Scheduler to start...
|
||||
|
||||
# -- Opening a new connection to check max_used_connections...
|
||||
|
||||
# -- Check that max_used_connections hasn't changed.
|
||||
SHOW STATUS LIKE 'max_used_connections';
|
||||
Variable_name Value
|
||||
Max_used_connections 2
|
||||
|
||||
# -- Closing new connection...
|
||||
|
||||
# -- Stopping Event Scheduler...
|
||||
SET GLOBAL event_scheduler = OFF;
|
||||
# -- Waiting for Event Scheduler to stop...
|
||||
|
||||
# -- End of Bug#35074.
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# -- End of 5.1 tests
|
||||
# ------------------------------------------------------------------
|
||||
|
@ -1545,6 +1545,20 @@ Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 7
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1));
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY (c1) USING BTREE);
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1) USING HASH) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 1 c1 1 c1 NULL 0 NULL NULL YES HASH
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING HASH (c1) USING BTREE) ENGINE=MEMORY;
|
||||
SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 1 c1 1 c1 A NULL NULL NULL YES BTREE
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
insert into t1 values (1,1),(1,2);
|
||||
@ -1834,4 +1848,45 @@ DROP TABLE t3;
|
||||
|
||||
# -- End of Bug#18834.
|
||||
|
||||
# --
|
||||
# -- Bug#34274: Invalid handling of 'DEFAULT 0' for YEAR data type.
|
||||
# --
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
|
||||
CREATE TABLE t1(c1 YEAR DEFAULT 2008, c2 YEAR DEFAULT 0);
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` year(4) DEFAULT '2008',
|
||||
`c2` year(4) DEFAULT '0000'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
INSERT INTO t1 VALUES();
|
||||
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
2008 0000
|
||||
|
||||
ALTER TABLE t1 MODIFY c1 YEAR DEFAULT 0;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` year(4) DEFAULT '0000',
|
||||
`c2` year(4) DEFAULT '0000'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
INSERT INTO t1 VALUES();
|
||||
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
2008 0000
|
||||
0000 0000
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# -- End of Bug#34274
|
||||
|
||||
End of 5.1 tests
|
||||
|
@ -5379,4 +5379,13 @@ SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 1178 The storage engine for the table doesn't support nullable columns
|
||||
Error 1005 Can't create table 'test.t1' (errno: 138)
|
||||
create table t1 (c1 tinyblob not null) engine=csv;
|
||||
insert into t1 values("This");
|
||||
update t1 set c1="That" where c1="This";
|
||||
affected rows: 1
|
||||
info: Rows matched: 1 Changed: 1 Warnings: 0
|
||||
select * from t1;
|
||||
c1
|
||||
That
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
|
@ -3,6 +3,8 @@ SET @test_character_set= 'big5';
|
||||
SET @test_collation= 'big5_chinese_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) DEFAULT NULL,
|
||||
`level` smallint(5) unsigned DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=big5
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES big5;
|
||||
SET collation_connection='big5_chinese_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
|
@ -3,6 +3,192 @@ DROP TABLE IF EXISTS t1;
|
||||
SHOW COLLATION LIKE 'cp1250_czech_cs';
|
||||
Collation Charset Id Default Compiled Sortlen
|
||||
cp1250_czech_cs cp1250 34 Yes 2
|
||||
SET @test_character_set= 'cp1250';
|
||||
SET @test_collation= 'cp1250_general_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
USE d1;
|
||||
CREATE TABLE t1 (c CHAR(10), KEY(c));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c char(10) cp1250_general_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa');
|
||||
SELECT c as want3results FROM t1 WHERE c LIKE 'aaa%';
|
||||
want3results
|
||||
aaa
|
||||
aaaa
|
||||
aaaaa
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 varchar(15), KEY c1 (c1(2)));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c1 varchar(15) cp1250_general_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('location'),('loberge'),('lotre'),('boabab');
|
||||
SELECT c1 as want3results from t1 where c1 like 'l%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want3results from t1 where c1 like 'lo%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want1result from t1 where c1 like 'loc%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'loca%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locat%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locati%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locatio%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'location%';
|
||||
want1result
|
||||
location
|
||||
DROP TABLE t1;
|
||||
create table t1 (a set('a') not null);
|
||||
insert into t1 values (),();
|
||||
Warnings:
|
||||
Warning 1364 Field 'a' doesn't have a default value
|
||||
select cast(a as char(1)) from t1;
|
||||
cast(a as char(1))
|
||||
|
||||
|
||||
select a sounds like a from t1;
|
||||
a sounds like a
|
||||
1
|
||||
1
|
||||
select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) DEFAULT NULL,
|
||||
`level` smallint(5) unsigned DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp1250
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET @test_character_set= 'cp1250';
|
||||
SET @test_collation= 'cp1250_czech_cs';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
USE d1;
|
||||
CREATE TABLE t1 (c CHAR(10), KEY(c));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c char(10) cp1250_czech_cs YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa');
|
||||
SELECT c as want3results FROM t1 WHERE c LIKE 'aaa%';
|
||||
want3results
|
||||
aaa
|
||||
aaaa
|
||||
aaaaa
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 varchar(15), KEY c1 (c1(2)));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c1 varchar(15) cp1250_czech_cs YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('location'),('loberge'),('lotre'),('boabab');
|
||||
SELECT c1 as want3results from t1 where c1 like 'l%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want3results from t1 where c1 like 'lo%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want1result from t1 where c1 like 'loc%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'loca%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locat%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locati%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locatio%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'location%';
|
||||
want1result
|
||||
location
|
||||
DROP TABLE t1;
|
||||
create table t1 (a set('a') not null);
|
||||
insert into t1 values (),();
|
||||
Warnings:
|
||||
Warning 1364 Field 'a' doesn't have a default value
|
||||
select cast(a as char(1)) from t1;
|
||||
cast(a as char(1))
|
||||
|
||||
|
||||
select a sounds like a from t1;
|
||||
a sounds like a
|
||||
1
|
||||
1
|
||||
select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) COLLATE cp1250_czech_cs DEFAULT NULL,
|
||||
`level` smallint(5) unsigned DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=cp1250 COLLATE=cp1250_czech_cs
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
CREATE TABLE t1 (a char(16)) character set cp1250 collate cp1250_czech_cs;
|
||||
INSERT INTO t1 VALUES ('');
|
||||
SELECT a, length(a), a='', a=' ', a=' ' FROM t1;
|
||||
|
@ -9,8 +9,10 @@ EXECUTE stmt1 USING @var1;
|
||||
show binlog events from <binlog_start>;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 # Query # # use `test`; CREATE TABLE t1(f1 blob)
|
||||
master-bin.000001 # Query # # use `test`; BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # use `test`; COMMIT
|
||||
SELECT HEX(f1) FROM t1;
|
||||
HEX(f1)
|
||||
8300
|
||||
|
@ -40,9 +40,9 @@ IN ind DECIMAL(10,2))
|
||||
BEGIN
|
||||
INSERT INTO t4 VALUES (ins1, ins2, ind);
|
||||
END
|
||||
master-bin.000001 783 Query 1 999 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
|
||||
master-bin.000001 999 Query 1 1088 use `test`; DROP PROCEDURE bug18293
|
||||
master-bin.000001 1088 Query 1 1167 use `test`; DROP TABLE t4
|
||||
master-bin.000001 783 Query 1 991 use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172), NAME_CONST('ins2',_cp932 0xED40ED41ED42), NAME_CONST('ind',47.93))
|
||||
master-bin.000001 991 Query 1 1080 use `test`; DROP PROCEDURE bug18293
|
||||
master-bin.000001 1080 Query 1 1159 use `test`; DROP TABLE t4
|
||||
End of 5.0 tests
|
||||
SHOW BINLOG EVENTS FROM 364;
|
||||
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
|
||||
|
@ -3,6 +3,8 @@ SET @test_character_set= 'euckr';
|
||||
SET @test_collation= 'euckr_korean_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) DEFAULT NULL,
|
||||
`level` smallint(5) unsigned DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=euckr
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES euckr;
|
||||
SET collation_connection='euckr_korean_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
|
@ -3,6 +3,8 @@ SET @test_character_set= 'gb2312';
|
||||
SET @test_collation= 'gb2312_chinese_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) DEFAULT NULL,
|
||||
`level` smallint(5) unsigned DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gb2312
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES gb2312;
|
||||
SET collation_connection='gb2312_chinese_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
|
@ -3,6 +3,8 @@ SET @test_character_set= 'gbk';
|
||||
SET @test_collation= 'gbk_chinese_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) DEFAULT NULL,
|
||||
`level` smallint(5) unsigned DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gbk
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES gbk;
|
||||
SET collation_connection='gbk_chinese_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
|
@ -2538,6 +2538,8 @@ SET @test_character_set= 'utf8';
|
||||
SET @test_collation= 'utf8_swedish_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
@ -2604,10 +2606,27 @@ select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) COLLATE utf8_swedish_ci DEFAULT NULL,
|
||||
`level` smallint(5) unsigned DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
create table t1 (a varchar(1)) character set utf8 collate utf8_estonian_ci;
|
||||
insert into t1 values ('A'),('B'),('C'),('a'),('b'),('c');
|
||||
select a, a regexp '[a]' from t1 order by binary a;
|
||||
|
@ -1,4 +1,97 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
SET @test_character_set= 'ucs2';
|
||||
SET @test_collation= 'ucs2_general_ci';
|
||||
SET @safe_character_set_server= @@character_set_server;
|
||||
SET @safe_collation_server= @@collation_server;
|
||||
SET @safe_character_set_client= @@character_set_client;
|
||||
SET @safe_character_set_results= @@character_set_results;
|
||||
SET character_set_server= @test_character_set;
|
||||
SET collation_server= @test_collation;
|
||||
CREATE DATABASE d1;
|
||||
USE d1;
|
||||
CREATE TABLE t1 (c CHAR(10), KEY(c));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c char(10) ucs2_general_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('aaa'),('aaaa'),('aaaaa');
|
||||
SELECT c as want3results FROM t1 WHERE c LIKE 'aaa%';
|
||||
want3results
|
||||
aaa
|
||||
aaaa
|
||||
aaaaa
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (c1 varchar(15), KEY c1 (c1(2)));
|
||||
SHOW FULL COLUMNS FROM t1;
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
c1 varchar(15) ucs2_general_ci YES MUL NULL
|
||||
INSERT INTO t1 VALUES ('location'),('loberge'),('lotre'),('boabab');
|
||||
SELECT c1 as want3results from t1 where c1 like 'l%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want3results from t1 where c1 like 'lo%';
|
||||
want3results
|
||||
location
|
||||
loberge
|
||||
lotre
|
||||
SELECT c1 as want1result from t1 where c1 like 'loc%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'loca%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locat%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locati%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'locatio%';
|
||||
want1result
|
||||
location
|
||||
SELECT c1 as want1result from t1 where c1 like 'location%';
|
||||
want1result
|
||||
location
|
||||
DROP TABLE t1;
|
||||
create table t1 (a set('a') not null);
|
||||
insert into t1 values (),();
|
||||
Warnings:
|
||||
Warning 1364 Field 'a' doesn't have a default value
|
||||
select cast(a as char(1)) from t1;
|
||||
cast(a as char(1))
|
||||
|
||||
|
||||
select a sounds like a from t1;
|
||||
a sounds like a
|
||||
1
|
||||
1
|
||||
select 1 from t1 order by cast(a as char(1));
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
set names utf8;
|
||||
create table t1 (
|
||||
name varchar(10),
|
||||
level smallint unsigned);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`name` varchar(10) DEFAULT NULL,
|
||||
`level` smallint(5) unsigned DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=ucs2
|
||||
insert into t1 values ('string',1);
|
||||
select concat(name,space(level)), concat(name, repeat(' ',level)) from t1;
|
||||
concat(name,space(level)) concat(name, repeat(' ',level))
|
||||
string string
|
||||
drop table t1;
|
||||
DROP DATABASE d1;
|
||||
USE test;
|
||||
SET character_set_server= @safe_character_set_server;
|
||||
SET collation_server= @safe_collation_server;
|
||||
SET character_set_client= @safe_character_set_client;
|
||||
SET character_set_results= @safe_character_set_results;
|
||||
SET NAMES latin1;
|
||||
SET character_set_connection=ucs2;
|
||||
select 'a' = 'a', 'a' = 'a ', 'a ' = 'a';
|
||||
|
@ -21,4 +21,14 @@ INSERT INTO t1 VALUES('A', 'A'), ('B', 'B'), ('C', 'C');
|
||||
INSERT INTO t1 VALUES('A ', 'A ');
|
||||
ERROR 23000: Duplicate entry '' for key 'key1'
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(255) CHARACTER SET UCS2 COLLATE UCS2_BIN NOT NULL,
|
||||
KEY(c1)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ('marshall\'s');
|
||||
INSERT INTO t1 VALUES ('marsh');
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -682,3 +682,26 @@ a a b
|
||||
1 1 3
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE t1(a INT, b INT, c INT, d INT, e INT,
|
||||
PRIMARY KEY(a,b,c,d,e),
|
||||
KEY(a,b,d,c)
|
||||
);
|
||||
INSERT INTO t1(a, b, c) VALUES (1, 1, 1),
|
||||
(1, 1, 2),
|
||||
(1, 1, 3),
|
||||
(1, 2, 1),
|
||||
(1, 2, 2),
|
||||
(1, 2, 3);
|
||||
EXPLAIN SELECT DISTINCT a, b, d, c FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL a 16 NULL 6 Using index
|
||||
SELECT DISTINCT a, b, d, c FROM t1;
|
||||
a b d c
|
||||
1 1 0 1
|
||||
1 1 0 2
|
||||
1 1 0 3
|
||||
1 2 0 1
|
||||
1 2 0 2
|
||||
1 2 0 3
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
@ -93,4 +93,31 @@ create table mysql_test.`#sql-347f_7` (f1 int);
|
||||
create table mysql_test.`#sql-347f_8` (f1 int);
|
||||
drop table mysql_test.`#sql-347f_8`;
|
||||
drop database mysql_test;
|
||||
|
||||
# --
|
||||
# -- Bug#29958: Weird message on DROP DATABASE if mysql.proc does not
|
||||
# -- exist.
|
||||
# --
|
||||
DROP DATABASE IF EXISTS mysql_test;
|
||||
CREATE DATABASE mysql_test;
|
||||
DROP TABLE mysql.proc;
|
||||
DROP DATABASE mysql_test;
|
||||
Warnings:
|
||||
Error 1146 Table 'mysql.proc' doesn't exist
|
||||
|
||||
# --
|
||||
# -- End of Bug#29958.
|
||||
# --
|
||||
|
||||
create database mysqltestbug26703;
|
||||
use mysqltestbug26703;
|
||||
create table `#mysql50#abc``def` ( id int );
|
||||
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
|
||||
ERROR 42000: Incorrect table name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
create table `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
|
||||
create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
|
||||
create table `#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` (a int);
|
||||
ERROR 42000: Incorrect table name '#mysql50#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
use test;
|
||||
drop database mysqltestbug26703;
|
||||
End of 5.1 tests
|
||||
|
@ -72,6 +72,7 @@ flush tables with read lock;
|
||||
unlock tables;
|
||||
drop table t1, t2;
|
||||
set session low_priority_updates=default;
|
||||
select benchmark(200, (select sin(1))) > 1000;
|
||||
End of 5.0 tests
|
||||
set @old_general_log= @@general_log;
|
||||
set @old_read_only= @@read_only;
|
||||
|
@ -1,3 +1,4 @@
|
||||
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||
set @@global.concurrent_insert= 0;
|
||||
drop table if exists t1;
|
||||
create table t1 (kill_id int);
|
||||
@ -8,3 +9,4 @@ select ((@id := kill_id) - kill_id) from t1;
|
||||
0
|
||||
kill connection @id;
|
||||
drop table t1;
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
|
@ -937,4 +937,19 @@ SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY b) FROM t1;
|
||||
GROUP_CONCAT(DISTINCT b, a ORDER BY b)
|
||||
11,22,32
|
||||
DROP TABLE t1, t2, t3;
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (),();
|
||||
SELECT s1.d1 FROM
|
||||
(
|
||||
SELECT
|
||||
t1.a as d1,
|
||||
GROUP_CONCAT(DISTINCT t1.a) AS d2
|
||||
FROM
|
||||
t1 AS t1,
|
||||
t1 AS t2
|
||||
GROUP BY 1
|
||||
) AS s1;
|
||||
d1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -1410,4 +1410,10 @@ Note 1003 select (`test`.`t1`.`a` + 1) AS `y` from `test`.`t1` group by (`test`.
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
SET SQL_MODE=DEFAULT;
|
||||
CREATE TABLE t1(a DOUBLE);
|
||||
INSERT INTO t1 VALUES (10), (20);
|
||||
SELECT AVG(a), CAST(AVG(a) AS DECIMAL) FROM t1;
|
||||
AVG(a) CAST(AVG(a) AS DECIMAL)
|
||||
15 15
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
@ -408,3 +408,22 @@ a DIV 2
|
||||
0
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
SELECT 1e308 + 1e308;
|
||||
1e308 + 1e308
|
||||
NULL
|
||||
SELECT -1e308 - 1e308;
|
||||
-1e308 - 1e308
|
||||
NULL
|
||||
SELECT 1e300 * 1e300;
|
||||
1e300 * 1e300
|
||||
NULL
|
||||
SELECT 1e300 / 1e-300;
|
||||
1e300 / 1e-300
|
||||
NULL
|
||||
SELECT EXP(750);
|
||||
EXP(750)
|
||||
NULL
|
||||
SELECT POW(10, 309);
|
||||
POW(10, 309)
|
||||
NULL
|
||||
End of 5.1 tests
|
||||
|
@ -212,6 +212,25 @@ test
|
||||
SELECT NAME_CONST('test', 'test');
|
||||
test
|
||||
test
|
||||
CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (1),(2),(3);
|
||||
SELECT NAME_CONST('flag',1) * MAX(a) FROM t1;
|
||||
NAME_CONST('flag',1) * MAX(a)
|
||||
3
|
||||
SELECT NAME_CONST('flag',1.5) * MAX(a) FROM t1;
|
||||
NAME_CONST('flag',1.5) * MAX(a)
|
||||
4.5
|
||||
SELECT NAME_CONST('flag',-1) * MAX(a) FROM t1;
|
||||
NAME_CONST('flag',-1) * MAX(a)
|
||||
-3
|
||||
SELECT NAME_CONST('flag',-1.5) * MAX(a) FROM t1;
|
||||
NAME_CONST('flag',-1.5) * MAX(a)
|
||||
-4.5
|
||||
SELECT NAME_CONST('flag', SQRT(4)) * MAX(a) FROM t1;
|
||||
ERROR HY000: Incorrect arguments to NAME_CONST
|
||||
SELECT NAME_CONST('flag',-SQRT(4)) * MAX(a) FROM t1;
|
||||
ERROR HY000: Incorrect arguments to NAME_CONST
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (5), (2);
|
||||
SELECT NAME_CONST(x,2) FROM (SELECT a x FROM t1) t;
|
||||
@ -230,6 +249,9 @@ select min(a) from t1 group by inet_ntoa(a);
|
||||
min(a)
|
||||
-2
|
||||
drop table t1;
|
||||
SELECT NAME_CONST('var', 'value') COLLATE latin1_general_cs;
|
||||
NAME_CONST('var', 'value') COLLATE latin1_general_cs
|
||||
value
|
||||
End of 5.0 tests
|
||||
select connection_id() > 0;
|
||||
connection_id() > 0
|
||||
|
@ -1431,6 +1431,11 @@ benchmark(100, NULL)
|
||||
select benchmark(NULL, 1+1);
|
||||
benchmark(NULL, 1+1)
|
||||
NULL
|
||||
select benchmark(-1, 1);
|
||||
benchmark(-1, 1)
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1411 Incorrect count value: '-1' for function benchmark
|
||||
set @password="password";
|
||||
set @my_data="clear text to encode";
|
||||
select md5(encode(@my_data, "password"));
|
||||
|
@ -666,6 +666,8 @@ timestampadd(SQL_TSI_SECOND, 1, date)
|
||||
select timestampadd(SQL_TSI_FRAC_SECOND, 1, date) from t1;
|
||||
timestampadd(SQL_TSI_FRAC_SECOND, 1, date)
|
||||
2003-01-02 00:00:00.000001
|
||||
Warnings:
|
||||
Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
|
||||
select timestampdiff(MONTH, '2001-02-01', '2001-05-01') as a;
|
||||
a
|
||||
3
|
||||
@ -699,6 +701,8 @@ a
|
||||
select timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:58:58.119999') as a;
|
||||
a
|
||||
7689538999999
|
||||
Warnings:
|
||||
Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
|
||||
select timestampdiff(SQL_TSI_DAY, '1986-02-01', '1986-03-01') as a1,
|
||||
timestampdiff(SQL_TSI_DAY, '1900-02-01', '1900-03-01') as a2,
|
||||
timestampdiff(SQL_TSI_DAY, '1996-02-01', '1996-03-01') as a3,
|
||||
@ -1069,6 +1073,7 @@ timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
|
||||
Note 1003 select timestampdiff(WEEK,'2001-02-01','2001-05-01') AS `a1`,timestampdiff(SECOND_FRAC,'2001-02-01 12:59:59.120000','2001-05-01 12:58:58.119999') AS `a2`
|
||||
select time_format('100:00:00', '%H %k %h %I %l');
|
||||
time_format('100:00:00', '%H %k %h %I %l')
|
||||
@ -1261,6 +1266,24 @@ DATE_ADD(20071108, INTERVAL 1 DAY)
|
||||
select LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND;
|
||||
LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND
|
||||
2007-12-30 23:59:59
|
||||
SELECT TIMESTAMPADD(FRAC_SECOND, 1, '2008-02-18');
|
||||
TIMESTAMPADD(FRAC_SECOND, 1, '2008-02-18')
|
||||
2008-02-18 00:00:00.000001
|
||||
Warnings:
|
||||
Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
|
||||
SELECT TIMESTAMPDIFF(FRAC_SECOND, '2008-02-17', '2008-02-18');
|
||||
TIMESTAMPDIFF(FRAC_SECOND, '2008-02-17', '2008-02-18')
|
||||
86400000000
|
||||
Warnings:
|
||||
Warning 1287 The syntax 'FRAC_SECOND' is deprecated and will be removed in MySQL 6.2. Please use MICROSECOND instead
|
||||
SELECT DATE_ADD('2008-02-18', INTERVAL 1 FRAC_SECOND);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND)' at line 1
|
||||
SELECT DATE_SUB('2008-02-18', INTERVAL 1 FRAC_SECOND);
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND)' at line 1
|
||||
SELECT '2008-02-18' + INTERVAL 1 FRAC_SECOND;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND' at line 1
|
||||
SELECT '2008-02-18' - INTERVAL 1 FRAC_SECOND;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FRAC_SECOND' at line 1
|
||||
End of 5.0 tests
|
||||
select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||
date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||
|
@ -1306,4 +1306,43 @@ DROP DATABASE mysqltest1;
|
||||
RENAME TABLE mysql.procs_gone TO mysql.procs_priv;
|
||||
DROP USER mysqltest_1@localhost;
|
||||
FLUSH PRIVILEGES;
|
||||
CREATE DATABASE dbbug33464;
|
||||
CREATE USER 'userbug33464'@'localhost';
|
||||
GRANT CREATE ROUTINE ON dbbug33464.* TO 'userbug33464'@'localhost';
|
||||
|
||||
userbug33464@localhost dbbug33464
|
||||
DROP PROCEDURE IF EXISTS sp3;
|
||||
DROP FUNCTION IF EXISTS fn1;
|
||||
CREATE PROCEDURE sp3(v1 char(20))
|
||||
BEGIN
|
||||
SELECT * from dbbug33464.t6 where t6.f2= 'xyz';
|
||||
END//
|
||||
CREATE FUNCTION fn1() returns char(50) SQL SECURITY INVOKER
|
||||
BEGIN
|
||||
return 1;
|
||||
END//
|
||||
CREATE FUNCTION fn2() returns char(50) SQL SECURITY DEFINER
|
||||
BEGIN
|
||||
return 2;
|
||||
END//
|
||||
USE dbbug33464;
|
||||
|
||||
root@localhost dbbug33464
|
||||
SELECT fn1();
|
||||
fn1()
|
||||
1
|
||||
SELECT fn2();
|
||||
fn2()
|
||||
2
|
||||
DROP USER 'userbug33464'@'localhost';
|
||||
DROP FUNCTION fn1;
|
||||
Warnings:
|
||||
Warning 1403 There is no such grant defined for user 'userbug33464' on host 'localhost' on routine 'fn1'
|
||||
DROP FUNCTION fn2;
|
||||
Warnings:
|
||||
Warning 1403 There is no such grant defined for user 'userbug33464' on host 'localhost' on routine 'fn2'
|
||||
DROP PROCEDURE sp3;
|
||||
DROP USER 'userbug33464'@'localhost';
|
||||
use test;
|
||||
DROP DATABASE dbbug33464;
|
||||
End of 5.1 tests
|
||||
|
@ -138,3 +138,20 @@ SELECT user, host, db, select_priv FROM mysql.db where user = 'CUser2' order by
|
||||
user host db select_priv
|
||||
DROP USER CUser2@localhost;
|
||||
DROP USER CUser2@LOCALHOST;
|
||||
CREATE DATABASE mysqltest_1;
|
||||
CREATE TABLE mysqltest_1.t1 (a INT);
|
||||
CREATE USER 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest_1`.* TO 'mysqltest1'@'%';
|
||||
REVOKE SELECT ON `mysqltest_1`.* FROM 'mysqltest1'@'%';
|
||||
GRANT SELECT, UPDATE ON `mysqltest\_1`.* TO 'mysqltest1'@'%';
|
||||
FLUSH PRIVILEGES;
|
||||
SHOW GRANTS;
|
||||
Grants for mysqltest1@%
|
||||
GRANT USAGE ON *.* TO 'mysqltest1'@'%'
|
||||
GRANT SELECT, UPDATE ON `mysqltest\_1`.* TO 'mysqltest1'@'%'
|
||||
GRANT UPDATE ON `mysqltest_1`.* TO 'mysqltest1'@'%'
|
||||
SELECT * FROM mysqltest_1.t1;
|
||||
a
|
||||
DROP USER 'mysqltest1'@'%';
|
||||
DROP DATABASE mysqltest_1;
|
||||
End of 5.0 tests
|
||||
|
@ -1128,6 +1128,152 @@ id c1 c2
|
||||
4 2 3
|
||||
1 5 1
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#27219: Aggregate functions in ORDER BY.
|
||||
#
|
||||
SET @save_sql_mode=@@sql_mode;
|
||||
SET @@sql_mode='ONLY_FULL_GROUP_BY';
|
||||
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT 0);
|
||||
INSERT INTO t1 (a, b) VALUES (3,3), (2,2), (3,3), (2,2), (3,3), (4,4);
|
||||
CREATE TABLE t2 SELECT * FROM t1;
|
||||
SELECT 1 FROM t1 ORDER BY COUNT(*);
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 ORDER BY COUNT(*) + 1;
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 ORDER BY COUNT(*) + a;
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT 1 FROM t1 ORDER BY COUNT(*), 1;
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 ORDER BY COUNT(*), a;
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT 1 FROM t1 ORDER BY SUM(a);
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 ORDER BY SUM(a + 1);
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 ORDER BY SUM(a) + 1;
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 ORDER BY SUM(a), b;
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT a FROM t1 ORDER BY COUNT(b);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1 ORDER BY (SELECT SUM(t2.a) FROM t2);
|
||||
a
|
||||
3
|
||||
2
|
||||
3
|
||||
2
|
||||
3
|
||||
4
|
||||
SELECT t1.a FROM t1 ORDER BY (SELECT SUM(t2.a), t2.a FROM t2);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1 ORDER BY (SELECT SUM(t2.a) FROM t2 ORDER BY t2.a);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1 ORDER BY (SELECT t2.a FROM t2 ORDER BY SUM(t2.b) LIMIT 1);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a = (SELECT t2.a FROM t2 ORDER BY SUM(t2.b) LIMIT 1);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a = (SELECT t2.a FROM t2 ORDER BY SUM(t2.a) LIMIT 1);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a IN (SELECT t2.a FROM t2 ORDER BY SUM(t1.b));
|
||||
a
|
||||
2
|
||||
3
|
||||
4
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a IN (SELECT t2.a FROM t2 ORDER BY t2.a, SUM(t2.b));
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING t1.a > ANY (SELECT t2.a FROM t2 ORDER BY t2.a, SUM(t2.b));
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a = (SELECT t2.a FROM t2 ORDER BY SUM(t1.b));
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT 1 FROM t1 GROUP BY t1.a
|
||||
HAVING (SELECT AVG(SUM(t1.b) + 1) FROM t2 ORDER BY SUM(t2.a) LIMIT 1);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 GROUP BY t1.a
|
||||
HAVING (SELECT AVG(SUM(t1.b) + t2.b) FROM t2 ORDER BY SUM(t2.a) LIMIT 1);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 GROUP BY t1.a
|
||||
HAVING (SELECT AVG(t1.b + t2.b) FROM t2 ORDER BY SUM(t2.a) LIMIT 1);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
SELECT 1 FROM t1 GROUP BY t1.a
|
||||
HAVING (SELECT AVG(SUM(t1.b) + 1) FROM t2 ORDER BY t2.a LIMIT 1);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT 1 FROM t1 GROUP BY t1.a
|
||||
HAVING (SELECT AVG(SUM(t1.b) + t2.b) FROM t2 ORDER BY t2.a LIMIT 1);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT 1 FROM t1 GROUP BY t1.a
|
||||
HAVING (SELECT AVG(t1.b + t2.b) FROM t2 ORDER BY t2.a LIMIT 1);
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a = (SELECT t2.a FROM t2 GROUP BY t2.a
|
||||
ORDER BY SUM(t2.b), SUM(t1.b) LIMIT 1);
|
||||
a
|
||||
4
|
||||
SELECT t1.a, SUM(t1.b) FROM t1
|
||||
WHERE t1.a = (SELECT SUM(t2.b) FROM t2 GROUP BY t2.a
|
||||
ORDER BY SUM(t2.b), SUM(t1.b) LIMIT 1)
|
||||
GROUP BY t1.a;
|
||||
a SUM(t1.b)
|
||||
4 4
|
||||
SELECT t1.a, SUM(t1.b) FROM t1
|
||||
WHERE t1.a = (SELECT SUM(t2.b) FROM t2
|
||||
ORDER BY SUM(t2.b) + SUM(t1.b) LIMIT 1)
|
||||
GROUP BY t1.a;
|
||||
a SUM(t1.b)
|
||||
SELECT t1.a, SUM(t1.b) FROM t1
|
||||
WHERE t1.a = (SELECT SUM(t2.b) FROM t2
|
||||
ORDER BY SUM(t2.b + t1.a) LIMIT 1)
|
||||
GROUP BY t1.a;
|
||||
a SUM(t1.b)
|
||||
SELECT t1.a FROM t1 GROUP BY t1.a
|
||||
HAVING (1, 1) = (SELECT SUM(t1.a), t1.a FROM t2 LIMIT 1);
|
||||
a
|
||||
select avg (
|
||||
(select
|
||||
(select sum(outr.a + innr.a) from t1 as innr limit 1) as tt
|
||||
from t1 as outr order by outr.a limit 1))
|
||||
from t1 as most_outer;
|
||||
avg (
|
||||
(select
|
||||
(select sum(outr.a + innr.a) from t1 as innr limit 1) as tt
|
||||
from t1 as outr order by outr.a limit 1))
|
||||
29.0000
|
||||
select avg (
|
||||
(select (
|
||||
(select sum(outr.a + innr.a) from t1 as innr limit 1)) as tt
|
||||
from t1 as outr order by count(outr.a) limit 1)) as tt
|
||||
from t1 as most_outer;
|
||||
ERROR 42000: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
|
||||
select (select sum(outr.a + t1.a) from t1 limit 1) as tt from t1 as outr order by outr.a;
|
||||
tt
|
||||
29
|
||||
29
|
||||
35
|
||||
35
|
||||
35
|
||||
41
|
||||
SET sql_mode=@save_sql_mode;
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE t1 (a INT, b INT,
|
||||
PRIMARY KEY (a),
|
||||
|
@ -256,6 +256,7 @@ set @a=repeat(' ',20);
|
||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
@ -1475,11 +1475,22 @@ f6 bigint(20) NO 10
|
||||
f7 datetime NO NULL
|
||||
f8 datetime YES 2006-01-01 00:00:00
|
||||
drop table t1;
|
||||
End of 5.0 tests.
|
||||
show fields from information_schema.table_names;
|
||||
ERROR 42S02: Unknown table 'table_names' in information_schema
|
||||
show keys from information_schema.table_names;
|
||||
ERROR 42S02: Unknown table 'table_names' in information_schema
|
||||
USE information_schema;
|
||||
SET max_heap_table_size = 16384;
|
||||
CREATE TABLE test.t1( a INT );
|
||||
SELECT *
|
||||
FROM tables ta
|
||||
JOIN collations co ON ( co.collation_name = ta.table_catalog )
|
||||
JOIN character_sets cs ON ( cs.character_set_name = ta.table_catalog );
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE VERSION ROW_FORMAT TABLE_ROWS AVG_ROW_LENGTH DATA_LENGTH MAX_DATA_LENGTH INDEX_LENGTH DATA_FREE AUTO_INCREMENT CREATE_TIME UPDATE_TIME CHECK_TIME TABLE_COLLATION CHECKSUM CREATE_OPTIONS TABLE_COMMENT COLLATION_NAME CHARACTER_SET_NAME ID IS_DEFAULT IS_COMPILED SORTLEN CHARACTER_SET_NAME DEFAULT_COLLATE_NAME DESCRIPTION MAXLEN
|
||||
DROP TABLE test.t1;
|
||||
SET max_heap_table_size = DEFAULT;
|
||||
USE test;
|
||||
End of 5.0 tests.
|
||||
select * from information_schema.engines WHERE ENGINE="MyISAM";
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
MyISAM DEFAULT Default engine as of MySQL 3.23 with great performance NO NO NO
|
||||
@ -1637,4 +1648,6 @@ show open tables where f1()=0;
|
||||
show open tables where f1()=0;
|
||||
drop table t1;
|
||||
drop function f1;
|
||||
select * from information_schema.tables where 1=sleep(100000);
|
||||
select * from information_schema.columns where 1=sleep(100000);
|
||||
End of 5.1 tests.
|
||||
|
@ -128,7 +128,7 @@ grant show view on v6 to testdb_2@localhost;
|
||||
create table t2 (f1 char(4));
|
||||
create definer=`no_such_user`@`no_such_host` view v7 as select * from t2;
|
||||
Warnings:
|
||||
Note 1449 There is no 'no_such_user'@'no_such_host' registered
|
||||
Note 1449 The user specified as a definer ('no_such_user'@'no_such_host') does not exist
|
||||
show fields from testdb_1.v6;
|
||||
Field Type Null Key Default Extra
|
||||
f1 char(4) YES NULL
|
||||
@ -144,7 +144,7 @@ show fields from testdb_1.v7;
|
||||
Field Type Null Key Default Extra
|
||||
f1 char(4) YES NULL
|
||||
Warnings:
|
||||
Note 1449 There is no 'no_such_user'@'no_such_host' registered
|
||||
Note 1449 The user specified as a definer ('no_such_user'@'no_such_host') does not exist
|
||||
create table t3 (f1 char(4), f2 char(4));
|
||||
create view v3 as select f1,f2 from t3;
|
||||
grant insert(f1), insert(f2) on v3 to testdb_2@localhost;
|
||||
@ -164,7 +164,7 @@ show fields from testdb_1.v7;
|
||||
Field Type Null Key Default Extra
|
||||
f1 char(4) YES NULL
|
||||
Warnings:
|
||||
Note 1449 There is no 'no_such_user'@'no_such_host' registered
|
||||
Note 1449 The user specified as a definer ('no_such_user'@'no_such_host') does not exist
|
||||
show create view testdb_1.v7;
|
||||
View Create View character_set_client collation_connection
|
||||
v7 CREATE ALGORITHM=UNDEFINED DEFINER=`no_such_user`@`no_such_host` SQL SECURITY DEFINER VIEW `v7` AS select `testdb_1`.`t2`.`f1` AS `f1` from `t2` latin1 latin1_swedish_ci
|
||||
|
@ -78,3 +78,14 @@ NULL NULL
|
||||
db-1 t-2
|
||||
NULL NULL
|
||||
drop database `db-1`;
|
||||
create table t1(id int primary key) engine = Innodb;
|
||||
create table t2(pid int, foreign key (pid) references t1(id)) engine = Innodb;
|
||||
set foreign_key_checks = 0;
|
||||
drop table t1;
|
||||
select UNIQUE_CONSTRAINT_NAME
|
||||
from information_schema.referential_constraints
|
||||
where constraint_schema = schema();
|
||||
UNIQUE_CONSTRAINT_NAME
|
||||
NULL
|
||||
drop table t2;
|
||||
set foreign_key_checks = 1;
|
||||
|
@ -1836,6 +1836,7 @@ set @a=repeat(' ',20);
|
||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
@ -3244,3 +3245,22 @@ where table_schema='test' and table_name = 't1';
|
||||
table_comment data_free_is_set
|
||||
this is a comment 1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
c2 VARCHAR(128) NOT NULL,
|
||||
PRIMARY KEY(c1)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=100;
|
||||
CREATE TABLE t2 (
|
||||
c1 INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
c2 INT(10) UNSIGNED DEFAULT NULL,
|
||||
PRIMARY KEY(c1)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=200;
|
||||
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
|
||||
AUTO_INCREMENT
|
||||
200
|
||||
ALTER TABLE t2 ADD CONSTRAINT t1_t2_1 FOREIGN KEY(c1) REFERENCES t1(c1);
|
||||
SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES WHERE table_name = 't2';
|
||||
AUTO_INCREMENT
|
||||
200
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t1;
|
||||
|
@ -1356,6 +1356,12 @@ id type d
|
||||
NULL member 3
|
||||
NULL member 4
|
||||
DROP TABLE t1;
|
||||
set @my_innodb_autoextend_increment=@@global.innodb_autoextend_increment;
|
||||
set global innodb_autoextend_increment=8;
|
||||
set global innodb_autoextend_increment=@my_innodb_autoextend_increment;
|
||||
set @my_innodb_commit_concurrency=@@global.innodb_commit_concurrency;
|
||||
set global innodb_commit_concurrency=0;
|
||||
set global innodb_commit_concurrency=@my_innodb_commit_concurrency;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE `t2` (
|
||||
`k` int(11) NOT NULL auto_increment,
|
||||
|
@ -1,3 +1,4 @@
|
||||
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||
set @@global.concurrent_insert= 0;
|
||||
drop table if exists t1, t2, t3;
|
||||
create table t1 (kill_id int);
|
||||
@ -137,3 +138,4 @@ KILL CONNECTION_ID();
|
||||
# of close of the connection socket
|
||||
SELECT 1;
|
||||
Got one of the listed errors
|
||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||
|
@ -261,6 +261,82 @@ SELECT * FROM t1;
|
||||
c1 c2 c3 c4
|
||||
10 1970-02-01 01:02:03 1.1e-100 1.1e+100
|
||||
DROP TABLE t1;
|
||||
|
||||
# --
|
||||
# -- Bug#35469: server crash with LOAD DATA INFILE to a VIEW.
|
||||
# --
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
DROP VIEW IF EXISTS v2;
|
||||
DROP VIEW IF EXISTS v3;
|
||||
|
||||
CREATE TABLE t1(c1 INT, c2 VARCHAR(255));
|
||||
|
||||
CREATE VIEW v1 AS SELECT * FROM t1;
|
||||
CREATE VIEW v2 AS SELECT 1 + 2 AS c0, c1, c2 FROM t1;
|
||||
CREATE VIEW v3 AS SELECT 1 AS d1, 2 AS d2;
|
||||
|
||||
LOAD DATA INFILE '../std_data_ln/bug35469.dat' INTO TABLE v1
|
||||
FIELDS ESCAPED BY '\\'
|
||||
TERMINATED BY ','
|
||||
ENCLOSED BY '"'
|
||||
LINES TERMINATED BY '\n' (c1, c2);
|
||||
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 "string1"
|
||||
2 "string2"
|
||||
3 "string3"
|
||||
|
||||
SELECT * FROM v1;
|
||||
c1 c2
|
||||
1 "string1"
|
||||
2 "string2"
|
||||
3 "string3"
|
||||
|
||||
DELETE FROM t1;
|
||||
|
||||
LOAD DATA INFILE '../std_data_ln/bug35469.dat' INTO TABLE v2
|
||||
FIELDS ESCAPED BY '\\'
|
||||
TERMINATED BY ','
|
||||
ENCLOSED BY '"'
|
||||
LINES TERMINATED BY '\n' (c1, c2);
|
||||
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 "string1"
|
||||
2 "string2"
|
||||
3 "string3"
|
||||
|
||||
SELECT * FROM v2;
|
||||
c0 c1 c2
|
||||
3 1 "string1"
|
||||
3 2 "string2"
|
||||
3 3 "string3"
|
||||
|
||||
DELETE FROM t1;
|
||||
|
||||
LOAD DATA INFILE '../std_data_ln/bug35469.dat' INTO TABLE v2
|
||||
FIELDS ESCAPED BY '\\'
|
||||
TERMINATED BY ','
|
||||
ENCLOSED BY '"'
|
||||
LINES TERMINATED BY '\n' (c0, c2);
|
||||
ERROR HY000: Invalid column reference (v2.c0) in LOAD DATA
|
||||
|
||||
LOAD DATA INFILE '../std_data_ln/bug35469.dat' INTO TABLE v3
|
||||
FIELDS ESCAPED BY '\\'
|
||||
TERMINATED BY ','
|
||||
ENCLOSED BY '"'
|
||||
LINES TERMINATED BY '\n' (d1, d2);
|
||||
ERROR HY000: The target table v3 of the LOAD is not updatable
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1;
|
||||
DROP VIEW v2;
|
||||
DROP VIEW v3;
|
||||
|
||||
# -- End of Bug#35469.
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SET NAMES latin1;
|
||||
|
@ -107,6 +107,17 @@ Database Table In_use Name_locked
|
||||
SET GLOBAL GENERAL_LOG=ON;
|
||||
SET GLOBAL SLOW_QUERY_LOG=ON;
|
||||
truncate table mysql.general_log;
|
||||
set names binary;
|
||||
select _koi8r'<27><><EFBFBD><EFBFBD>' as test;
|
||||
test
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
select * from mysql.general_log;
|
||||
event_time user_host thread_id server_id command_type argument
|
||||
TIMESTAMP USER_HOST THREAD_ID 1 Query set names binary
|
||||
TIMESTAMP USER_HOST THREAD_ID 1 Query select _koi8r'\xD4\xC5\xD3\xD4' as test
|
||||
TIMESTAMP USER_HOST THREAD_ID 1 Query select * from mysql.general_log
|
||||
set names utf8;
|
||||
truncate table mysql.general_log;
|
||||
set names utf8;
|
||||
create table bug16905 (s char(15) character set utf8 default 'пусто');
|
||||
insert into bug16905 values ('новое');
|
||||
|
@ -24,54 +24,3 @@ UNLOCK TABLES;
|
||||
SET SESSION debug="-d,sleep_open_and_lock_after_open";
|
||||
# connection default
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Extra tests for Bug#26379 - Combination of FLUSH TABLE and
|
||||
# REPAIR TABLE corrupts a MERGE table
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE t3 (c1 INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
INSERT INTO t3 VALUES (3);
|
||||
#
|
||||
# CREATE ... SELECT
|
||||
# try to access parent from another thread.
|
||||
#
|
||||
# connection con1
|
||||
SET SESSION debug="+d,sleep_create_select_before_lock";
|
||||
CREATE TABLE t4 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=FIRST SELECT * FROM t3;
|
||||
# connection default
|
||||
# Now try to access the parent.
|
||||
# If 3 is in table, SELECT had to wait.
|
||||
SELECT * FROM t4 ORDER BY c1;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
# connection con1
|
||||
SET SESSION debug="-d,sleep_create_select_before_lock";
|
||||
# connection default
|
||||
# Cleanup for next test.
|
||||
DROP TABLE t4;
|
||||
DELETE FROM t1 WHERE c1 != 1;
|
||||
#
|
||||
# CREATE ... SELECT
|
||||
# try to access child from another thread.
|
||||
#
|
||||
# connection con1
|
||||
SET SESSION debug="+d,sleep_create_select_before_lock";
|
||||
CREATE TABLE t4 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=FIRST SELECT * FROM t3;
|
||||
# connection default
|
||||
# Now try to access a child.
|
||||
# If 3 is in table, SELECT had to wait.
|
||||
SELECT * FROM t1 ORDER BY c1;
|
||||
c1
|
||||
1
|
||||
3
|
||||
# connection con1
|
||||
SET SESSION debug="-d,sleep_create_select_before_lock";
|
||||
# connection default
|
||||
DROP TABLE t1, t2, t3, t4;
|
||||
|
@ -964,6 +964,28 @@ id ref
|
||||
3 2
|
||||
4 5
|
||||
DROP TABLE t1, t2, t3;
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE m1(a INT) ENGINE=MERGE;
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TABLE `m1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE m1;
|
||||
CREATE TABLE m1(a INT) ENGINE=MERGE UNION=();
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TABLE `m1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||
ALTER TABLE m1 UNION=(t1);
|
||||
ALTER TABLE m1 UNION=();
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TABLE `m1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1, m1;
|
||||
End of 5.0 tests
|
||||
create table t1 (c1 int, index(c1));
|
||||
create table t2 (c1 int, index(c1)) engine=merge union=(t1);
|
||||
@ -1129,7 +1151,7 @@ SHOW CREATE TABLE t4;
|
||||
Table Create Table
|
||||
t4 CREATE TABLE `t4` (
|
||||
`c1` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 UNION=()
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t4 VALUES (4);
|
||||
ERROR HY000: Table 't4' is read only
|
||||
DROP TABLE t4;
|
||||
@ -1146,7 +1168,7 @@ SHOW CREATE TABLE t4;
|
||||
Table Create Table
|
||||
t4 CREATE TABLE `t4` (
|
||||
`c1` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 UNION=()
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO t4 VALUES (4);
|
||||
ERROR HY000: Table 't4' is read only
|
||||
DROP TABLE t4;
|
||||
|
@ -1415,6 +1415,7 @@ set @a=repeat(' ',20);
|
||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
|
@ -1086,6 +1086,7 @@ set @a=repeat(' ',20);
|
||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column 'v' at row 1
|
||||
Note 1265 Data truncated for column 'c' at row 1
|
||||
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||
concat('*',v,'*',c,'*',t,'*')
|
||||
*+ *+*+ *
|
||||
@ -2023,4 +2024,185 @@ CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(130),
|
||||
c2 VARCHAR(1)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(130),
|
||||
c2 VARCHAR(1)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
REPAIR TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(130),
|
||||
c2 VARCHAR(1)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES(REPEAT("a",128), 'b');
|
||||
INSERT INTO t1 VALUES('b', 'b');
|
||||
INSERT INTO t1 VALUES('c', 'b');
|
||||
DELETE FROM t1 WHERE c1='b';
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
2
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
2
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(130),
|
||||
c2 VARCHAR(1),
|
||||
KEY (c1)
|
||||
) ENGINE=MyISAM;
|
||||
# Insert 100 rows. Query log disabled.
|
||||
UPDATE t1 SET c1=REPEAT("a",128) LIMIT 90;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
100
|
||||
ALTER TABLE t1 ENGINE=MyISAM;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
100
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(50),
|
||||
c2 VARCHAR(1)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET UTF8;
|
||||
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
REPAIR TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(50),
|
||||
c2 VARCHAR(1)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET UTF8;
|
||||
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
REPAIR TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
1
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(50),
|
||||
c2 VARCHAR(1)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET UTF8;
|
||||
INSERT INTO t1 VALUES(REPEAT(_utf8 x'e0ae85',43), 'b');
|
||||
INSERT INTO t1 VALUES('b', 'b');
|
||||
INSERT INTO t1 VALUES('c', 'b');
|
||||
DELETE FROM t1 WHERE c1='b';
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
2
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
2
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 CHAR(50),
|
||||
c2 VARCHAR(1),
|
||||
KEY (c1)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET UTF8;
|
||||
# Insert 100 rows. Query log disabled.
|
||||
UPDATE t1 SET c1=REPEAT(_utf8 x'e0ae85',43) LIMIT 90;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
100
|
||||
ALTER TABLE t1 ENGINE=MyISAM;
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
100
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
CHECK TABLE t1 EXTENDED;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
c1 VARCHAR(10) NOT NULL,
|
||||
c2 CHAR(10) DEFAULT NULL,
|
||||
c3 VARCHAR(10) NOT NULL,
|
||||
KEY (c1),
|
||||
KEY (c2)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0;
|
||||
|
||||
MyISAM file: MYSQLTEST_VARDIR/master-data/test/t1
|
||||
Record format: Packed
|
||||
Character set: utf8_general_ci (33)
|
||||
Data records: 0 Deleted blocks: 0
|
||||
Recordlength: 94
|
||||
|
||||
table description:
|
||||
Key Start Len Index Type
|
||||
1 2 30 multip. varchar
|
||||
2 33 30 multip. char NULL
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
|
@ -21,7 +21,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -67,7 +67,7 @@ DELIMITER /*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -99,7 +99,7 @@ DELIMITER /*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -121,7 +121,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -167,7 +167,7 @@ DELIMITER /*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -199,7 +199,7 @@ DELIMITER /*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -299,7 +299,7 @@ DELIMITER /*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -349,7 +349,7 @@ DELIMITER /*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
|
@ -22,7 +22,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -65,7 +65,7 @@ SET INSERT_ID=1/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -104,7 +104,7 @@ SET INSERT_ID=4/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609946/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -130,7 +130,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -165,7 +165,7 @@ SET INSERT_ID=4/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609946/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -188,7 +188,7 @@ SET INSERT_ID=3/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609944/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -218,7 +218,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -249,7 +249,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -284,7 +284,7 @@ SET INSERT_ID=6/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609943/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -307,7 +307,7 @@ SET INSERT_ID=1/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -338,7 +338,7 @@ SET INSERT_ID=6/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609943/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -361,7 +361,7 @@ SET INSERT_ID=4/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609946/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -380,7 +380,7 @@ SET INSERT_ID=6/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609943/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -402,7 +402,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -448,7 +448,7 @@ SET INSERT_ID=3/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609944/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -471,7 +471,7 @@ SET INSERT_ID=6/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609943/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -493,7 +493,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -523,7 +523,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -566,7 +566,7 @@ SET INSERT_ID=1/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -604,7 +604,7 @@ SET INSERT_ID=4/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609946/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -630,7 +630,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -664,7 +664,7 @@ SET INSERT_ID=4/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609946/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -687,7 +687,7 @@ SET INSERT_ID=3/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609944/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -717,7 +717,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -747,7 +747,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -782,7 +782,7 @@ SET INSERT_ID=6/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609943/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -805,7 +805,7 @@ SET INSERT_ID=1/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -836,7 +836,7 @@ SET INSERT_ID=6/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609943/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -858,7 +858,7 @@ SET INSERT_ID=4/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609946/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -877,7 +877,7 @@ SET INSERT_ID=6/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609943/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -899,7 +899,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -945,7 +945,7 @@ SET INSERT_ID=3/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609944/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -968,7 +968,7 @@ SET INSERT_ID=6/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609943/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -990,7 +990,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
@ -1020,7 +1020,7 @@ ROLLBACK/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1579609942/*!*/;
|
||||
SET @@session.pseudo_thread_id=999999999/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
|
1
mysql-test/r/mysqldump-no-binlog.result
Normal file
1
mysql-test/r/mysqldump-no-binlog.result
Normal file
@ -0,0 +1 @@
|
||||
mysqldump: Error: Binlogging on server not active
|
@ -429,3 +429,21 @@ Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_next 5
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
CREATE TABLE t1 (
|
||||
a int(11) default NULL,
|
||||
b int(11) default NULL,
|
||||
KEY a (a,b)
|
||||
);
|
||||
INSERT INTO t1 VALUES (0,10),(0,11),(0,12);
|
||||
CREATE TABLE t2 (
|
||||
a int(11) default NULL,
|
||||
b int(11) default NULL,
|
||||
KEY a (a)
|
||||
);
|
||||
INSERT INTO t2 VALUES (3,NULL),(3,11),(3,12);
|
||||
SELECT * FROM t2 inner join t1 WHERE ( t1.a = 0 OR t1.a IS NULL) AND t2.a = 3 AND t2.b = t1.b;
|
||||
a b a b
|
||||
3 11 0 11
|
||||
3 12 0 12
|
||||
drop table t1, t2;
|
||||
End of 5.0 tests
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user