mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
Merge mysql1000.(none):/home/andrei/MySQL/BARE/mysql-5.1
into mysql1000.(none):/home/andrei/MySQL/MERGE/5.1-main2rpl client/mysqltest.c: Auto merged mysql-test/t/disabled.def: Auto merged sql/slave.cc: Auto merged sql/slave.h: Auto merged sql/sql_class.cc: Auto merged
This commit is contained in:
@@ -100,8 +100,10 @@ if [ "x$warning_mode" != "xpedantic" ]; then
|
|||||||
# C warnings
|
# C warnings
|
||||||
c_warnings="$warnings -Wunused-parameter"
|
c_warnings="$warnings -Wunused-parameter"
|
||||||
# C++ warnings
|
# C++ warnings
|
||||||
cxx_warnings="$warnings -Woverloaded-virtual -Wsign-promo -Wreorder"
|
cxx_warnings="$warnings"
|
||||||
cxx_warnings="$warnings -Wctor-dtor-privacy -Wnon-virtual-dtor"
|
# 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
|
# Added unless --with-debug=full
|
||||||
debug_extra_cflags="-O1 -Wuninitialized"
|
debug_extra_cflags="-O1 -Wuninitialized"
|
||||||
else
|
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
143
BUILD/check-cpu
143
BUILD/check-cpu
@@ -2,6 +2,9 @@
|
|||||||
#
|
#
|
||||||
# Check cpu of current machine and find the
|
# Check cpu of current machine and find the
|
||||||
# best compiler optimization flags for gcc
|
# 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 () {
|
check_cpu () {
|
||||||
@@ -33,7 +36,7 @@ check_cpu () {
|
|||||||
|
|
||||||
# parse CPU flags
|
# parse CPU flags
|
||||||
for flag in `$cpuinfo | grep '^flags' | sed -e 's/^flags.*: //' -e 's/[^a-zA-Z0-9_ ]/_/g'`; do
|
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
|
done
|
||||||
else
|
else
|
||||||
# Fallback when there is no /proc/cpuinfo
|
# Fallback when there is no /proc/cpuinfo
|
||||||
@@ -62,92 +65,95 @@ check_cpu () {
|
|||||||
Alpha*EV6*)
|
Alpha*EV6*)
|
||||||
cpu_arg="ev6";
|
cpu_arg="ev6";
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# Intel ia32
|
# Intel ia32
|
||||||
*Intel*Core*|*X[eE][oO][nN]*)
|
*Intel*Core*|*X[eE][oO][nN]*)
|
||||||
# a Xeon is just another pentium4 ...
|
# a Xeon is just another pentium4 ...
|
||||||
# ... unless it has the "lm" (long-mode) flag set,
|
# ... unless it has the "lm" (long-mode) flag set,
|
||||||
# in that case it's a Xeon with EM64T support
|
# 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.
|
# So is Intel Core.
|
||||||
if [ -z "$cpu_flag_lm" ]; then
|
if [ -z "$cpu_flag_lm" ]; then
|
||||||
cpu_arg="pentium4";
|
cpu_arg="pentium4"
|
||||||
else
|
else
|
||||||
cpu_arg="nocona";
|
cpu_arg="nocona"
|
||||||
|
fi
|
||||||
|
if test -z "$cpu_flag_ssse3" ; then
|
||||||
|
core2="no"
|
||||||
|
else
|
||||||
|
core2="yes"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*Pentium*4*Mobile*)
|
*Pentium*4*Mobile*)
|
||||||
cpu_arg="pentium4m";
|
cpu_arg="pentium4m"
|
||||||
;;
|
;;
|
||||||
*Pentium*4*)
|
*Pentium*4*)
|
||||||
cpu_arg="pentium4";
|
cpu_arg="pentium4"
|
||||||
;;
|
;;
|
||||||
*Pentium*III*Mobile*)
|
*Pentium*III*Mobile*)
|
||||||
cpu_arg="pentium3m";
|
cpu_arg="pentium3m"
|
||||||
;;
|
;;
|
||||||
*Pentium*III*)
|
*Pentium*III*)
|
||||||
cpu_arg="pentium3";
|
cpu_arg="pentium3"
|
||||||
;;
|
;;
|
||||||
*Pentium*M*pro*)
|
*Pentium*M*pro*)
|
||||||
cpu_arg="pentium-m";
|
cpu_arg="pentium-m"
|
||||||
;;
|
;;
|
||||||
*Celeron\(R\)*\ M*)
|
*Celeron\(R\)*\ M*)
|
||||||
cpu_arg="pentium-m";
|
cpu_arg="pentium-m"
|
||||||
;;
|
;;
|
||||||
*Celeron*Coppermine*)
|
*Celeron*Coppermine*)
|
||||||
cpu_arg="pentium3"
|
cpu_arg="pentium3"
|
||||||
;;
|
;;
|
||||||
*Celeron\(R\)*)
|
*Celeron\(R\)*)
|
||||||
cpu_arg="pentium4"
|
cpu_arg="pentium4"
|
||||||
;;
|
;;
|
||||||
*Celeron*)
|
*Celeron*)
|
||||||
cpu_arg="pentium2";
|
cpu_arg="pentium2"
|
||||||
;;
|
|
||||||
*Athlon*64*)
|
|
||||||
cpu_arg="athlon64";
|
|
||||||
;;
|
;;
|
||||||
*Turion*)
|
*Turion*)
|
||||||
cpu_arg="athlon64";
|
cpu_arg="athlon64"
|
||||||
;;
|
;;
|
||||||
*Opteron*)
|
*Athlon*64*)
|
||||||
cpu_arg="athlon64";
|
cpu_arg="athlon64"
|
||||||
;;
|
;;
|
||||||
*Athlon*)
|
*Athlon*)
|
||||||
cpu_arg="athlon";
|
cpu_arg="athlon"
|
||||||
;;
|
;;
|
||||||
*Opteron*)
|
*Opteron*)
|
||||||
cpu_arg="opteron";
|
cpu_arg="opteron"
|
||||||
;;
|
;;
|
||||||
# MacOSX / Intel
|
# MacOSX / Intel
|
||||||
*i386*i486*)
|
*i386*i486*)
|
||||||
cpu_arg="pentium-m";
|
cpu_arg="pentium-m"
|
||||||
|
;;
|
||||||
|
*i386*)
|
||||||
|
cpu_arg="i386"
|
||||||
;;
|
;;
|
||||||
#Core 2 Duo
|
#Core 2 Duo
|
||||||
*Intel*Core\(TM\)2*)
|
*Intel*Core\(TM\)2*)
|
||||||
cpu_arg="nocona";
|
cpu_arg="nocona"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# Intel ia64
|
# Intel ia64
|
||||||
*Itanium*)
|
*Itanium*)
|
||||||
# Don't need to set any flags for itanium(at the moment)
|
cpu_arg="itanium"
|
||||||
cpu_arg="";
|
|
||||||
;;
|
;;
|
||||||
|
# Solaris Sparc
|
||||||
#
|
*sparc*sun4u*)
|
||||||
|
cpu_arg="sparc"
|
||||||
|
;;
|
||||||
|
# Power PC
|
||||||
*ppc*)
|
*ppc*)
|
||||||
cpu_arg='powerpc'
|
cpu_arg="powerpc"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*powerpc*)
|
*powerpc*)
|
||||||
cpu_arg='powerpc'
|
cpu_arg="powerpc"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
# unknown
|
# unknown
|
||||||
*)
|
*)
|
||||||
cpu_arg="";
|
cpu_arg=""
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
|
||||||
if test -z "$cpu_arg" ; then
|
if test -z "$cpu_arg" ; then
|
||||||
if test "$CPUINFO" != " " ; then
|
if test "$CPUINFO" != " " ; then
|
||||||
# fallback to uname if necessary
|
# fallback to uname if necessary
|
||||||
@@ -181,24 +187,17 @@ check_cpu () {
|
|||||||
*GCC*)
|
*GCC*)
|
||||||
# different gcc backends (and versions) have different CPU flags
|
# different gcc backends (and versions) have different CPU flags
|
||||||
case `gcc -dumpmachine` in
|
case `gcc -dumpmachine` in
|
||||||
i?86-*)
|
i?86-* | x86_64-*)
|
||||||
if test "$cc_comp" -lt 304
|
if test "$cc_comp" -lt 304 ; then
|
||||||
then
|
check_cpu_cflags="-mcpu=${cpu_arg}"
|
||||||
check_cpu_args='-mcpu=$cpu_arg'
|
elif test "$cc_comp" -ge 402 ; then
|
||||||
|
check_cpu_cflags="-mtune=native"
|
||||||
else
|
else
|
||||||
check_cpu_args='-mtune=$cpu_arg'
|
check_cpu_cflags="-mtune=${cpu_arg}"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
ppc-*)
|
ppc-*)
|
||||||
check_cpu_args='-mcpu=$cpu_arg -mtune=$cpu_arg'
|
check_cpu_cflags="-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=""
|
check_cpu_cflags=""
|
||||||
@@ -208,7 +207,7 @@ check_cpu () {
|
|||||||
;;
|
;;
|
||||||
2.95.*)
|
2.95.*)
|
||||||
# GCC 2.95 doesn't expose its name in --version output
|
# 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=""
|
check_cpu_cflags=""
|
||||||
@@ -219,41 +218,23 @@ check_cpu () {
|
|||||||
# now we check whether the compiler really understands the cpu type
|
# now we check whether the compiler really understands the cpu type
|
||||||
touch __test.c
|
touch __test.c
|
||||||
|
|
||||||
|
if test "x$core2" = "xyes" ; then
|
||||||
|
cpu_arg="core2"
|
||||||
|
fi
|
||||||
while [ "$cpu_arg" ] ; do
|
while [ "$cpu_arg" ] ; do
|
||||||
printf "testing $cpu_arg ... " >&2
|
printf "testing $cpu_arg ... " >&2
|
||||||
|
|
||||||
# compile check
|
# compile check
|
||||||
check_cpu_cflags=`eval echo $check_cpu_args`
|
eval "$cc -c $check_cpu_cflags __test.c" 2>/dev/null
|
||||||
if $cc -c $check_cpu_cflags __test.c 2>/dev/null; then
|
if test "x$?" = "x0" ; then
|
||||||
echo ok >&2
|
echo ok >&2
|
||||||
break;
|
break;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo failed >&2
|
echo failed >&2
|
||||||
check_cpu_cflags=""
|
check_cpu_cflags=""
|
||||||
|
break;
|
||||||
# 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
|
|
||||||
done
|
done
|
||||||
|
|
||||||
rm __test.*
|
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_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DDBUG_OFF")
|
||||||
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} -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")
|
IF(CMAKE_GENERATOR MATCHES "Visual Studio 8")
|
||||||
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /wd4996")
|
||||||
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /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")
|
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
||||||
ENDIF(WIN32)
|
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)
|
IF(EMBED_MANIFESTS)
|
||||||
# Search for the tools (mt, makecat, signtool) necessary for embedding
|
# Search for the tools (mt, makecat, signtool) necessary for embedding
|
||||||
# manifests and signing executables with the MySQL AB authenticode cert.
|
# 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,
|
if (mysql_server_init(embedded_server_arg_count, embedded_server_args,
|
||||||
(char**) embedded_server_groups))
|
(char**) embedded_server_groups))
|
||||||
{
|
{
|
||||||
|
put_error(NULL);
|
||||||
free_defaults(defaults_argv);
|
free_defaults(defaults_argv);
|
||||||
my_end(0);
|
my_end(0);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@@ -113,6 +113,8 @@ static char *opt_password=0,*current_user=0,
|
|||||||
*log_error_file= NULL;
|
*log_error_file= NULL;
|
||||||
static char **defaults_argv= 0;
|
static char **defaults_argv= 0;
|
||||||
static char compatible_mode_normal_str[255];
|
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;
|
static ulong opt_compatible_mode= 0;
|
||||||
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
|
#define MYSQL_OPT_MASTER_DATA_EFFECTIVE_SQL 1
|
||||||
#define MYSQL_OPT_MASTER_DATA_COMMENTED_SQL 2
|
#define MYSQL_OPT_MASTER_DATA_COMMENTED_SQL 2
|
||||||
@@ -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)
|
static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
|
||||||
{
|
{
|
||||||
char query_buffer[QUERY_LENGTH];
|
char query_buffer[QUERY_LENGTH];
|
||||||
size_t 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,
|
query_length= my_snprintf(query_buffer,
|
||||||
sizeof (query_buffer),
|
sizeof (query_buffer),
|
||||||
"SET SESSION character_set_results = '%s'",
|
"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");
|
DB_error(&mysql_connection, "when trying to connect");
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
Don't dump SET NAMES with a pre-4.1 server (bug#7997).
|
|
||||||
*/
|
|
||||||
if (mysql_get_server_version(&mysql_connection) < 40100)
|
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;
|
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
|
As we're going to set SQL_MODE, it would be lost on reconnect, so we
|
||||||
cannot reconnect.
|
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",
|
my_printf_error(0, "Error: Binlogging on server not active",
|
||||||
MYF(0));
|
MYF(0));
|
||||||
mysql_free_result(master);
|
mysql_free_result(master);
|
||||||
|
maybe_exit(EX_MYSQLERR);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
mysql_free_result(master);
|
mysql_free_result(master);
|
||||||
|
@@ -536,6 +536,17 @@ static int do_send_query(struct st_connection *cn, const char *q, int q_len,
|
|||||||
return 0;
|
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*/
|
#else /*EMBEDDED_LIBRARY*/
|
||||||
|
|
||||||
#define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len)
|
#define do_send_query(cn,q,q_len,flags) mysql_send_query(&cn->mysql, q, q_len)
|
||||||
@@ -4085,7 +4096,14 @@ void do_close_connection(struct st_command *command)
|
|||||||
con->mysql.net.vio = 0;
|
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)
|
if (con->stmt)
|
||||||
mysql_stmt_close(con->stmt);
|
mysql_stmt_close(con->stmt);
|
||||||
con->stmt= 0;
|
con->stmt= 0;
|
||||||
@@ -4237,11 +4255,13 @@ int connect_n_handle_errors(struct st_command *command,
|
|||||||
if (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0,
|
if (!mysql_real_connect(con, host, user, pass, db, port, sock ? sock: 0,
|
||||||
CLIENT_MULTI_STATEMENTS))
|
CLIENT_MULTI_STATEMENTS))
|
||||||
{
|
{
|
||||||
|
var_set_errno(mysql_errno(con));
|
||||||
handle_error(command, mysql_errno(con), mysql_error(con),
|
handle_error(command, mysql_errno(con), mysql_error(con),
|
||||||
mysql_sqlstate(con), ds);
|
mysql_sqlstate(con), ds);
|
||||||
return 0; /* Not connected */
|
return 0; /* Not connected */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var_set_errno(0);
|
||||||
handle_no_error(command);
|
handle_no_error(command);
|
||||||
return 1; /* Connected */
|
return 1; /* Connected */
|
||||||
}
|
}
|
||||||
@@ -4371,6 +4391,9 @@ void do_connect(struct st_command *command)
|
|||||||
(int) (sizeof(connections)/sizeof(struct st_connection)));
|
(int) (sizeof(connections)/sizeof(struct st_connection)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef EMBEDDED_LIBRARY
|
||||||
|
con_slot->query_done= 1;
|
||||||
|
#endif
|
||||||
if (!mysql_init(&con_slot->mysql))
|
if (!mysql_init(&con_slot->mysql))
|
||||||
die("Failed on mysql_init()");
|
die("Failed on mysql_init()");
|
||||||
if (opt_compress || con_compress)
|
if (opt_compress || con_compress)
|
||||||
@@ -5872,16 +5895,11 @@ void run_query_normal(struct st_connection *cn, struct st_command *command,
|
|||||||
}
|
}
|
||||||
#ifdef EMBEDDED_LIBRARY
|
#ifdef EMBEDDED_LIBRARY
|
||||||
/*
|
/*
|
||||||
Here we handle 'reap' command, so we need to check if the
|
Here we handle 'reap' command, so we need to check if the
|
||||||
query's thread was finished and probably wait
|
query's thread was finished and probably wait
|
||||||
*/
|
*/
|
||||||
else if (flags & QUERY_REAP_FLAG)
|
else if (flags & QUERY_REAP_FLAG)
|
||||||
{
|
wait_query_thread_end(cn);
|
||||||
pthread_mutex_lock(&cn->mutex);
|
|
||||||
while (!cn->query_done)
|
|
||||||
pthread_cond_wait(&cn->cond, &cn->mutex);
|
|
||||||
pthread_mutex_unlock(&cn->mutex);
|
|
||||||
}
|
|
||||||
#endif /*EMBEDDED_LIBRARY*/
|
#endif /*EMBEDDED_LIBRARY*/
|
||||||
if (!(flags & QUERY_REAP_FLAG))
|
if (!(flags & QUERY_REAP_FLAG))
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
|
@@ -136,6 +136,8 @@ struct editline {
|
|||||||
|
|
||||||
protected int el_editmode(EditLine *, int, const char **);
|
protected int el_editmode(EditLine *, int, const char **);
|
||||||
|
|
||||||
|
#define el_isprint(x) ((unsigned char) (x) < 0x80 ? isprint(x) : 1)
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define EL_ABORT(a) do { \
|
#define EL_ABORT(a) do { \
|
||||||
fprintf(el->el_errfile, "%s, %d: ", \
|
fprintf(el->el_errfile, "%s, %d: ", \
|
||||||
|
@@ -618,7 +618,7 @@ key__decode_char(char *buf, int cnt, int ch)
|
|||||||
} else if (ch == '\\') {
|
} else if (ch == '\\') {
|
||||||
buf[cnt++] = '\\';
|
buf[cnt++] = '\\';
|
||||||
buf[cnt] = '\\';
|
buf[cnt] = '\\';
|
||||||
} else if (ch == ' ' || (isprint(ch) && !isspace(ch))) {
|
} else if (ch == ' ' || (el_isprint(ch) && !isspace(ch))) {
|
||||||
buf[cnt] = ch;
|
buf[cnt] = ch;
|
||||||
} else {
|
} else {
|
||||||
buf[cnt++] = '\\';
|
buf[cnt++] = '\\';
|
||||||
@@ -660,7 +660,7 @@ key__decode_str(const char *str, char *buf, const char *sep)
|
|||||||
} else if (*p == '^' || *p == '\\') {
|
} else if (*p == '^' || *p == '\\') {
|
||||||
*b++ = '\\';
|
*b++ = '\\';
|
||||||
*b++ = *p;
|
*b++ = *p;
|
||||||
} else if (*p == ' ' || (isprint((unsigned char) *p) &&
|
} else if (*p == ' ' || (el_isprint((unsigned char) *p) &&
|
||||||
!isspace((unsigned char) *p))) {
|
!isspace((unsigned char) *p))) {
|
||||||
*b++ = *p;
|
*b++ = *p;
|
||||||
} else {
|
} else {
|
||||||
|
@@ -961,7 +961,7 @@ map_init_nls(EditLine *el)
|
|||||||
el_action_t *map = el->el_map.key;
|
el_action_t *map = el->el_map.key;
|
||||||
|
|
||||||
for (i = 0200; i <= 0377; i++)
|
for (i = 0200; i <= 0377; i++)
|
||||||
if (isprint(i))
|
if (el_isprint(i))
|
||||||
map[i] = ED_INSERT;
|
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) {
|
el->el_chared.c_redo.pos < el->el_chared.c_redo.lim) {
|
||||||
if (cmdnum == VI_DELETE_PREV_CHAR &&
|
if (cmdnum == VI_DELETE_PREV_CHAR &&
|
||||||
el->el_chared.c_redo.pos != el->el_chared.c_redo.buf
|
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--;
|
el->el_chared.c_redo.pos--;
|
||||||
else
|
else
|
||||||
*el->el_chared.c_redo.pos++ = ch;
|
*el->el_chared.c_redo.pos++ = ch;
|
||||||
|
@@ -88,7 +88,7 @@ private void
|
|||||||
re_addc(EditLine *el, int c)
|
re_addc(EditLine *el, int c)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (isprint(c)) {
|
if (el_isprint(c)) {
|
||||||
re_putc(el, c, 1);
|
re_putc(el, c, 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -964,7 +964,7 @@ re_refresh_cursor(EditLine *el)
|
|||||||
h = 1;
|
h = 1;
|
||||||
v++;
|
v++;
|
||||||
}
|
}
|
||||||
} else if (!isprint((unsigned char) c)) {
|
} else if (!el_isprint((unsigned char) c)) {
|
||||||
h += 3;
|
h += 3;
|
||||||
if (h > th) { /* if overflow, compensate */
|
if (h > th) { /* if overflow, compensate */
|
||||||
h = h - th;
|
h = h - th;
|
||||||
@@ -1057,7 +1057,7 @@ re_fastaddc(EditLine *el)
|
|||||||
char mc = (c == '\177') ? '?' : (c | 0100);
|
char mc = (c == '\177') ? '?' : (c | 0100);
|
||||||
re_fastputc(el, '^');
|
re_fastputc(el, '^');
|
||||||
re_fastputc(el, mc);
|
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);
|
re_fastputc(el, c);
|
||||||
} else {
|
} else {
|
||||||
re_fastputc(el, '\\');
|
re_fastputc(el, '\\');
|
||||||
|
@@ -199,7 +199,7 @@ do
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
AC_MSG_ERROR([Charset '$cs' not available. (Available are: $CHARSETS_AVAILABLE).
|
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
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -380,7 +380,7 @@ case $default_charset in
|
|||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
AC_MSG_ERROR([Charset $cs not available. (Available are: $CHARSETS_AVAILABLE).
|
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
|
esac
|
||||||
|
|
||||||
if test "$default_collation" = default; then
|
if test "$default_collation" = default; then
|
||||||
@@ -405,7 +405,7 @@ else
|
|||||||
Collation $default_collation is not valid for character set $default_charset.
|
Collation $default_collation is not valid for character set $default_charset.
|
||||||
Valid collations are: $default_charset_collations.
|
Valid collations are: $default_charset_collations.
|
||||||
See the Installation chapter in the Reference Manual.
|
See the Installation chapter in the Reference Manual.
|
||||||
]);
|
])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_DEFINE_UNQUOTED([MYSQL_DEFAULT_CHARSET_NAME], ["$default_charset"],
|
AC_DEFINE_UNQUOTED([MYSQL_DEFAULT_CHARSET_NAME], ["$default_charset"],
|
||||||
|
@@ -2,9 +2,9 @@ dnl ---------------------------------------------------------------------------
|
|||||||
dnl Macro: MYSQL_CHECK_NDBCLUSTER
|
dnl Macro: MYSQL_CHECK_NDBCLUSTER
|
||||||
dnl ---------------------------------------------------------------------------
|
dnl ---------------------------------------------------------------------------
|
||||||
|
|
||||||
NDB_VERSION_MAJOR=`echo $MYSQL_NO_DASH_VERSION | cut -d. -f1`
|
NDB_VERSION_MAJOR=`echo $MYSQL_NUMERIC_VERSION | cut -d. -f1`
|
||||||
NDB_VERSION_MINOR=`echo $MYSQL_NO_DASH_VERSION | cut -d. -f2`
|
NDB_VERSION_MINOR=`echo $MYSQL_NUMERIC_VERSION | cut -d. -f2`
|
||||||
NDB_VERSION_BUILD=`echo $MYSQL_NO_DASH_VERSION | cut -d. -f3`
|
NDB_VERSION_BUILD=`echo $MYSQL_NUMERIC_VERSION | cut -d. -f3`
|
||||||
NDB_VERSION_STATUS=`echo $VERSION | sed 's/^[[-.0-9]]*//'`
|
NDB_VERSION_STATUS=`echo $VERSION | sed 's/^[[-.0-9]]*//'`
|
||||||
TEST_NDBCLUSTER=""
|
TEST_NDBCLUSTER=""
|
||||||
|
|
||||||
|
@@ -631,7 +631,7 @@ case $SYSTEM_TYPE in
|
|||||||
esac
|
esac
|
||||||
if test "$CXX_VERSION"
|
if test "$CXX_VERSION"
|
||||||
then
|
then
|
||||||
AC_MSG_CHECKING("C++ compiler version");
|
AC_MSG_CHECKING("C++ compiler version")
|
||||||
AC_MSG_RESULT("$CXX $CXX_VERSION")
|
AC_MSG_RESULT("$CXX $CXX_VERSION")
|
||||||
fi
|
fi
|
||||||
AC_SUBST(CXX_VERSION)
|
AC_SUBST(CXX_VERSION)
|
||||||
|
20
configure.in
20
configure.in
@@ -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 ?
|
# 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
|
# Remember that regexps needs to quote [ and ] since this is run through m4
|
||||||
MYSQL_NO_DASH_VERSION=`echo $VERSION | sed -e "s|[[a-z]]*-.*$||"`
|
# We take some made up examples
|
||||||
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'`
|
# 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
|
# Add previous major version for debian package upgrade path
|
||||||
MYSQL_PREVIOUS_BASE_VERSION=5.0
|
MYSQL_PREVIOUS_BASE_VERSION=5.0
|
||||||
@@ -1031,8 +1041,8 @@ case $SYSTEM_TYPE in
|
|||||||
;;
|
;;
|
||||||
*hpux11.*)
|
*hpux11.*)
|
||||||
AC_MSG_WARN([Enabling workarounds for hpux 11])
|
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"
|
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 -DDONT_USE_FINITE -D_INCLUDE_LONGLONG -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"
|
if test "$with_named_thread" = "no"
|
||||||
then
|
then
|
||||||
AC_MSG_WARN([Using --with-named-thread=-lpthread])
|
AC_MSG_WARN([Using --with-named-thread=-lpthread])
|
||||||
|
@@ -158,14 +158,12 @@ typedef uint rf_SetTimer;
|
|||||||
|
|
||||||
#define Socket_defined
|
#define Socket_defined
|
||||||
#define my_socket SOCKET
|
#define my_socket SOCKET
|
||||||
#define bool BOOL
|
|
||||||
#define SIGPIPE SIGINT
|
#define SIGPIPE SIGINT
|
||||||
#define RETQSORTTYPE void
|
#define RETQSORTTYPE void
|
||||||
#define QSORT_TYPE_IS_VOID
|
#define QSORT_TYPE_IS_VOID
|
||||||
#define RETSIGTYPE void
|
#define RETSIGTYPE void
|
||||||
#define SOCKET_SIZE_TYPE int
|
#define SOCKET_SIZE_TYPE int
|
||||||
#define my_socket_defined
|
#define my_socket_defined
|
||||||
#define bool_defined
|
|
||||||
#define byte_defined
|
#define byte_defined
|
||||||
#define HUGE_PTR
|
#define HUGE_PTR
|
||||||
#define STDCALL __stdcall /* Used by libmysql.dll */
|
#define STDCALL __stdcall /* Used by libmysql.dll */
|
||||||
@@ -260,71 +258,6 @@ inline double ulonglong2double(ulonglong value)
|
|||||||
|
|
||||||
#define STACK_DIRECTION -1
|
#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 */
|
|
||||||
|
|
||||||
#define HAVE_PERROR
|
#define HAVE_PERROR
|
||||||
#define HAVE_VFPRINT
|
#define HAVE_VFPRINT
|
||||||
#define HAVE_RENAME /* Have rename() as function */
|
#define HAVE_RENAME /* Have rename() as function */
|
||||||
@@ -472,4 +405,4 @@ inline double ulonglong2double(ulonglong value)
|
|||||||
#define HAVE_CHARSET_ujis 1
|
#define HAVE_CHARSET_ujis 1
|
||||||
#define HAVE_CHARSET_utf8 1
|
#define HAVE_CHARSET_utf8 1
|
||||||
#define HAVE_UCA_COLLATIONS 1
|
#define HAVE_UCA_COLLATIONS 1
|
||||||
|
#define HAVE_BOOL 1
|
||||||
|
@@ -47,8 +47,9 @@ typedef struct st_hash {
|
|||||||
/* A search iterator state */
|
/* A search iterator state */
|
||||||
typedef uint HASH_SEARCH_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)
|
#define hash_init(A,B,C,D,E,F,G,H) _hash_init(A,0,B,C,D,E,F,G,H CALLER_INFO)
|
||||||
my_bool _hash_init(HASH *hash, CHARSET_INFO *charset,
|
#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,
|
ulong default_array_elements, size_t key_offset,
|
||||||
size_t key_length, hash_get_key get_key,
|
size_t key_length, hash_get_key get_key,
|
||||||
void (*free_element)(void*), uint flags CALLER_INFO_PROTO);
|
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_clear(H) bzero((char*) (H),sizeof(*(H)))
|
||||||
#define hash_inited(H) ((H)->array.buffer != 0)
|
#define hash_inited(H) ((H)->array.buffer != 0)
|
||||||
#define hash_init_opt(A,B,C,D,E,F,G,H) \
|
#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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@@ -486,9 +486,6 @@ C_MODE_END
|
|||||||
#include <sys/stream.h> /* HPUX 10.20 defines ulong here. UGLY !!! */
|
#include <sys/stream.h> /* HPUX 10.20 defines ulong here. UGLY !!! */
|
||||||
#define HAVE_ULONG
|
#define HAVE_ULONG
|
||||||
#endif
|
#endif
|
||||||
#ifdef DONT_USE_FINITE /* HPUX 11.x has is_finite() */
|
|
||||||
#undef HAVE_FINITE
|
|
||||||
#endif
|
|
||||||
#if defined(HPUX10) && defined(_LARGEFILE64_SOURCE) && defined(THREAD)
|
#if defined(HPUX10) && defined(_LARGEFILE64_SOURCE) && defined(THREAD)
|
||||||
/* Fix bug in setrlimit */
|
/* Fix bug in setrlimit */
|
||||||
#undef setrlimit
|
#undef setrlimit
|
||||||
@@ -858,9 +855,13 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
|||||||
#define SIZE_T_MAX ~((size_t) 0)
|
#define SIZE_T_MAX ~((size_t) 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_FINITE
|
#ifndef isfinite
|
||||||
|
#ifdef HAVE_FINITE
|
||||||
|
#define isfinite(x) finite(x)
|
||||||
|
#else
|
||||||
#define finite(x) (1.0 / fabs(x) > 0.0)
|
#define finite(x) (1.0 / fabs(x) > 0.0)
|
||||||
#endif
|
#endif /* HAVE_FINITE */
|
||||||
|
#endif /* isfinite */
|
||||||
|
|
||||||
#ifndef HAVE_ISNAN
|
#ifndef HAVE_ISNAN
|
||||||
#define isnan(x) ((x) != (x))
|
#define isnan(x) ((x) != (x))
|
||||||
@@ -870,7 +871,7 @@ typedef SOCKET_SIZE_TYPE size_socket;
|
|||||||
/* isinf() can be used in both C and C++ code */
|
/* isinf() can be used in both C and C++ code */
|
||||||
#define my_isinf(X) isinf(X)
|
#define my_isinf(X) isinf(X)
|
||||||
#else
|
#else
|
||||||
#define my_isinf(X) (!finite(X) && !isnan(X))
|
#define my_isinf(X) (!isfinite(X) && !isnan(X))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Define missing math constants. */
|
/* Define missing math constants. */
|
||||||
@@ -1066,7 +1067,7 @@ typedef uint8 int7; /* Most effective integer 0 <= x <= 127 */
|
|||||||
typedef short int15; /* Most effective integer 0 <= x <= 32767 */
|
typedef short int15; /* Most effective integer 0 <= x <= 32767 */
|
||||||
typedef int myf; /* Type of MyFlags in my_funcs */
|
typedef int myf; /* Type of MyFlags in my_funcs */
|
||||||
typedef char my_bool; /* Small bool */
|
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 */
|
typedef char bool; /* Ordinary boolean values 0 1 */
|
||||||
#endif
|
#endif
|
||||||
/* Macros for converting *constants* to the right type */
|
/* Macros for converting *constants* to the right type */
|
||||||
@@ -1139,7 +1140,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* Optimized store functions for Intel x86 */
|
/* Optimized store functions for Intel x86 */
|
||||||
#if defined(__i386__) && !defined(_WIN64)
|
#if defined(__i386__) || defined(_WIN32)
|
||||||
#define sint2korr(A) (*((int16 *) (A)))
|
#define sint2korr(A) (*((int16 *) (A)))
|
||||||
#define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \
|
#define sint3korr(A) ((int32) ((((uchar) (A)[2]) & 128) ? \
|
||||||
(((uint32) 255L << 24) | \
|
(((uint32) 255L << 24) | \
|
||||||
@@ -1151,7 +1152,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
|||||||
((uint32) (uchar) (A)[0])))
|
((uint32) (uchar) (A)[0])))
|
||||||
#define sint4korr(A) (*((long *) (A)))
|
#define sint4korr(A) (*((long *) (A)))
|
||||||
#define uint2korr(A) (*((uint16 *) (A)))
|
#define uint2korr(A) (*((uint16 *) (A)))
|
||||||
#ifdef HAVE_purify
|
#if defined(HAVE_purify) && !defined(_WIN32)
|
||||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
||||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||||
(((uint32) ((uchar) (A)[2])) << 16))
|
(((uint32) ((uchar) (A)[2])) << 16))
|
||||||
@@ -1163,7 +1164,7 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
|||||||
It means, that you have to provide enough allocated space !
|
It means, that you have to provide enough allocated space !
|
||||||
*/
|
*/
|
||||||
#define uint3korr(A) (long) (*((unsigned int *) (A)) & 0xFFFFFF)
|
#define uint3korr(A) (long) (*((unsigned int *) (A)) & 0xFFFFFF)
|
||||||
#endif
|
#endif /* HAVE_purify && !_WIN32 */
|
||||||
#define uint4korr(A) (*((uint32 *) (A)))
|
#define uint4korr(A) (*((uint32 *) (A)))
|
||||||
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
|
||||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||||
@@ -1214,9 +1215,8 @@ do { doubleget_union _tmp; \
|
|||||||
#define floatstore(T,V) memcpy((uchar*)(T), (uchar*)(&V),sizeof(float))
|
#define floatstore(T,V) memcpy((uchar*)(T), (uchar*)(&V),sizeof(float))
|
||||||
#define floatget(V,M) memcpy((uchar*) &V,(uchar*) (M),sizeof(float))
|
#define floatget(V,M) memcpy((uchar*) &V,(uchar*) (M),sizeof(float))
|
||||||
#define float8store(V,M) doublestore((V),(M))
|
#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
|
We're here if it's not a IA-32 architecture (Win32 and UNIX IA-32 defines
|
||||||
were done before)
|
were done before)
|
||||||
@@ -1355,7 +1355,7 @@ do { doubleget_union _tmp; \
|
|||||||
#define float8store(V,M) doublestore((V),(M))
|
#define float8store(V,M) doublestore((V),(M))
|
||||||
#endif /* WORDS_BIGENDIAN */
|
#endif /* WORDS_BIGENDIAN */
|
||||||
|
|
||||||
#endif /* sint2korr */
|
#endif /* __i386__ OR _WIN32 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Macro for reading 32-bit integer from network byte order (big-endian)
|
Macro for reading 32-bit integer from network byte order (big-endian)
|
||||||
|
@@ -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_unlock(A) LeaveCriticalSection(A)
|
||||||
#define pthread_mutex_destroy(A) DeleteCriticalSection(A)
|
#define pthread_mutex_destroy(A) DeleteCriticalSection(A)
|
||||||
#define my_pthread_setprio(A,B) SetThreadPriority(GetCurrentThread(), (B))
|
#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)
|
#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_attr_setdetachstate(A,B) pthread_dummy(0)
|
||||||
#define pthread_create(A,B,C,D) pthread_create((A),*(B),(C),(D))
|
#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_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
|
#undef pthread_detach_this_thread
|
||||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_DARWIN5_THREADS
|
#ifdef HAVE_DARWIN5_THREADS
|
||||||
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
#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_init(A) pthread_dummy(0)
|
||||||
#define pthread_condattr_destroy(A) pthread_dummy(0)
|
#define pthread_condattr_destroy(A) pthread_dummy(0)
|
||||||
#undef pthread_detach_this_thread
|
#undef pthread_detach_this_thread
|
||||||
@@ -370,7 +370,7 @@ struct tm *gmtime_r(const time_t *clock, struct tm *res);
|
|||||||
#ifndef pthread_sigmask
|
#ifndef pthread_sigmask
|
||||||
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
#define pthread_sigmask(A,B,C) sigprocmask((A),(B),(C))
|
||||||
#endif
|
#endif
|
||||||
#define pthread_kill(A,B) pthread_dummy(ESRCH)
|
#define pthread_kill(A,B) pthread_dummy((A) ? 0 : ESRCH)
|
||||||
#undef pthread_detach_this_thread
|
#undef pthread_detach_this_thread
|
||||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(&tmp); }
|
||||||
#elif !defined(__NETWARE__) /* HAVE_PTHREAD_ATTR_CREATE && !HAVE_SIGWAIT */
|
#elif !defined(__NETWARE__) /* HAVE_PTHREAD_ATTR_CREATE && !HAVE_SIGWAIT */
|
||||||
|
@@ -187,7 +187,7 @@ typedef int (*mysql_var_check_func)(MYSQL_THD thd,
|
|||||||
*/
|
*/
|
||||||
typedef void (*mysql_var_update_func)(MYSQL_THD thd,
|
typedef void (*mysql_var_update_func)(MYSQL_THD thd,
|
||||||
struct st_mysql_sys_var *var,
|
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 */
|
/* the following declarations are for internal use only */
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
|
|
||||||
extern const char *unknown_sqlstate;
|
extern const char *unknown_sqlstate;
|
||||||
|
extern const char *cant_connect_sqlstate;
|
||||||
extern const char *not_error_sqlstate;
|
extern const char *not_error_sqlstate;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@@ -1500,7 +1500,7 @@ my_ulonglong STDCALL mysql_insert_id(MYSQL *mysql)
|
|||||||
|
|
||||||
const char *STDCALL mysql_sqlstate(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)
|
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 */
|
int4store(buff+5, 1); /* iteration count */
|
||||||
|
|
||||||
res= test(cli_advanced_command(mysql, COM_STMT_EXECUTE, buff, sizeof(buff),
|
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));
|
(*mysql->methods->read_query_result)(mysql));
|
||||||
stmt->affected_rows= mysql->affected_rows;
|
stmt->affected_rows= mysql->affected_rows;
|
||||||
stmt->server_status= mysql->server_status;
|
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 */
|
int4store(buff + 4, stmt->prefetch_rows); /* number of rows to fetch */
|
||||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_FETCH,
|
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_FETCH,
|
||||||
buff, sizeof(buff), (uchar*) 0, 0,
|
buff, sizeof(buff), (uchar*) 0, 0,
|
||||||
1, NULL))
|
1, stmt))
|
||||||
{
|
{
|
||||||
set_stmt_errmsg(stmt, net);
|
set_stmt_errmsg(stmt, net);
|
||||||
return 1;
|
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,
|
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_SEND_LONG_DATA,
|
||||||
buff, sizeof(buff), (uchar*) data,
|
buff, sizeof(buff), (uchar*) data,
|
||||||
length, 1, NULL))
|
length, 1, stmt))
|
||||||
{
|
{
|
||||||
set_stmt_errmsg(stmt, &mysql->net);
|
set_stmt_errmsg(stmt, &mysql->net);
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
@@ -4748,6 +4748,13 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
|
|||||||
MYSQL_DATA *result= &stmt->result;
|
MYSQL_DATA *result= &stmt->result;
|
||||||
DBUG_ENTER("mysql_stmt_store_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;
|
mysql= mysql->last_used_con;
|
||||||
|
|
||||||
if (!stmt->field_count)
|
if (!stmt->field_count)
|
||||||
@@ -4773,7 +4780,7 @@ int STDCALL mysql_stmt_store_result(MYSQL_STMT *stmt)
|
|||||||
int4store(buff, stmt->stmt_id);
|
int4store(buff, stmt->stmt_id);
|
||||||
int4store(buff + 4, (int)~0); /* number of rows to fetch */
|
int4store(buff + 4, (int)~0); /* number of rows to fetch */
|
||||||
if (cli_advanced_command(mysql, COM_STMT_FETCH, buff, sizeof(buff),
|
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);
|
set_stmt_errmsg(stmt, net);
|
||||||
DBUG_RETURN(1);
|
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 */
|
uchar buff[MYSQL_STMT_HEADER]; /* packet header: 4 bytes for stmt id */
|
||||||
int4store(buff, stmt->stmt_id);
|
int4store(buff, stmt->stmt_id);
|
||||||
if ((*mysql->methods->advanced_command)(mysql, COM_STMT_RESET, buff,
|
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);
|
set_stmt_errmsg(stmt, &mysql->net);
|
||||||
stmt->state= MYSQL_STMT_INIT_DONE;
|
stmt->state= MYSQL_STMT_INIT_DONE;
|
||||||
|
@@ -21,13 +21,14 @@ MYSQLDATAdir = $(localstatedir)
|
|||||||
MYSQLSHAREdir = $(pkgdatadir)
|
MYSQLSHAREdir = $(pkgdatadir)
|
||||||
MYSQLBASEdir= $(prefix)
|
MYSQLBASEdir= $(prefix)
|
||||||
MYSQLLIBdir= $(libdir)
|
MYSQLLIBdir= $(libdir)
|
||||||
|
pkgplugindir = $(pkglibdir)/plugin
|
||||||
|
|
||||||
EXTRA_DIST = libmysqld.def CMakeLists.txt
|
EXTRA_DIST = libmysqld.def CMakeLists.txt
|
||||||
DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
|
DEFS = -DEMBEDDED_LIBRARY -DMYSQL_SERVER \
|
||||||
-DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \
|
-DDEFAULT_MYSQL_HOME="\"$(MYSQLBASEdir)\"" \
|
||||||
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
-DDATADIR="\"$(MYSQLDATAdir)\"" \
|
||||||
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" \
|
-DSHAREDIR="\"$(MYSQLSHAREdir)\"" \
|
||||||
-DLIBDIR="\"$(MYSQLLIBdir)\""
|
-DPLUGINDIR="\"$(pkgplugindir)\""
|
||||||
INCLUDES= -I$(top_builddir)/include -I$(top_srcdir)/include \
|
INCLUDES= -I$(top_builddir)/include -I$(top_srcdir)/include \
|
||||||
-I$(top_builddir)/sql -I$(top_srcdir)/sql \
|
-I$(top_builddir)/sql -I$(top_srcdir)/sql \
|
||||||
-I$(top_srcdir)/sql/examples \
|
-I$(top_srcdir)/sql/examples \
|
||||||
|
@@ -38,6 +38,8 @@ C_MODE_START
|
|||||||
#include <sql_common.h>
|
#include <sql_common.h>
|
||||||
#include "embedded_priv.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);
|
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;
|
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;
|
||||||
|
}
|
||||||
|
@@ -740,6 +740,6 @@ call p_verify_status_increment(0, 0, 0, 0);
|
|||||||
--echo #
|
--echo #
|
||||||
--echo # Cleanup
|
--echo # Cleanup
|
||||||
--echo #
|
--echo #
|
||||||
drop table t1;
|
drop table t1, t2, t3;
|
||||||
drop procedure p_verify_status_increment;
|
drop procedure p_verify_status_increment;
|
||||||
drop function f1;
|
drop function f1;
|
||||||
|
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_character_set_server= @@character_set_server;
|
||||||
SET @safe_collation_server= @@collation_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 character_set_server= @test_character_set;
|
||||||
SET collation_server= @test_collation;
|
SET collation_server= @test_collation;
|
||||||
CREATE DATABASE d1;
|
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));
|
select 1 from t1 order by cast(a as char(1));
|
||||||
drop table t1;
|
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;
|
DROP DATABASE d1;
|
||||||
# Restore settings
|
# Restore settings
|
||||||
USE test;
|
USE test;
|
||||||
SET character_set_server= @safe_character_set_server;
|
SET character_set_server= @safe_character_set_server;
|
||||||
SET collation_server= @safe_collation_server;
|
SET collation_server= @safe_collation_server;
|
||||||
|
SET character_set_client= @safe_character_set_client;
|
||||||
|
SET character_set_results= @safe_character_set_results;
|
||||||
|
@@ -1090,6 +1090,19 @@ SELECT * FROM t1 WHERE id=191 OR id IS NULL ORDER BY d;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
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
|
--echo End of 5.0 tests
|
||||||
|
|
||||||
# Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY
|
# Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY
|
||||||
|
@@ -9,7 +9,10 @@
|
|||||||
# sql threads to stop
|
# sql threads to stop
|
||||||
# 3) If loops too long die.
|
# 3) If loops too long die.
|
||||||
####################################################
|
####################################################
|
||||||
connection slave;
|
if (!$keep_connection)
|
||||||
|
{
|
||||||
|
connection slave;
|
||||||
|
}
|
||||||
let $row_number= 1;
|
let $row_number= 1;
|
||||||
let $run= 1;
|
let $run= 1;
|
||||||
let $counter= 300;
|
let $counter= 300;
|
||||||
|
@@ -279,6 +279,8 @@ sub mtr_report_stats ($) {
|
|||||||
/Failed to open log/ or
|
/Failed to open log/ or
|
||||||
/Failed to open the existing master info file/ or
|
/Failed to open the existing master info file/ or
|
||||||
/Forcing shutdown of [0-9]* plugins/ 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
|
# Due to timing issues, it might be that this warning
|
||||||
# is printed when the server shuts down and the
|
# is printed when the server shuts down and the
|
||||||
@@ -397,7 +399,10 @@ sub mtr_report_stats ($) {
|
|||||||
# rpl_temporary has an error on slave that can be ignored
|
# rpl_temporary has an error on slave that can be ignored
|
||||||
($testname eq 'rpl.rpl_temporary' and
|
($testname eq 'rpl.rpl_temporary' and
|
||||||
(/Slave: Can\'t find record in \'user\' Error_code: 1032/
|
(/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
|
next; # Skip these lines
|
||||||
|
@@ -539,7 +539,7 @@ F2E5F1F2
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 ( a timestamp );
|
create table t1 ( a timestamp );
|
||||||
alter table t1 add unique ( a(1) );
|
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 t1;
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (a int, key(a));
|
create table t1 (a int, key(a));
|
||||||
@@ -953,12 +953,12 @@ t1 CREATE TABLE `t1` (
|
|||||||
KEY `b_2` (`b`(50))
|
KEY `b_2` (`b`(50))
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
CREATE TABLE t2 (a INT, KEY (a(20)));
|
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 d INT;
|
||||||
ALTER TABLE t1 ADD KEY (d(20));
|
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));
|
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;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (s CHAR(8) BINARY);
|
CREATE TABLE t1 (s CHAR(8) BINARY);
|
||||||
INSERT INTO t1 VALUES ('test');
|
INSERT INTO t1 VALUES ('test');
|
||||||
|
@@ -4,14 +4,14 @@ SELECT @@session.sql_big_selects;
|
|||||||
1
|
1
|
||||||
SELECT @@global.max_join_size;
|
SELECT @@global.max_join_size;
|
||||||
@@global.max_join_size
|
@@global.max_join_size
|
||||||
18446744073709551615
|
HA_POS_ERROR
|
||||||
change_user
|
change_user
|
||||||
SELECT @@session.sql_big_selects;
|
SELECT @@session.sql_big_selects;
|
||||||
@@session.sql_big_selects
|
@@session.sql_big_selects
|
||||||
1
|
1
|
||||||
SELECT @@global.max_join_size;
|
SELECT @@global.max_join_size;
|
||||||
@@global.max_join_size
|
@@global.max_join_size
|
||||||
18446744073709551615
|
HA_POS_ERROR
|
||||||
SET @@global.max_join_size = 10000;
|
SET @@global.max_join_size = 10000;
|
||||||
SET @@session.max_join_size = default;
|
SET @@session.max_join_size = default;
|
||||||
change_user
|
change_user
|
||||||
|
@@ -879,6 +879,6 @@ SUCCESS
|
|||||||
#
|
#
|
||||||
# Cleanup
|
# Cleanup
|
||||||
#
|
#
|
||||||
drop table t1;
|
drop table t1, t2, t3;
|
||||||
drop procedure p_verify_status_increment;
|
drop procedure p_verify_status_increment;
|
||||||
drop function f1;
|
drop function f1;
|
||||||
|
@@ -53,3 +53,41 @@ a b
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect DOUBLE value: ''
|
Warning 1292 Truncated incorrect DOUBLE value: ''
|
||||||
drop table if exists t1;
|
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;
|
set @id := 1;
|
||||||
delete from t1 where id like @id;
|
delete from t1 where id like @id;
|
||||||
drop table t1;
|
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 0
|
||||||
Handler_read_rnd_next 7
|
Handler_read_rnd_next 7
|
||||||
drop table t1,t2;
|
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
|
End of 5.0 tests
|
||||||
CREATE TABLE t1 (a int, b int);
|
CREATE TABLE t1 (a int, b int);
|
||||||
insert into t1 values (1,1),(1,2);
|
insert into t1 values (1,1),(1,2);
|
||||||
@@ -1833,4 +1847,45 @@ DROP TABLE t3;
|
|||||||
|
|
||||||
# -- End of Bug#18834.
|
# -- 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
|
End of 5.1 tests
|
||||||
|
@@ -5379,4 +5379,13 @@ SHOW WARNINGS;
|
|||||||
Level Code Message
|
Level Code Message
|
||||||
Error 1178 The storage engine for the table doesn't support nullable columns
|
Error 1178 The storage engine for the table doesn't support nullable columns
|
||||||
Error 1005 Can't create table 'test.t1' (errno: 138)
|
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
|
End of 5.1 tests
|
||||||
|
@@ -3,6 +3,8 @@ SET @test_character_set= 'big5';
|
|||||||
SET @test_collation= 'big5_chinese_ci';
|
SET @test_collation= 'big5_chinese_ci';
|
||||||
SET @safe_character_set_server= @@character_set_server;
|
SET @safe_character_set_server= @@character_set_server;
|
||||||
SET @safe_collation_server= @@collation_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 character_set_server= @test_character_set;
|
||||||
SET collation_server= @test_collation;
|
SET collation_server= @test_collation;
|
||||||
CREATE DATABASE d1;
|
CREATE DATABASE d1;
|
||||||
@@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
drop table t1;
|
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;
|
DROP DATABASE d1;
|
||||||
USE test;
|
USE test;
|
||||||
SET character_set_server= @safe_character_set_server;
|
SET character_set_server= @safe_character_set_server;
|
||||||
SET collation_server= @safe_collation_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 NAMES big5;
|
||||||
SET collation_connection='big5_chinese_ci';
|
SET collation_connection='big5_chinese_ci';
|
||||||
create table t1 select repeat('a',4000) a;
|
create table t1 select repeat('a',4000) a;
|
||||||
|
@@ -3,6 +3,192 @@ DROP TABLE IF EXISTS t1;
|
|||||||
SHOW COLLATION LIKE 'cp1250_czech_cs';
|
SHOW COLLATION LIKE 'cp1250_czech_cs';
|
||||||
Collation Charset Id Default Compiled Sortlen
|
Collation Charset Id Default Compiled Sortlen
|
||||||
cp1250_czech_cs cp1250 34 Yes 2
|
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;
|
CREATE TABLE t1 (a char(16)) character set cp1250 collate cp1250_czech_cs;
|
||||||
INSERT INTO t1 VALUES ('');
|
INSERT INTO t1 VALUES ('');
|
||||||
SELECT a, length(a), a='', a=' ', a=' ' FROM t1;
|
SELECT a, length(a), a='', a=' ', a=' ' FROM t1;
|
||||||
|
@@ -40,9 +40,9 @@ IN ind DECIMAL(10,2))
|
|||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO t4 VALUES (ins1, ins2, ind);
|
INSERT INTO t4 VALUES (ins1, ins2, ind);
|
||||||
END
|
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 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 999 Query 1 1088 use `test`; DROP PROCEDURE bug18293
|
master-bin.000001 991 Query 1 1080 use `test`; DROP PROCEDURE bug18293
|
||||||
master-bin.000001 1088 Query 1 1167 use `test`; DROP TABLE t4
|
master-bin.000001 1080 Query 1 1159 use `test`; DROP TABLE t4
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
SHOW BINLOG EVENTS FROM 364;
|
SHOW BINLOG EVENTS FROM 364;
|
||||||
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
|
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 @test_collation= 'euckr_korean_ci';
|
||||||
SET @safe_character_set_server= @@character_set_server;
|
SET @safe_character_set_server= @@character_set_server;
|
||||||
SET @safe_collation_server= @@collation_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 character_set_server= @test_character_set;
|
||||||
SET collation_server= @test_collation;
|
SET collation_server= @test_collation;
|
||||||
CREATE DATABASE d1;
|
CREATE DATABASE d1;
|
||||||
@@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
drop table t1;
|
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;
|
DROP DATABASE d1;
|
||||||
USE test;
|
USE test;
|
||||||
SET character_set_server= @safe_character_set_server;
|
SET character_set_server= @safe_character_set_server;
|
||||||
SET collation_server= @safe_collation_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 NAMES euckr;
|
||||||
SET collation_connection='euckr_korean_ci';
|
SET collation_connection='euckr_korean_ci';
|
||||||
create table t1 select repeat('a',4000) a;
|
create table t1 select repeat('a',4000) a;
|
||||||
|
@@ -3,6 +3,8 @@ SET @test_character_set= 'gb2312';
|
|||||||
SET @test_collation= 'gb2312_chinese_ci';
|
SET @test_collation= 'gb2312_chinese_ci';
|
||||||
SET @safe_character_set_server= @@character_set_server;
|
SET @safe_character_set_server= @@character_set_server;
|
||||||
SET @safe_collation_server= @@collation_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 character_set_server= @test_character_set;
|
||||||
SET collation_server= @test_collation;
|
SET collation_server= @test_collation;
|
||||||
CREATE DATABASE d1;
|
CREATE DATABASE d1;
|
||||||
@@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
drop table t1;
|
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;
|
DROP DATABASE d1;
|
||||||
USE test;
|
USE test;
|
||||||
SET character_set_server= @safe_character_set_server;
|
SET character_set_server= @safe_character_set_server;
|
||||||
SET collation_server= @safe_collation_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 NAMES gb2312;
|
||||||
SET collation_connection='gb2312_chinese_ci';
|
SET collation_connection='gb2312_chinese_ci';
|
||||||
create table t1 select repeat('a',4000) a;
|
create table t1 select repeat('a',4000) a;
|
||||||
|
@@ -3,6 +3,8 @@ SET @test_character_set= 'gbk';
|
|||||||
SET @test_collation= 'gbk_chinese_ci';
|
SET @test_collation= 'gbk_chinese_ci';
|
||||||
SET @safe_character_set_server= @@character_set_server;
|
SET @safe_character_set_server= @@character_set_server;
|
||||||
SET @safe_collation_server= @@collation_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 character_set_server= @test_character_set;
|
||||||
SET collation_server= @test_collation;
|
SET collation_server= @test_collation;
|
||||||
CREATE DATABASE d1;
|
CREATE DATABASE d1;
|
||||||
@@ -69,10 +71,27 @@ select 1 from t1 order by cast(a as char(1));
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
drop table t1;
|
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;
|
DROP DATABASE d1;
|
||||||
USE test;
|
USE test;
|
||||||
SET character_set_server= @safe_character_set_server;
|
SET character_set_server= @safe_character_set_server;
|
||||||
SET collation_server= @safe_collation_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 NAMES gbk;
|
||||||
SET collation_connection='gbk_chinese_ci';
|
SET collation_connection='gbk_chinese_ci';
|
||||||
create table t1 select repeat('a',4000) a;
|
create table t1 select repeat('a',4000) a;
|
||||||
|
@@ -2538,6 +2538,8 @@ SET @test_character_set= 'utf8';
|
|||||||
SET @test_collation= 'utf8_swedish_ci';
|
SET @test_collation= 'utf8_swedish_ci';
|
||||||
SET @safe_character_set_server= @@character_set_server;
|
SET @safe_character_set_server= @@character_set_server;
|
||||||
SET @safe_collation_server= @@collation_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 character_set_server= @test_character_set;
|
||||||
SET collation_server= @test_collation;
|
SET collation_server= @test_collation;
|
||||||
CREATE DATABASE d1;
|
CREATE DATABASE d1;
|
||||||
@@ -2604,10 +2606,27 @@ select 1 from t1 order by cast(a as char(1));
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
drop table t1;
|
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;
|
DROP DATABASE d1;
|
||||||
USE test;
|
USE test;
|
||||||
SET character_set_server= @safe_character_set_server;
|
SET character_set_server= @safe_character_set_server;
|
||||||
SET collation_server= @safe_collation_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;
|
create table t1 (a varchar(1)) character set utf8 collate utf8_estonian_ci;
|
||||||
insert into t1 values ('A'),('B'),('C'),('a'),('b'),('c');
|
insert into t1 values ('A'),('B'),('C'),('a'),('b'),('c');
|
||||||
select a, a regexp '[a]' from t1 order by binary a;
|
select a, a regexp '[a]' from t1 order by binary a;
|
||||||
|
@@ -1,4 +1,97 @@
|
|||||||
DROP TABLE IF EXISTS t1;
|
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 NAMES latin1;
|
||||||
SET character_set_connection=ucs2;
|
SET character_set_connection=ucs2;
|
||||||
select 'a' = 'a', 'a' = 'a ', 'a ' = 'a';
|
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 ');
|
INSERT INTO t1 VALUES('A ', 'A ');
|
||||||
ERROR 23000: Duplicate entry '' for key 'key1'
|
ERROR 23000: Duplicate entry '' for key 'key1'
|
||||||
DROP TABLE t1;
|
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
|
End of 5.0 tests
|
||||||
|
@@ -91,4 +91,31 @@ create table mysql_test.`#sql-347f_7` (f1 int);
|
|||||||
create table mysql_test.`#sql-347f_8` (f1 int);
|
create table mysql_test.`#sql-347f_8` (f1 int);
|
||||||
drop table mysql_test.`#sql-347f_8`;
|
drop table mysql_test.`#sql-347f_8`;
|
||||||
drop database mysql_test;
|
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
|
End of 5.1 tests
|
||||||
|
@@ -14,6 +14,9 @@ Warnings:
|
|||||||
Note 1051 Unknown table 't1'
|
Note 1051 Unknown table 't1'
|
||||||
CREATE TABLE federated.t1 (
|
CREATE TABLE federated.t1 (
|
||||||
`id` int(20) NOT NULL,
|
`id` int(20) NOT NULL,
|
||||||
|
`group` int NOT NULL default 0,
|
||||||
|
`a\\b` int NOT NULL default 0,
|
||||||
|
`a\\` int NOT NULL default 0,
|
||||||
`name` varchar(32) NOT NULL default ''
|
`name` varchar(32) NOT NULL default ''
|
||||||
)
|
)
|
||||||
DEFAULT CHARSET=latin1;
|
DEFAULT CHARSET=latin1;
|
||||||
@@ -22,6 +25,9 @@ Warnings:
|
|||||||
Note 1051 Unknown table 't1'
|
Note 1051 Unknown table 't1'
|
||||||
CREATE TABLE federated.t1 (
|
CREATE TABLE federated.t1 (
|
||||||
`id` int(20) NOT NULL,
|
`id` int(20) NOT NULL,
|
||||||
|
`group` int NOT NULL default 0,
|
||||||
|
`a\\b` inT NOT NULL default 0,
|
||||||
|
`a\\` int NOT NULL default 0,
|
||||||
`name` varchar(32) NOT NULL default ''
|
`name` varchar(32) NOT NULL default ''
|
||||||
)
|
)
|
||||||
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
||||||
@@ -29,6 +35,9 @@ CONNECTION='mysql://root@127.0.0.1:@/too/many/items/federated/t1';
|
|||||||
ERROR HY000: Can't create federated table. The data source connection string 'mysql://root@127.0.0.1:@/too/many/items/federated/t1' is not in the correct format
|
ERROR HY000: Can't create federated table. The data source connection string 'mysql://root@127.0.0.1:@/too/many/items/federated/t1' is not in the correct format
|
||||||
CREATE TABLE federated.t1 (
|
CREATE TABLE federated.t1 (
|
||||||
`id` int(20) NOT NULL,
|
`id` int(20) NOT NULL,
|
||||||
|
`group` int NOT NULL default 0,
|
||||||
|
`a\\b` iNt NOT NULL default 0,
|
||||||
|
`a\\` int NOT NULL default 0,
|
||||||
`name` varchar(32) NOT NULL default ''
|
`name` varchar(32) NOT NULL default ''
|
||||||
)
|
)
|
||||||
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
||||||
@@ -36,6 +45,9 @@ CONNECTION='mysql://root@127.0.0.1';
|
|||||||
ERROR HY000: Can't create federated table. The data source connection string 'mysql://root@127.0.0.1' is not in the correct format
|
ERROR HY000: Can't create federated table. The data source connection string 'mysql://root@127.0.0.1' is not in the correct format
|
||||||
CREATE TABLE federated.t1 (
|
CREATE TABLE federated.t1 (
|
||||||
`id` int(20) NOT NULL,
|
`id` int(20) NOT NULL,
|
||||||
|
`group` int NOT NULL default 0,
|
||||||
|
`a\\b` iNT NOT NULL default 0,
|
||||||
|
`a\\` int NOT NULL default 0,
|
||||||
`name` varchar(32) NOT NULL default ''
|
`name` varchar(32) NOT NULL default ''
|
||||||
)
|
)
|
||||||
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
||||||
@@ -45,6 +57,9 @@ ERROR HY000: The foreign data source you are trying to reference does not exist.
|
|||||||
DROP TABLE federated.t1;
|
DROP TABLE federated.t1;
|
||||||
CREATE TABLE federated.t1 (
|
CREATE TABLE federated.t1 (
|
||||||
`id` int(20) NOT NULL,
|
`id` int(20) NOT NULL,
|
||||||
|
`group` int NOT NULL default 0,
|
||||||
|
`a\\b` Int NOT NULL default 0,
|
||||||
|
`a\\` int NOT NULL default 0,
|
||||||
`name` varchar(32) NOT NULL default ''
|
`name` varchar(32) NOT NULL default ''
|
||||||
)
|
)
|
||||||
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
||||||
@@ -54,16 +69,25 @@ ERROR HY000: Unable to connect to foreign data source: Access denied for user 'u
|
|||||||
DROP TABLE federated.t1;
|
DROP TABLE federated.t1;
|
||||||
CREATE TABLE federated.t1 (
|
CREATE TABLE federated.t1 (
|
||||||
`id` int(20) NOT NULL,
|
`id` int(20) NOT NULL,
|
||||||
|
`group` int NOT NULL default 0,
|
||||||
|
`a\\b` InT NOT NULL default 0,
|
||||||
|
`a\\` int NOT NULL default 0,
|
||||||
`name` varchar(32) NOT NULL default ''
|
`name` varchar(32) NOT NULL default ''
|
||||||
)
|
)
|
||||||
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
ENGINE="FEDERATED" DEFAULT CHARSET=latin1
|
||||||
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1';
|
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1';
|
||||||
INSERT INTO federated.t1 (id, name) VALUES (1, 'foo');
|
INSERT INTO federated.t1 (id, name) VALUES (1, 'foo');
|
||||||
INSERT INTO federated.t1 (id, name) VALUES (2, 'fee');
|
INSERT INTO federated.t1 (id, name) VALUES (2, 'fee');
|
||||||
|
INSERT INTO federated.t1 (id, `group`) VALUES (3, 42);
|
||||||
|
INSERT INTO federated.t1 (id, `a\\b`) VALUES (4, 23);
|
||||||
|
INSERT INTO federated.t1 (id, `a\\`) VALUES (5, 1);
|
||||||
SELECT * FROM federated.t1;
|
SELECT * FROM federated.t1;
|
||||||
id name
|
id group a\\b a\\ name
|
||||||
1 foo
|
1 0 0 0 foo
|
||||||
2 fee
|
2 0 0 0 fee
|
||||||
|
3 42 0 0
|
||||||
|
4 0 23 0
|
||||||
|
5 0 0 1
|
||||||
DELETE FROM federated.t1;
|
DELETE FROM federated.t1;
|
||||||
DROP TABLE federated.t1;
|
DROP TABLE federated.t1;
|
||||||
DROP TABLE IF EXISTS federated.t2;
|
DROP TABLE IF EXISTS federated.t2;
|
||||||
@@ -2066,6 +2090,34 @@ select 1 from t1 order by a;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
|
CREATE TABLE t1 (a INT, b INT, KEY(a,b));
|
||||||
|
INSERT INTO t1 VALUES(NULL,1),(1,NULL),(NULL,NULL),(1,1),(2,2);
|
||||||
|
CREATE TABLE t1 (a INT, b INT, KEY(a,b)) ENGINE=federated
|
||||||
|
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/test/t1';
|
||||||
|
SELECT * FROM t1 WHERE a IS NULL;
|
||||||
|
a b
|
||||||
|
NULL NULL
|
||||||
|
NULL 1
|
||||||
|
SELECT * FROM t1 WHERE a IS NOT NULL;
|
||||||
|
a b
|
||||||
|
1 NULL
|
||||||
|
1 1
|
||||||
|
2 2
|
||||||
|
SELECT * FROM t1 WHERE a=1 AND b=1;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
SELECT * FROM t1 WHERE a IS NULL AND b=1;
|
||||||
|
a b
|
||||||
|
NULL 1
|
||||||
|
SELECT * FROM t1 WHERE a IS NOT NULL AND b=1;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT) ENGINE=federated CONNECTION='mysql://@:://';
|
||||||
|
DROP TABLE t1;
|
||||||
|
create server 's1' foreign data wrapper 'mysql' options (port 3306);
|
||||||
|
drop server 's1';
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
DROP TABLE IF EXISTS federated.t1;
|
DROP TABLE IF EXISTS federated.t1;
|
||||||
DROP DATABASE IF EXISTS federated;
|
DROP DATABASE IF EXISTS federated;
|
||||||
|
@@ -72,6 +72,7 @@ flush tables with read lock;
|
|||||||
unlock tables;
|
unlock tables;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
set session low_priority_updates=default;
|
set session low_priority_updates=default;
|
||||||
|
select benchmark(200, (select sin(1))) > 1000;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
set @old_general_log= @@general_log;
|
set @old_general_log= @@general_log;
|
||||||
set @old_read_only= @@read_only;
|
set @old_read_only= @@read_only;
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||||
set @@global.concurrent_insert= 0;
|
set @@global.concurrent_insert= 0;
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (kill_id int);
|
create table t1 (kill_id int);
|
||||||
@@ -8,3 +9,4 @@ select ((@id := kill_id) - kill_id) from t1;
|
|||||||
0
|
0
|
||||||
kill connection @id;
|
kill connection @id;
|
||||||
drop table t1;
|
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)
|
GROUP_CONCAT(DISTINCT b, a ORDER BY b)
|
||||||
11,22,32
|
11,22,32
|
||||||
DROP TABLE t1, t2, t3;
|
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
|
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 VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET SQL_MODE=DEFAULT;
|
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
|
End of 5.0 tests
|
||||||
|
@@ -408,3 +408,22 @@ a DIV 2
|
|||||||
0
|
0
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
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');
|
SELECT NAME_CONST('test', 'test');
|
||||||
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);
|
CREATE TABLE t1 (a int);
|
||||||
INSERT INTO t1 VALUES (5), (2);
|
INSERT INTO t1 VALUES (5), (2);
|
||||||
SELECT NAME_CONST(x,2) FROM (SELECT a x FROM t1) t;
|
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)
|
min(a)
|
||||||
-2
|
-2
|
||||||
drop table t1;
|
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
|
End of 5.0 tests
|
||||||
select connection_id() > 0;
|
select connection_id() > 0;
|
||||||
connection_id() > 0
|
connection_id() > 0
|
||||||
|
@@ -1431,6 +1431,11 @@ benchmark(100, NULL)
|
|||||||
select benchmark(NULL, 1+1);
|
select benchmark(NULL, 1+1);
|
||||||
benchmark(NULL, 1+1)
|
benchmark(NULL, 1+1)
|
||||||
NULL
|
NULL
|
||||||
|
select benchmark(-1, 1);
|
||||||
|
benchmark(-1, 1)
|
||||||
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Error 1411 Incorrect count value: '-1' for function benchmark
|
||||||
set @password="password";
|
set @password="password";
|
||||||
set @my_data="clear text to encode";
|
set @my_data="clear text to encode";
|
||||||
select md5(encode(@my_data, "password"));
|
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;
|
select timestampadd(SQL_TSI_FRAC_SECOND, 1, date) from t1;
|
||||||
timestampadd(SQL_TSI_FRAC_SECOND, 1, date)
|
timestampadd(SQL_TSI_FRAC_SECOND, 1, date)
|
||||||
2003-01-02 00:00:00.000001
|
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;
|
select timestampdiff(MONTH, '2001-02-01', '2001-05-01') as a;
|
||||||
a
|
a
|
||||||
3
|
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;
|
select timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:58:58.119999') as a;
|
||||||
a
|
a
|
||||||
7689538999999
|
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,
|
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, '1900-02-01', '1900-03-01') as a2,
|
||||||
timestampdiff(SQL_TSI_DAY, '1996-02-01', '1996-03-01') as a3,
|
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
|
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
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
Warnings:
|
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`
|
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');
|
select time_format('100:00:00', '%H %k %h %I %l');
|
||||||
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;
|
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
|
LAST_DAY('2007-12-06 08:59:19.05') - INTERVAL 1 SECOND
|
||||||
2007-12-30 23:59:59
|
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
|
End of 5.0 tests
|
||||||
select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
|
select date_sub("0050-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||||
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;
|
RENAME TABLE mysql.procs_gone TO mysql.procs_priv;
|
||||||
DROP USER mysqltest_1@localhost;
|
DROP USER mysqltest_1@localhost;
|
||||||
FLUSH PRIVILEGES;
|
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
|
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
|
user host db select_priv
|
||||||
DROP USER CUser2@localhost;
|
DROP USER CUser2@localhost;
|
||||||
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
|
||||||
|
@@ -256,6 +256,7 @@ set @a=repeat(' ',20);
|
|||||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1265 Data truncated for column 'v' at row 1
|
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;
|
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||||
concat('*',v,'*',c,'*',t,'*')
|
concat('*',v,'*',c,'*',t,'*')
|
||||||
*+ *+*+ *
|
*+ *+*+ *
|
||||||
|
@@ -1471,11 +1471,22 @@ f6 bigint(20) NO 10
|
|||||||
f7 datetime NO NULL
|
f7 datetime NO NULL
|
||||||
f8 datetime YES 2006-01-01 00:00:00
|
f8 datetime YES 2006-01-01 00:00:00
|
||||||
drop table t1;
|
drop table t1;
|
||||||
End of 5.0 tests.
|
|
||||||
show fields from information_schema.table_names;
|
show fields from information_schema.table_names;
|
||||||
ERROR 42S02: Unknown table 'table_names' in information_schema
|
ERROR 42S02: Unknown table 'table_names' in information_schema
|
||||||
show keys from information_schema.table_names;
|
show keys from information_schema.table_names;
|
||||||
ERROR 42S02: Unknown table 'table_names' in information_schema
|
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";
|
select * from information_schema.engines WHERE ENGINE="MyISAM";
|
||||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||||
MyISAM DEFAULT Default engine as of MySQL 3.23 with great performance NO NO NO
|
MyISAM DEFAULT Default engine as of MySQL 3.23 with great performance NO NO NO
|
||||||
@@ -1633,4 +1644,6 @@ show open tables where f1()=0;
|
|||||||
show open tables where f1()=0;
|
show open tables where f1()=0;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop function f1;
|
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.
|
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 table t2 (f1 char(4));
|
||||||
create definer=`no_such_user`@`no_such_host` view v7 as select * from t2;
|
create definer=`no_such_user`@`no_such_host` view v7 as select * from t2;
|
||||||
Warnings:
|
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;
|
show fields from testdb_1.v6;
|
||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
f1 char(4) YES NULL
|
f1 char(4) YES NULL
|
||||||
@@ -144,7 +144,7 @@ show fields from testdb_1.v7;
|
|||||||
Field Type Null Key Default Extra
|
Field Type Null Key Default Extra
|
||||||
f1 char(4) YES NULL
|
f1 char(4) YES NULL
|
||||||
Warnings:
|
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 table t3 (f1 char(4), f2 char(4));
|
||||||
create view v3 as select f1,f2 from t3;
|
create view v3 as select f1,f2 from t3;
|
||||||
grant insert(f1), insert(f2) on v3 to testdb_2@localhost;
|
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
|
Field Type Null Key Default Extra
|
||||||
f1 char(4) YES NULL
|
f1 char(4) YES NULL
|
||||||
Warnings:
|
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;
|
show create view testdb_1.v7;
|
||||||
View Create View character_set_client collation_connection
|
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
|
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
|
db-1 t-2
|
||||||
NULL NULL
|
NULL NULL
|
||||||
drop database `db-1`;
|
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));
|
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1265 Data truncated for column 'v' at row 1
|
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;
|
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||||
concat('*',v,'*',c,'*',t,'*')
|
concat('*',v,'*',c,'*',t,'*')
|
||||||
*+ *+*+ *
|
*+ *+*+ *
|
||||||
@@ -3244,3 +3245,22 @@ where table_schema='test' and table_name = 't1';
|
|||||||
table_comment data_free_is_set
|
table_comment data_free_is_set
|
||||||
this is a comment 1
|
this is a comment 1
|
||||||
drop table t1;
|
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 3
|
||||||
NULL member 4
|
NULL member 4
|
||||||
DROP TABLE t1;
|
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
|
End of 5.0 tests
|
||||||
CREATE TABLE `t2` (
|
CREATE TABLE `t2` (
|
||||||
`k` int(11) NOT NULL auto_increment,
|
`k` int(11) NOT NULL auto_increment,
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||||
set @@global.concurrent_insert= 0;
|
set @@global.concurrent_insert= 0;
|
||||||
drop table if exists t1, t2, t3;
|
drop table if exists t1, t2, t3;
|
||||||
create table t1 (kill_id int);
|
create table t1 (kill_id int);
|
||||||
@@ -137,3 +138,4 @@ KILL CONNECTION_ID();
|
|||||||
# of close of the connection socket
|
# of close of the connection socket
|
||||||
SELECT 1;
|
SELECT 1;
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
|
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||||
|
@@ -107,6 +107,17 @@ Database Table In_use Name_locked
|
|||||||
SET GLOBAL GENERAL_LOG=ON;
|
SET GLOBAL GENERAL_LOG=ON;
|
||||||
SET GLOBAL SLOW_QUERY_LOG=ON;
|
SET GLOBAL SLOW_QUERY_LOG=ON;
|
||||||
truncate table mysql.general_log;
|
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;
|
set names utf8;
|
||||||
create table bug16905 (s char(15) character set utf8 default 'пусто');
|
create table bug16905 (s char(15) character set utf8 default 'пусто');
|
||||||
insert into bug16905 values ('новое');
|
insert into bug16905 values ('новое');
|
||||||
|
@@ -24,54 +24,3 @@ UNLOCK TABLES;
|
|||||||
SET SESSION debug="-d,sleep_open_and_lock_after_open";
|
SET SESSION debug="-d,sleep_open_and_lock_after_open";
|
||||||
# connection default
|
# connection default
|
||||||
DROP TABLE t1;
|
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
|
3 2
|
||||||
4 5
|
4 5
|
||||||
DROP TABLE t1, t2, t3;
|
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
|
End of 5.0 tests
|
||||||
create table t1 (c1 int, index(c1));
|
create table t1 (c1 int, index(c1));
|
||||||
create table t2 (c1 int, index(c1)) engine=merge union=(t1);
|
create table t2 (c1 int, index(c1)) engine=merge union=(t1);
|
||||||
@@ -1129,7 +1151,7 @@ SHOW CREATE TABLE t4;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
t4 CREATE TABLE `t4` (
|
t4 CREATE TABLE `t4` (
|
||||||
`c1` int(11) DEFAULT NULL
|
`c1` int(11) DEFAULT NULL
|
||||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 UNION=()
|
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||||
INSERT INTO t4 VALUES (4);
|
INSERT INTO t4 VALUES (4);
|
||||||
ERROR HY000: Table 't4' is read only
|
ERROR HY000: Table 't4' is read only
|
||||||
DROP TABLE t4;
|
DROP TABLE t4;
|
||||||
@@ -1146,7 +1168,7 @@ SHOW CREATE TABLE t4;
|
|||||||
Table Create Table
|
Table Create Table
|
||||||
t4 CREATE TABLE `t4` (
|
t4 CREATE TABLE `t4` (
|
||||||
`c1` int(11) DEFAULT NULL
|
`c1` int(11) DEFAULT NULL
|
||||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 UNION=()
|
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1
|
||||||
INSERT INTO t4 VALUES (4);
|
INSERT INTO t4 VALUES (4);
|
||||||
ERROR HY000: Table 't4' is read only
|
ERROR HY000: Table 't4' is read only
|
||||||
DROP TABLE t4;
|
DROP TABLE t4;
|
||||||
|
@@ -1415,6 +1415,7 @@ set @a=repeat(' ',20);
|
|||||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1265 Data truncated for column 'v' at row 1
|
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;
|
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||||
concat('*',v,'*',c,'*',t,'*')
|
concat('*',v,'*',c,'*',t,'*')
|
||||||
*+ *+*+ *
|
*+ *+*+ *
|
||||||
|
@@ -1086,6 +1086,7 @@ set @a=repeat(' ',20);
|
|||||||
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1265 Data truncated for column 'v' at row 1
|
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;
|
select concat('*',v,'*',c,'*',t,'*') from t1;
|
||||||
concat('*',v,'*',c,'*',t,'*')
|
concat('*',v,'*',c,'*',t,'*')
|
||||||
*+ *+*+ *
|
*+ *+*+ *
|
||||||
@@ -2023,4 +2024,185 @@ CHECK TABLE t1;
|
|||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
DROP TABLE t1;
|
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
|
End of 5.1 tests
|
||||||
|
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 0
|
||||||
Handler_read_rnd_next 5
|
Handler_read_rnd_next 5
|
||||||
DROP TABLE t1,t2,t3,t4;
|
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
|
||||||
|
@@ -1416,3 +1416,15 @@ SELECT @tmp_tables_after = @tmp_tables_before;
|
|||||||
@tmp_tables_after = @tmp_tables_before
|
@tmp_tables_after = @tmp_tables_before
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#31590: Wrong error message on sort buffer being too small.
|
||||||
|
#
|
||||||
|
create table t1(a int, b tinytext);
|
||||||
|
insert into t1 values (1,2),(3,2);
|
||||||
|
set session sort_buffer_size= 30000;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect sort_buffer_size value: '30000'
|
||||||
|
set session max_sort_length= 2180;
|
||||||
|
select * from t1 order by b;
|
||||||
|
ERROR HY001: Out of sort memory; increase server sort buffer size
|
||||||
|
drop table t1;
|
||||||
|
@@ -1,4 +1,7 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
create table t1 (a int) partition by list ((a/3)*10 div 1)
|
||||||
|
(partition p0 values in (0), partition p1 values in (1));
|
||||||
|
ERROR HY000: This partition function is not allowed
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
d DATE NOT NULL
|
d DATE NOT NULL
|
||||||
)
|
)
|
||||||
@@ -44,15 +47,6 @@ partition by key(a)
|
|||||||
partitions 1e+300;
|
partitions 1e+300;
|
||||||
ERROR 42000: Only integers allowed as number here near '1e+300' at line 3
|
ERROR 42000: Only integers allowed as number here near '1e+300' at line 3
|
||||||
create table t1 (a int)
|
create table t1 (a int)
|
||||||
partition by key (a)
|
|
||||||
(partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
|
||||||
ERROR 42000: Incorrect table name 'part-data'
|
|
||||||
create table t1 (a int)
|
|
||||||
partition by key (a)
|
|
||||||
(partition p0,
|
|
||||||
partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
|
||||||
ERROR 42000: Incorrect table name 'part-data'
|
|
||||||
create table t1 (a int)
|
|
||||||
partition by list (a)
|
partition by list (a)
|
||||||
(partition p0 values in (1));
|
(partition p0 values in (1));
|
||||||
create procedure pz()
|
create procedure pz()
|
||||||
@@ -342,7 +336,7 @@ PARTITION BY LIST (a)
|
|||||||
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
(PARTITION x1 VALUES IN (10), PARTITION x2 VALUES IN (20));
|
||||||
analyze table t1;
|
analyze table t1;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 analyze status OK
|
test.t1 analyze note The storage engine for the table doesn't support analyze
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1
|
create table t1
|
||||||
(a int)
|
(a int)
|
||||||
@@ -536,11 +530,9 @@ t1 CREATE TABLE `t1` (
|
|||||||
alter table t1
|
alter table t1
|
||||||
partition by key(a)
|
partition by key(a)
|
||||||
(partition p0, partition p1 engine=heap);
|
(partition p0, partition p1 engine=heap);
|
||||||
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
|
||||||
alter table t1
|
alter table t1
|
||||||
partition by key(a)
|
partition by key(a)
|
||||||
(partition p0 engine=heap, partition p1);
|
(partition p0 engine=heap, partition p1);
|
||||||
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
|
||||||
alter table t1
|
alter table t1
|
||||||
engine=heap
|
engine=heap
|
||||||
partition by key (a)
|
partition by key (a)
|
||||||
@@ -1045,9 +1037,7 @@ SHOW TABLE STATUS;
|
|||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||||
t1 MyISAM 10 Fixed 1 14 14 0 0 7 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
t1 MyISAM 10 Fixed 1 14 14 0 0 7 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
||||||
ALTER TABLE t1 OPTIMIZE PARTITION p0;
|
ALTER TABLE t1 OPTIMIZE PARTITION p0;
|
||||||
SHOW TABLE STATUS;
|
ERROR 42000: The storage engine for the table doesn't support optimize partition
|
||||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
|
||||||
t1 MyISAM 10 Fixed 1 7 7 0 1024 0 NULL NULL NULL NULL latin1_swedish_ci NULL partitioned
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a int, index(a)) PARTITION BY KEY(a);
|
CREATE TABLE t1 (a int, index(a)) PARTITION BY KEY(a);
|
||||||
ALTER TABLE t1 DISABLE KEYS;
|
ALTER TABLE t1 DISABLE KEYS;
|
||||||
@@ -1062,6 +1052,12 @@ test.t1 repair note The storage engine for the table doesn't support repair
|
|||||||
OPTIMIZE TABLE t1;
|
OPTIMIZE TABLE t1;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 optimize note The storage engine for the table doesn't support optimize
|
test.t1 optimize note The storage engine for the table doesn't support optimize
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check note The storage engine for the table doesn't support check
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze note The storage engine for the table doesn't support analyze
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop procedure if exists mysqltest_1;
|
drop procedure if exists mysqltest_1;
|
||||||
create table t1 (a int)
|
create table t1 (a int)
|
||||||
@@ -1207,25 +1203,6 @@ SELECT t2.id FROM t2 WHERE t2.id IN (SELECT id FROM t1 WHERE status = 'Verified'
|
|||||||
id
|
id
|
||||||
22589
|
22589
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
set @org_mode=@@sql_mode;
|
|
||||||
set @@sql_mode='NO_DIR_IN_CREATE';
|
|
||||||
select @@sql_mode;
|
|
||||||
@@sql_mode
|
|
||||||
NO_DIR_IN_CREATE
|
|
||||||
create table t1 (i int )
|
|
||||||
partition by range (i)
|
|
||||||
(
|
|
||||||
partition p01 values less than (1000)
|
|
||||||
data directory='/not/existing'
|
|
||||||
index directory='/not/existing'
|
|
||||||
);
|
|
||||||
show create table t2;
|
|
||||||
Table Create Table
|
|
||||||
t2 CREATE TABLE `t2` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (i) (PARTITION p01 VALUES LESS THAN (1000) ENGINE = MyISAM) */
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
set @@sql_mode=@org_mode;
|
|
||||||
create table t1 (c1 varchar(255),c2 tinyint,primary key(c1))
|
create table t1 (c1 varchar(255),c2 tinyint,primary key(c1))
|
||||||
partition by key (c1) partitions 10 ;
|
partition by key (c1) partitions 10 ;
|
||||||
insert into t1 values ('aaa','1') on duplicate key update c2 = c2 + 1;
|
insert into t1 values ('aaa','1') on duplicate key update c2 = c2 + 1;
|
||||||
@@ -1319,6 +1296,14 @@ ALTER TABLE t1 OPTIMIZE PARTITION p1 EXTENDED;
|
|||||||
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 'EXTENDED' at line 1
|
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 'EXTENDED' at line 1
|
||||||
ALTER TABLE t1 ANALYZE PARTITION p1 EXTENDED;
|
ALTER TABLE t1 ANALYZE PARTITION p1 EXTENDED;
|
||||||
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 'EXTENDED' at line 1
|
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 'EXTENDED' at line 1
|
||||||
|
ALTER TABLE t1 ANALYZE PARTITION p1;
|
||||||
|
ERROR 42000: The storage engine for the table doesn't support analyze partition
|
||||||
|
ALTER TABLE t1 CHECK PARTITION p1;
|
||||||
|
ERROR 42000: The storage engine for the table doesn't support check partition
|
||||||
|
ALTER TABLE t1 REPAIR PARTITION p1;
|
||||||
|
ERROR 42000: The storage engine for the table doesn't support repair partition
|
||||||
|
ALTER TABLE t1 OPTIMIZE PARTITION p1;
|
||||||
|
ERROR 42000: The storage engine for the table doesn't support optimize partition
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (s1 BIGINT UNSIGNED)
|
CREATE TABLE t1 (s1 BIGINT UNSIGNED)
|
||||||
PARTITION BY RANGE (s1) (
|
PARTITION BY RANGE (s1) (
|
||||||
|
@@ -1,4 +1,11 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
# test with not null
|
||||||
|
create table t1 (a bit not null) partition by key (a);
|
||||||
|
insert into t1 values (b'1');
|
||||||
|
select hex(a) from t1 where a = b'1';
|
||||||
|
hex(a)
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
create table t1 (a tinyint not null) partition by key (a);
|
create table t1 (a tinyint not null) partition by key (a);
|
||||||
insert into t1 values (2);
|
insert into t1 values (2);
|
||||||
select * from t1 where a = 2;
|
select * from t1 where a = 2;
|
||||||
@@ -30,22 +37,22 @@ a
|
|||||||
2
|
2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a float not null) partition by key (a);
|
create table t1 (a float not null) partition by key (a);
|
||||||
insert into t1 values (2.1);
|
insert into t1 values (0.5);
|
||||||
select * from t1 where a = 2.1;
|
select * from t1 where a = 0.5;
|
||||||
a
|
a
|
||||||
|
0.5
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a double not null) partition by key (a);
|
create table t1 (a double not null) partition by key (a);
|
||||||
insert into t1 values (2.1);
|
insert into t1 values (0.5);
|
||||||
select * from t1 where a = 2.1;
|
select * from t1 where a = 0.5;
|
||||||
a
|
a
|
||||||
2.1
|
0.5
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a decimal not null) partition by key (a);
|
create table t1 (a decimal(4,2) not null) partition by key (a);
|
||||||
insert into t1 values (2.1);
|
insert into t1 values (2.1);
|
||||||
Warnings:
|
|
||||||
Note 1265 Data truncated for column 'a' at row 1
|
|
||||||
select * from t1 where a = 2.1;
|
select * from t1 where a = 2.1;
|
||||||
a
|
a
|
||||||
|
2.10
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a date not null) partition by key (a);
|
create table t1 (a date not null) partition by key (a);
|
||||||
insert into t1 values ('2001-01-01');
|
insert into t1 values ('2001-01-01');
|
||||||
@@ -125,6 +132,21 @@ select * from t1 where a = 'y';
|
|||||||
a
|
a
|
||||||
y
|
y
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
# test with null allowed
|
||||||
|
create table t1 (a bit) partition by key (a);
|
||||||
|
insert into t1 values (b'1');
|
||||||
|
insert into t1 values (NULL);
|
||||||
|
select hex(a) from t1 where a = b'1';
|
||||||
|
hex(a)
|
||||||
|
1
|
||||||
|
select hex(a) from t1 where a is NULL;
|
||||||
|
hex(a)
|
||||||
|
NULL
|
||||||
|
select hex(a) from t1 order by a;
|
||||||
|
hex(a)
|
||||||
|
NULL
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
create table t1 (a tinyint) partition by key (a);
|
create table t1 (a tinyint) partition by key (a);
|
||||||
insert into t1 values (2);
|
insert into t1 values (2);
|
||||||
select * from t1 where a = 2;
|
select * from t1 where a = 2;
|
||||||
@@ -156,22 +178,22 @@ a
|
|||||||
2
|
2
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a float) partition by key (a);
|
create table t1 (a float) partition by key (a);
|
||||||
insert into t1 values (2.1);
|
insert into t1 values (0.5);
|
||||||
select * from t1 where a = 2.1;
|
select * from t1 where a = 0.5;
|
||||||
a
|
a
|
||||||
|
0.5
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a double) partition by key (a);
|
create table t1 (a double) partition by key (a);
|
||||||
insert into t1 values (2.1);
|
insert into t1 values (0.5);
|
||||||
select * from t1 where a = 2.1;
|
select * from t1 where a = 0.5;
|
||||||
a
|
a
|
||||||
2.1
|
0.5
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a decimal) partition by key (a);
|
create table t1 (a decimal(4,2)) partition by key (a);
|
||||||
insert into t1 values (2.1);
|
insert into t1 values (2.1);
|
||||||
Warnings:
|
|
||||||
Note 1265 Data truncated for column 'a' at row 1
|
|
||||||
select * from t1 where a = 2.1;
|
select * from t1 where a = 2.1;
|
||||||
a
|
a
|
||||||
|
2.10
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a date) partition by key (a);
|
create table t1 (a date) partition by key (a);
|
||||||
insert into t1 values ('2001-01-01');
|
insert into t1 values ('2001-01-01');
|
||||||
@@ -254,25 +276,41 @@ drop table t1;
|
|||||||
create table t1 (a varchar(65531)) partition by key (a);
|
create table t1 (a varchar(65531)) partition by key (a);
|
||||||
insert into t1 values ('bbbb');
|
insert into t1 values ('bbbb');
|
||||||
insert into t1 values ('aaaa');
|
insert into t1 values ('aaaa');
|
||||||
select * from t1 where a = 'aaa%';
|
select * from t1 where a = 'aaaa';
|
||||||
a
|
a
|
||||||
|
aaaa
|
||||||
select * from t1 where a like 'aaa%';
|
select * from t1 where a like 'aaa%';
|
||||||
a
|
a
|
||||||
aaaa
|
aaaa
|
||||||
|
select * from t1 where a = 'bbbb';
|
||||||
|
a
|
||||||
|
bbbb
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a varchar(65532)) partition by key (a);
|
create table t1 (a varchar(65532)) partition by key (a);
|
||||||
insert into t1 values ('bbbb');
|
insert into t1 values ('bbbb');
|
||||||
insert into t1 values ('aaaa');
|
insert into t1 values ('aaaa');
|
||||||
select * from t1 where a = 'aaa%';
|
select * from t1 where a = 'aaaa';
|
||||||
a
|
a
|
||||||
|
aaaa
|
||||||
select * from t1 where a like 'aaa%';
|
select * from t1 where a like 'aaa%';
|
||||||
a
|
a
|
||||||
aaaa
|
aaaa
|
||||||
|
select * from t1 where a = 'bbbb';
|
||||||
|
a
|
||||||
|
bbbb
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a varchar(65533) not null) partition by key (a);
|
create table t1 (a varchar(65533) not null) partition by key (a);
|
||||||
|
insert into t1 values ('bbbb');
|
||||||
insert into t1 values ('aaaa');
|
insert into t1 values ('aaaa');
|
||||||
select * from t1 where a = 'aaa%';
|
select * from t1 where a = 'aaaa';
|
||||||
a
|
a
|
||||||
|
aaaa
|
||||||
|
select * from t1 where a like 'aaa%';
|
||||||
|
a
|
||||||
|
aaaa
|
||||||
|
select * from t1 where a = 'bbbb';
|
||||||
|
a
|
||||||
|
bbbb
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a varchar(65533)) partition by key (a);
|
create table t1 (a varchar(65533)) partition by key (a);
|
||||||
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
|
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
|
||||||
@@ -280,3 +318,17 @@ create table t1 (a varchar(65534) not null) partition by key (a);
|
|||||||
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
|
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
|
||||||
create table t1 (a varchar(65535)) partition by key (a);
|
create table t1 (a varchar(65535)) partition by key (a);
|
||||||
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
|
ERROR 42000: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change some columns to TEXT or BLOBs
|
||||||
|
create table t1 (a bit(27), primary key (a)) engine=myisam
|
||||||
|
partition by hash (a)
|
||||||
|
(partition p0, partition p1, partition p2);
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` bit(27) NOT NULL DEFAULT '\0\0\0\0',
|
||||||
|
PRIMARY KEY (`a`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (a) (PARTITION p0 ENGINE = MyISAM, PARTITION p1 ENGINE = MyISAM, PARTITION p2 ENGINE = MyISAM) */
|
||||||
|
insert into t1 values (1),(4),(7),(10),(13),(16),(19),(22),(25),(28),(31),(34);
|
||||||
|
select hex(a) from t1 where a = 7;
|
||||||
|
hex(a)
|
||||||
|
7
|
||||||
|
drop table t1;
|
||||||
|
@@ -1,4 +1,17 @@
|
|||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
|
CREATE TABLE t1 (a INT)
|
||||||
|
PARTITION BY HASH (a)
|
||||||
|
( PARTITION p0 ENGINE=MyISAM,
|
||||||
|
PARTITION p1);
|
||||||
|
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
||||||
|
CREATE TABLE t1 (a INT)
|
||||||
|
PARTITION BY LIST (a)
|
||||||
|
SUBPARTITION BY HASH (a)
|
||||||
|
( PARTITION p0 VALUES IN (0)
|
||||||
|
( SUBPARTITION s0, SUBPARTITION s1 ENGINE=MyISAM, SUBPARTITION s2),
|
||||||
|
PARTITION p1 VALUES IN (1)
|
||||||
|
( SUBPARTITION s3 ENGINE=MyISAM, SUBPARTITION s4, SUBPARTITION s5 ENGINE=MyISAM));
|
||||||
|
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int
|
a int
|
||||||
)
|
)
|
||||||
|
@@ -79,8 +79,7 @@ engine = innodb
|
|||||||
partition by list (a)
|
partition by list (a)
|
||||||
(partition p0 values in (0));
|
(partition p0 values in (0));
|
||||||
alter table t1 engine = x;
|
alter table t1 engine = x;
|
||||||
Warnings:
|
ERROR HY000: The mix of handlers in the partitions is not allowed in this version of MySQL
|
||||||
Warning 1286 Unknown table engine 'x'
|
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
@@ -151,9 +150,11 @@ DROP TABLE t1;
|
|||||||
create table t1 (int_column int, char_column char(5))
|
create table t1 (int_column int, char_column char(5))
|
||||||
PARTITION BY RANGE (int_column) subpartition by key (char_column) subpartitions 2
|
PARTITION BY RANGE (int_column) subpartition by key (char_column) subpartitions 2
|
||||||
(PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB);
|
(PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB);
|
||||||
alter table t1 PARTITION BY RANGE (int_column)
|
alter table t1
|
||||||
|
ENGINE = MyISAM
|
||||||
|
PARTITION BY RANGE (int_column)
|
||||||
subpartition by key (char_column) subpartitions 2
|
subpartition by key (char_column) subpartitions 2
|
||||||
(PARTITION p1 VALUES LESS THAN (5) ENGINE = myisam);
|
(PARTITION p1 VALUES LESS THAN (5));
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
|
@@ -1,16 +1,66 @@
|
|||||||
create table t1 (a int) engine myisam
|
create table t1 (a int) engine myisam
|
||||||
partition by range (a)
|
partition by range (a)
|
||||||
subpartition by hash (a)
|
subpartition by hash (a)
|
||||||
(partition p0 VALUES LESS THAN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpdata' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpinx'
|
(partition p0 VALUES LESS THAN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp'
|
||||||
(SUBPARTITION subpart00, SUBPARTITION subpart01));
|
(SUBPARTITION subpart00, SUBPARTITION subpart01));
|
||||||
Checking if file exists before alter
|
# Checking if file exists before alter
|
||||||
ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
|
ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
|
||||||
(partition p1 VALUES LESS THAN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpdata' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpinx'
|
(partition p1 VALUES LESS THAN (1) DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp'
|
||||||
(SUBPARTITION subpart10, SUBPARTITION subpart11),
|
(SUBPARTITION subpart10, SUBPARTITION subpart11),
|
||||||
partition p2 VALUES LESS THAN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpdata' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/master-data/tmpinx'
|
partition p2 VALUES LESS THAN (2) DATA DIRECTORY = 'MYSQLTEST_VARDIR/tmp' INDEX DIRECTORY = 'MYSQLTEST_VARDIR/tmp'
|
||||||
(SUBPARTITION subpart20, SUBPARTITION subpart21));
|
(SUBPARTITION subpart20, SUBPARTITION subpart21));
|
||||||
Checking if file exists after alter
|
# Checking if file exists after alter
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set @org_mode=@@sql_mode;
|
||||||
|
set @@sql_mode='NO_DIR_IN_CREATE';
|
||||||
|
select @@sql_mode;
|
||||||
|
@@sql_mode
|
||||||
|
NO_DIR_IN_CREATE
|
||||||
|
create table t1 (i int )
|
||||||
|
partition by range (i)
|
||||||
|
(
|
||||||
|
partition p01 values less than (1000)
|
||||||
|
data directory='/not/existing'
|
||||||
|
index directory='/not/existing'
|
||||||
|
);
|
||||||
|
Warnings:
|
||||||
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
|
Warning 0 INDEX DIRECTORY option ignored
|
||||||
|
show create table t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`i` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (i) (PARTITION p01 VALUES LESS THAN (1000) ENGINE = MyISAM) */
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
set @@sql_mode=@org_mode;
|
||||||
|
CREATE TABLE t1(a INT)
|
||||||
|
PARTITION BY KEY (a)
|
||||||
|
(PARTITION p0 DATA DIRECTORY 'TEST_DIR/master-data/test');
|
||||||
|
ERROR HY000: Incorrect arguments to DATA DIRECTORY
|
||||||
|
CREATE TABLE t1(a INT)
|
||||||
|
PARTITION BY KEY (a)
|
||||||
|
(PARTITION p0 INDEX DIRECTORY 'TEST_DIR/master-data/test');
|
||||||
|
ERROR HY000: Incorrect arguments to INDEX DIRECTORY
|
||||||
|
CREATE TABLE ts (id INT, purchased DATE)
|
||||||
|
PARTITION BY RANGE(YEAR(purchased))
|
||||||
|
SUBPARTITION BY HASH(TO_DAYS(purchased)) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (1990) (
|
||||||
|
SUBPARTITION s0a
|
||||||
|
DATA DIRECTORY = 'TEST_DIR/master-data/test',
|
||||||
|
SUBPARTITION s0b
|
||||||
|
DATA DIRECTORY = 'TEST_DIR/master-data/test'
|
||||||
|
));
|
||||||
|
ERROR HY000: Incorrect arguments to DATA DIRECTORY
|
||||||
|
CREATE TABLE ts (id INT, purchased DATE)
|
||||||
|
PARTITION BY RANGE(YEAR(purchased))
|
||||||
|
SUBPARTITION BY HASH(TO_DAYS(purchased)) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (1990) (
|
||||||
|
SUBPARTITION s0a
|
||||||
|
INDEX DIRECTORY = 'TEST_DIR/master-data/test',
|
||||||
|
SUBPARTITION s0b
|
||||||
|
INDEX DIRECTORY = 'TEST_DIR/master-data/test'
|
||||||
|
));
|
||||||
|
ERROR HY000: Incorrect arguments to INDEX DIRECTORY
|
||||||
DROP TABLE IF EXISTS `example`;
|
DROP TABLE IF EXISTS `example`;
|
||||||
CREATE TABLE `example` (
|
CREATE TABLE `example` (
|
||||||
`ID_EXAMPLE` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
`ID_EXAMPLE` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
@@ -19,9 +69,27 @@ CREATE TABLE `example` (
|
|||||||
PRIMARY KEY (`ID_EXAMPLE`)
|
PRIMARY KEY (`ID_EXAMPLE`)
|
||||||
) ENGINE = MYISAM
|
) ENGINE = MYISAM
|
||||||
PARTITION BY HASH(ID_EXAMPLE)(
|
PARTITION BY HASH(ID_EXAMPLE)(
|
||||||
PARTITION p0 DATA DIRECTORY = '/build/5.1/data/partitiontest/p0Data',
|
PARTITION p0 DATA DIRECTORY = 'MYSQLTEST_VARDIR/p0Data'
|
||||||
PARTITION p1 DATA DIRECTORY = '/build/5.1/data/partitiontest/p1Data',
|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/p0Index',
|
||||||
PARTITION p2 DATA DIRECTORY = '/build/5.1/data/partitiontest/p2Data',
|
PARTITION p1 DATA DIRECTORY = 'MYSQLTEST_VARDIR/p1Data'
|
||||||
PARTITION p3 DATA DIRECTORY = '/build/5.1/data/partitiontest/p3Data'
|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/p1Index',
|
||||||
|
PARTITION p2 DATA DIRECTORY = 'MYSQLTEST_VARDIR/p2Data'
|
||||||
|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/p2Index',
|
||||||
|
PARTITION p3 DATA DIRECTORY = 'MYSQLTEST_VARDIR/p3Data'
|
||||||
|
INDEX DIRECTORY = 'MYSQLTEST_VARDIR/p3Index'
|
||||||
);
|
);
|
||||||
ERROR HY000: Can't create/write to file '/build/5.1/data/partitiontest/p0Data/example#P#p0.MYD' (Errcode: 2)
|
# Checking that MyISAM .MYD and .MYI are in test db and data/idx dir
|
||||||
|
DROP TABLE example;
|
||||||
|
CREATE TABLE `example` (
|
||||||
|
`ID_EXAMPLE` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
|
`DESCRIPTION` varchar(30) NOT NULL,
|
||||||
|
`LEVEL` smallint(5) unsigned DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`ID_EXAMPLE`)
|
||||||
|
) ENGINE = MYISAM
|
||||||
|
PARTITION BY HASH(ID_EXAMPLE)(
|
||||||
|
PARTITION p0 DATA DIRECTORY = '/not/existent/p0Data',
|
||||||
|
PARTITION p1 DATA DIRECTORY = '/not/existent/p1Data',
|
||||||
|
PARTITION p2 DATA DIRECTORY = '/not/existent/p2Data',
|
||||||
|
PARTITION p3 DATA DIRECTORY = '/not/existent/p3Data'
|
||||||
|
);
|
||||||
|
Got one of the listed errors
|
||||||
|
@@ -1,4 +1,37 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by range (a)
|
||||||
|
( partition p0 values less than (maxvalue));
|
||||||
|
alter table t1 add partition (partition p1 values less than (100000));
|
||||||
|
ERROR HY000: MAXVALUE can only be used in last partition definition
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (a) (PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a integer)
|
||||||
|
partition by range (a)
|
||||||
|
( partition p0 values less than (4),
|
||||||
|
partition p1 values less than (100));
|
||||||
|
create trigger tr1 before insert on t1
|
||||||
|
for each row begin
|
||||||
|
set @a = 1;
|
||||||
|
end|
|
||||||
|
alter table t1 drop partition p0;
|
||||||
|
drop table t1;
|
||||||
|
create table t1 (a integer)
|
||||||
|
partition by range (a)
|
||||||
|
( partition p0 values less than (4),
|
||||||
|
partition p1 values less than (100));
|
||||||
|
LOCK TABLES t1 WRITE;
|
||||||
|
alter table t1 drop partition p0;
|
||||||
|
alter table t1 reorganize partition p1 into
|
||||||
|
( partition p0 values less than (4),
|
||||||
|
partition p1 values less than (100));
|
||||||
|
alter table t1 add partition ( partition p2 values less than (200));
|
||||||
|
UNLOCK TABLES;
|
||||||
|
drop table t1;
|
||||||
create table t1 (a int unsigned)
|
create table t1 (a int unsigned)
|
||||||
partition by range (a)
|
partition by range (a)
|
||||||
(partition pnull values less than (0),
|
(partition pnull values less than (0),
|
||||||
|
@@ -13,11 +13,11 @@ USE test;
|
|||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
PARTITION BY LIST (a) (
|
PARTITION BY LIST (a) (
|
||||||
PARTITION p0 VALUES IN (0)
|
PARTITION p0 VALUES IN (0)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/master-data/mysqltest2'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
INDEX DIRECTORY 'MYSQLTEST_VARDIR/master-data/mysqltest2',
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
||||||
PARTITION p1 VALUES IN (1)
|
PARTITION p1 VALUES IN (1)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/master-data/test'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
INDEX DIRECTORY 'MYSQLTEST_VARDIR/master-data/test',
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
||||||
PARTITION p2 VALUES IN (2)
|
PARTITION p2 VALUES IN (2)
|
||||||
);
|
);
|
||||||
# without the patch for bug#32091 this would create
|
# without the patch for bug#32091 this would create
|
||||||
@@ -49,35 +49,73 @@ USE mysqltest2;
|
|||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
PARTITION BY LIST (a) (
|
PARTITION BY LIST (a) (
|
||||||
PARTITION p0 VALUES IN (0)
|
PARTITION p0 VALUES IN (0)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/master-data/mysqltest2'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
INDEX DIRECTORY 'MYSQLTEST_VARDIR/master-data/mysqltest2',
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
||||||
PARTITION p1 VALUES IN (1)
|
PARTITION p1 VALUES IN (1)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/master-data/test'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
INDEX DIRECTORY 'MYSQLTEST_VARDIR/master-data/test'
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
);
|
);
|
||||||
# user mysqltest_1:
|
# user mysqltest_1:
|
||||||
USE test;
|
USE test;
|
||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
PARTITION BY LIST (a) (
|
PARTITION BY LIST (a) (
|
||||||
PARTITION p0 VALUES IN (0)
|
PARTITION p0 VALUES IN (0)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/master-data/mysqltest2'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
INDEX DIRECTORY 'MYSQLTEST_VARDIR/master-data/mysqltest2',
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
||||||
PARTITION p1 VALUES IN (1)
|
PARTITION p1 VALUES IN (1)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/master-data/test'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
INDEX DIRECTORY 'MYSQLTEST_VARDIR/master-data/test'
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
);
|
);
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
CREATE TABLE t1 (a INT)
|
CREATE TABLE t1 (a INT)
|
||||||
PARTITION BY LIST (a) (
|
PARTITION BY LIST (a) (
|
||||||
PARTITION p0 VALUES IN (0)
|
PARTITION p0 VALUES IN (0)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/master-data/test'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
INDEX DIRECTORY 'MYSQLTEST_VARDIR/master-data/test',
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp',
|
||||||
PARTITION p1 VALUES IN (1)
|
PARTITION p1 VALUES IN (1)
|
||||||
DATA DIRECTORY 'MYSQLTEST_VARDIR/master-data/mysqltest2'
|
DATA DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
INDEX DIRECTORY 'MYSQLTEST_VARDIR/master-data/mysqltest2'
|
INDEX DIRECTORY 'MYSQLTEST_VARDIR/tmp'
|
||||||
);
|
);
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
# user root (cleanup):
|
# user root (cleanup):
|
||||||
DROP DATABASE mysqltest2;
|
DROP DATABASE mysqltest2;
|
||||||
USE test;
|
USE test;
|
||||||
DROP USER mysqltest_1@localhost;
|
DROP USER mysqltest_1@localhost;
|
||||||
|
create table t2 (i int )
|
||||||
|
partition by range (i)
|
||||||
|
(
|
||||||
|
partition p01 values less than (1000)
|
||||||
|
data directory="MYSQLTEST_VARDIR/tmp"
|
||||||
|
index directory="MYSQLTEST_VARDIR/tmp"
|
||||||
|
);
|
||||||
|
set @org_mode=@@sql_mode;
|
||||||
|
set @@sql_mode='NO_DIR_IN_CREATE';
|
||||||
|
select @@sql_mode;
|
||||||
|
@@sql_mode
|
||||||
|
NO_DIR_IN_CREATE
|
||||||
|
create table t1 (i int )
|
||||||
|
partition by range (i)
|
||||||
|
(
|
||||||
|
partition p01 values less than (1000)
|
||||||
|
data directory='/not/existing'
|
||||||
|
index directory='/not/existing'
|
||||||
|
);
|
||||||
|
Warnings:
|
||||||
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
|
Warning 0 INDEX DIRECTORY option ignored
|
||||||
|
show create table t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`i` int(11) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (i) (PARTITION p01 VALUES LESS THAN (1000) ENGINE = MyISAM) */
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
set @@sql_mode=@org_mode;
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by key (a)
|
||||||
|
(partition p0 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
||||||
|
ERROR 42000: Incorrect table name 'part-data'
|
||||||
|
create table t1 (a int)
|
||||||
|
partition by key (a)
|
||||||
|
(partition p0,
|
||||||
|
partition p1 DATA DIRECTORY 'part-data' INDEX DIRECTORY 'part-data');
|
||||||
|
ERROR 42000: Incorrect table name 'part-data'
|
||||||
|
@@ -1,14 +1,30 @@
|
|||||||
DROP TABLE IF EXISTS `example`;
|
DROP TABLE IF EXISTS t1;
|
||||||
CREATE TABLE `example` (
|
CREATE TABLE t1 (
|
||||||
`ID_EXAMPLE` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
c1 int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
`DESCRIPTION` varchar(30) NOT NULL,
|
c2 varchar(30) NOT NULL,
|
||||||
`LEVEL` smallint(5) unsigned DEFAULT NULL,
|
c3 smallint(5) unsigned DEFAULT NULL,
|
||||||
PRIMARY KEY (`ID_EXAMPLE`)
|
PRIMARY KEY (c1)
|
||||||
) ENGINE = MYISAM
|
) ENGINE = MYISAM
|
||||||
PARTITION BY HASH(ID_EXAMPLE)(
|
PARTITION BY HASH(c1)(
|
||||||
PARTITION p0 DATA DIRECTORY = 'C:/build/5.1/data/partitiontest/p0Data',
|
PARTITION p0
|
||||||
PARTITION p1 DATA DIRECTORY = 'C:/build/5.1/data/partitiontest/p1Data',
|
DATA DIRECTORY = 'C:/mysqltest/p0Data'
|
||||||
PARTITION p2 DATA DIRECTORY = 'C:/build/5.1/data/partitiontest/p2Data',
|
INDEX DIRECTORY = 'D:/mysqltest/p0Index',
|
||||||
PARTITION p3 DATA DIRECTORY = 'C:/build/5.1/data/partitiontest/p3Data'
|
PARTITION p1,
|
||||||
|
PARTITION p2
|
||||||
|
DATA DIRECTORY = 'E:/mysqltest/p2Data'
|
||||||
|
INDEX DIRECTORY = 'F:/mysqltest/p2Index'
|
||||||
);
|
);
|
||||||
ERROR HY000: Can't create/write to file 'C:\build\5.1\data\partitiontest\p0Data\example#P#p0.MYD' (Errcode: 2)
|
Warnings:
|
||||||
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
|
Warning 0 INDEX DIRECTORY option ignored
|
||||||
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
|
Warning 0 INDEX DIRECTORY option ignored
|
||||||
|
INSERT INTO t1 VALUES (NULL, "first", 1);
|
||||||
|
INSERT INTO t1 VALUES (NULL, "second", 2);
|
||||||
|
INSERT INTO t1 VALUES (NULL, "third", 3);
|
||||||
|
ALTER TABLE t1 ADD PARTITION (PARTITION p3 DATA DIRECTORY = 'G:/mysqltest/p3Data' INDEX DIRECTORY = 'H:/mysqltest/p3Index');
|
||||||
|
Warnings:
|
||||||
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
|
Warning 0 INDEX DIRECTORY option ignored
|
||||||
|
INSERT INTO t1 VALUES (NULL, "last", 4);
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -27,3 +27,30 @@ SET GLOBAL example_enum_var= e2;
|
|||||||
SET GLOBAL example_enum_var= impossible;
|
SET GLOBAL example_enum_var= impossible;
|
||||||
ERROR 42000: Variable 'enum_var' can't be set to the value of 'impossible'
|
ERROR 42000: Variable 'enum_var' can't be set to the value of 'impossible'
|
||||||
UNINSTALL PLUGIN example;
|
UNINSTALL PLUGIN example;
|
||||||
|
INSTALL PLUGIN example SONAME 'ha_example.so';
|
||||||
|
select @@session.sql_mode into @old_sql_mode;
|
||||||
|
set session sql_mode='';
|
||||||
|
set global example_ulong_var=500;
|
||||||
|
select @@global.example_ulong_var;
|
||||||
|
@@global.example_ulong_var
|
||||||
|
500
|
||||||
|
set global example_ulong_var=1111;
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Truncated incorrect ulong_var value: '1111'
|
||||||
|
select @@global.example_ulong_var;
|
||||||
|
@@global.example_ulong_var
|
||||||
|
1000
|
||||||
|
set session sql_mode='STRICT_ALL_TABLES';
|
||||||
|
set global example_ulong_var=500;
|
||||||
|
select @@global.example_ulong_var;
|
||||||
|
@@global.example_ulong_var
|
||||||
|
500
|
||||||
|
set global example_ulong_var=1111;
|
||||||
|
ERROR 42000: Variable 'ulong_var' can't be set to the value of '1111'
|
||||||
|
select @@global.example_ulong_var;
|
||||||
|
@@global.example_ulong_var
|
||||||
|
500
|
||||||
|
set session sql_mode=@old_sql_mode;
|
||||||
|
set session old=bla;
|
||||||
|
ERROR HY000: Variable 'old' is a read only variable
|
||||||
|
UNINSTALL PLUGIN example;
|
||||||
|
3
mysql-test/r/plugin_load.result
Normal file
3
mysql-test/r/plugin_load.result
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
SELECT @@global.example_enum_var = 'e2';
|
||||||
|
@@global.example_enum_var = 'e2'
|
||||||
|
1
|
@@ -1650,10 +1650,46 @@ a (select count(*) from t2)
|
|||||||
3 0
|
3 0
|
||||||
4 0
|
4 0
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# Bug#25132 disabled query cache: Qcache_free_blocks = 1
|
||||||
|
#
|
||||||
|
set global query_cache_size=100000;
|
||||||
|
set global query_cache_size=0;
|
||||||
|
set global query_cache_type=0;
|
||||||
|
show status like 'Qcache_free_blocks';
|
||||||
|
Variable_name Value
|
||||||
|
Qcache_free_blocks 0
|
||||||
|
Restore default values.
|
||||||
set GLOBAL query_cache_type=default;
|
set GLOBAL query_cache_type=default;
|
||||||
set GLOBAL query_cache_limit=default;
|
set GLOBAL query_cache_limit=default;
|
||||||
set GLOBAL query_cache_min_res_unit=default;
|
set GLOBAL query_cache_min_res_unit=default;
|
||||||
set GLOBAL query_cache_size=default;
|
set GLOBAL query_cache_size=default;
|
||||||
|
FLUSH STATUS;
|
||||||
|
SET GLOBAL query_cache_size=10*1024*1024;
|
||||||
|
SET @save_concurrent_insert= @@concurrent_insert;
|
||||||
|
SET GLOBAL concurrent_insert= 0;
|
||||||
|
CREATE TABLE t1 (c1 INT NOT NULL) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 (c1) VALUES (1), (2);
|
||||||
|
SHOW GLOBAL VARIABLES LIKE 'concurrent_insert';
|
||||||
|
Variable_name Value
|
||||||
|
concurrent_insert 0
|
||||||
|
SHOW STATUS LIKE 'Qcache_hits';
|
||||||
|
Variable_name Value
|
||||||
|
Qcache_hits 0
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SHOW STATUS LIKE 'Qcache_hits';
|
||||||
|
Variable_name Value
|
||||||
|
Qcache_hits 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL concurrent_insert= @save_concurrent_insert;
|
||||||
|
SET GLOBAL query_cache_size= default;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
CREATE TABLE t1 (a ENUM('rainbow'));
|
CREATE TABLE t1 (a ENUM('rainbow'));
|
||||||
INSERT INTO t1 VALUES (),(),(),(),();
|
INSERT INTO t1 VALUES (),(),(),(),();
|
||||||
|
@@ -1153,6 +1153,19 @@ explain select * from t1 where dateval >= '2007-01-01 00:00:00' and dateval <= '
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range dateval dateval 4 NULL 2 Using where
|
1 SIMPLE t1 range dateval dateval 4 NULL 2 Using where
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a varchar(32), index (a)
|
||||||
|
) DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
|
||||||
|
SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||||
|
a
|
||||||
|
B
|
||||||
|
B
|
||||||
|
EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B';
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 range a a 35 NULL 3 Using where; Using index
|
||||||
|
DROP TABLE t1;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
create table t2 (a int, b int, filler char(100));
|
create table t2 (a int, b int, filler char(100));
|
||||||
|
@@ -434,3 +434,12 @@ SELECT @x;
|
|||||||
@x
|
@x
|
||||||
99
|
99
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT, b INT);
|
||||||
|
INSERT INTO t1 VALUES (1,1);
|
||||||
|
SELECT ROW(a, 1) IN (SELECT SUM(b), 1) FROM t1 GROUP BY a;
|
||||||
|
ROW(a, 1) IN (SELECT SUM(b), 1)
|
||||||
|
1
|
||||||
|
SELECT ROW(a, 1) IN (SELECT SUM(b), 3) FROM t1 GROUP BY a;
|
||||||
|
ROW(a, 1) IN (SELECT SUM(b), 3)
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
@@ -4313,6 +4313,33 @@ SELECT * FROM t1 WHERE c1 > NULL + 1;
|
|||||||
c1
|
c1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(10) NOT NULL PRIMARY KEY);
|
||||||
|
INSERT INTO t1 (a) VALUES ('foo0'), ('bar0'), ('baz0');
|
||||||
|
SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar');
|
||||||
|
a
|
||||||
|
foo0
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INT, b INT);
|
||||||
|
CREATE TABLE t2 (a INT, c INT, KEY(a));
|
||||||
|
INSERT INTO t1 VALUES (1, 1), (2, 2);
|
||||||
|
INSERT INTO t2 VALUES (1, 1), (1, 2), (1, 3), (1, 4), (1, 5),
|
||||||
|
(2, 1), (2, 2), (2, 3), (2, 4), (2, 5),
|
||||||
|
(3, 1), (3, 2), (3, 3), (3, 4), (3, 5),
|
||||||
|
(4, 1), (4, 2), (4, 3), (4, 4), (4, 5);
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT DISTINCT b FROM t1 LEFT JOIN t2 USING(a) WHERE c <= 3;
|
||||||
|
b
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SHOW STATUS LIKE 'Handler_read%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 0
|
||||||
|
Handler_read_key 2
|
||||||
|
Handler_read_next 0
|
||||||
|
Handler_read_prev 0
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 6
|
||||||
|
DROP TABLE t1, t2;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
create table t1(a INT, KEY (a));
|
create table t1(a INT, KEY (a));
|
||||||
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
||||||
|
@@ -842,6 +842,34 @@ Pos Instruction
|
|||||||
21 jump 3
|
21 jump 3
|
||||||
drop procedure proc_33618_h;
|
drop procedure proc_33618_h;
|
||||||
drop procedure proc_33618_c;
|
drop procedure proc_33618_c;
|
||||||
|
drop procedure if exists p_20906_a;
|
||||||
|
drop procedure if exists p_20906_b;
|
||||||
|
create procedure p_20906_a() SET @a=@a+1, @b=@b+1;
|
||||||
|
show procedure code p_20906_a;
|
||||||
|
Pos Instruction
|
||||||
|
0 stmt 31 "SET @a=@a+1"
|
||||||
|
1 stmt 31 "SET @b=@b+1"
|
||||||
|
set @a=1;
|
||||||
|
set @b=1;
|
||||||
|
call p_20906_a();
|
||||||
|
select @a, @b;
|
||||||
|
@a @b
|
||||||
|
2 2
|
||||||
|
create procedure p_20906_b() SET @a=@a+1, @b=@b+1, @c=@c+1;
|
||||||
|
show procedure code p_20906_b;
|
||||||
|
Pos Instruction
|
||||||
|
0 stmt 31 "SET @a=@a+1"
|
||||||
|
1 stmt 31 "SET @b=@b+1"
|
||||||
|
2 stmt 31 "SET @c=@c+1"
|
||||||
|
set @a=1;
|
||||||
|
set @b=1;
|
||||||
|
set @c=1;
|
||||||
|
call p_20906_b();
|
||||||
|
select @a, @b, @c;
|
||||||
|
@a @b @c
|
||||||
|
2 2 2
|
||||||
|
drop procedure p_20906_a;
|
||||||
|
drop procedure p_20906_b;
|
||||||
End of 5.0 tests.
|
End of 5.0 tests.
|
||||||
CREATE PROCEDURE p1()
|
CREATE PROCEDURE p1()
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@@ -1638,3 +1638,15 @@ Warning 1287 The syntax 'TYPE=storage_engine' is deprecated and will be removed
|
|||||||
call p1();
|
call p1();
|
||||||
call p1();
|
call p1();
|
||||||
drop procedure p1;
|
drop procedure p1;
|
||||||
|
drop procedure if exists proc_8759;
|
||||||
|
create procedure proc_8759()
|
||||||
|
begin
|
||||||
|
declare should_be_illegal condition for sqlstate '00000';
|
||||||
|
declare continue handler for should_be_illegal set @x=0;
|
||||||
|
end$$
|
||||||
|
ERROR 42000: Bad SQLSTATE: '00000'
|
||||||
|
create procedure proc_8759()
|
||||||
|
begin
|
||||||
|
declare continue handler for sqlstate '00000' set @x=0;
|
||||||
|
end$$
|
||||||
|
ERROR 42000: Bad SQLSTATE: '00000'
|
||||||
|
@@ -357,10 +357,10 @@ ERROR 42000: Access denied; you need the SUPER privilege for this operation
|
|||||||
use mysqltest;
|
use mysqltest;
|
||||||
CREATE DEFINER='a @ b @ c'@localhost PROCEDURE wl2897_p3() SELECT 3;
|
CREATE DEFINER='a @ b @ c'@localhost PROCEDURE wl2897_p3() SELECT 3;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1449 There is no 'a @ b @ c'@'localhost' registered
|
Note 1449 The user specified as a definer ('a @ b @ c'@'localhost') does not exist
|
||||||
CREATE DEFINER='a @ b @ c'@localhost FUNCTION wl2897_f3() RETURNS INT RETURN 3;
|
CREATE DEFINER='a @ b @ c'@localhost FUNCTION wl2897_f3() RETURNS INT RETURN 3;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1449 There is no 'a @ b @ c'@'localhost' registered
|
Note 1449 The user specified as a definer ('a @ b @ c'@'localhost') does not exist
|
||||||
|
|
||||||
---> connection: con1root
|
---> connection: con1root
|
||||||
use mysqltest;
|
use mysqltest;
|
||||||
@@ -420,9 +420,9 @@ DROP USER mysqltest_1@localhost;
|
|||||||
---> connection: mysqltest_2_con
|
---> connection: mysqltest_2_con
|
||||||
use mysqltest;
|
use mysqltest;
|
||||||
CALL bug13198_p1();
|
CALL bug13198_p1();
|
||||||
ERROR HY000: There is no 'mysqltest_1'@'localhost' registered
|
ERROR HY000: The user specified as a definer ('mysqltest_1'@'localhost') does not exist
|
||||||
SELECT bug13198_f1();
|
SELECT bug13198_f1();
|
||||||
ERROR HY000: There is no 'mysqltest_1'@'localhost' registered
|
ERROR HY000: The user specified as a definer ('mysqltest_1'@'localhost') does not exist
|
||||||
|
|
||||||
---> connection: root
|
---> connection: root
|
||||||
DROP USER mysqltest_2@localhost;
|
DROP USER mysqltest_2@localhost;
|
||||||
|
@@ -6862,6 +6862,23 @@ end//
|
|||||||
call proc_33618(20);
|
call proc_33618(20);
|
||||||
drop table t_33618;
|
drop table t_33618;
|
||||||
drop procedure proc_33618;
|
drop procedure proc_33618;
|
||||||
|
#
|
||||||
|
# Bug#30787: Stored function ignores user defined alias.
|
||||||
|
#
|
||||||
|
use test;
|
||||||
|
drop function if exists func30787;
|
||||||
|
create table t1(f1 int);
|
||||||
|
insert into t1 values(1),(2);
|
||||||
|
create function func30787(p1 int) returns int
|
||||||
|
begin
|
||||||
|
return p1;
|
||||||
|
end |
|
||||||
|
select (select func30787(f1)) as ttt from t1;
|
||||||
|
ttt
|
||||||
|
1
|
||||||
|
2
|
||||||
|
drop function func30787;
|
||||||
|
drop table t1;
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
# -- End of 5.0 tests
|
# -- End of 5.0 tests
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
set @old_concurrent_insert= @@global.concurrent_insert;
|
||||||
|
set @@global.concurrent_insert= 0;
|
||||||
drop table if exists t1,t3;
|
drop table if exists t1,t3;
|
||||||
drop procedure if exists bug4902|
|
drop procedure if exists bug4902|
|
||||||
create procedure bug4902()
|
create procedure bug4902()
|
||||||
@@ -17,11 +19,11 @@ begin
|
|||||||
show processlist;
|
show processlist;
|
||||||
end|
|
end|
|
||||||
call bug4902_2()|
|
call bug4902_2()|
|
||||||
Id User Host db Command Time State Info
|
show warnings|
|
||||||
# root localhost test Query # NULL show processlist
|
Level Code Message
|
||||||
call bug4902_2()|
|
call bug4902_2()|
|
||||||
Id User Host db Command Time State Info
|
show warnings|
|
||||||
# root localhost test Query # NULL show processlist
|
Level Code Message
|
||||||
drop procedure bug4902_2|
|
drop procedure bug4902_2|
|
||||||
drop table if exists t1|
|
drop table if exists t1|
|
||||||
create table t1 (
|
create table t1 (
|
||||||
@@ -208,3 +210,27 @@ GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
|
|||||||
drop user mysqltest_1@localhost;
|
drop user mysqltest_1@localhost;
|
||||||
drop procedure 15298_1;
|
drop procedure 15298_1;
|
||||||
drop procedure 15298_2;
|
drop procedure 15298_2;
|
||||||
|
drop table if exists t1;
|
||||||
|
drop procedure if exists p1;
|
||||||
|
create table t1 (value varchar(15));
|
||||||
|
create procedure p1() update t1 set value='updated' where value='old';
|
||||||
|
call p1();
|
||||||
|
insert into t1 (value) values ("old");
|
||||||
|
select get_lock('b26162',120);
|
||||||
|
get_lock('b26162',120)
|
||||||
|
1
|
||||||
|
select 'rl_acquirer', value from t1 where get_lock('b26162',120);;
|
||||||
|
set session low_priority_updates=on;
|
||||||
|
call p1();;
|
||||||
|
select 'rl_contender', value from t1;
|
||||||
|
rl_contender value
|
||||||
|
rl_contender old
|
||||||
|
select release_lock('b26162');
|
||||||
|
release_lock('b26162')
|
||||||
|
1
|
||||||
|
rl_acquirer value
|
||||||
|
rl_acquirer old
|
||||||
|
drop procedure p1;
|
||||||
|
drop table t1;
|
||||||
|
set session low_priority_updates=default;
|
||||||
|
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||||
|
@@ -496,3 +496,13 @@ xb x
|
|||||||
xcx
|
xcx
|
||||||
drop table t1;
|
drop table t1;
|
||||||
SET @@SQL_MODE=@OLD_SQL_MODE;
|
SET @@SQL_MODE=@OLD_SQL_MODE;
|
||||||
|
create user mysqltest_32753@localhost;
|
||||||
|
set @OLD_SQL_MODE=@@SESSION.SQL_MODE;
|
||||||
|
set session sql_mode='PAD_CHAR_TO_FULL_LENGTH';
|
||||||
|
flush privileges;
|
||||||
|
select current_user();
|
||||||
|
current_user()
|
||||||
|
mysqltest_32753@localhost
|
||||||
|
set session sql_mode=@OLD_SQL_MODE;
|
||||||
|
flush privileges;
|
||||||
|
drop user mysqltest_32753@localhost;
|
||||||
|
@@ -895,7 +895,6 @@ ERROR 22003: Out of range value for column 'col1' at row 1
|
|||||||
INSERT INTO t1 (col2) VALUES ('-1.2E-3');
|
INSERT INTO t1 (col2) VALUES ('-1.2E-3');
|
||||||
ERROR 22003: Out of range value for column 'col2' at row 1
|
ERROR 22003: Out of range value for column 'col2' at row 1
|
||||||
UPDATE t1 SET col1 =col1 * 5000 WHERE col1 > 0;
|
UPDATE t1 SET col1 =col1 * 5000 WHERE col1 > 0;
|
||||||
ERROR 22003: Out of range value for column 'col1' at row 3
|
|
||||||
UPDATE t1 SET col2 =col2 / 0 WHERE col2 > 0;
|
UPDATE t1 SET col2 =col2 / 0 WHERE col2 > 0;
|
||||||
ERROR 22012: Division by 0
|
ERROR 22012: Division by 0
|
||||||
UPDATE t1 SET col2= MOD(col2,0) WHERE col2 > 0;
|
UPDATE t1 SET col2= MOD(col2,0) WHERE col2 > 0;
|
||||||
@@ -923,10 +922,10 @@ SELECT * FROM t1;
|
|||||||
col1 col2
|
col1 col2
|
||||||
-2.2e-307 0
|
-2.2e-307 0
|
||||||
1e-303 0
|
1e-303 0
|
||||||
1.7e+308 1.7e+308
|
NULL 1.7e+308
|
||||||
-2.2e-307 0
|
-2.2e-307 0
|
||||||
-2e-307 0
|
-2e-307 0
|
||||||
1.7e+308 1.7e+308
|
NULL 1.7e+308
|
||||||
0 NULL
|
0 NULL
|
||||||
2 NULL
|
2 NULL
|
||||||
NULL NULL
|
NULL NULL
|
||||||
@@ -934,6 +933,8 @@ NULL NULL
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6));
|
CREATE TABLE t1 (col1 CHAR(5), col2 VARCHAR(6));
|
||||||
INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello ');
|
INSERT INTO t1 VALUES ('hello', 'hello'),('he', 'he'),('hello ', 'hello ');
|
||||||
|
Warnings:
|
||||||
|
Note 1265 Data truncated for column 'col1' at row 3
|
||||||
INSERT INTO t1 (col1) VALUES ('hellobob');
|
INSERT INTO t1 (col1) VALUES ('hellobob');
|
||||||
ERROR 22001: Data too long for column 'col1' at row 1
|
ERROR 22001: Data too long for column 'col1' at row 1
|
||||||
INSERT INTO t1 (col2) VALUES ('hellobob');
|
INSERT INTO t1 (col2) VALUES ('hellobob');
|
||||||
|
@@ -758,5 +758,16 @@ EXPLAIN SELECT a FROM t1 WHERE a NOT IN (SELECT a FROM t2);
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||||
2 DEPENDENT SUBQUERY t2 unique_subquery PRIMARY PRIMARY 4 func 1 Using index; Using where
|
2 DEPENDENT SUBQUERY t2 unique_subquery PRIMARY PRIMARY 4 func 1 Using index; Using where
|
||||||
DROP TABLE t1;
|
DROP TABLE t1, t2;
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES(1);
|
||||||
|
CREATE TABLE t2 (placeholder CHAR(11));
|
||||||
|
INSERT INTO t2 VALUES("placeholder");
|
||||||
|
SELECT ROW(1, 2) IN (SELECT t1.a, 2) FROM t1 GROUP BY t1.a;
|
||||||
|
ROW(1, 2) IN (SELECT t1.a, 2)
|
||||||
|
1
|
||||||
|
SELECT ROW(1, 2) IN (SELECT t1.a, 2 FROM t2) FROM t1 GROUP BY t1.a;
|
||||||
|
ROW(1, 2) IN (SELECT t1.a, 2 FROM t2)
|
||||||
|
1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@@ -4,101 +4,36 @@ purge master logs before adddate(current_timestamp(), interval -4 day);
|
|||||||
create table t1(a int,b int,key(a),key(b));
|
create table t1(a int,b int,key(a),key(b));
|
||||||
insert into t1(a,b) values (1,2),(2,1),(2,3),(3,4),(5,4),(5,5),
|
insert into t1(a,b) values (1,2),(2,1),(2,3),(3,4),(5,4),(5,5),
|
||||||
(6,7),(7,4),(5,3);
|
(6,7),(7,4),(5,3);
|
||||||
select sum(a),a from t1 where a> (
|
5
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
4
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
3
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
2
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
1
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
26
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1
|
25
|
||||||
)group by b limit 1)group by b limit 1
|
24
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
23
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
22
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
21
|
||||||
group by a;
|
20
|
||||||
sum(a) a
|
19
|
||||||
select sum(a),a from t1 where a> (
|
18
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
17
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
16
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
15
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
14
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
13
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
12
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
11
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
10
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
9
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
8
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
7
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
6
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
5
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
4
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
3
|
||||||
select sum(a) from t1
|
2
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
1
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
|
||||||
group by a;
|
|
||||||
ERROR HY000: Thread stack overrun detected
|
|
||||||
explain select sum(a),a from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1
|
|
||||||
)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
|
||||||
group by a;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY t1 index a a 5 NULL 9 Using where; Using index
|
|
||||||
2 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
3 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
4 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
5 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
6 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
7 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
8 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
9 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
10 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
11 SUBQUERY t1 index a b 5 NULL 9 Using where; Using filesort
|
|
||||||
12 SUBQUERY t1 range a a 5 NULL 1 Using where; Using temporary; Using filesort
|
|
||||||
13 SUBQUERY t1 index NULL a 5 NULL 9 Using index
|
|
||||||
explain select sum(a),a from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1 where a> ( select sum(a) from t1 where a> (
|
|
||||||
select sum(a) from t1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1
|
|
||||||
)group by b limit 1)group by b limit 1)group by b limit 1)
|
|
||||||
group by a;
|
|
||||||
ERROR HY000: Thread stack overrun detected
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
End of 5.1 tests
|
||||||
|
@@ -22,6 +22,7 @@ insert into t1 (b) select b from t2;
|
|||||||
insert into t2 (b) select b from t1;
|
insert into t2 (b) select b from t1;
|
||||||
insert into t1 (b) select b from t2;
|
insert into t1 (b) select b from t2;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
|
create table t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="MYSQLTEST_VARDIR/tmp" index directory="MYSQLTEST_VARDIR/run";
|
||||||
insert into t9 select * from t1;
|
insert into t9 select * from t1;
|
||||||
check table t9;
|
check table t9;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
@@ -54,10 +55,16 @@ t9 CREATE TABLE `t9` (
|
|||||||
`d` int(11) NOT NULL,
|
`d` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`a`)
|
PRIMARY KEY (`a`)
|
||||||
) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/run/'
|
) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/run/'
|
||||||
|
create table t1 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="tmp";
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
|
create database mysqltest;
|
||||||
|
create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="/this-dir-does-not-exist";
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
|
create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="not-hard-path";
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
|
create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam index directory="MYSQLTEST_VARDIR/run";
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
|
create table mysqltest.t9 (a int not null auto_increment, b char(16) not null, primary key (a)) engine=myisam data directory="MYSQLTEST_VARDIR/tmp";
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
alter table t9 rename mysqltest.t9;
|
alter table t9 rename mysqltest.t9;
|
||||||
select count(*) from mysqltest.t9;
|
select count(*) from mysqltest.t9;
|
||||||
@@ -74,6 +81,7 @@ t9 CREATE TABLE `t9` (
|
|||||||
) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/run/'
|
) ENGINE=MyISAM AUTO_INCREMENT=16725 DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/tmp/' INDEX DIRECTORY='MYSQLTEST_VARDIR/run/'
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
create table t1 (a int not null) engine=myisam;
|
create table t1 (a int not null) engine=myisam;
|
||||||
|
alter table t1 data directory="MYSQLTEST_VARDIR/tmp";
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 0 DATA DIRECTORY option ignored
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
show create table t1;
|
show create table t1;
|
||||||
@@ -82,6 +90,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`a` int(11) NOT NULL
|
`a` int(11) NOT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
alter table t1 add b int;
|
alter table t1 add b int;
|
||||||
|
alter table t1 data directory="MYSQLTEST_VARDIR/log";
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 0 DATA DIRECTORY option ignored
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
show create table t1;
|
show create table t1;
|
||||||
@@ -90,6 +99,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`a` int(11) NOT NULL,
|
`a` int(11) NOT NULL,
|
||||||
`b` int(11) DEFAULT NULL
|
`b` int(11) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
alter table t1 index directory="MYSQLTEST_VARDIR/log";
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 0 INDEX DIRECTORY option ignored
|
Warning 0 INDEX DIRECTORY option ignored
|
||||||
show create table t1;
|
show create table t1;
|
||||||
@@ -100,28 +110,22 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1(a INT)
|
CREATE TABLE t1(a INT)
|
||||||
DATA DIRECTORY='TEST_DIR/master-data/mysql'
|
DATA DIRECTORY='TEST_DIR/tmp'
|
||||||
INDEX DIRECTORY='TEST_DIR/master-data/mysql';
|
INDEX DIRECTORY='TEST_DIR/tmp';
|
||||||
RENAME TABLE t1 TO user;
|
Got one of the listed errors
|
||||||
ERROR HY000: Can't create/write to file 'TEST_DIR/master-data/mysql/user.MYI' (Errcode: 17)
|
CREATE TABLE t2(a INT)
|
||||||
DROP TABLE t1;
|
DATA DIRECTORY='TEST_DIR/tmp'
|
||||||
show create table t1;
|
INDEX DIRECTORY='TEST_DIR/tmp';
|
||||||
Table Create Table
|
RENAME TABLE t2 TO t1;
|
||||||
t1 CREATE TABLE `t1` (
|
ERROR HY000: Can't create/write to file 'TEST_DIR/tmp/t1.MYI' (Errcode: 17)
|
||||||
`i` int(11) DEFAULT NULL
|
DROP TABLE t2;
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
create temporary table t1 (a int) engine=myisam data directory="MYSQLTEST_VARDIR/log" select 9 a;
|
||||||
drop table t1;
|
|
||||||
show create table t1;
|
|
||||||
Table Create Table
|
|
||||||
t1 CREATE TABLE `t1` (
|
|
||||||
`i` int(11) DEFAULT NULL
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
||||||
drop table t1;
|
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TEMPORARY TABLE `t1` (
|
t1 CREATE TEMPORARY TABLE `t1` (
|
||||||
`a` int(11) DEFAULT NULL
|
`a` int(11) DEFAULT NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/log/'
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1 DATA DIRECTORY='MYSQLTEST_VARDIR/log/'
|
||||||
|
create temporary table t1 (a int) engine=myisam data directory="MYSQLTEST_VARDIR/log" select 99 a;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TEMPORARY TABLE `t1` (
|
t1 CREATE TEMPORARY TABLE `t1` (
|
||||||
@@ -139,26 +143,33 @@ a
|
|||||||
42
|
42
|
||||||
drop table t1;
|
drop table t1;
|
||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
CREATE DATABASE db1;
|
|
||||||
CREATE DATABASE db2;
|
|
||||||
USE db2;
|
|
||||||
INSERT INTO db2.t1 VALUES (1);
|
|
||||||
SELECT * FROM db2.t1;
|
|
||||||
b
|
|
||||||
1
|
|
||||||
RESET QUERY CACHE;
|
|
||||||
USE db1;
|
|
||||||
SET SESSION keep_files_on_create = TRUE;
|
SET SESSION keep_files_on_create = TRUE;
|
||||||
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
||||||
Got one of the listed errors
|
Got one of the listed errors
|
||||||
CREATE TABLE t3 (a INT) Engine=MyISAM;
|
SET SESSION keep_files_on_create = FALSE;
|
||||||
INSERT INTO t3 VALUES (1),(2),(3);
|
CREATE TABLE t1 (a INT) ENGINE MYISAM;
|
||||||
TRUNCATE TABLE t3;
|
DROP TABLE t1;
|
||||||
SELECT * from t3;
|
|
||||||
a
|
|
||||||
SET SESSION keep_files_on_create = DEFAULT;
|
|
||||||
DROP TABLE db2.t1, db1.t3;
|
|
||||||
DROP DATABASE db1;
|
|
||||||
DROP DATABASE db2;
|
|
||||||
USE test;
|
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
CREATE TABLE t1(a INT)
|
||||||
|
INDEX DIRECTORY='TEST_DIR/master-data/mysql';
|
||||||
|
ERROR HY000: Incorrect arguments to INDEX DIRECTORY
|
||||||
|
CREATE TABLE t1(a INT)
|
||||||
|
DATA DIRECTORY='TEST_DIR/master-data/test';
|
||||||
|
ERROR HY000: Incorrect arguments to DATA DIRECTORY
|
||||||
|
CREATE TABLE t1(a INT)
|
||||||
|
DATA DIRECTORY='TEST_DIR/master-data/';
|
||||||
|
ERROR HY000: Incorrect arguments to DATA DIRECTORY
|
||||||
|
CREATE TABLE t1(a INT)
|
||||||
|
INDEX DIRECTORY='TEST_DIR/master-data';
|
||||||
|
ERROR HY000: Incorrect arguments to INDEX DIRECTORY
|
||||||
|
CREATE TABLE t1(a INT)
|
||||||
|
INDEX DIRECTORY='TEST_DIR/master-data_var';
|
||||||
|
ERROR HY000: Can't create/write to file 'TEST_DIR/master-data_var/t1.MYI' (Errcode: 2)
|
||||||
|
SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE='NO_DIR_IN_CREATE';
|
||||||
|
CREATE TABLE t1(a INT) DATA DIRECTORY='MYSQLTEST_VARDIR/tmp' INDEX DIRECTORY='MYSQLTEST_VARDIR/tmp';
|
||||||
|
Warnings:
|
||||||
|
Warning 0 DATA DIRECTORY option ignored
|
||||||
|
Warning 0 INDEX DIRECTORY option ignored
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@SQL_MODE=@OLD_SQL_MODE;
|
||||||
|
End of 5.1 tests
|
||||||
|
@@ -46,3 +46,12 @@ CREATE TABLE t2 (a int);
|
|||||||
lock tables t1 write,t1 as b write, t2 write, t2 as c read;
|
lock tables t1 write,t1 as b write, t2 write, t2 as c read;
|
||||||
drop table t2,t1;
|
drop table t2,t1;
|
||||||
unlock tables;
|
unlock tables;
|
||||||
|
create temporary table t1(f1 int);
|
||||||
|
lock tables t1 write;
|
||||||
|
insert into t1 values (1);
|
||||||
|
show columns from t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
f1 int(11) YES NULL
|
||||||
|
insert into t1 values(2);
|
||||||
|
drop table t1;
|
||||||
|
unlock tables;
|
||||||
|
@@ -140,4 +140,23 @@ select * from t3;
|
|||||||
c
|
c
|
||||||
1
|
1
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
DROP TABLE IF EXISTS t2;
|
||||||
|
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=innodb;
|
||||||
|
CREATE TABLE t2(b INT, FOREIGN KEY(b) REFERENCES t1(a)) ENGINE=innodb;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
CREATE TRIGGER t1_bd BEFORE DELETE ON t1 FOR EACH ROW SET @a = 1;
|
||||||
|
CREATE TRIGGER t1_ad AFTER DELETE ON t1 FOR EACH ROW SET @b = 1;
|
||||||
|
SET @a = 0;
|
||||||
|
SET @b = 0;
|
||||||
|
TRUNCATE t1;
|
||||||
|
SELECT @a, @b;
|
||||||
|
@a @b
|
||||||
|
0 0
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
DELETE FROM t1;
|
||||||
|
SELECT @a, @b;
|
||||||
|
@a @b
|
||||||
|
1 1
|
||||||
|
DROP TABLE t2, t1;
|
||||||
End of 5.0 tests
|
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