mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
Merge bk-internal:/home/bk/mysql-5.0-maint
into pilot.(none):/data/msvensson/mysql/mysql-5.0-maint libmysql/libmysql.c: Auto merged
This commit is contained in:
commit
db55af7c40
145 changed files with 8177 additions and 417 deletions
|
@ -1345,3 +1345,8 @@ zlib/*.vcproj
|
|||
debian/control
|
||||
debian/defs.mk
|
||||
include/abi_check
|
||||
support-files/mysqld_multi.server
|
||||
tests/bug25714
|
||||
cscope.in.out
|
||||
cscope.out
|
||||
cscope.po.out
|
||||
|
|
|
@ -138,3 +138,28 @@ then
|
|||
echo "$CC" | grep "ccache" > /dev/null || CC="ccache $CC"
|
||||
echo "$CXX" | grep "ccache" > /dev/null || CXX="ccache $CXX"
|
||||
fi
|
||||
|
||||
# gcov
|
||||
|
||||
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
|
||||
# code with profiling information used by gcov.
|
||||
# The -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
||||
# The -DHAVE_gcov enables code to write out coverage info even when crashing.
|
||||
|
||||
gcov_compile_flags="-fprofile-arcs -ftest-coverage"
|
||||
gcov_compile_flags="$gcov_compile_flags -DDISABLE_TAO_ASM"
|
||||
gcov_compile_flags="$gcov_compile_flags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov"
|
||||
|
||||
# GCC4 needs -fprofile-arcs -ftest-coverage on the linker command line (as well
|
||||
# as on the compiler command line), and this requires setting LDFLAGS for BDB.
|
||||
|
||||
gcov_link_flags="-fprofile-arcs -ftest-coverage"
|
||||
|
||||
gcov_configs="--disable-shared"
|
||||
|
||||
# gprof
|
||||
|
||||
gprof_compile_flags="-O2 -pg -g"
|
||||
|
||||
gprof_link_flags="--disable-shared $static_link"
|
||||
|
||||
|
|
17
BUILD/compile-amd64-gcov
Executable file
17
BUILD/compile-amd64-gcov
Executable file
|
@ -0,0 +1,17 @@
|
|||
#! /bin/sh
|
||||
|
||||
path=`dirname $0`
|
||||
. "$path/SETUP.sh"
|
||||
|
||||
# Need to disable ccache, or we loose the gcov-needed compiler output files.
|
||||
CCACHE_DISABLE=1
|
||||
export CCACHE_DISABLE
|
||||
|
||||
export LDFLAGS="$gcov_link_flags"
|
||||
|
||||
extra_flags="$amd64_cflags $debug_cflags $max_cflags $gcov_compile_flags"
|
||||
c_warnings="$c_warnings $debug_extra_warnings"
|
||||
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
||||
extra_configs="$amd64_configs $debug_configs $gcov_configs $max_configs"
|
||||
|
||||
. "$path/FINISH.sh"
|
9
BUILD/compile-amd64-gprof
Executable file
9
BUILD/compile-amd64-gprof
Executable file
|
@ -0,0 +1,9 @@
|
|||
#! /bin/sh
|
||||
|
||||
path=`dirname $0`
|
||||
. "$path/SETUP.sh"
|
||||
|
||||
extra_flags="$amd64_cflags $gprof_compile_flags"
|
||||
extra_configs="$amd64_configs $debug_configs $gprof_link_flags"
|
||||
|
||||
. "$path/FINISH.sh"
|
|
@ -7,18 +7,11 @@ path=`dirname $0`
|
|||
CCACHE_DISABLE=1
|
||||
export CCACHE_DISABLE
|
||||
|
||||
# GCC4 needs -fprofile-arcs -ftest-coverage on the linker command line (as well
|
||||
# as on the compiler command line), and this requires setting LDFLAGS for BDB.
|
||||
export LDFLAGS="-fprofile-arcs -ftest-coverage"
|
||||
export LDFLAGS="$gcov_link_flags"
|
||||
|
||||
# The -fprofile-arcs and -ftest-coverage options cause GCC to instrument the
|
||||
# code with profiling information used by gcov.
|
||||
# The -DDISABLE_TAO_ASM is needed to avoid build failures in Yassl.
|
||||
# The -DHAVE_gcov enables code to write out coverage info even when crashing.
|
||||
extra_flags="$pentium_cflags -fprofile-arcs -ftest-coverage -DDISABLE_TAO_ASM $debug_cflags $max_cflags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov"
|
||||
extra_flags="$pentium_cflags $debug_cflags $max_cflags $gcov_compile_flags"
|
||||
c_warnings="$c_warnings $debug_extra_warnings"
|
||||
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
||||
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
|
||||
extra_configs="$extra_configs $max_configs"
|
||||
extra_configs="$pentium_configs $debug_configs $gcov_configs $max_configs"
|
||||
|
||||
. "$path/FINISH.sh"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
path=`dirname $0`
|
||||
. "$path/SETUP.sh"
|
||||
|
||||
extra_flags="$pentium_cflags -O2 -pg -g"
|
||||
extra_configs="$pentium_configs $debug_configs --disable-shared $static_link"
|
||||
extra_flags="$pentium_cflags $gprof_compile_flags"
|
||||
extra_configs="$pentium_configs $debug_configs $gprof_link_flags"
|
||||
|
||||
. "$path/FINISH.sh"
|
||||
|
|
17
BUILD/compile-pentium64-gcov
Executable file
17
BUILD/compile-pentium64-gcov
Executable file
|
@ -0,0 +1,17 @@
|
|||
#! /bin/sh
|
||||
|
||||
path=`dirname $0`
|
||||
. "$path/SETUP.sh"
|
||||
|
||||
# Need to disable ccache, or we loose the gcov-needed compiler output files.
|
||||
CCACHE_DISABLE=1
|
||||
export CCACHE_DISABLE
|
||||
|
||||
export LDFLAGS="$gcov_link_flags"
|
||||
|
||||
extra_flags="$pentium64_cflags $debug_cflags $max_cflags $gcov_compile_flags"
|
||||
c_warnings="$c_warnings $debug_extra_warnings"
|
||||
cxx_warnings="$cxx_warnings $debug_extra_warnings"
|
||||
extra_configs="$pentium64_configs $debug_configs $gcov_configs $max_configs"
|
||||
|
||||
. "$path/FINISH.sh"
|
9
BUILD/compile-pentium64-gprof
Executable file
9
BUILD/compile-pentium64-gprof
Executable file
|
@ -0,0 +1,9 @@
|
|||
#! /bin/sh
|
||||
|
||||
path=`dirname $0`
|
||||
. "$path/SETUP.sh"
|
||||
|
||||
extra_flags="$pentium64_cflags $gprof_compile_flags"
|
||||
extra_configs="$pentium64_configs $debug_configs $gprof_link_flags"
|
||||
|
||||
. "$path/FINISH.sh"
|
|
@ -673,9 +673,14 @@ static struct my_option my_long_options[] =
|
|||
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
|
||||
0},
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
(gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"prompt", OPT_PROMPT, "Set the mysql prompt to this value.",
|
||||
(gptr*) ¤t_prompt, (gptr*) ¤t_prompt, 0, GET_STR_ALLOC,
|
||||
REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
@ -1245,6 +1250,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
|||
char buff[80], *pos, *out;
|
||||
COMMANDS *com;
|
||||
bool need_space= 0;
|
||||
bool ss_comment= 0;
|
||||
DBUG_ENTER("add_line");
|
||||
|
||||
if (!line[0] && buffer.is_empty())
|
||||
|
@ -1293,22 +1299,36 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
|||
}
|
||||
if ((com=find_command(NullS,(char) inchar)))
|
||||
{
|
||||
const String tmp(line,(uint) (out-line), charset_info);
|
||||
buffer.append(tmp);
|
||||
if ((*com->func)(&buffer,pos-1) > 0)
|
||||
DBUG_RETURN(1); // Quit
|
||||
if (com->takes_params)
|
||||
{
|
||||
for (pos++ ;
|
||||
*pos && (*pos != *delimiter ||
|
||||
!is_prefix(pos + 1, delimiter + 1)) ; pos++)
|
||||
; // Remove parameters
|
||||
if (!*pos)
|
||||
pos--;
|
||||
else
|
||||
pos+= delimiter_length - 1; // Point at last delim char
|
||||
}
|
||||
out=line;
|
||||
const String tmp(line,(uint) (out-line), charset_info);
|
||||
buffer.append(tmp);
|
||||
if ((*com->func)(&buffer,pos-1) > 0)
|
||||
DBUG_RETURN(1); // Quit
|
||||
if (com->takes_params)
|
||||
{
|
||||
if (ss_comment)
|
||||
{
|
||||
/*
|
||||
If a client-side macro appears inside a server-side comment,
|
||||
discard all characters in the comment after the macro (that is,
|
||||
until the end of the comment rather than the next delimiter)
|
||||
*/
|
||||
for (pos++; *pos && (*pos != '*' || *(pos + 1) != '/'); pos++)
|
||||
;
|
||||
pos--;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (pos++ ;
|
||||
*pos && (*pos != *delimiter ||
|
||||
!is_prefix(pos + 1, delimiter + 1)) ; pos++)
|
||||
; // Remove parameters
|
||||
if (!*pos)
|
||||
pos--;
|
||||
else
|
||||
pos+= delimiter_length - 1; // Point at last delim char
|
||||
}
|
||||
}
|
||||
out=line;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1368,7 +1388,7 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
|||
out=line;
|
||||
}
|
||||
}
|
||||
else if (*ml_comment && inchar == '*' && *(pos + 1) == '/')
|
||||
else if (*ml_comment && !ss_comment && inchar == '*' && *(pos + 1) == '/')
|
||||
{
|
||||
pos++;
|
||||
*ml_comment= 0;
|
||||
|
@ -1376,6 +1396,11 @@ static bool add_line(String &buffer,char *line,char *in_string,
|
|||
}
|
||||
else
|
||||
{ // Add found char to buffer
|
||||
if (!*in_string && inchar == '/' && *(pos + 1) == '*' &&
|
||||
*(pos + 2) == '!')
|
||||
ss_comment= 1;
|
||||
else if (!*in_string && ss_comment && inchar == '*' && *(pos + 1) == '/')
|
||||
ss_comment= 0;
|
||||
if (inchar == *in_string)
|
||||
*in_string= 0;
|
||||
else if (!*ml_comment && !*in_string &&
|
||||
|
|
|
@ -88,8 +88,13 @@ static struct my_option my_long_options[]=
|
|||
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0,
|
||||
GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"port", 'P', "Port number to use for connection.", 0,
|
||||
0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"protocol", OPT_MYSQL_PROTOCOL,
|
||||
"The protocol of connection (tcp,socket,pipe,memory).",
|
||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
|
|
@ -159,7 +159,13 @@ static struct my_option my_long_options[] =
|
|||
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &tcp_port,
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
(gptr*) &tcp_port,
|
||||
(gptr*) &tcp_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).",
|
||||
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
|
|
@ -687,9 +687,14 @@ static struct my_option my_long_options[] =
|
|||
0, GET_ULL, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"password", 'p', "Password to connect to remote server.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"port", 'P', "Use port to connect to the remote server.",
|
||||
(gptr*) &port, (gptr*) &port, 0, GET_INT, REQUIRED_ARG, 0, 0, 0,
|
||||
0, 0, 0},
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
(gptr*) &port, (gptr*) &port, 0, GET_INT, REQUIRED_ARG,
|
||||
0, 0, 0, 0, 0, 0},
|
||||
{"position", 'j', "Deprecated. Use --start-position instead.",
|
||||
(gptr*) &start_position, (gptr*) &start_position, 0, GET_ULL,
|
||||
REQUIRED_ARG, BIN_LOG_HEADER_SIZE, BIN_LOG_HEADER_SIZE,
|
||||
|
|
|
@ -123,7 +123,13 @@ static struct my_option my_long_options[] =
|
|||
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
(gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
|
||||
0},
|
||||
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).",
|
||||
|
|
|
@ -361,7 +361,13 @@ static struct my_option my_long_options[] =
|
|||
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
(gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
|
||||
0},
|
||||
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).",
|
||||
|
@ -2898,7 +2904,7 @@ int init_dumping_tables(char *qdatabase)
|
|||
/* Old server version, dump generic CREATE DATABASE */
|
||||
if (opt_drop_database)
|
||||
fprintf(md_result_file,
|
||||
"\n/*!40000 DROP DATABASE IF EXISTS %s;*/\n",
|
||||
"\n/*!40000 DROP DATABASE IF EXISTS %s*/;\n",
|
||||
qdatabase);
|
||||
fprintf(md_result_file,
|
||||
"\nCREATE DATABASE /*!32312 IF NOT EXISTS*/ %s;\n",
|
||||
|
|
|
@ -119,7 +119,13 @@ static struct my_option my_long_options[] =
|
|||
{"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
(gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
|
||||
0},
|
||||
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).",
|
||||
|
|
|
@ -49,7 +49,12 @@ static struct my_option my_long_options[] =
|
|||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"password", 'p', "Password to use when connecting to server.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &port,
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").", (gptr*) &port,
|
||||
(gptr*) &port, 0, GET_UINT, REQUIRED_ARG, MYSQL_MANAGER_PORT, 0, 0, 0, 0,
|
||||
0},
|
||||
{"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG,
|
||||
|
|
|
@ -188,7 +188,13 @@ static struct my_option my_long_options[] =
|
|||
{"password", 'p',
|
||||
"Password to use when connecting to server. If password is not given it's asked from the tty.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
(gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
|
||||
0},
|
||||
#ifdef __WIN__
|
||||
|
|
|
@ -4947,7 +4947,13 @@ static struct my_option my_long_options[] =
|
|||
GET_INT, REQUIRED_ARG, 500, 1, 10000, 0, 0, 0},
|
||||
{"password", 'p', "Password to use when connecting to server.",
|
||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_port,
|
||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
"/etc/services, "
|
||||
#endif
|
||||
"built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
|
||||
(gptr*) &opt_port,
|
||||
(gptr*) &opt_port, 0, GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
{"ps-protocol", OPT_PS_PROTOCOL, "Use prepared statements protocol for communication",
|
||||
(gptr*) &ps_protocol, (gptr*) &ps_protocol, 0,
|
||||
|
|
|
@ -773,11 +773,8 @@ case $CXX_VERSION in
|
|||
ARFLAGS="-xar -o"
|
||||
;;
|
||||
*)
|
||||
if test -z "$AR"
|
||||
then
|
||||
AC_CHECK_PROG([AR], [ar], [ar])
|
||||
fi
|
||||
if test -z "$AR"
|
||||
AC_CHECK_PROG([AR], [ar], [ar])
|
||||
if test -z "$AR" || test "$AR" = "false"
|
||||
then
|
||||
AC_MSG_ERROR([You need ar to build the library])
|
||||
fi
|
||||
|
|
29
configure.in
29
configure.in
|
@ -718,7 +718,34 @@ AC_ARG_WITH(tcp-port,
|
|||
[ --with-tcp-port=port-number
|
||||
Which port to use for MySQL services (default 3306)],
|
||||
[ MYSQL_TCP_PORT=$withval ],
|
||||
[ MYSQL_TCP_PORT=$MYSQL_TCP_PORT_DEFAULT ]
|
||||
[ MYSQL_TCP_PORT=$MYSQL_TCP_PORT_DEFAULT
|
||||
# if we actually defaulted (as opposed to the pathological case of
|
||||
# --with-tcp-port=<MYSQL_TCP_PORT_DEFAULT> which might in theory
|
||||
# happen if whole batch of servers was built from a script), set
|
||||
# the default to zero to indicate that; we don't lose information
|
||||
# that way, because 0 obviously indicates that we can get the
|
||||
# default value from MYSQL_TCP_PORT. this seems really evil, but
|
||||
# testing for MYSQL_TCP_PORT==MYSQL_TCP_PORT_DEFAULT would make a
|
||||
# a port of MYSQL_TCP_PORT_DEFAULT magic even if the builder did not
|
||||
# intend it to mean "use the default, in fact, look up a good default
|
||||
# from /etc/services if you can", but really, really meant 3306 when
|
||||
# they passed in 3306. When they pass in a specific value, let them
|
||||
# have it; don't second guess user and think we know better, this will
|
||||
# just make people cross. this makes the the logic work like this
|
||||
# (which is complicated enough):
|
||||
#
|
||||
# - if a port was set during build, use that as a default.
|
||||
#
|
||||
# - otherwise, try to look up a port in /etc/services; if that fails,
|
||||
# use MYSQL_TCP_PORT_DEFAULT (at the time of this writing 3306)
|
||||
#
|
||||
# - allow the MYSQL_TCP_PORT environment variable to override that.
|
||||
#
|
||||
# - allow command-line parameters to override all of the above.
|
||||
#
|
||||
# the top-most MYSQL_TCP_PORT_DEFAULT is read from win/configure.js,
|
||||
# so don't mess with that.
|
||||
MYSQL_TCP_PORT_DEFAULT=0 ]
|
||||
)
|
||||
AC_SUBST(MYSQL_TCP_PORT)
|
||||
# We might want to document the assigned port in the manual.
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#define FRM_VER @DOT_FRM_VERSION@
|
||||
#define MYSQL_VERSION_ID @MYSQL_VERSION_ID@
|
||||
#define MYSQL_PORT @MYSQL_TCP_PORT@
|
||||
#define MYSQL_PORT_DEFAULT @MYSQL_TCP_PORT_DEFAULT@
|
||||
#define MYSQL_UNIX_ADDR "@MYSQL_UNIX_ADDR@"
|
||||
#define MYSQL_CONFIG_NAME "my"
|
||||
#define MYSQL_COMPILATION_COMMENT "@COMPILATION_COMMENT@"
|
||||
|
|
|
@ -133,10 +133,23 @@ int STDCALL mysql_server_init(int argc __attribute__((unused)),
|
|||
{
|
||||
struct servent *serv_ptr;
|
||||
char *env;
|
||||
if ((serv_ptr = getservbyname("mysql", "tcp")))
|
||||
mysql_port = (uint) ntohs((ushort) serv_ptr->s_port);
|
||||
if ((env = getenv("MYSQL_TCP_PORT")))
|
||||
mysql_port =(uint) atoi(env);
|
||||
|
||||
/*
|
||||
if builder specifically requested a default port, use that
|
||||
(even if it coincides with our factory default).
|
||||
only if they didn't do we check /etc/services (and, failing
|
||||
on that, fall back to the factory default of 3306).
|
||||
either default can be overridden by the environment variable
|
||||
MYSQL_TCP_PORT, which in turn can be overridden with command
|
||||
line options.
|
||||
*/
|
||||
|
||||
#if MYSQL_PORT_DEFAULT == 0
|
||||
if ((serv_ptr = getservbyname("mysql", "tcp")))
|
||||
mysql_port = (uint) ntohs((ushort) serv_ptr->s_port);
|
||||
#endif
|
||||
if ((env = getenv("MYSQL_TCP_PORT")))
|
||||
mysql_port =(uint) atoi(env);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -43,7 +43,9 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I..
|
|||
|
||||
dist-hook:
|
||||
mkdir -p $(distdir)/t $(distdir)/r $(distdir)/include \
|
||||
$(distdir)/std_data $(distdir)/lib
|
||||
$(distdir)/std_data \
|
||||
$(distdir)/std_data/ndb_backup50_data_be $(distdir)/std_data/ndb_backup50_data_le \
|
||||
$(distdir)/lib
|
||||
-$(INSTALL_DATA) $(srcdir)/t/*.def $(distdir)/t
|
||||
$(INSTALL_DATA) $(srcdir)/t/*.test $(distdir)/t
|
||||
-$(INSTALL_DATA) $(srcdir)/t/*.imtest $(distdir)/t
|
||||
|
@ -62,6 +64,8 @@ dist-hook:
|
|||
$(INSTALL_DATA) $(srcdir)/std_data/*.frm $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(distdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_be/BACKUP* $(distdir)/std_data/ndb_backup50_data_be
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_le/BACKUP* $(distdir)/std_data/ndb_backup50_data_le
|
||||
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(distdir)/lib
|
||||
-rm -rf `find $(distdir)/suite -type d -name SCCS`
|
||||
|
||||
|
@ -71,6 +75,8 @@ install-data-local:
|
|||
$(DESTDIR)$(testdir)/r \
|
||||
$(DESTDIR)$(testdir)/include \
|
||||
$(DESTDIR)$(testdir)/std_data \
|
||||
$(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be \
|
||||
$(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le \
|
||||
$(DESTDIR)$(testdir)/lib
|
||||
$(INSTALL_DATA) $(srcdir)/README $(DESTDIR)$(testdir)
|
||||
-$(INSTALL_DATA) $(srcdir)/t/*.def $(DESTDIR)$(testdir)/t
|
||||
|
@ -95,6 +101,8 @@ install-data-local:
|
|||
$(INSTALL_DATA) $(srcdir)/std_data/*.frm $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.MY* $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/*.cnf $(DESTDIR)$(testdir)/std_data
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_be/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_be
|
||||
$(INSTALL_DATA) $(srcdir)/std_data/ndb_backup50_data_le/BACKUP* $(DESTDIR)$(testdir)/std_data/ndb_backup50_data_le
|
||||
$(INSTALL_DATA) $(srcdir)/lib/*.pl $(DESTDIR)$(testdir)/lib
|
||||
for f in `(cd $(srcdir); find suite -type f | grep -v SCCS)`; \
|
||||
do \
|
||||
|
@ -131,6 +139,7 @@ SUFFIXES = .sh
|
|||
-e 's!@''PERL''@!@PERL@!' \
|
||||
-e 's!@''VERSION''@!@VERSION@!' \
|
||||
-e 's!@''MYSQL_TCP_PORT''@!@MYSQL_TCP_PORT@!' \
|
||||
-e 's!@''MYSQL_TCP_PORT_DEFAULT''@!@MYSQL_TCP_PORT_DEFAULT@!' \
|
||||
-e 's!@''MYSQL_BASE_VERSION''@!@MYSQL_BASE_VERSION@!' \
|
||||
-e 's!@''MYSQL_UNIX_ADDR''@!@MYSQL_UNIX_ADDR@!' \
|
||||
-e 's!@''MYSQL_TCP_PORT''@!@MYSQL_TCP_PORT@!' \
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
--require r/true.require
|
||||
disable_query_log;
|
||||
select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") as "TRUE";
|
||||
enable_query_log;
|
||||
if (`select convert(@@version_compile_os using latin1) IN ("Win32","Win64","Windows") = 0`)
|
||||
{
|
||||
skip Need windows;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,16 @@ USE_MANAGER=0
|
|||
MY_TZ=GMT-3
|
||||
TZ=$MY_TZ; export TZ # for UNIX_TIMESTAMP tests to work
|
||||
LOCAL_SOCKET=@MYSQL_UNIX_ADDR@
|
||||
MYSQL_TCP_PORT=@MYSQL_TCP_PORT@
|
||||
|
||||
if [ -z "$MYSQL_TCP_PORT" ]; then
|
||||
MYSQL_TCP_PORT=@MYSQL_TCP_PORT@
|
||||
if [ @MYSQL_TCP_PORT_DEFAULT@ -eq 0 ]; then
|
||||
ESP=`getent services mysql/tcp`
|
||||
if [ $? -eq 0 ]; then
|
||||
MYSQL_TCP_PORT=`echo "$ESP"|sed -e's-^[a-z]*[ ]*\([0-9]*\)/[a-z]*$-\1-g'`
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
umask 022
|
||||
|
||||
|
|
|
@ -3708,6 +3708,11 @@ sub mysqld_arguments ($$$$) {
|
|||
mtr_add_arg($args, "%s--language=%s", $prefix, $path_language);
|
||||
mtr_add_arg($args, "%s--tmpdir=$opt_tmpdir", $prefix);
|
||||
|
||||
# Increase default connect_timeout to avoid intermittent
|
||||
# disconnects when test servers are put under load
|
||||
# see BUG#28359
|
||||
mtr_add_arg($args, "%s--connect-timeout=60", $prefix);
|
||||
|
||||
if ( $opt_valgrind_mysqld )
|
||||
{
|
||||
mtr_add_arg($args, "%s--skip-safemalloc", $prefix);
|
||||
|
|
|
@ -54,7 +54,7 @@ SHOW FULL COLUMNS FROM t1;
|
|||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
GROUP_ID int(10) unsigned NULL NO PRI 0 #
|
||||
LANG_ID smallint(5) unsigned NULL NO PRI 0 #
|
||||
NAME char(80) latin1_swedish_ci NO MUL #
|
||||
NAME char(80) latin1_swedish_ci NO MUL NULL #
|
||||
DROP TABLE t1;
|
||||
create table t1 (n int);
|
||||
insert into t1 values(9),(3),(12),(10);
|
||||
|
|
|
@ -11123,10 +11123,11 @@ auto fld1 companynr fld3 fld4 fld5 fld6
|
|||
SELECT COUNT(auto) FROM t2;
|
||||
COUNT(auto)
|
||||
1213
|
||||
INSERT DELAYED INTO t2 VALUES (4,011403,37,'intercepted','audiology','tinily','');
|
||||
INSERT DELAYED INTO t2 VALUES (99999,011403,37,'the','delayed','insert','');
|
||||
INSERT INTO t2 VALUES (100000,000001,00,'after','delayed','insert','');
|
||||
SELECT COUNT(auto) FROM t2;
|
||||
COUNT(auto)
|
||||
1214
|
||||
1215
|
||||
ALTER TABLE t2 DROP COLUMN fld6;
|
||||
SHOW CREATE TABLE t2;
|
||||
Table Create Table
|
||||
|
@ -11138,7 +11139,7 @@ t2 CREATE TABLE `t2` (
|
|||
`fld4` char(35) NOT NULL default '',
|
||||
`fld5` char(35) NOT NULL default ''
|
||||
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
|
||||
SELECT * from t2;
|
||||
SELECT * from t2 WHERE auto != 100000;
|
||||
auto fld1 companynr fld3 fld4 fld5
|
||||
1 000001 00 Omaha teethe neat
|
||||
2 011401 37 breaking dreaded Steinberg
|
||||
|
@ -12353,7 +12354,7 @@ auto fld1 companynr fld3 fld4 fld5
|
|||
2 011401 37 breaking dreaded Steinberg
|
||||
3 011402 37 Romans scholastics jarring
|
||||
4 011403 37 intercepted audiology tinily
|
||||
4 011403 37 intercepted audiology tinily
|
||||
99999 011403 37 the delayed insert
|
||||
drop table t1, t2, t4;
|
||||
create table t1 (i int) engine=archive;
|
||||
insert into t1 values (1);
|
||||
|
|
|
@ -26,3 +26,18 @@ select 1 # The rest of the row will be ignored
|
|||
1
|
||||
1
|
||||
/* line with only comment */;
|
||||
drop table if exists table_28779;
|
||||
create table table_28779 (a int);
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*' AND b = 'bar';";
|
||||
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 '/*' AND b = 'bar'' at line 1
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*' AND b = 'bar';*";
|
||||
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 '/*' AND b = 'bar';*' at line 1
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;";
|
||||
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 '' at line 1
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;*";
|
||||
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 ';*' at line 1
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';";
|
||||
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 '/*!98765' AND b = 'bar'' at line 1
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';*";
|
||||
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 '/*!98765' AND b = 'bar';*' at line 1
|
||||
drop table table_28779;
|
||||
|
|
|
@ -430,7 +430,7 @@ d date YES NULL
|
|||
e varchar(1) NO
|
||||
f datetime YES NULL
|
||||
g time YES NULL
|
||||
h longblob NO
|
||||
h longblob NO NULL
|
||||
dd time YES NULL
|
||||
select * from t2;
|
||||
a b c d e f g h dd
|
||||
|
|
|
@ -488,7 +488,7 @@ t1 CREATE TABLE `t1` (
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SHOW FIELDS FROM t1;
|
||||
Field Type Null Key Default Extra
|
||||
latin1_f char(32) NO
|
||||
latin1_f char(32) NO NULL
|
||||
ALTER TABLE t1 CHANGE latin1_f
|
||||
latin1_f CHAR(32) CHARACTER SET latin1 COLLATE latin1_bin;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
|
|
@ -54,7 +54,7 @@ Table Create Table
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='ËÏÍÍÅÎÔÁÒÉÊ ÔÁÂÌÉÃÙ'
|
||||
SHOW FIELDS FROM ÔÁÂÌÉÃÁ;
|
||||
Field Type Null Key Default Extra
|
||||
ÐÏÌÅ char(32) NO
|
||||
ÐÏÌÅ char(32) NO NULL
|
||||
SET CHARACTER SET cp1251;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
|
@ -66,7 +66,7 @@ Table Create Table
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='êîììåíòàðèé òàáëèöû'
|
||||
SHOW FIELDS FROM òàáëèöà;
|
||||
Field Type Null Key Default Extra
|
||||
ïîëå char(32) NO
|
||||
ïîëå char(32) NO NULL
|
||||
SET CHARACTER SET utf8;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
|
@ -78,7 +78,7 @@ Table Create Table
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='комментарий таблицы'
|
||||
SHOW FIELDS FROM таблица;
|
||||
Field Type Null Key Default Extra
|
||||
поле char(32) NO
|
||||
поле char(32) NO NULL
|
||||
SET CHARACTER SET koi8r;
|
||||
DROP TABLE ÔÁÂÌÉÃÁ;
|
||||
SET CHARACTER SET default;
|
||||
|
|
|
@ -115,7 +115,7 @@ Warning 1364 Field 'd' doesn't have a default value
|
|||
desc bug20691;
|
||||
Field Type Null Key Default Extra
|
||||
i int(11) YES NULL
|
||||
d datetime NO
|
||||
d datetime NO NULL
|
||||
dn datetime NO 0000-00-00 00:00:00
|
||||
insert into bug20691 values (3, DEFAULT, DEFAULT), (3, '1975-07-10 07:10:03', '1978-01-13 14:08:51'), (3, DEFAULT, DEFAULT);
|
||||
Warnings:
|
||||
|
|
|
@ -183,6 +183,17 @@ select @a;
|
|||
@a
|
||||
1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
`date` date ,
|
||||
`time` time ,
|
||||
`seq` int(10) unsigned NOT NULL auto_increment,
|
||||
PRIMARY KEY (`seq`),
|
||||
KEY `seq` (`seq`),
|
||||
KEY `time` (`time`),
|
||||
KEY `date` (`date`)
|
||||
);
|
||||
DELETE FROM t1 ORDER BY date ASC, time ASC LIMIT 1;
|
||||
drop table t1;
|
||||
End of 4.1 tests
|
||||
CREATE TABLE t1 (a int not null,b int not null);
|
||||
CREATE TABLE t2 (a int not null, b int not null, primary key (a,b));
|
||||
|
@ -223,3 +234,40 @@ ERROR 42S22: Unknown column 't2.x' in 'order clause'
|
|||
DELETE FROM t1 ORDER BY (SELECT x);
|
||||
ERROR 42S22: Unknown column 'x' in 'field list'
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
a INT
|
||||
);
|
||||
CREATE TABLE t2 (
|
||||
a INT
|
||||
);
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (
|
||||
a INT
|
||||
);
|
||||
INSERT INTO db1.t1 (a) SELECT * FROM t1;
|
||||
CREATE DATABASE db2;
|
||||
CREATE TABLE db2.t1 (
|
||||
a INT
|
||||
);
|
||||
INSERT INTO db2.t1 (a) SELECT * FROM t2;
|
||||
DELETE FROM t1 alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
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 'alias USING t1, t2 alias WHERE t1.a = alias.a' at line 1
|
||||
DELETE FROM alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
DELETE FROM t1, alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
DELETE FROM t1, t2 USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
ERROR 42S02: Unknown table 't2' in MULTI DELETE
|
||||
DELETE FROM db1.t1 alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
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 'alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a' at line 1
|
||||
DELETE FROM alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
ERROR 42S02: Unknown table 'alias' in MULTI DELETE
|
||||
DELETE FROM db2.alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
DELETE FROM t1 USING t1 WHERE a = 1;
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
DELETE FROM t1 alias USING t1 alias WHERE a = 2;
|
||||
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 'alias USING t1 alias WHERE a = 2' at line 1
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
DROP TABLE t1, t2;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
|
|
|
@ -526,10 +526,10 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 3 Using index
|
||||
EXPLAIN SELECT a,b FROM t1 GROUP BY a,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
EXPLAIN SELECT DISTINCT a,b FROM t1 GROUP BY a,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
CREATE TABLE t2(a INT, b INT NOT NULL, c INT NOT NULL, d INT,
|
||||
PRIMARY KEY (a,b));
|
||||
INSERT INTO t2 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
|
||||
|
@ -554,7 +554,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
CREATE UNIQUE INDEX c_b_unq ON t2 (c,b);
|
||||
EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
DROP TABLE t1,t2;
|
||||
create table t1 (id int, dsc varchar(50));
|
||||
insert into t1 values (1, "line number one"), (2, "line number two"), (3, "line number three");
|
||||
|
|
|
@ -9,35 +9,35 @@ CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMET
|
|||
CREATE TABLE gis_geometry (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY);
|
||||
SHOW FIELDS FROM gis_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g point YES NULL
|
||||
SHOW FIELDS FROM gis_line;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g linestring YES NULL
|
||||
SHOW FIELDS FROM gis_polygon;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g polygon YES NULL
|
||||
SHOW FIELDS FROM gis_multi_point;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g multipoint YES NULL
|
||||
SHOW FIELDS FROM gis_multi_line;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g multilinestring YES NULL
|
||||
SHOW FIELDS FROM gis_multi_polygon;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g multipolygon YES NULL
|
||||
SHOW FIELDS FROM gis_geometrycollection;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g geometrycollection YES NULL
|
||||
SHOW FIELDS FROM gis_geometry;
|
||||
Field Type Null Key Default Extra
|
||||
fid int(11) NO PRI
|
||||
fid int(11) NO PRI NULL
|
||||
g geometry YES NULL
|
||||
INSERT INTO gis_point VALUES
|
||||
(101, PointFromText('POINT(10 10)')),
|
||||
|
@ -430,7 +430,7 @@ mln multilinestring YES NULL
|
|||
mpg multipolygon YES NULL
|
||||
gc geometrycollection YES NULL
|
||||
gm geometry YES NULL
|
||||
fid int(11) NO
|
||||
fid int(11) NO NULL
|
||||
DROP TABLE t1;
|
||||
SELECT AsText(GeometryFromWKB(AsWKB(GeometryFromText('POINT(1 4)'))));
|
||||
AsText(GeometryFromWKB(AsWKB(GeometryFromText('POINT(1 4)'))))
|
||||
|
|
|
@ -1064,3 +1064,52 @@ select t1.f1,t.* from t1, t1 t group by 1;
|
|||
ERROR 42000: 'test.t.f1' isn't in GROUP BY
|
||||
drop table t1;
|
||||
SET SQL_MODE = '';
|
||||
CREATE TABLE t1(
|
||||
a INT,
|
||||
b INT NOT NULL,
|
||||
c INT NOT NULL,
|
||||
d INT,
|
||||
UNIQUE KEY (c,b)
|
||||
);
|
||||
INSERT INTO t1 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b,d;
|
||||
c b d
|
||||
1 1 50
|
||||
3 1 4
|
||||
3 2 40
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
|
||||
c b d
|
||||
1 1 50
|
||||
3 2 40
|
||||
3 1 4
|
||||
EXPLAIN SELECT c,b,d FROM t1 ORDER BY c,b,d;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
SELECT c,b,d FROM t1 ORDER BY c,b,d;
|
||||
c b d
|
||||
1 1 50
|
||||
3 1 4
|
||||
3 2 40
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b;
|
||||
c b d
|
||||
1 1 50
|
||||
3 1 4
|
||||
3 2 40
|
||||
EXPLAIN SELECT c,b FROM t1 GROUP BY c,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL c 8 NULL 3 Using index
|
||||
SELECT c,b FROM t1 GROUP BY c,b;
|
||||
c b
|
||||
1 1
|
||||
3 1
|
||||
3 2
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -489,3 +489,16 @@ handler t1 open;
|
|||
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
||||
--> client 1
|
||||
drop table t1;
|
||||
drop table if exists t1;
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
handler t1_alias read a next;
|
||||
ERROR HY000: Key 'a' doesn't exist in table 't1_alias'
|
||||
handler t1_alias READ a next where inexistent > 0;
|
||||
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
||||
handler t1_alias read a next;
|
||||
ERROR HY000: Key 'a' doesn't exist in table 't1_alias'
|
||||
handler t1_alias READ a next where inexistent > 0;
|
||||
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
|
|
|
@ -989,7 +989,7 @@ b NULL
|
|||
use test;
|
||||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO
|
||||
a int(11) NO NULL
|
||||
b int(11) YES NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
|
@ -1354,4 +1354,35 @@ where event_object_table='t1';
|
|||
trigger_name
|
||||
drop user mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
create table t1 (
|
||||
f1 varchar(50),
|
||||
f2 varchar(50) not null,
|
||||
f3 varchar(50) default '',
|
||||
f4 varchar(50) default NULL,
|
||||
f5 bigint not null,
|
||||
f6 bigint not null default 10,
|
||||
f7 datetime not null,
|
||||
f8 datetime default '2006-01-01'
|
||||
);
|
||||
select column_default from information_schema.columns where table_name= 't1';
|
||||
column_default
|
||||
NULL
|
||||
NULL
|
||||
|
||||
NULL
|
||||
NULL
|
||||
10
|
||||
NULL
|
||||
2006-01-01 00:00:00
|
||||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
f1 varchar(50) YES NULL
|
||||
f2 varchar(50) NO NULL
|
||||
f3 varchar(50) YES
|
||||
f4 varchar(50) YES NULL
|
||||
f5 bigint(20) NO NULL
|
||||
f6 bigint(20) NO 10
|
||||
f7 datetime NO NULL
|
||||
f8 datetime YES 2006-01-01 00:00:00
|
||||
drop table t1;
|
||||
End of 5.0 tests.
|
||||
|
|
|
@ -94,3 +94,14 @@ id x
|
|||
300 300
|
||||
commit;
|
||||
drop table t1, t2;
|
||||
End of 4.1 tests
|
||||
set storage_engine=innodb;
|
||||
drop table if exists a;
|
||||
drop table if exists A;
|
||||
create table A (c int);
|
||||
insert into A (c) values (0);
|
||||
create table a as select * from A;
|
||||
drop table A;
|
||||
drop table if exists a;
|
||||
set storage_engine=default;
|
||||
End of 5.0 tests.
|
||||
|
|
|
@ -1065,4 +1065,150 @@ a b
|
|||
ROLLBACK;
|
||||
ROLLBACK;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
a INT,
|
||||
b INT NOT NULL,
|
||||
c INT NOT NULL,
|
||||
d INT,
|
||||
UNIQUE KEY (c,b)
|
||||
) engine=innodb;
|
||||
INSERT INTO t1 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b,d;
|
||||
c b d
|
||||
1 1 50
|
||||
3 1 4
|
||||
3 2 40
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
|
||||
c b d
|
||||
1 1 50
|
||||
3 1 4
|
||||
3 2 40
|
||||
EXPLAIN SELECT c,b,d FROM t1 ORDER BY c,b,d;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
SELECT c,b,d FROM t1 ORDER BY c,b,d;
|
||||
c b d
|
||||
1 1 50
|
||||
3 1 4
|
||||
3 2 40
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL c 8 NULL 3
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b;
|
||||
c b d
|
||||
1 1 50
|
||||
3 1 4
|
||||
3 2 40
|
||||
EXPLAIN SELECT c,b FROM t1 GROUP BY c,b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL c 8 NULL 3 Using index
|
||||
SELECT c,b FROM t1 GROUP BY c,b;
|
||||
c b
|
||||
1 1
|
||||
3 1
|
||||
3 2
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), INDEX b (b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1(a,b) VALUES (1,1), (2,2), (3,2);
|
||||
EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a ASC;
|
||||
id 1
|
||||
select_type SIMPLE
|
||||
table t1
|
||||
type ref
|
||||
possible_keys b
|
||||
key b
|
||||
key_len 5
|
||||
ref const
|
||||
rows 1
|
||||
Extra Using where; Using index
|
||||
SELECT * FROM t1 WHERE b=2 ORDER BY a ASC;
|
||||
a b
|
||||
2 2
|
||||
3 2
|
||||
EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a DESC;
|
||||
id 1
|
||||
select_type SIMPLE
|
||||
table t1
|
||||
type ref
|
||||
possible_keys b
|
||||
key b
|
||||
key_len 5
|
||||
ref const
|
||||
rows 1
|
||||
Extra Using where; Using index
|
||||
SELECT * FROM t1 WHERE b=2 ORDER BY a DESC;
|
||||
a b
|
||||
3 2
|
||||
2 2
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a ASC;
|
||||
id 1
|
||||
select_type SIMPLE
|
||||
table t1
|
||||
type index
|
||||
possible_keys NULL
|
||||
key b
|
||||
key_len 5
|
||||
ref NULL
|
||||
rows 3
|
||||
Extra Using index
|
||||
SELECT * FROM t1 ORDER BY b ASC, a ASC;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 2
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a DESC;
|
||||
id 1
|
||||
select_type SIMPLE
|
||||
table t1
|
||||
type index
|
||||
possible_keys NULL
|
||||
key b
|
||||
key_len 5
|
||||
ref NULL
|
||||
rows 3
|
||||
Extra Using index
|
||||
SELECT * FROM t1 ORDER BY b DESC, a DESC;
|
||||
a b
|
||||
3 2
|
||||
2 2
|
||||
1 1
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a DESC;
|
||||
id 1
|
||||
select_type SIMPLE
|
||||
table t1
|
||||
type index
|
||||
possible_keys NULL
|
||||
key b
|
||||
key_len 5
|
||||
ref NULL
|
||||
rows 3
|
||||
Extra Using index; Using filesort
|
||||
SELECT * FROM t1 ORDER BY b ASC, a DESC;
|
||||
a b
|
||||
1 1
|
||||
3 2
|
||||
2 2
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a ASC;
|
||||
id 1
|
||||
select_type SIMPLE
|
||||
table t1
|
||||
type index
|
||||
possible_keys NULL
|
||||
key b
|
||||
key_len 5
|
||||
ref NULL
|
||||
rows 3
|
||||
Extra Using index; Using filesort
|
||||
SELECT * FROM t1 ORDER BY b DESC, a ASC;
|
||||
a b
|
||||
2 2
|
||||
3 2
|
||||
1 1
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -336,8 +336,8 @@ UNIQUE i1idx (i1),
|
|||
UNIQUE i2idx (i2));
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
i1 int(11) NO PRI
|
||||
i2 int(11) NO UNI
|
||||
i1 int(11) NO PRI NULL
|
||||
i2 int(11) NO UNI NULL
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
|
@ -392,27 +392,27 @@ drop table t1;
|
|||
create table t1 (a int not null primary key, b varchar(20) not null unique);
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
b varchar(20) NO UNI
|
||||
a int(11) NO PRI NULL
|
||||
b varchar(20) NO UNI NULL
|
||||
drop table t1;
|
||||
create table t1 (a int not null primary key, b int not null unique);
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
b int(11) NO UNI
|
||||
a int(11) NO PRI NULL
|
||||
b int(11) NO UNI NULL
|
||||
drop table t1;
|
||||
create table t1 (a int not null primary key, b varchar(20) not null, unique (b(10)));
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
b varchar(20) NO UNI
|
||||
a int(11) NO PRI NULL
|
||||
b varchar(20) NO UNI NULL
|
||||
drop table t1;
|
||||
create table t1 (a int not null primary key, b varchar(20) not null, c varchar(20) not null, unique(b(10),c(10)));
|
||||
desc t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
b varchar(20) NO MUL
|
||||
c varchar(20) NO
|
||||
a int(11) NO PRI NULL
|
||||
b varchar(20) NO MUL NULL
|
||||
c varchar(20) NO NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a INTEGER auto_increment PRIMARY KEY,
|
||||
|
|
|
@ -91,7 +91,7 @@ i j k
|
|||
NULL 1 NULL
|
||||
Field Type Null Key Default Extra
|
||||
i int(11) YES NULL
|
||||
j int(11) NO
|
||||
j int(11) NO NULL
|
||||
k int(11) YES NULL
|
||||
+------+---+------+
|
||||
| i | j | k |
|
||||
|
@ -102,7 +102,7 @@ k int(11) YES NULL
|
|||
| Field | Type | Null | Key | Default | Extra |
|
||||
+-------+---------+------+-----+---------+-------+
|
||||
| i | int(11) | YES | | NULL | |
|
||||
| j | int(11) | NO | | | |
|
||||
| j | int(11) | NO | | NULL | |
|
||||
| k | int(11) | YES | | NULL | |
|
||||
+-------+---------+------+-----+---------+-------+
|
||||
i s1
|
||||
|
@ -176,4 +176,6 @@ ERROR at line 1: DELIMITER cannot contain a backslash character
|
|||
ERROR at line 1: DELIMITER cannot contain a backslash character
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
End of 5.0 tests
|
||||
|
|
4
mysql-test/r/mysqldump-compat.result
Normal file
4
mysql-test/r/mysqldump-compat.result
Normal file
|
@ -0,0 +1,4 @@
|
|||
CREATE DATABASE mysqldump_30126;
|
||||
USE mysqldump_30126;
|
||||
CREATE TABLE t1 (c1 int);
|
||||
DROP DATABASE mysqldump_30126;
|
2153
mysql-test/r/named_pipe.result
Normal file
2153
mysql-test/r/named_pipe.result
Normal file
File diff suppressed because it is too large
Load diff
8
mysql-test/r/ndb_bug26793.result
Normal file
8
mysql-test/r/ndb_bug26793.result
Normal file
|
@ -0,0 +1,8 @@
|
|||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE `test` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||
`t` VARCHAR( 10 ) NOT NULL
|
||||
) ENGINE = ndbcluster;
|
||||
GRANT USAGE ON *.* TO user1@localhost IDENTIFIED BY 'pass';
|
||||
DROP TABLE `test`.`test`;
|
||||
drop user user1@localhost;
|
|
@ -405,3 +405,22 @@ a b
|
|||
1 1
|
||||
10 10
|
||||
drop table t2;
|
||||
create table t1 (id int primary key) engine ndb;
|
||||
insert into t1 values (1), (2), (3);
|
||||
create table t2 (id int primary key) engine ndb;
|
||||
insert into t2 select id from t1;
|
||||
create trigger kaboom after delete on t1
|
||||
for each row begin
|
||||
delete from t2 where id=old.id;
|
||||
end|
|
||||
select * from t1 order by id;
|
||||
id
|
||||
1
|
||||
2
|
||||
3
|
||||
delete from t1 where id in (1,2);
|
||||
select * from t2 order by id;
|
||||
id
|
||||
3
|
||||
drop trigger kaboom;
|
||||
drop table t1;
|
||||
|
|
200
mysql-test/r/ndb_restore_different_endian_data.result
Normal file
200
mysql-test/r/ndb_restore_different_endian_data.result
Normal file
|
@ -0,0 +1,200 @@
|
|||
USE test;
|
||||
DROP TABLE IF EXISTS t_num,t_datetime,t_string_1,t_string_2,t_gis;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
t_gis
|
||||
t_string_1
|
||||
t_num
|
||||
t_string_2
|
||||
t_datetime
|
||||
SHOW CREATE TABLE t_num;
|
||||
Table Create Table
|
||||
t_num CREATE TABLE `t_num` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_bit` bit(64) default NULL,
|
||||
`t_tinyint` tinyint(4) default NULL,
|
||||
`t_bool` tinyint(1) default NULL,
|
||||
`t_smallint` smallint(6) default NULL,
|
||||
`t_mediumint` mediumint(9) default NULL,
|
||||
`t_int` int(11) default NULL,
|
||||
`t_bigint` bigint(20) default NULL,
|
||||
`t_float` float default NULL,
|
||||
`t_double` double default NULL,
|
||||
`t_decimal` decimal(37,16) default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t_datetime;
|
||||
Table Create Table
|
||||
t_datetime CREATE TABLE `t_datetime` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_date` date default NULL,
|
||||
`t_datetime` datetime default NULL,
|
||||
`t_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
||||
`t_time` time default NULL,
|
||||
`t_year` year(4) default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t_string_1;
|
||||
Table Create Table
|
||||
t_string_1 CREATE TABLE `t_string_1` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_char` char(255) default NULL,
|
||||
`t_varchar` varchar(655) default NULL,
|
||||
`t_binary` binary(255) default NULL,
|
||||
`t_varbinary` varbinary(6553) default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t_string_2;
|
||||
Table Create Table
|
||||
t_string_2 CREATE TABLE `t_string_2` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_tinyblob` tinyblob,
|
||||
`t_tinytext` tinytext,
|
||||
`t_blob` blob,
|
||||
`t_text` text,
|
||||
`t_mediumblob` mediumblob,
|
||||
`t_mediumtext` mediumtext,
|
||||
`t_longblob` longblob,
|
||||
`t_longtext` longtext,
|
||||
`t_enum` enum('001001','001004','001010','001018','001019','001020','001021','001027','001028','001029','001030','001031','001100','002003','002004','002005','002007') NOT NULL default '001001',
|
||||
`t_set` set('a','B') default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t_gis;
|
||||
Table Create Table
|
||||
t_gis CREATE TABLE `t_gis` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_point` point default NULL,
|
||||
`t_linestring` linestring default NULL,
|
||||
`t_polygon` polygon default NULL,
|
||||
`t_multipoint` multipoint default NULL,
|
||||
`t_multilinestring` multilinestring default NULL,
|
||||
`t_multipolygon` multipolygon default NULL,
|
||||
`t_geometrycollection` geometrycollection default NULL,
|
||||
`t_geometry` geometry default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SELECT * FROM t_datetime;
|
||||
t_pk t_date t_datetime t_timestamp t_time t_year
|
||||
1 1998-01-01 2006-08-10 10:11:12 2002-10-29 16:51:06 19:38:34 2155
|
||||
SELECT t_pk,hex(t_bit),t_tinyint,t_bool,t_smallint,t_mediumint,t_int,t_bigint,t_float,t_double,t_decimal FROM t_num;
|
||||
t_pk hex(t_bit) t_tinyint t_bool t_smallint t_mediumint t_int t_bigint t_float t_double t_decimal
|
||||
1 AAAAAAAAAAAAAAAA 125 1 32765 8388606 2147483647 9223372036854775807 1e+20 1e+150 331.0000000000000000
|
||||
SELECT t_pk,t_char,t_varchar,hex(t_binary),hex(t_varbinary) FROM t_string_1;
|
||||
t_pk t_char t_varchar hex(t_binary) hex(t_varbinary)
|
||||
1 abcdefghijklmn abcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn 612020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 4100
|
||||
SELECT * FROM t_string_2;
|
||||
t_pk t_tinyblob t_tinytext t_blob t_text t_mediumblob t_mediumtext t_longblob t_longtext t_enum t_set
|
||||
1 abcdefghijklmnabcdefghijklmn abcdefghijklmnabcdefghijklmn a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 001001 a
|
||||
SELECT AsText(t_point), AsText(t_linestring),AsText(t_polygon) FROM t_gis ORDER by t_pk;
|
||||
AsText(t_point) AsText(t_linestring) AsText(t_polygon)
|
||||
POINT(10 10) LINESTRING(10 10,20 10,20 20,10 20,10 10) POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
|
||||
POINT(10 20) LINESTRING(10 10,40 10) POLYGON((0 0,30 0,30 30,0 0))
|
||||
SELECT AsText(t_multipoint), AsText(t_multilinestring),AsText(t_multipolygon) FROM t_gis ORDER by t_pk;
|
||||
AsText(t_multipoint) AsText(t_multilinestring) AsText(t_multipolygon)
|
||||
MULTIPOINT(1 1,11 11,11 21,21 21) MULTILINESTRING((10 48,10 21,10 0)) MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
MULTIPOINT(3 6,4 10) MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7)) MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
|
||||
SELECT AsText(t_geometrycollection), AsText(t_geometry) FROM t_gis ORDER by t_pk;
|
||||
AsText(t_geometrycollection) AsText(t_geometry)
|
||||
GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9)) GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
|
||||
DROP TABLE t_num,t_datetime,t_string_1,t_string_2,t_gis;
|
||||
SHOW TABLES;
|
||||
Tables_in_test
|
||||
t_gis
|
||||
t_string_1
|
||||
t_num
|
||||
t_string_2
|
||||
t_datetime
|
||||
SHOW CREATE TABLE t_num;
|
||||
Table Create Table
|
||||
t_num CREATE TABLE `t_num` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_bit` bit(64) default NULL,
|
||||
`t_tinyint` tinyint(4) default NULL,
|
||||
`t_bool` tinyint(1) default NULL,
|
||||
`t_smallint` smallint(6) default NULL,
|
||||
`t_mediumint` mediumint(9) default NULL,
|
||||
`t_int` int(11) default NULL,
|
||||
`t_bigint` bigint(20) default NULL,
|
||||
`t_float` float default NULL,
|
||||
`t_double` double default NULL,
|
||||
`t_decimal` decimal(37,16) default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t_datetime;
|
||||
Table Create Table
|
||||
t_datetime CREATE TABLE `t_datetime` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_date` date default NULL,
|
||||
`t_datetime` datetime default NULL,
|
||||
`t_timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
||||
`t_time` time default NULL,
|
||||
`t_year` year(4) default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t_string_1;
|
||||
Table Create Table
|
||||
t_string_1 CREATE TABLE `t_string_1` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_char` char(255) default NULL,
|
||||
`t_varchar` varchar(655) default NULL,
|
||||
`t_binary` binary(255) default NULL,
|
||||
`t_varbinary` varbinary(6553) default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t_string_2;
|
||||
Table Create Table
|
||||
t_string_2 CREATE TABLE `t_string_2` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_tinyblob` tinyblob,
|
||||
`t_tinytext` tinytext,
|
||||
`t_blob` blob,
|
||||
`t_text` text,
|
||||
`t_mediumblob` mediumblob,
|
||||
`t_mediumtext` mediumtext,
|
||||
`t_longblob` longblob,
|
||||
`t_longtext` longtext,
|
||||
`t_enum` enum('001001','001004','001010','001018','001019','001020','001021','001027','001028','001029','001030','001031','001100','002003','002004','002005','002007') NOT NULL default '001001',
|
||||
`t_set` set('a','B') default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE t_gis;
|
||||
Table Create Table
|
||||
t_gis CREATE TABLE `t_gis` (
|
||||
`t_pk` int(11) NOT NULL,
|
||||
`t_point` point default NULL,
|
||||
`t_linestring` linestring default NULL,
|
||||
`t_polygon` polygon default NULL,
|
||||
`t_multipoint` multipoint default NULL,
|
||||
`t_multilinestring` multilinestring default NULL,
|
||||
`t_multipolygon` multipolygon default NULL,
|
||||
`t_geometrycollection` geometrycollection default NULL,
|
||||
`t_geometry` geometry default NULL,
|
||||
PRIMARY KEY (`t_pk`)
|
||||
) ENGINE=ndbcluster DEFAULT CHARSET=latin1
|
||||
SELECT * FROM t_datetime;
|
||||
t_pk t_date t_datetime t_timestamp t_time t_year
|
||||
1 1998-01-01 2006-08-10 10:11:12 2002-10-29 16:51:06 19:38:34 2155
|
||||
SELECT t_pk,hex(t_bit),t_tinyint,t_bool,t_smallint,t_mediumint,t_int,t_bigint,t_float,t_double,t_decimal FROM t_num;
|
||||
t_pk hex(t_bit) t_tinyint t_bool t_smallint t_mediumint t_int t_bigint t_float t_double t_decimal
|
||||
1 AAAAAAAAAAAAAAAA 125 1 32765 8388606 2147483647 9223372036854775807 1e+20 1e+150 331.0000000000000000
|
||||
SELECT t_pk,t_char,t_varchar,hex(t_binary),hex(t_varbinary) FROM t_string_1;
|
||||
t_pk t_char t_varchar hex(t_binary) hex(t_varbinary)
|
||||
1 abcdefghijklmn abcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn 612020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 4100
|
||||
SELECT * FROM t_string_2;
|
||||
t_pk t_tinyblob t_tinytext t_blob t_text t_mediumblob t_mediumtext t_longblob t_longtext t_enum t_set
|
||||
1 abcdefghijklmnabcdefghijklmn abcdefghijklmnabcdefghijklmn a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 a123456789b123456789c123456789d123456789e123456789f123456789g123456789 001001 a
|
||||
SELECT AsText(t_point), AsText(t_linestring),AsText(t_polygon) FROM t_gis ORDER by t_pk;
|
||||
AsText(t_point) AsText(t_linestring) AsText(t_polygon)
|
||||
POINT(10 10) LINESTRING(10 10,20 10,20 20,10 20,10 10) POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
|
||||
POINT(10 20) LINESTRING(10 10,40 10) POLYGON((0 0,30 0,30 30,0 0))
|
||||
SELECT AsText(t_multipoint), AsText(t_multilinestring),AsText(t_multipolygon) FROM t_gis ORDER by t_pk;
|
||||
AsText(t_multipoint) AsText(t_multilinestring) AsText(t_multipolygon)
|
||||
MULTIPOINT(1 1,11 11,11 21,21 21) MULTILINESTRING((10 48,10 21,10 0)) MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
MULTIPOINT(3 6,4 10) MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7)) MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
|
||||
SELECT AsText(t_geometrycollection), AsText(t_geometry) FROM t_gis ORDER by t_pk;
|
||||
AsText(t_geometrycollection) AsText(t_geometry)
|
||||
GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
|
||||
GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9)) GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
|
||||
DROP TABLE t_num,t_datetime,t_string_1,t_string_2,t_gis;
|
747
mysql-test/r/parser_precedence.result
Normal file
747
mysql-test/r/parser_precedence.result
Normal file
|
@ -0,0 +1,747 @@
|
|||
drop table if exists t1_30237_bool;
|
||||
create table t1_30237_bool(A boolean, B boolean, C boolean);
|
||||
insert into t1_30237_bool values
|
||||
(FALSE, FALSE, FALSE),
|
||||
(FALSE, FALSE, NULL),
|
||||
(FALSE, FALSE, TRUE),
|
||||
(FALSE, NULL, FALSE),
|
||||
(FALSE, NULL, NULL),
|
||||
(FALSE, NULL, TRUE),
|
||||
(FALSE, TRUE, FALSE),
|
||||
(FALSE, TRUE, NULL),
|
||||
(FALSE, TRUE, TRUE),
|
||||
(NULL, FALSE, FALSE),
|
||||
(NULL, FALSE, NULL),
|
||||
(NULL, FALSE, TRUE),
|
||||
(NULL, NULL, FALSE),
|
||||
(NULL, NULL, NULL),
|
||||
(NULL, NULL, TRUE),
|
||||
(NULL, TRUE, FALSE),
|
||||
(NULL, TRUE, NULL),
|
||||
(NULL, TRUE, TRUE),
|
||||
(TRUE, FALSE, FALSE),
|
||||
(TRUE, FALSE, NULL),
|
||||
(TRUE, FALSE, TRUE),
|
||||
(TRUE, NULL, FALSE),
|
||||
(TRUE, NULL, NULL),
|
||||
(TRUE, NULL, TRUE),
|
||||
(TRUE, TRUE, FALSE),
|
||||
(TRUE, TRUE, NULL),
|
||||
(TRUE, TRUE, TRUE) ;
|
||||
Testing OR, XOR, AND
|
||||
select A, B, A OR B, A XOR B, A AND B
|
||||
from t1_30237_bool where C is null order by A, B;
|
||||
A B A OR B A XOR B A AND B
|
||||
NULL NULL NULL NULL NULL
|
||||
NULL 0 NULL NULL 0
|
||||
NULL 1 1 NULL NULL
|
||||
0 NULL NULL NULL 0
|
||||
0 0 0 0 0
|
||||
0 1 1 1 0
|
||||
1 NULL 1 NULL NULL
|
||||
1 0 1 1 0
|
||||
1 1 1 0 1
|
||||
Testing that OR is associative
|
||||
select A, B, C, (A OR B) OR C, A OR (B OR C), A OR B OR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A OR B) OR C A OR (B OR C) A OR B OR C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 NULL NULL NULL
|
||||
NULL NULL 1 1 1 1
|
||||
NULL 0 NULL NULL NULL NULL
|
||||
NULL 0 0 NULL NULL NULL
|
||||
NULL 0 1 1 1 1
|
||||
NULL 1 NULL 1 1 1
|
||||
NULL 1 0 1 1 1
|
||||
NULL 1 1 1 1 1
|
||||
0 NULL NULL NULL NULL NULL
|
||||
0 NULL 0 NULL NULL NULL
|
||||
0 NULL 1 1 1 1
|
||||
0 0 NULL NULL NULL NULL
|
||||
0 0 0 0 0 0
|
||||
0 0 1 1 1 1
|
||||
0 1 NULL 1 1 1
|
||||
0 1 0 1 1 1
|
||||
0 1 1 1 1 1
|
||||
1 NULL NULL 1 1 1
|
||||
1 NULL 0 1 1 1
|
||||
1 NULL 1 1 1 1
|
||||
1 0 NULL 1 1 1
|
||||
1 0 0 1 1 1
|
||||
1 0 1 1 1 1
|
||||
1 1 NULL 1 1 1
|
||||
1 1 0 1 1 1
|
||||
1 1 1 1 1 1
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A OR B) OR C) != (A OR (B OR C));
|
||||
count(*)
|
||||
0
|
||||
Testing that XOR is associative
|
||||
select A, B, C, (A XOR B) XOR C, A XOR (B XOR C), A XOR B XOR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A XOR B) XOR C A XOR (B XOR C) A XOR B XOR C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 NULL NULL NULL
|
||||
NULL NULL 1 NULL NULL NULL
|
||||
NULL 0 NULL NULL NULL NULL
|
||||
NULL 0 0 NULL NULL NULL
|
||||
NULL 0 1 NULL NULL NULL
|
||||
NULL 1 NULL NULL NULL NULL
|
||||
NULL 1 0 NULL NULL NULL
|
||||
NULL 1 1 NULL NULL NULL
|
||||
0 NULL NULL NULL NULL NULL
|
||||
0 NULL 0 NULL NULL NULL
|
||||
0 NULL 1 NULL NULL NULL
|
||||
0 0 NULL NULL NULL NULL
|
||||
0 0 0 0 0 0
|
||||
0 0 1 1 1 1
|
||||
0 1 NULL NULL NULL NULL
|
||||
0 1 0 1 1 1
|
||||
0 1 1 0 0 0
|
||||
1 NULL NULL NULL NULL NULL
|
||||
1 NULL 0 NULL NULL NULL
|
||||
1 NULL 1 NULL NULL NULL
|
||||
1 0 NULL NULL NULL NULL
|
||||
1 0 0 1 1 1
|
||||
1 0 1 0 0 0
|
||||
1 1 NULL NULL NULL NULL
|
||||
1 1 0 0 0 0
|
||||
1 1 1 1 1 1
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A XOR B) XOR C) != (A XOR (B XOR C));
|
||||
count(*)
|
||||
0
|
||||
Testing that AND is associative
|
||||
select A, B, C, (A AND B) AND C, A AND (B AND C), A AND B AND C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A AND B) AND C A AND (B AND C) A AND B AND C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 0 0 0
|
||||
NULL NULL 1 NULL NULL NULL
|
||||
NULL 0 NULL 0 0 0
|
||||
NULL 0 0 0 0 0
|
||||
NULL 0 1 0 0 0
|
||||
NULL 1 NULL NULL NULL NULL
|
||||
NULL 1 0 0 0 0
|
||||
NULL 1 1 NULL NULL NULL
|
||||
0 NULL NULL 0 0 0
|
||||
0 NULL 0 0 0 0
|
||||
0 NULL 1 0 0 0
|
||||
0 0 NULL 0 0 0
|
||||
0 0 0 0 0 0
|
||||
0 0 1 0 0 0
|
||||
0 1 NULL 0 0 0
|
||||
0 1 0 0 0 0
|
||||
0 1 1 0 0 0
|
||||
1 NULL NULL NULL NULL NULL
|
||||
1 NULL 0 0 0 0
|
||||
1 NULL 1 NULL NULL NULL
|
||||
1 0 NULL 0 0 0
|
||||
1 0 0 0 0 0
|
||||
1 0 1 0 0 0
|
||||
1 1 NULL NULL NULL NULL
|
||||
1 1 0 0 0 0
|
||||
1 1 1 1 1 1
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A AND B) AND C) != (A AND (B AND C));
|
||||
count(*)
|
||||
0
|
||||
Testing that AND has precedence over OR
|
||||
select A, B, C, (A OR B) AND C, A OR (B AND C), A OR B AND C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A OR B) AND C A OR (B AND C) A OR B AND C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 0 NULL NULL
|
||||
NULL NULL 1 NULL NULL NULL
|
||||
NULL 0 NULL NULL NULL NULL
|
||||
NULL 0 0 0 NULL NULL
|
||||
NULL 0 1 NULL NULL NULL
|
||||
NULL 1 NULL NULL NULL NULL
|
||||
NULL 1 0 0 NULL NULL
|
||||
NULL 1 1 1 1 1
|
||||
0 NULL NULL NULL NULL NULL
|
||||
0 NULL 0 0 0 0
|
||||
0 NULL 1 NULL NULL NULL
|
||||
0 0 NULL 0 0 0
|
||||
0 0 0 0 0 0
|
||||
0 0 1 0 0 0
|
||||
0 1 NULL NULL NULL NULL
|
||||
0 1 0 0 0 0
|
||||
0 1 1 1 1 1
|
||||
1 NULL NULL NULL 1 1
|
||||
1 NULL 0 0 1 1
|
||||
1 NULL 1 1 1 1
|
||||
1 0 NULL NULL 1 1
|
||||
1 0 0 0 1 1
|
||||
1 0 1 1 1 1
|
||||
1 1 NULL NULL 1 1
|
||||
1 1 0 0 1 1
|
||||
1 1 1 1 1 1
|
||||
select count(*) from t1_30237_bool
|
||||
where (A OR (B AND C)) != (A OR B AND C);
|
||||
count(*)
|
||||
0
|
||||
select A, B, C, (A AND B) OR C, A AND (B OR C), A AND B OR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A AND B) OR C A AND (B OR C) A AND B OR C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 NULL NULL NULL
|
||||
NULL NULL 1 1 NULL 1
|
||||
NULL 0 NULL NULL NULL NULL
|
||||
NULL 0 0 0 0 0
|
||||
NULL 0 1 1 NULL 1
|
||||
NULL 1 NULL NULL NULL NULL
|
||||
NULL 1 0 NULL NULL NULL
|
||||
NULL 1 1 1 NULL 1
|
||||
0 NULL NULL NULL 0 NULL
|
||||
0 NULL 0 0 0 0
|
||||
0 NULL 1 1 0 1
|
||||
0 0 NULL NULL 0 NULL
|
||||
0 0 0 0 0 0
|
||||
0 0 1 1 0 1
|
||||
0 1 NULL NULL 0 NULL
|
||||
0 1 0 0 0 0
|
||||
0 1 1 1 0 1
|
||||
1 NULL NULL NULL NULL NULL
|
||||
1 NULL 0 NULL NULL NULL
|
||||
1 NULL 1 1 1 1
|
||||
1 0 NULL NULL NULL NULL
|
||||
1 0 0 0 0 0
|
||||
1 0 1 1 1 1
|
||||
1 1 NULL 1 1 1
|
||||
1 1 0 1 1 1
|
||||
1 1 1 1 1 1
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A AND B) OR C) != (A AND B OR C);
|
||||
count(*)
|
||||
0
|
||||
Testing that AND has precedence over XOR
|
||||
select A, B, C, (A XOR B) AND C, A XOR (B AND C), A XOR B AND C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A XOR B) AND C A XOR (B AND C) A XOR B AND C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 0 NULL NULL
|
||||
NULL NULL 1 NULL NULL NULL
|
||||
NULL 0 NULL NULL NULL NULL
|
||||
NULL 0 0 0 NULL NULL
|
||||
NULL 0 1 NULL NULL NULL
|
||||
NULL 1 NULL NULL NULL NULL
|
||||
NULL 1 0 0 NULL NULL
|
||||
NULL 1 1 NULL NULL NULL
|
||||
0 NULL NULL NULL NULL NULL
|
||||
0 NULL 0 0 0 0
|
||||
0 NULL 1 NULL NULL NULL
|
||||
0 0 NULL 0 0 0
|
||||
0 0 0 0 0 0
|
||||
0 0 1 0 0 0
|
||||
0 1 NULL NULL NULL NULL
|
||||
0 1 0 0 0 0
|
||||
0 1 1 1 1 1
|
||||
1 NULL NULL NULL NULL NULL
|
||||
1 NULL 0 0 1 1
|
||||
1 NULL 1 NULL NULL NULL
|
||||
1 0 NULL NULL 1 1
|
||||
1 0 0 0 1 1
|
||||
1 0 1 1 1 1
|
||||
1 1 NULL 0 NULL NULL
|
||||
1 1 0 0 1 1
|
||||
1 1 1 0 0 0
|
||||
select count(*) from t1_30237_bool
|
||||
where (A XOR (B AND C)) != (A XOR B AND C);
|
||||
count(*)
|
||||
0
|
||||
select A, B, C, (A AND B) XOR C, A AND (B XOR C), A AND B XOR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A AND B) XOR C A AND (B XOR C) A AND B XOR C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 NULL NULL NULL
|
||||
NULL NULL 1 NULL NULL NULL
|
||||
NULL 0 NULL NULL NULL NULL
|
||||
NULL 0 0 0 0 0
|
||||
NULL 0 1 1 NULL 1
|
||||
NULL 1 NULL NULL NULL NULL
|
||||
NULL 1 0 NULL NULL NULL
|
||||
NULL 1 1 NULL 0 NULL
|
||||
0 NULL NULL NULL 0 NULL
|
||||
0 NULL 0 0 0 0
|
||||
0 NULL 1 1 0 1
|
||||
0 0 NULL NULL 0 NULL
|
||||
0 0 0 0 0 0
|
||||
0 0 1 1 0 1
|
||||
0 1 NULL NULL 0 NULL
|
||||
0 1 0 0 0 0
|
||||
0 1 1 1 0 1
|
||||
1 NULL NULL NULL NULL NULL
|
||||
1 NULL 0 NULL NULL NULL
|
||||
1 NULL 1 NULL NULL NULL
|
||||
1 0 NULL NULL NULL NULL
|
||||
1 0 0 0 0 0
|
||||
1 0 1 1 1 1
|
||||
1 1 NULL NULL NULL NULL
|
||||
1 1 0 1 1 1
|
||||
1 1 1 0 0 0
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A AND B) XOR C) != (A AND B XOR C);
|
||||
count(*)
|
||||
0
|
||||
Testing that XOR has precedence over OR
|
||||
select A, B, C, (A XOR B) OR C, A XOR (B OR C), A XOR B OR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A XOR B) OR C A XOR (B OR C) A XOR B OR C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 NULL NULL NULL
|
||||
NULL NULL 1 1 NULL 1
|
||||
NULL 0 NULL NULL NULL NULL
|
||||
NULL 0 0 NULL NULL NULL
|
||||
NULL 0 1 1 NULL 1
|
||||
NULL 1 NULL NULL NULL NULL
|
||||
NULL 1 0 NULL NULL NULL
|
||||
NULL 1 1 1 NULL 1
|
||||
0 NULL NULL NULL NULL NULL
|
||||
0 NULL 0 NULL NULL NULL
|
||||
0 NULL 1 1 1 1
|
||||
0 0 NULL NULL NULL NULL
|
||||
0 0 0 0 0 0
|
||||
0 0 1 1 1 1
|
||||
0 1 NULL 1 1 1
|
||||
0 1 0 1 1 1
|
||||
0 1 1 1 1 1
|
||||
1 NULL NULL NULL NULL NULL
|
||||
1 NULL 0 NULL NULL NULL
|
||||
1 NULL 1 1 0 1
|
||||
1 0 NULL 1 NULL 1
|
||||
1 0 0 1 1 1
|
||||
1 0 1 1 0 1
|
||||
1 1 NULL NULL 0 NULL
|
||||
1 1 0 0 0 0
|
||||
1 1 1 1 0 1
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A XOR B) OR C) != (A XOR B OR C);
|
||||
count(*)
|
||||
0
|
||||
select A, B, C, (A OR B) XOR C, A OR (B XOR C), A OR B XOR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
A B C (A OR B) XOR C A OR (B XOR C) A OR B XOR C
|
||||
NULL NULL NULL NULL NULL NULL
|
||||
NULL NULL 0 NULL NULL NULL
|
||||
NULL NULL 1 NULL NULL NULL
|
||||
NULL 0 NULL NULL NULL NULL
|
||||
NULL 0 0 NULL NULL NULL
|
||||
NULL 0 1 NULL 1 1
|
||||
NULL 1 NULL NULL NULL NULL
|
||||
NULL 1 0 1 1 1
|
||||
NULL 1 1 0 NULL NULL
|
||||
0 NULL NULL NULL NULL NULL
|
||||
0 NULL 0 NULL NULL NULL
|
||||
0 NULL 1 NULL NULL NULL
|
||||
0 0 NULL NULL NULL NULL
|
||||
0 0 0 0 0 0
|
||||
0 0 1 1 1 1
|
||||
0 1 NULL NULL NULL NULL
|
||||
0 1 0 1 1 1
|
||||
0 1 1 0 0 0
|
||||
1 NULL NULL NULL 1 1
|
||||
1 NULL 0 1 1 1
|
||||
1 NULL 1 0 1 1
|
||||
1 0 NULL NULL 1 1
|
||||
1 0 0 1 1 1
|
||||
1 0 1 0 1 1
|
||||
1 1 NULL NULL 1 1
|
||||
1 1 0 1 1 1
|
||||
1 1 1 0 1 1
|
||||
select count(*) from t1_30237_bool
|
||||
where (A OR (B XOR C)) != (A OR B XOR C);
|
||||
count(*)
|
||||
0
|
||||
drop table t1_30237_bool;
|
||||
Testing that NOT has precedence over OR
|
||||
select (NOT FALSE) OR TRUE, NOT (FALSE OR TRUE), NOT FALSE OR TRUE;
|
||||
(NOT FALSE) OR TRUE NOT (FALSE OR TRUE) NOT FALSE OR TRUE
|
||||
1 0 1
|
||||
Testing that NOT has precedence over XOR
|
||||
select (NOT FALSE) XOR FALSE, NOT (FALSE XOR FALSE), NOT FALSE XOR FALSE;
|
||||
(NOT FALSE) XOR FALSE NOT (FALSE XOR FALSE) NOT FALSE XOR FALSE
|
||||
1 1 1
|
||||
Testing that NOT has precedence over AND
|
||||
select (NOT FALSE) AND FALSE, NOT (FALSE AND FALSE), NOT FALSE AND FALSE;
|
||||
(NOT FALSE) AND FALSE NOT (FALSE AND FALSE) NOT FALSE AND FALSE
|
||||
0 1 0
|
||||
Testing that NOT is associative
|
||||
select NOT NOT TRUE, NOT NOT NOT FALSE;
|
||||
NOT NOT TRUE NOT NOT NOT FALSE
|
||||
1 1
|
||||
Testing that IS has precedence over NOT
|
||||
select (NOT NULL) IS TRUE, NOT (NULL IS TRUE), NOT NULL IS TRUE;
|
||||
(NOT NULL) IS TRUE NOT (NULL IS TRUE) NOT NULL IS TRUE
|
||||
0 1 1
|
||||
select (NOT NULL) IS NOT TRUE, NOT (NULL IS NOT TRUE), NOT NULL IS NOT TRUE;
|
||||
(NOT NULL) IS NOT TRUE NOT (NULL IS NOT TRUE) NOT NULL IS NOT TRUE
|
||||
1 0 0
|
||||
select (NOT NULL) IS FALSE, NOT (NULL IS FALSE), NOT NULL IS FALSE;
|
||||
(NOT NULL) IS FALSE NOT (NULL IS FALSE) NOT NULL IS FALSE
|
||||
0 1 1
|
||||
select (NOT NULL) IS NOT FALSE, NOT (NULL IS NOT FALSE), NOT NULL IS NOT FALSE;
|
||||
(NOT NULL) IS NOT FALSE NOT (NULL IS NOT FALSE) NOT NULL IS NOT FALSE
|
||||
1 0 0
|
||||
select (NOT TRUE) IS UNKNOWN, NOT (TRUE IS UNKNOWN), NOT TRUE IS UNKNOWN;
|
||||
(NOT TRUE) IS UNKNOWN NOT (TRUE IS UNKNOWN) NOT TRUE IS UNKNOWN
|
||||
0 1 1
|
||||
select (NOT TRUE) IS NOT UNKNOWN, NOT (TRUE IS NOT UNKNOWN), NOT TRUE IS NOT UNKNOWN;
|
||||
(NOT TRUE) IS NOT UNKNOWN NOT (TRUE IS NOT UNKNOWN) NOT TRUE IS NOT UNKNOWN
|
||||
1 0 0
|
||||
select (NOT TRUE) IS NULL, NOT (TRUE IS NULL), NOT TRUE IS NULL;
|
||||
(NOT TRUE) IS NULL NOT (TRUE IS NULL) NOT TRUE IS NULL
|
||||
0 1 1
|
||||
select (NOT TRUE) IS NOT NULL, NOT (TRUE IS NOT NULL), NOT TRUE IS NOT NULL;
|
||||
(NOT TRUE) IS NOT NULL NOT (TRUE IS NOT NULL) NOT TRUE IS NOT NULL
|
||||
1 0 0
|
||||
Testing that IS [NOT] TRUE/FALSE/UNKNOWN predicates are not associative
|
||||
select TRUE IS TRUE IS TRUE IS TRUE;
|
||||
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 'IS TRUE IS TRUE' at line 1
|
||||
select FALSE IS NOT TRUE IS NOT TRUE IS NOT TRUE;
|
||||
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 'IS NOT TRUE IS NOT TRUE' at line 1
|
||||
select NULL IS FALSE IS FALSE IS FALSE;
|
||||
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 'IS FALSE IS FALSE' at line 1
|
||||
select TRUE IS NOT FALSE IS NOT FALSE IS NOT FALSE;
|
||||
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 'IS NOT FALSE IS NOT FALSE' at line 1
|
||||
select FALSE IS UNKNOWN IS UNKNOWN IS UNKNOWN;
|
||||
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 'IS UNKNOWN IS UNKNOWN' at line 1
|
||||
select TRUE IS NOT UNKNOWN IS NOT UNKNOWN IS NOT UNKNOWN;
|
||||
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 'IS NOT UNKNOWN IS NOT UNKNOWN' at line 1
|
||||
Testing that IS [NOT] NULL predicates are associative
|
||||
select FALSE IS NULL IS NULL IS NULL;
|
||||
FALSE IS NULL IS NULL IS NULL
|
||||
0
|
||||
select TRUE IS NOT NULL IS NOT NULL IS NOT NULL;
|
||||
TRUE IS NOT NULL IS NOT NULL IS NOT NULL
|
||||
1
|
||||
Testing that comparison operators are left associative
|
||||
select 1 <=> 2 <=> 2, (1 <=> 2) <=> 2, 1 <=> (2 <=> 2);
|
||||
1 <=> 2 <=> 2 (1 <=> 2) <=> 2 1 <=> (2 <=> 2)
|
||||
0 0 1
|
||||
select 1 = 2 = 2, (1 = 2) = 2, 1 = (2 = 2);
|
||||
1 = 2 = 2 (1 = 2) = 2 1 = (2 = 2)
|
||||
0 0 1
|
||||
select 1 != 2 != 3, (1 != 2) != 3, 1 != (2 != 3);
|
||||
1 != 2 != 3 (1 != 2) != 3 1 != (2 != 3)
|
||||
1 1 0
|
||||
select 1 <> 2 <> 3, (1 <> 2) <> 3, 1 <> (2 <> 3);
|
||||
1 <> 2 <> 3 (1 <> 2) <> 3 1 <> (2 <> 3)
|
||||
1 1 0
|
||||
select 1 < 2 < 3, (1 < 2) < 3, 1 < (2 < 3);
|
||||
1 < 2 < 3 (1 < 2) < 3 1 < (2 < 3)
|
||||
1 1 0
|
||||
select 3 <= 2 <= 1, (3 <= 2) <= 1, 3 <= (2 <= 1);
|
||||
3 <= 2 <= 1 (3 <= 2) <= 1 3 <= (2 <= 1)
|
||||
1 1 0
|
||||
select 1 > 2 > 3, (1 > 2) > 3, 1 > (2 > 3);
|
||||
1 > 2 > 3 (1 > 2) > 3 1 > (2 > 3)
|
||||
0 0 1
|
||||
select 1 >= 2 >= 3, (1 >= 2) >= 3, 1 >= (2 >= 3);
|
||||
1 >= 2 >= 3 (1 >= 2) >= 3 1 >= (2 >= 3)
|
||||
0 0 1
|
||||
Testing that | is associative
|
||||
select 0xF0 | 0x0F | 0x55, (0xF0 | 0x0F) | 0x55, 0xF0 | (0x0F | 0x55);
|
||||
0xF0 | 0x0F | 0x55 (0xF0 | 0x0F) | 0x55 0xF0 | (0x0F | 0x55)
|
||||
255 255 255
|
||||
Testing that & is associative
|
||||
select 0xF5 & 0x5F & 0x55, (0xF5 & 0x5F) & 0x55, 0xF5 & (0x5F & 0x55);
|
||||
0xF5 & 0x5F & 0x55 (0xF5 & 0x5F) & 0x55 0xF5 & (0x5F & 0x55)
|
||||
85 85 85
|
||||
Testing that << is left associative
|
||||
select 4 << 3 << 2, (4 << 3) << 2, 4 << (3 << 2);
|
||||
4 << 3 << 2 (4 << 3) << 2 4 << (3 << 2)
|
||||
128 128 16384
|
||||
Testing that >> is left associative
|
||||
select 256 >> 3 >> 2, (256 >> 3) >> 2, 256 >> (3 >> 2);
|
||||
256 >> 3 >> 2 (256 >> 3) >> 2 256 >> (3 >> 2)
|
||||
8 8 256
|
||||
Testing that & has precedence over |
|
||||
select 0xF0 & 0x0F | 0x55, (0xF0 & 0x0F) | 0x55, 0xF0 & (0x0F | 0x55);
|
||||
0xF0 & 0x0F | 0x55 (0xF0 & 0x0F) | 0x55 0xF0 & (0x0F | 0x55)
|
||||
85 85 80
|
||||
select 0x55 | 0xF0 & 0x0F, (0x55 | 0xF0) & 0x0F, 0x55 | (0xF0 & 0x0F);
|
||||
0x55 | 0xF0 & 0x0F (0x55 | 0xF0) & 0x0F 0x55 | (0xF0 & 0x0F)
|
||||
85 5 85
|
||||
Testing that << has precedence over |
|
||||
select 0x0F << 4 | 0x0F, (0x0F << 4) | 0x0F, 0x0F << (4 | 0x0F);
|
||||
0x0F << 4 | 0x0F (0x0F << 4) | 0x0F 0x0F << (4 | 0x0F)
|
||||
255 255 491520
|
||||
select 0x0F | 0x0F << 4, (0x0F | 0x0F) << 4, 0x0F | (0x0F << 4);
|
||||
0x0F | 0x0F << 4 (0x0F | 0x0F) << 4 0x0F | (0x0F << 4)
|
||||
255 240 255
|
||||
Testing that >> has precedence over |
|
||||
select 0xF0 >> 4 | 0xFF, (0xF0 >> 4) | 0xFF, 0xF0 >> (4 | 0xFF);
|
||||
0xF0 >> 4 | 0xFF (0xF0 >> 4) | 0xFF 0xF0 >> (4 | 0xFF)
|
||||
255 255 0
|
||||
select 0xFF | 0xF0 >> 4, (0xFF | 0xF0) >> 4, 0xFF | (0xF0 >> 4);
|
||||
0xFF | 0xF0 >> 4 (0xFF | 0xF0) >> 4 0xFF | (0xF0 >> 4)
|
||||
255 15 255
|
||||
Testing that << has precedence over &
|
||||
select 0x0F << 4 & 0xF0, (0x0F << 4) & 0xF0, 0x0F << (4 & 0xF0);
|
||||
0x0F << 4 & 0xF0 (0x0F << 4) & 0xF0 0x0F << (4 & 0xF0)
|
||||
240 240 15
|
||||
select 0xF0 & 0x0F << 4, (0xF0 & 0x0F) << 4, 0xF0 & (0x0F << 4);
|
||||
0xF0 & 0x0F << 4 (0xF0 & 0x0F) << 4 0xF0 & (0x0F << 4)
|
||||
240 0 240
|
||||
Testing that >> has precedence over &
|
||||
select 0xF0 >> 4 & 0x55, (0xF0 >> 4) & 0x55, 0xF0 >> (4 & 0x55);
|
||||
0xF0 >> 4 & 0x55 (0xF0 >> 4) & 0x55 0xF0 >> (4 & 0x55)
|
||||
5 5 15
|
||||
select 0x0F & 0xF0 >> 4, (0x0F & 0xF0) >> 4, 0x0F & (0xF0 >> 4);
|
||||
0x0F & 0xF0 >> 4 (0x0F & 0xF0) >> 4 0x0F & (0xF0 >> 4)
|
||||
15 0 15
|
||||
Testing that >> and << have the same precedence
|
||||
select 0xFF >> 4 << 2, (0xFF >> 4) << 2, 0xFF >> (4 << 2);
|
||||
0xFF >> 4 << 2 (0xFF >> 4) << 2 0xFF >> (4 << 2)
|
||||
60 60 0
|
||||
select 0x0F << 4 >> 2, (0x0F << 4) >> 2, 0x0F << (4 >> 2);
|
||||
0x0F << 4 >> 2 (0x0F << 4) >> 2 0x0F << (4 >> 2)
|
||||
60 60 30
|
||||
Testing that binary + is associative
|
||||
select 1 + 2 + 3, (1 + 2) + 3, 1 + (2 + 3);
|
||||
1 + 2 + 3 (1 + 2) + 3 1 + (2 + 3)
|
||||
6 6 6
|
||||
Testing that binary - is left associative
|
||||
select 1 - 2 - 3, (1 - 2) - 3, 1 - (2 - 3);
|
||||
1 - 2 - 3 (1 - 2) - 3 1 - (2 - 3)
|
||||
-4 -4 2
|
||||
Testing that binary + and binary - have the same precedence
|
||||
select 1 + 2 - 3, (1 + 2) - 3, 1 + (2 - 3);
|
||||
1 + 2 - 3 (1 + 2) - 3 1 + (2 - 3)
|
||||
0 0 0
|
||||
select 1 - 2 + 3, (1 - 2) + 3, 1 - (2 + 3);
|
||||
1 - 2 + 3 (1 - 2) + 3 1 - (2 + 3)
|
||||
2 2 -4
|
||||
Testing that binary + has precedence over |
|
||||
select 0xF0 + 0x0F | 0x55, (0xF0 + 0x0F) | 0x55, 0xF0 + (0x0F | 0x55);
|
||||
0xF0 + 0x0F | 0x55 (0xF0 + 0x0F) | 0x55 0xF0 + (0x0F | 0x55)
|
||||
255 255 335
|
||||
select 0x55 | 0xF0 + 0x0F, (0x55 | 0xF0) + 0x0F, 0x55 | (0xF0 + 0x0F);
|
||||
0x55 | 0xF0 + 0x0F (0x55 | 0xF0) + 0x0F 0x55 | (0xF0 + 0x0F)
|
||||
255 260 255
|
||||
Testing that binary + has precedence over &
|
||||
select 0xF0 + 0x0F & 0x55, (0xF0 + 0x0F) & 0x55, 0xF0 + (0x0F & 0x55);
|
||||
0xF0 + 0x0F & 0x55 (0xF0 + 0x0F) & 0x55 0xF0 + (0x0F & 0x55)
|
||||
85 85 245
|
||||
select 0x55 & 0xF0 + 0x0F, (0x55 & 0xF0) + 0x0F, 0x55 & (0xF0 + 0x0F);
|
||||
0x55 & 0xF0 + 0x0F (0x55 & 0xF0) + 0x0F 0x55 & (0xF0 + 0x0F)
|
||||
85 95 85
|
||||
Testing that binary + has precedence over <<
|
||||
select 2 + 3 << 4, (2 + 3) << 4, 2 + (3 << 4);
|
||||
2 + 3 << 4 (2 + 3) << 4 2 + (3 << 4)
|
||||
80 80 50
|
||||
select 3 << 4 + 2, (3 << 4) + 2, 3 << (4 + 2);
|
||||
3 << 4 + 2 (3 << 4) + 2 3 << (4 + 2)
|
||||
192 50 192
|
||||
Testing that binary + has precedence over >>
|
||||
select 4 + 3 >> 2, (4 + 3) >> 2, 4 + (3 >> 2);
|
||||
4 + 3 >> 2 (4 + 3) >> 2 4 + (3 >> 2)
|
||||
1 1 4
|
||||
select 3 >> 2 + 1, (3 >> 2) + 1, 3 >> (2 + 1);
|
||||
3 >> 2 + 1 (3 >> 2) + 1 3 >> (2 + 1)
|
||||
0 1 0
|
||||
Testing that binary - has precedence over |
|
||||
select 0xFF - 0x0F | 0x55, (0xFF - 0x0F) | 0x55, 0xFF - (0x0F | 0x55);
|
||||
0xFF - 0x0F | 0x55 (0xFF - 0x0F) | 0x55 0xFF - (0x0F | 0x55)
|
||||
245 245 160
|
||||
select 0x55 | 0xFF - 0xF0, (0x55 | 0xFF) - 0xF0, 0x55 | (0xFF - 0xF0);
|
||||
0x55 | 0xFF - 0xF0 (0x55 | 0xFF) - 0xF0 0x55 | (0xFF - 0xF0)
|
||||
95 15 95
|
||||
Testing that binary - has precedence over &
|
||||
select 0xFF - 0xF0 & 0x55, (0xFF - 0xF0) & 0x55, 0xFF - (0xF0 & 0x55);
|
||||
0xFF - 0xF0 & 0x55 (0xFF - 0xF0) & 0x55 0xFF - (0xF0 & 0x55)
|
||||
5 5 175
|
||||
select 0x55 & 0xFF - 0xF0, (0x55 & 0xFF) - 0xF0, 0x55 & (0xFF - 0xF0);
|
||||
0x55 & 0xFF - 0xF0 (0x55 & 0xFF) - 0xF0 0x55 & (0xFF - 0xF0)
|
||||
5 -155 5
|
||||
Testing that binary - has precedence over <<
|
||||
select 16 - 3 << 2, (16 - 3) << 2, 16 - (3 << 2);
|
||||
16 - 3 << 2 (16 - 3) << 2 16 - (3 << 2)
|
||||
52 52 4
|
||||
select 4 << 3 - 2, (4 << 3) - 2, 4 << (3 - 2);
|
||||
4 << 3 - 2 (4 << 3) - 2 4 << (3 - 2)
|
||||
8 30 8
|
||||
Testing that binary - has precedence over >>
|
||||
select 16 - 3 >> 2, (16 - 3) >> 2, 16 - (3 >> 2);
|
||||
16 - 3 >> 2 (16 - 3) >> 2 16 - (3 >> 2)
|
||||
3 3 16
|
||||
select 16 >> 3 - 2, (16 >> 3) - 2, 16 >> (3 - 2);
|
||||
16 >> 3 - 2 (16 >> 3) - 2 16 >> (3 - 2)
|
||||
8 0 8
|
||||
Testing that * is associative
|
||||
select 2 * 3 * 4, (2 * 3) * 4, 2 * (3 * 4);
|
||||
2 * 3 * 4 (2 * 3) * 4 2 * (3 * 4)
|
||||
24 24 24
|
||||
Testing that * has precedence over |
|
||||
select 2 * 0x40 | 0x0F, (2 * 0x40) | 0x0F, 2 * (0x40 | 0x0F);
|
||||
2 * 0x40 | 0x0F (2 * 0x40) | 0x0F 2 * (0x40 | 0x0F)
|
||||
143 143 158
|
||||
select 0x0F | 2 * 0x40, (0x0F | 2) * 0x40, 0x0F | (2 * 0x40);
|
||||
0x0F | 2 * 0x40 (0x0F | 2) * 0x40 0x0F | (2 * 0x40)
|
||||
143 960 143
|
||||
Testing that * has precedence over &
|
||||
select 2 * 0x40 & 0x55, (2 * 0x40) & 0x55, 2 * (0x40 & 0x55);
|
||||
2 * 0x40 & 0x55 (2 * 0x40) & 0x55 2 * (0x40 & 0x55)
|
||||
0 0 128
|
||||
select 0xF0 & 2 * 0x40, (0xF0 & 2) * 0x40, 0xF0 & (2 * 0x40);
|
||||
0xF0 & 2 * 0x40 (0xF0 & 2) * 0x40 0xF0 & (2 * 0x40)
|
||||
128 0 128
|
||||
Testing that * has precedence over <<
|
||||
select 5 * 3 << 4, (5 * 3) << 4, 5 * (3 << 4);
|
||||
5 * 3 << 4 (5 * 3) << 4 5 * (3 << 4)
|
||||
240 240 240
|
||||
select 2 << 3 * 4, (2 << 3) * 4, 2 << (3 * 4);
|
||||
2 << 3 * 4 (2 << 3) * 4 2 << (3 * 4)
|
||||
8192 64 8192
|
||||
Testing that * has precedence over >>
|
||||
select 3 * 4 >> 2, (3 * 4) >> 2, 3 * (4 >> 2);
|
||||
3 * 4 >> 2 (3 * 4) >> 2 3 * (4 >> 2)
|
||||
3 3 3
|
||||
select 4 >> 2 * 3, (4 >> 2) * 3, 4 >> (2 * 3);
|
||||
4 >> 2 * 3 (4 >> 2) * 3 4 >> (2 * 3)
|
||||
0 3 0
|
||||
Testing that * has precedence over binary +
|
||||
select 2 * 3 + 4, (2 * 3) + 4, 2 * (3 + 4);
|
||||
2 * 3 + 4 (2 * 3) + 4 2 * (3 + 4)
|
||||
10 10 14
|
||||
select 2 + 3 * 4, (2 + 3) * 4, 2 + (3 * 4);
|
||||
2 + 3 * 4 (2 + 3) * 4 2 + (3 * 4)
|
||||
14 20 14
|
||||
Testing that * has precedence over binary -
|
||||
select 4 * 3 - 2, (4 * 3) - 2, 4 * (3 - 2);
|
||||
4 * 3 - 2 (4 * 3) - 2 4 * (3 - 2)
|
||||
10 10 4
|
||||
select 4 - 3 * 2, (4 - 3) * 2, 4 - (3 * 2);
|
||||
4 - 3 * 2 (4 - 3) * 2 4 - (3 * 2)
|
||||
-2 2 -2
|
||||
Testing that / is left associative
|
||||
select 15 / 5 / 3, (15 / 5) / 3, 15 / (5 / 3);
|
||||
15 / 5 / 3 (15 / 5) / 3 15 / (5 / 3)
|
||||
1.00000000 1.00000000 9.0000
|
||||
Testing that / has precedence over |
|
||||
select 105 / 5 | 2, (105 / 5) | 2, 105 / (5 | 2);
|
||||
105 / 5 | 2 (105 / 5) | 2 105 / (5 | 2)
|
||||
23 23 15.0000
|
||||
select 105 | 2 / 5, (105 | 2) / 5, 105 | (2 / 5);
|
||||
105 | 2 / 5 (105 | 2) / 5 105 | (2 / 5)
|
||||
105 21.4000 105
|
||||
Testing that / has precedence over &
|
||||
select 105 / 5 & 0x0F, (105 / 5) & 0x0F, 105 / (5 & 0x0F);
|
||||
105 / 5 & 0x0F (105 / 5) & 0x0F 105 / (5 & 0x0F)
|
||||
5 5 21.0000
|
||||
select 0x0F & 105 / 5, (0x0F & 105) / 5, 0x0F & (105 / 5);
|
||||
0x0F & 105 / 5 (0x0F & 105) / 5 0x0F & (105 / 5)
|
||||
5 1.8000 5
|
||||
Testing that / has precedence over <<
|
||||
select 0x80 / 4 << 2, (0x80 / 4) << 2, 0x80 / (4 << 2);
|
||||
0x80 / 4 << 2 (0x80 / 4) << 2 0x80 / (4 << 2)
|
||||
128 128 8.0000
|
||||
select 0x80 << 4 / 2, (0x80 << 4) / 2, 0x80 << (4 / 2);
|
||||
0x80 << 4 / 2 (0x80 << 4) / 2 0x80 << (4 / 2)
|
||||
512 1024.0000 512
|
||||
Testing that / has precedence over >>
|
||||
select 0x80 / 4 >> 2, (0x80 / 4) >> 2, 0x80 / (4 >> 2);
|
||||
0x80 / 4 >> 2 (0x80 / 4) >> 2 0x80 / (4 >> 2)
|
||||
8 8 128.0000
|
||||
select 0x80 >> 4 / 2, (0x80 >> 4) / 2, 0x80 >> (4 / 2);
|
||||
0x80 >> 4 / 2 (0x80 >> 4) / 2 0x80 >> (4 / 2)
|
||||
32 4.0000 32
|
||||
Testing that / has precedence over binary +
|
||||
select 0x80 / 2 + 2, (0x80 / 2) + 2, 0x80 / (2 + 2);
|
||||
0x80 / 2 + 2 (0x80 / 2) + 2 0x80 / (2 + 2)
|
||||
66.0000 66.0000 32.0000
|
||||
select 0x80 + 2 / 2, (0x80 + 2) / 2, 0x80 + (2 / 2);
|
||||
0x80 + 2 / 2 (0x80 + 2) / 2 0x80 + (2 / 2)
|
||||
129.0000 65.0000 129.0000
|
||||
Testing that / has precedence over binary -
|
||||
select 0x80 / 4 - 2, (0x80 / 4) - 2, 0x80 / (4 - 2);
|
||||
0x80 / 4 - 2 (0x80 / 4) - 2 0x80 / (4 - 2)
|
||||
30.0000 30.0000 64.0000
|
||||
select 0x80 - 4 / 2, (0x80 - 4) / 2, 0x80 - (4 / 2);
|
||||
0x80 - 4 / 2 (0x80 - 4) / 2 0x80 - (4 / 2)
|
||||
126.0000 62.0000 126.0000
|
||||
Testing that ^ is associative
|
||||
select 0xFF ^ 0xF0 ^ 0x0F, (0xFF ^ 0xF0) ^ 0x0F, 0xFF ^ (0xF0 ^ 0x0F);
|
||||
0xFF ^ 0xF0 ^ 0x0F (0xFF ^ 0xF0) ^ 0x0F 0xFF ^ (0xF0 ^ 0x0F)
|
||||
0 0 0
|
||||
select 0xFF ^ 0xF0 ^ 0x55, (0xFF ^ 0xF0) ^ 0x55, 0xFF ^ (0xF0 ^ 0x55);
|
||||
0xFF ^ 0xF0 ^ 0x55 (0xFF ^ 0xF0) ^ 0x55 0xFF ^ (0xF0 ^ 0x55)
|
||||
90 90 90
|
||||
Testing that ^ has precedence over |
|
||||
select 0xFF ^ 0xF0 | 0x0F, (0xFF ^ 0xF0) | 0x0F, 0xFF ^ (0xF0 | 0x0F);
|
||||
0xFF ^ 0xF0 | 0x0F (0xFF ^ 0xF0) | 0x0F 0xFF ^ (0xF0 | 0x0F)
|
||||
15 15 0
|
||||
select 0xF0 | 0xFF ^ 0xF0, (0xF0 | 0xFF) ^ 0xF0, 0xF0 | (0xFF ^ 0xF0);
|
||||
0xF0 | 0xFF ^ 0xF0 (0xF0 | 0xFF) ^ 0xF0 0xF0 | (0xFF ^ 0xF0)
|
||||
255 15 255
|
||||
Testing that ^ has precedence over &
|
||||
select 0xFF ^ 0xF0 & 0x0F, (0xFF ^ 0xF0) & 0x0F, 0xFF ^ (0xF0 & 0x0F);
|
||||
0xFF ^ 0xF0 & 0x0F (0xFF ^ 0xF0) & 0x0F 0xFF ^ (0xF0 & 0x0F)
|
||||
15 15 255
|
||||
select 0x0F & 0xFF ^ 0xF0, (0x0F & 0xFF) ^ 0xF0, 0x0F & (0xFF ^ 0xF0);
|
||||
0x0F & 0xFF ^ 0xF0 (0x0F & 0xFF) ^ 0xF0 0x0F & (0xFF ^ 0xF0)
|
||||
15 255 15
|
||||
Testing that ^ has precedence over <<
|
||||
select 0xFF ^ 0xF0 << 2, (0xFF ^ 0xF0) << 2, 0xFF ^ (0xF0 << 2);
|
||||
0xFF ^ 0xF0 << 2 (0xFF ^ 0xF0) << 2 0xFF ^ (0xF0 << 2)
|
||||
60 60 831
|
||||
select 0x0F << 2 ^ 0xFF, (0x0F << 2) ^ 0xFF, 0x0F << (2 ^ 0xFF);
|
||||
0x0F << 2 ^ 0xFF (0x0F << 2) ^ 0xFF 0x0F << (2 ^ 0xFF)
|
||||
0 195 0
|
||||
Testing that ^ has precedence over >>
|
||||
select 0xFF ^ 0xF0 >> 2, (0xFF ^ 0xF0) >> 2, 0xFF ^ (0xF0 >> 2);
|
||||
0xFF ^ 0xF0 >> 2 (0xFF ^ 0xF0) >> 2 0xFF ^ (0xF0 >> 2)
|
||||
3 3 195
|
||||
select 0xFF >> 2 ^ 0xF0, (0xFF >> 2) ^ 0xF0, 0xFF >> (2 ^ 0xF0);
|
||||
0xFF >> 2 ^ 0xF0 (0xFF >> 2) ^ 0xF0 0xFF >> (2 ^ 0xF0)
|
||||
0 207 0
|
||||
Testing that ^ has precedence over binary +
|
||||
select 0xFF ^ 0xF0 + 0x0F, (0xFF ^ 0xF0) + 0x0F, 0xFF ^ (0xF0 + 0x0F);
|
||||
0xFF ^ 0xF0 + 0x0F (0xFF ^ 0xF0) + 0x0F 0xFF ^ (0xF0 + 0x0F)
|
||||
30 30 0
|
||||
select 0x0F + 0xFF ^ 0xF0, (0x0F + 0xFF) ^ 0xF0, 0x0F + (0xFF ^ 0xF0);
|
||||
0x0F + 0xFF ^ 0xF0 (0x0F + 0xFF) ^ 0xF0 0x0F + (0xFF ^ 0xF0)
|
||||
30 510 30
|
||||
Testing that ^ has precedence over binary -
|
||||
select 0xFF ^ 0xF0 - 1, (0xFF ^ 0xF0) - 1, 0xFF ^ (0xF0 - 1);
|
||||
0xFF ^ 0xF0 - 1 (0xFF ^ 0xF0) - 1 0xFF ^ (0xF0 - 1)
|
||||
14 14 16
|
||||
select 0x55 - 0x0F ^ 0x55, (0x55 - 0x0F) ^ 0x55, 0x55 - (0x0F ^ 0x55);
|
||||
0x55 - 0x0F ^ 0x55 (0x55 - 0x0F) ^ 0x55 0x55 - (0x0F ^ 0x55)
|
||||
-5 19 -5
|
||||
Testing that ^ has precedence over *
|
||||
select 0xFF ^ 0xF0 * 2, (0xFF ^ 0xF0) * 2, 0xFF ^ (0xF0 * 2);
|
||||
0xFF ^ 0xF0 * 2 (0xFF ^ 0xF0) * 2 0xFF ^ (0xF0 * 2)
|
||||
30 30 287
|
||||
select 2 * 0xFF ^ 0xF0, (2 * 0xFF) ^ 0xF0, 2 * (0xFF ^ 0xF0);
|
||||
2 * 0xFF ^ 0xF0 (2 * 0xFF) ^ 0xF0 2 * (0xFF ^ 0xF0)
|
||||
30 270 30
|
||||
Testing that ^ has precedence over /
|
||||
select 0xFF ^ 0xF0 / 2, (0xFF ^ 0xF0) / 2, 0xFF ^ (0xF0 / 2);
|
||||
0xFF ^ 0xF0 / 2 (0xFF ^ 0xF0) / 2 0xFF ^ (0xF0 / 2)
|
||||
7.5000 7.5000 135
|
||||
select 0xF2 / 2 ^ 0xF0, (0xF2 / 2) ^ 0xF0, 0xF2 / (2 ^ 0xF0);
|
||||
0xF2 / 2 ^ 0xF0 (0xF2 / 2) ^ 0xF0 0xF2 / (2 ^ 0xF0)
|
||||
1.0000 137 1.0000
|
||||
Testing that ^ has precedence over %
|
||||
select 0xFF ^ 0xF0 % 0x20, (0xFF ^ 0xF0) % 0x20, 0xFF ^ (0xF0 % 0x20);
|
||||
0xFF ^ 0xF0 % 0x20 (0xFF ^ 0xF0) % 0x20 0xFF ^ (0xF0 % 0x20)
|
||||
15 15 239
|
||||
select 0xFF % 0x20 ^ 0xF0, (0xFF % 0x20) ^ 0xF0, 0xFF % (0x20 ^ 0xF0);
|
||||
0xFF % 0x20 ^ 0xF0 (0xFF % 0x20) ^ 0xF0 0xFF % (0x20 ^ 0xF0)
|
||||
47 239 47
|
||||
Testing that ^ has precedence over DIV
|
||||
select 0xFF ^ 0xF0 DIV 2, (0xFF ^ 0xF0) DIV 2, 0xFF ^ (0xF0 DIV 2);
|
||||
0xFF ^ 0xF0 DIV 2 (0xFF ^ 0xF0) DIV 2 0xFF ^ (0xF0 DIV 2)
|
||||
7 7 135
|
||||
select 0xF2 DIV 2 ^ 0xF0, (0xF2 DIV 2) ^ 0xF0, 0xF2 DIV (2 ^ 0xF0);
|
||||
0xF2 DIV 2 ^ 0xF0 (0xF2 DIV 2) ^ 0xF0 0xF2 DIV (2 ^ 0xF0)
|
||||
1 137 1
|
||||
Testing that ^ has precedence over MOD
|
||||
select 0xFF ^ 0xF0 MOD 0x20, (0xFF ^ 0xF0) MOD 0x20, 0xFF ^ (0xF0 MOD 0x20);
|
||||
0xFF ^ 0xF0 MOD 0x20 (0xFF ^ 0xF0) MOD 0x20 0xFF ^ (0xF0 MOD 0x20)
|
||||
15 15 239
|
||||
select 0xFF MOD 0x20 ^ 0xF0, (0xFF MOD 0x20) ^ 0xF0, 0xFF MOD (0x20 ^ 0xF0);
|
||||
0xFF MOD 0x20 ^ 0xF0 (0xFF MOD 0x20) ^ 0xF0 0xFF MOD (0x20 ^ 0xF0)
|
||||
47 239 47
|
|
@ -269,7 +269,7 @@ prepare stmt4 from ' show columns from t2 where field in (select ?) ';
|
|||
SET @arg00="a";
|
||||
execute stmt4 using @arg00;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
a int(11) NO PRI NULL
|
||||
SET @arg00="b";
|
||||
execute stmt4 using @arg00;
|
||||
Field Type Null Key Default Extra
|
||||
|
@ -280,7 +280,7 @@ Field Type Null Key Default Extra
|
|||
prepare stmt4 from ' show columns from t2 from test like ''a%'' ';
|
||||
execute stmt4;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
a int(11) NO PRI NULL
|
||||
create index t2_idx on t2(b);
|
||||
prepare stmt4 from ' show index from t2 from test ';
|
||||
execute stmt4;
|
||||
|
@ -409,7 +409,7 @@ drop database mysqltest ;
|
|||
prepare stmt3 from ' describe t2 ';
|
||||
execute stmt3;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO PRI
|
||||
a int(11) NO PRI NULL
|
||||
b char(10) YES MUL NULL
|
||||
drop table t2 ;
|
||||
execute stmt3;
|
||||
|
|
|
@ -4062,4 +4062,38 @@ SHOW WARNINGS;
|
|||
Level Code Message
|
||||
Note 1003 select '0' AS `c1` from `test`.`t1` `join_0` join `test`.`t1` `join_1` join `test`.`t1` `join_2` join `test`.`t1` `join_3` join `test`.`t1` `join_4` join `test`.`t1` `join_5` join `test`.`t1` `join_6` join `test`.`t1` `join_7` where 0 group by '0','0','0','0','0'
|
||||
DROP TABLE t1;
|
||||
SELECT 1 AS ` `;
|
||||
|
||||
1
|
||||
Warnings:
|
||||
Warning 1474 Name ' ' has become ''
|
||||
SELECT 1 AS ` `;
|
||||
|
||||
1
|
||||
Warnings:
|
||||
Warning 1474 Name ' ' has become ''
|
||||
SELECT 1 AS ` x`;
|
||||
x
|
||||
1
|
||||
Warnings:
|
||||
Warning 1466 Leading spaces are removed from name ' x'
|
||||
CREATE VIEW v1 AS SELECT 1 AS ` `;
|
||||
Warnings:
|
||||
Warning 1474 Name ' ' has become ''
|
||||
SELECT `` FROM v1;
|
||||
|
||||
1
|
||||
CREATE VIEW v2 AS SELECT 1 AS ` `;
|
||||
Warnings:
|
||||
Warning 1474 Name ' ' has become ''
|
||||
SELECT `` FROM v2;
|
||||
|
||||
1
|
||||
CREATE VIEW v3 AS SELECT 1 AS ` x`;
|
||||
Warnings:
|
||||
Warning 1466 Leading spaces are removed from name ' x'
|
||||
SELECT `x` FROM v3;
|
||||
x
|
||||
1
|
||||
DROP VIEW v1, v2, v3;
|
||||
End of 5.0 tests
|
||||
|
|
2155
mysql-test/r/shm.result
Normal file
2155
mysql-test/r/shm.result
Normal file
File diff suppressed because it is too large
Load diff
|
@ -228,7 +228,7 @@ show full columns from t1;
|
|||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
test_set set('val1','val2','val3') latin1_swedish_ci NO select,insert,update,references
|
||||
name char(20) latin1_swedish_ci YES O'Brien select,insert,update,references O'Brien as default
|
||||
c int(11) NULL NO select,insert,update,references int column
|
||||
c int(11) NULL NO NULL select,insert,update,references int column
|
||||
c-b int(11) NULL YES NULL select,insert,update,references name with a minus
|
||||
space 2 int(11) NULL YES NULL select,insert,update,references name with a space
|
||||
drop table t1;
|
||||
|
@ -901,7 +901,7 @@ def COLUMNS COLUMN_KEY Key 253 9 3 N 1 0 33
|
|||
def COLUMNS COLUMN_DEFAULT Default 252 589815 0 Y 16 0 33
|
||||
def COLUMNS EXTRA Extra 253 60 0 N 1 0 33
|
||||
Field Type Null Key Default Extra
|
||||
c int(11) NO PRI
|
||||
c int(11) NO PRI NULL
|
||||
----------------------------------------------------------------
|
||||
SHOW TRIGGERS LIKE 't1';
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
|
|
|
@ -2468,7 +2468,7 @@ Database (foo)
|
|||
Level Code Message
|
||||
Field Type Null Key Default Extra
|
||||
id char(16) NO
|
||||
data int(11) NO
|
||||
data int(11) NO NULL
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
Database Table In_use Name_locked
|
||||
Privilege Context Comment
|
||||
|
@ -2520,7 +2520,7 @@ Database (foo)
|
|||
Level Code Message
|
||||
Field Type Null Key Default Extra
|
||||
id char(16) NO
|
||||
data int(11) NO
|
||||
data int(11) NO NULL
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
Database Table In_use Name_locked
|
||||
Privilege Context Comment
|
||||
|
@ -6315,4 +6315,78 @@ CALL p1();
|
|||
NULL
|
||||
SET NAMES default;
|
||||
DROP PROCEDURE p1;
|
||||
create function f1()
|
||||
returns int(11)
|
||||
not deterministic
|
||||
contains sql
|
||||
sql security definer
|
||||
comment ''
|
||||
begin
|
||||
declare x int(11);
|
||||
set x=-1;
|
||||
return x;
|
||||
end|
|
||||
create view v1 as select 1 as one, f1() as days;
|
||||
show create view test.v1;
|
||||
View Create View
|
||||
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `test`.`v1` AS select 1 AS `one`,`f1`() AS `days`
|
||||
select column_name from information_schema.columns
|
||||
where table_name='v1' and table_schema='test';
|
||||
column_name
|
||||
one
|
||||
days
|
||||
drop view v1;
|
||||
drop function f1;
|
||||
|
||||
# Bug#13675.
|
||||
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
|
||||
CREATE PROCEDURE p1(v DATETIME) CREATE TABLE t1 SELECT v;
|
||||
CREATE PROCEDURE p2(v INT) CREATE TABLE t1 SELECT v;
|
||||
|
||||
CALL p1(NOW());
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`v` datetime default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CALL p1('text');
|
||||
Warnings:
|
||||
Warning 1264 Out of range value adjusted for column 'v' at row 1
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`v` datetime default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CALL p2(10);
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`v` bigint(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CALL p2('text');
|
||||
Warnings:
|
||||
Warning 1366 Incorrect integer value: 'text' for column 'v' at row 1
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`v` bigint(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -43,3 +43,51 @@ SHOW STATUS LIKE 'max_used_connections';
|
|||
Variable_name Value
|
||||
Max_used_connections 4
|
||||
SET GLOBAL thread_cache_size=@save_thread_cache_size;
|
||||
CREATE TABLE t1 ( a INT );
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
SELECT a FROM t1 LIMIT 1;
|
||||
a
|
||||
1
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
Variable_name Value
|
||||
Last_query_cost 2.402418
|
||||
EXPLAIN SELECT a FROM t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
Variable_name Value
|
||||
Last_query_cost 2.402418
|
||||
SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
Variable_name Value
|
||||
Last_query_cost 0.000000
|
||||
EXPLAIN SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||
2 UNION t1 ALL NULL NULL NULL NULL 2
|
||||
NULL UNION RESULT <union1,2> ALL NULL NULL NULL NULL NULL Using filesort
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
Variable_name Value
|
||||
Last_query_cost 0.000000
|
||||
SELECT a IN (SELECT a FROM t1) FROM t1 LIMIT 1;
|
||||
a IN (SELECT a FROM t1)
|
||||
1
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
Variable_name Value
|
||||
Last_query_cost 0.000000
|
||||
SELECT (SELECT a FROM t1 LIMIT 1) x FROM t1 LIMIT 1;
|
||||
x
|
||||
1
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
Variable_name Value
|
||||
Last_query_cost 0.000000
|
||||
SELECT * FROM t1 a, t1 b LIMIT 1;
|
||||
a a
|
||||
1 1
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
Variable_name Value
|
||||
Last_query_cost 4.805836
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -642,4 +642,34 @@ b+0 COUNT(DISTINCT a)
|
|||
1 1
|
||||
3 2
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (b BIT);
|
||||
INSERT INTO t1 (b) VALUES (1), (0);
|
||||
SELECT DISTINCT b FROM t1;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 b b 16 1 1 Y 32 0 63
|
||||
b
|
||||
#
|
||||
#
|
||||
SELECT b FROM t1 GROUP BY b;
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def test t1 t1 b b 16 1 1 Y 32 0 63
|
||||
b
|
||||
#
|
||||
#
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int, b bit(2));
|
||||
INSERT INTO t1 VALUES (3, 2), (2, 3), (2, 0), (3, 2), (3, 1);
|
||||
SELECT COUNT(DISTINCT b) FROM t1 GROUP BY a;
|
||||
COUNT(DISTINCT b)
|
||||
2
|
||||
2
|
||||
DROP TABLE t1;
|
||||
create table t2 (a int, b bit(2), c char(10));
|
||||
INSERT INTO t2 VALUES (3, 2, 'two'), (2, 3, 'three'), (2, 0, 'zero'),
|
||||
(3, 2, 'two'), (3, 1, 'one');
|
||||
SELECT COUNT(DISTINCT b,c) FROM t2 GROUP BY a;
|
||||
COUNT(DISTINCT b,c)
|
||||
2
|
||||
2
|
||||
DROP TABLE t2;
|
||||
End of 5.0 tests
|
||||
|
|
|
@ -1675,7 +1675,7 @@ t1 CREATE TABLE `t1` (
|
|||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) YES 1
|
||||
b enum('value','öäü_value','ÊÃÕ') NO
|
||||
b enum('value','öäü_value','ÊÃÕ') NO NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (c enum('a', 'A') BINARY);
|
||||
INSERT INTO t1 VALUES ('a'),('A');
|
||||
|
|
|
@ -63,9 +63,9 @@ time_field time NULL YES NULL #
|
|||
date_time datetime NULL YES NULL #
|
||||
blob_col blob NULL YES NULL #
|
||||
tinyblob_col tinyblob NULL YES NULL #
|
||||
mediumblob_col mediumblob NULL NO #
|
||||
longblob_col longblob NULL NO #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO MUL #
|
||||
mediumblob_col mediumblob NULL NO NULL #
|
||||
longblob_col longblob NULL NO NULL #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO MUL NULL #
|
||||
flags set('one','two','tree') latin1_swedish_ci NO #
|
||||
show keys from t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
|
@ -214,7 +214,7 @@ Field Type Collation Null Key Default Extra Privileges Comment
|
|||
auto int(5) unsigned NULL NO MUL NULL auto_increment #
|
||||
string char(10) latin1_swedish_ci YES newdefault #
|
||||
tiny tinyint(4) NULL NO MUL 0 #
|
||||
short smallint(6) NULL NO MUL #
|
||||
short smallint(6) NULL NO MUL NULL #
|
||||
medium mediumint(8) NULL NO MUL 0 #
|
||||
long_int int(11) NULL NO 0 #
|
||||
longlong bigint(13) NULL NO MUL 0 #
|
||||
|
@ -231,8 +231,8 @@ time_field time NULL YES NULL #
|
|||
date_time datetime NULL YES NULL #
|
||||
new_blob_col varchar(20) latin1_swedish_ci YES NULL #
|
||||
tinyblob_col tinyblob NULL YES NULL #
|
||||
mediumblob_col mediumblob NULL NO #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO MUL #
|
||||
mediumblob_col mediumblob NULL NO NULL #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO MUL NULL #
|
||||
flags set('one','two','tree') latin1_swedish_ci NO #
|
||||
new_field char(10) latin1_swedish_ci NO new #
|
||||
show full columns from t2;
|
||||
|
@ -240,7 +240,7 @@ Field Type Collation Null Key Default Extra Privileges Comment
|
|||
auto int(5) unsigned NULL NO 0 #
|
||||
string char(10) latin1_swedish_ci YES newdefault #
|
||||
tiny tinyint(4) NULL NO 0 #
|
||||
short smallint(6) NULL NO #
|
||||
short smallint(6) NULL NO NULL #
|
||||
medium mediumint(8) NULL NO 0 #
|
||||
long_int int(11) NULL NO 0 #
|
||||
longlong bigint(13) NULL NO 0 #
|
||||
|
@ -257,8 +257,8 @@ time_field time NULL YES NULL #
|
|||
date_time datetime NULL YES NULL #
|
||||
new_blob_col varchar(20) latin1_swedish_ci YES NULL #
|
||||
tinyblob_col tinyblob NULL YES NULL #
|
||||
mediumblob_col mediumblob NULL NO #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO #
|
||||
mediumblob_col mediumblob NULL NO NULL #
|
||||
options enum('one','two','tree') latin1_swedish_ci NO NULL #
|
||||
flags set('one','two','tree') latin1_swedish_ci NO #
|
||||
new_field char(10) latin1_swedish_ci NO new #
|
||||
select t1.auto,t2.auto from t1,t2 where t1.auto=t2.auto and ((t1.string<>t2.string and (t1.string is not null or t2.string is not null)) or (t1.tiny<>t2.tiny and (t1.tiny is not null or t2.tiny is not null)) or (t1.short<>t2.short and (t1.short is not null or t2.short is not null)) or (t1.medium<>t2.medium and (t1.medium is not null or t2.medium is not null)) or (t1.long_int<>t2.long_int and (t1.long_int is not null or t2.long_int is not null)) or (t1.longlong<>t2.longlong and (t1.longlong is not null or t2.longlong is not null)) or (t1.real_float<>t2.real_float and (t1.real_float is not null or t2.real_float is not null)) or (t1.real_double<>t2.real_double and (t1.real_double is not null or t2.real_double is not null)) or (t1.utiny<>t2.utiny and (t1.utiny is not null or t2.utiny is not null)) or (t1.ushort<>t2.ushort and (t1.ushort is not null or t2.ushort is not null)) or (t1.umedium<>t2.umedium and (t1.umedium is not null or t2.umedium is not null)) or (t1.ulong<>t2.ulong and (t1.ulong is not null or t2.ulong is not null)) or (t1.ulonglong<>t2.ulonglong and (t1.ulonglong is not null or t2.ulonglong is not null)) or (t1.time_stamp<>t2.time_stamp and (t1.time_stamp is not null or t2.time_stamp is not null)) or (t1.date_field<>t2.date_field and (t1.date_field is not null or t2.date_field is not null)) or (t1.time_field<>t2.time_field and (t1.time_field is not null or t2.time_field is not null)) or (t1.date_time<>t2.date_time and (t1.date_time is not null or t2.date_time is not null)) or (t1.new_blob_col<>t2.new_blob_col and (t1.new_blob_col is not null or t2.new_blob_col is not null)) or (t1.tinyblob_col<>t2.tinyblob_col and (t1.tinyblob_col is not null or t2.tinyblob_col is not null)) or (t1.mediumblob_col<>t2.mediumblob_col and (t1.mediumblob_col is not null or t2.mediumblob_col is not null)) or (t1.options<>t2.options and (t1.options is not null or t2.options is not null)) or (t1.flags<>t2.flags and (t1.flags is not null or t2.flags is not null)) or (t1.new_field<>t2.new_field and (t1.new_field is not null or t2.new_field is not null)));
|
||||
|
@ -276,8 +276,8 @@ t1 int(1) NULL NO 0 #
|
|||
t2 varchar(1) latin1_swedish_ci NO #
|
||||
t3 varchar(256) latin1_swedish_ci NO #
|
||||
t4 varbinary(256) NULL NO #
|
||||
t5 longtext latin1_swedish_ci NO #
|
||||
t6 longblob NULL NO #
|
||||
t5 longtext latin1_swedish_ci NO NULL #
|
||||
t6 longblob NULL NO NULL #
|
||||
t7 char(0) latin1_swedish_ci NO #
|
||||
t8 binary(0) NULL NO #
|
||||
select t1,t2,length(t3),length(t4),length(t5),length(t6),t7,t8 from t2;
|
||||
|
|
|
@ -296,4 +296,28 @@ Qcache_queries_in_cache 0
|
|||
drop table t1;
|
||||
drop function metaphon;
|
||||
set GLOBAL query_cache_size=default;
|
||||
CREATE TABLE const_len_bug (
|
||||
str_const varchar(4000),
|
||||
result1 varchar(4000),
|
||||
result2 varchar(4000)
|
||||
);
|
||||
CREATE TRIGGER check_const_len_trigger BEFORE INSERT ON const_len_bug FOR EACH ROW BEGIN
|
||||
set NEW.str_const = 'bar';
|
||||
set NEW.result2 = check_const_len(NEW.str_const);
|
||||
END |
|
||||
CREATE PROCEDURE check_const_len_sp (IN str_const VARCHAR(4000))
|
||||
BEGIN
|
||||
DECLARE result VARCHAR(4000);
|
||||
SET result = check_const_len(str_const);
|
||||
insert into const_len_bug values(str_const, result, "");
|
||||
END |
|
||||
CREATE FUNCTION check_const_len RETURNS string SONAME "UDF_EXAMPLE_LIB";
|
||||
CALL check_const_len_sp("foo");
|
||||
SELECT * from const_len_bug;
|
||||
str_const result1 result2
|
||||
bar Correct length Correct length
|
||||
DROP FUNCTION check_const_len;
|
||||
DROP PROCEDURE check_const_len_sp;
|
||||
DROP TRIGGER check_const_len_trigger;
|
||||
DROP TABLE const_len_bug;
|
||||
End of 5.0 tests.
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
mysqld is alive
|
||||
End of 5.0 tests.
|
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1-0.1.Data
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1-0.1.Data
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1-0.2.Data
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1-0.2.Data
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.1.ctl
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.1.ctl
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.1.log
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.1.log
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.2.ctl
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.2.ctl
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.2.log
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_be/BACKUP-1.2.log
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1-0.1.Data
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1-0.1.Data
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1-0.2.Data
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1-0.2.Data
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.1.ctl
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.1.ctl
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.1.log
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.1.log
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.2.ctl
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.2.ctl
Normal file
Binary file not shown.
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.2.log
Normal file
BIN
mysql-test/std_data/ndb_backup50_data_le/BACKUP-1.2.log
Normal file
Binary file not shown.
|
@ -1347,8 +1347,16 @@ SELECT * FROM t2;
|
|||
|
||||
# Test INSERT DELAYED and wait until the table has one more record
|
||||
SELECT COUNT(auto) FROM t2;
|
||||
INSERT DELAYED INTO t2 VALUES (4,011403,37,'intercepted','audiology','tinily','');
|
||||
while (`SELECT COUNT(auto)!=1214 FROM t2`)
|
||||
INSERT DELAYED INTO t2 VALUES (99999,011403,37,'the','delayed','insert','');
|
||||
|
||||
# Insert another record since in Archive delayed values are only
|
||||
# guaranteed to materialize based on either:
|
||||
# 1) A new row showing up from a normal insert
|
||||
# 2) A flush table has occurred.
|
||||
INSERT INTO t2 VALUES (100000,000001,00,'after','delayed','insert','');
|
||||
|
||||
# Wait for the delayed insert to appear
|
||||
while (`SELECT COUNT(auto)!=1215 FROM t2`)
|
||||
{
|
||||
sleep 0.1;
|
||||
}
|
||||
|
@ -1357,7 +1365,7 @@ SELECT COUNT(auto) FROM t2;
|
|||
# Adding test for alter table
|
||||
ALTER TABLE t2 DROP COLUMN fld6;
|
||||
SHOW CREATE TABLE t2;
|
||||
SELECT * from t2;
|
||||
SELECT * from t2 WHERE auto != 100000;
|
||||
#
|
||||
# Cleanup, test is over
|
||||
#
|
||||
|
|
|
@ -19,3 +19,36 @@ select 1 # The rest of the row will be ignored
|
|||
/* line with only comment */;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
|
||||
#
|
||||
# Bug#28779 (mysql_query() allows execution of statements with unbalanced
|
||||
# comments)
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists table_28779;
|
||||
--enable_warnings
|
||||
|
||||
create table table_28779 (a int);
|
||||
|
||||
--error 1064
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*' AND b = 'bar';";
|
||||
|
||||
--error 1064
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*' AND b = 'bar';*";
|
||||
|
||||
--error 1064
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;";
|
||||
|
||||
--error 1064
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*! AND 2=2;*";
|
||||
|
||||
--error 1064
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';";
|
||||
|
||||
--error 1064
|
||||
prepare bar from "DELETE FROM table_28779 WHERE a = 7 OR 1=1/*!98765' AND b = 'bar';*";
|
||||
|
||||
drop table table_28779;
|
||||
|
||||
|
|
|
@ -173,8 +173,20 @@ delete from t1 where (@a:= f1) order by f1 limit 1;
|
|||
select @a;
|
||||
drop table t1;
|
||||
|
||||
# BUG#30385 "Server crash when deleting with order by and limit"
|
||||
CREATE TABLE t1 (
|
||||
`date` date ,
|
||||
`time` time ,
|
||||
`seq` int(10) unsigned NOT NULL auto_increment,
|
||||
PRIMARY KEY (`seq`),
|
||||
KEY `seq` (`seq`),
|
||||
KEY `time` (`time`),
|
||||
KEY `date` (`date`)
|
||||
);
|
||||
DELETE FROM t1 ORDER BY date ASC, time ASC LIMIT 1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 4.1 tests
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# Test of multi-delete where we are not scanning the first table
|
||||
|
@ -221,3 +233,47 @@ DELETE FROM t1 ORDER BY t2.x;
|
|||
DELETE FROM t1 ORDER BY (SELECT x);
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #30234: Unexpected behavior using DELETE with AS and USING
|
||||
# '
|
||||
CREATE TABLE t1 (
|
||||
a INT
|
||||
);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a INT
|
||||
);
|
||||
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (
|
||||
a INT
|
||||
);
|
||||
INSERT INTO db1.t1 (a) SELECT * FROM t1;
|
||||
|
||||
CREATE DATABASE db2;
|
||||
CREATE TABLE db2.t1 (
|
||||
a INT
|
||||
);
|
||||
INSERT INTO db2.t1 (a) SELECT * FROM t2;
|
||||
|
||||
--error ER_PARSE_ERROR
|
||||
DELETE FROM t1 alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
DELETE FROM alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
DELETE FROM t1, alias USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE FROM t1, t2 USING t1, t2 alias WHERE t1.a = alias.a;
|
||||
--error ER_PARSE_ERROR
|
||||
DELETE FROM db1.t1 alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
--error ER_UNKNOWN_TABLE
|
||||
DELETE FROM alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
DELETE FROM db2.alias USING db1.t1, db2.t1 alias WHERE db1.t1.a = alias.a;
|
||||
DELETE FROM t1 USING t1 WHERE a = 1;
|
||||
SELECT * FROM t1;
|
||||
--error ER_PARSE_ERROR
|
||||
DELETE FROM t1 alias USING t1 alias WHERE a = 2;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
DROP DATABASE db1;
|
||||
DROP DATABASE db2;
|
||||
|
|
|
@ -788,3 +788,30 @@ select * from t1 group by f1, f2;
|
|||
select t1.f1,t.* from t1, t1 t group by 1;
|
||||
drop table t1;
|
||||
SET SQL_MODE = '';
|
||||
|
||||
#
|
||||
# Bug#30596: GROUP BY optimization gives wrong result order
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
a INT,
|
||||
b INT NOT NULL,
|
||||
c INT NOT NULL,
|
||||
d INT,
|
||||
UNIQUE KEY (c,b)
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
|
||||
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d;
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b,d;
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
|
||||
EXPLAIN SELECT c,b,d FROM t1 ORDER BY c,b,d;
|
||||
SELECT c,b,d FROM t1 ORDER BY c,b,d;
|
||||
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b;
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b;
|
||||
EXPLAIN SELECT c,b FROM t1 GROUP BY c,b;
|
||||
SELECT c,b FROM t1 GROUP BY c,b;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -441,3 +441,22 @@ handler t1 open;
|
|||
--echo --> client 1
|
||||
connection default;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#30632 HANDLER read failure causes hang
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1 (a int);
|
||||
handler t1 open as t1_alias;
|
||||
--error 1176
|
||||
handler t1_alias read a next;
|
||||
--error 1054
|
||||
handler t1_alias READ a next where inexistent > 0;
|
||||
--error 1176
|
||||
handler t1_alias read a next;
|
||||
--error 1054
|
||||
handler t1_alias READ a next where inexistent > 0;
|
||||
handler t1_alias close;
|
||||
drop table t1;
|
||||
|
|
|
@ -1071,4 +1071,21 @@ connection default;
|
|||
drop user mysqltest_1@localhost;
|
||||
drop database mysqltest;
|
||||
|
||||
#
|
||||
# Bug#27747 database metadata doesn't return sufficient column default info
|
||||
#
|
||||
create table t1 (
|
||||
f1 varchar(50),
|
||||
f2 varchar(50) not null,
|
||||
f3 varchar(50) default '',
|
||||
f4 varchar(50) default NULL,
|
||||
f5 bigint not null,
|
||||
f6 bigint not null default 10,
|
||||
f7 datetime not null,
|
||||
f8 datetime default '2006-01-01'
|
||||
);
|
||||
select column_default from information_schema.columns where table_name= 't1';
|
||||
show columns from t1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
|
|
@ -112,4 +112,29 @@ commit;
|
|||
|
||||
drop table t1, t2;
|
||||
|
||||
# End of 4.1 tests
|
||||
--echo End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug#25164 create table `a` as select * from `A` hangs
|
||||
#
|
||||
|
||||
set storage_engine=innodb;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists a;
|
||||
drop table if exists A;
|
||||
--enable_warnings
|
||||
|
||||
create table A (c int);
|
||||
insert into A (c) values (0);
|
||||
--error 0,ER_LOCK_DEADLOCK,ER_UPDATE_TABLE_USED
|
||||
create table a as select * from A;
|
||||
drop table A;
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists a;
|
||||
--enable_warnings
|
||||
|
||||
set storage_engine=default;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
|
|
@ -910,4 +910,54 @@ ROLLBACK;
|
|||
ROLLBACK;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#30596: GROUP BY optimization gives wrong result order
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
a INT,
|
||||
b INT NOT NULL,
|
||||
c INT NOT NULL,
|
||||
d INT,
|
||||
UNIQUE KEY (c,b)
|
||||
) engine=innodb;
|
||||
|
||||
INSERT INTO t1 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
|
||||
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d;
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b,d;
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
|
||||
EXPLAIN SELECT c,b,d FROM t1 ORDER BY c,b,d;
|
||||
SELECT c,b,d FROM t1 ORDER BY c,b,d;
|
||||
|
||||
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b;
|
||||
SELECT c,b,d FROM t1 GROUP BY c,b;
|
||||
EXPLAIN SELECT c,b FROM t1 GROUP BY c,b;
|
||||
SELECT c,b FROM t1 GROUP BY c,b;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #31001: ORDER BY DESC in InnoDB not working
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a), INDEX b (b)) ENGINE=InnoDB;
|
||||
INSERT INTO t1(a,b) VALUES (1,1), (2,2), (3,2);
|
||||
|
||||
#The two queries below should produce different results, but they don't.
|
||||
query_vertical EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a ASC;
|
||||
SELECT * FROM t1 WHERE b=2 ORDER BY a ASC;
|
||||
query_vertical EXPLAIN SELECT * FROM t1 WHERE b=2 ORDER BY a DESC;
|
||||
SELECT * FROM t1 WHERE b=2 ORDER BY a DESC;
|
||||
|
||||
query_vertical EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a ASC;
|
||||
SELECT * FROM t1 ORDER BY b ASC, a ASC;
|
||||
query_vertical EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a DESC;
|
||||
SELECT * FROM t1 ORDER BY b DESC, a DESC;
|
||||
query_vertical EXPLAIN SELECT * FROM t1 ORDER BY b ASC, a DESC;
|
||||
SELECT * FROM t1 ORDER BY b ASC, a DESC;
|
||||
query_vertical EXPLAIN SELECT * FROM t1 ORDER BY b DESC, a ASC;
|
||||
SELECT * FROM t1 ORDER BY b DESC, a ASC;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
@ -276,4 +276,9 @@ remove_file $MYSQLTEST_VARDIR/tmp/bug21412.sql;
|
|||
--exec $MYSQL --pager="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" > /dev/null 2>&1
|
||||
--exec $MYSQL --character-sets-dir="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" 2>&1
|
||||
|
||||
#
|
||||
# bug #30164: Using client side macro inside server side comments generates broken queries
|
||||
#
|
||||
--exec $MYSQL test -e "/*! \C latin1 */ select 1;"
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
1
mysql-test/t/mysqldump-compat.opt
Normal file
1
mysql-test/t/mysqldump-compat.opt
Normal file
|
@ -0,0 +1 @@
|
|||
--loose-debug=d,4x_server_emul
|
13
mysql-test/t/mysqldump-compat.test
Normal file
13
mysql-test/t/mysqldump-compat.test
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# Bug #30126: semicolon before closing */ in /*!... CREATE DATABASE ;*/
|
||||
#
|
||||
|
||||
CREATE DATABASE mysqldump_30126;
|
||||
USE mysqldump_30126;
|
||||
CREATE TABLE t1 (c1 int);
|
||||
--exec $MYSQL_DUMP --add-drop-database mysqldump_30126 > $MYSQLTEST_VARDIR/tmp/bug30126.sql
|
||||
--exec $MYSQL mysqldump_30126 < $MYSQLTEST_VARDIR/tmp/bug30126.sql
|
||||
DROP DATABASE mysqldump_30126;
|
1
mysql-test/t/named_pipe-master.opt
Normal file
1
mysql-test/t/named_pipe-master.opt
Normal file
|
@ -0,0 +1 @@
|
|||
--loose-enable-named-pipe
|
14
mysql-test/t/named_pipe.test
Normal file
14
mysql-test/t/named_pipe.test
Normal file
|
@ -0,0 +1,14 @@
|
|||
# We currently only have named pipe support on windows, so
|
||||
# in order to optimize things we skip this test on all
|
||||
# other platforms
|
||||
--source include/windows.inc
|
||||
|
||||
# Only run this test if named pipe is avaliable
|
||||
let $nmp= query_get_value("SHOW VARIABLES LIKE 'named_pipe'", Value, 1);
|
||||
if (`SELECT '$nmp' != 'ON'`){
|
||||
skip No named pipe support;
|
||||
}
|
||||
|
||||
# Source select test case
|
||||
-- source include/common-tests.inc
|
||||
|
35
mysql-test/t/ndb_bug26793.test
Normal file
35
mysql-test/t/ndb_bug26793.test
Normal file
|
@ -0,0 +1,35 @@
|
|||
-- source include/have_ndb.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE `test` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||
`t` VARCHAR( 10 ) NOT NULL
|
||||
) ENGINE = ndbcluster;
|
||||
|
||||
# Add user1@localhost with a specific password
|
||||
# and connect as that user
|
||||
GRANT USAGE ON *.* TO user1@localhost IDENTIFIED BY 'pass';
|
||||
connect (user1,localhost,user1,pass,*NO-ONE*);
|
||||
|
||||
# Run the query 100 times
|
||||
disable_query_log;
|
||||
disable_result_log;
|
||||
let $i= 100;
|
||||
while ($i)
|
||||
{
|
||||
select count(*) from information_schema.tables union all select count(*) from information_schema.tables union all select count(*) from information_schema.tables;
|
||||
dec $i;
|
||||
}
|
||||
enable_query_log;
|
||||
enable_result_log;
|
||||
|
||||
disconnect user1;
|
||||
|
||||
# Switch back to the default connection and cleanup
|
||||
connection default;
|
||||
DROP TABLE `test`.`test`;
|
||||
drop user user1@localhost;
|
||||
|
|
@ -291,3 +291,25 @@ insert into t2 values (1,1), (10,10);
|
|||
select * from t2 use index (ab) where a in(1,10) order by a;
|
||||
|
||||
drop table t2;
|
||||
|
||||
#bug#30337
|
||||
|
||||
create table t1 (id int primary key) engine ndb;
|
||||
insert into t1 values (1), (2), (3);
|
||||
|
||||
create table t2 (id int primary key) engine ndb;
|
||||
insert into t2 select id from t1;
|
||||
|
||||
delimiter |;
|
||||
create trigger kaboom after delete on t1
|
||||
for each row begin
|
||||
delete from t2 where id=old.id;
|
||||
end|
|
||||
delimiter ;|
|
||||
|
||||
select * from t1 order by id;
|
||||
delete from t1 where id in (1,2);
|
||||
select * from t2 order by id;
|
||||
|
||||
drop trigger kaboom;
|
||||
drop table t1;
|
||||
|
|
185
mysql-test/t/ndb_restore_different_endian_data.test
Normal file
185
mysql-test/t/ndb_restore_different_endian_data.test
Normal file
|
@ -0,0 +1,185 @@
|
|||
-- source include/have_ndb.inc
|
||||
-- source include/ndb_default_cluster.inc
|
||||
-- source include/not_embedded.inc
|
||||
|
||||
#
|
||||
# Bug #27543 restore of backup from different endian does not work for blob column
|
||||
# Bug #30024 restore of backup from different endian does not work for datetime column
|
||||
# Bug #28674 backup will run forever if disk full and later write succes will kill ndb node
|
||||
#
|
||||
# The table structure and data list below
|
||||
#
|
||||
# CREATE TABLE t_num (
|
||||
# t_pk INT PRIMARY KEY,
|
||||
# t_bit BIT(64),
|
||||
# t_tinyint TINYINT,
|
||||
# t_bool BOOL,
|
||||
# t_smallint SMALLINT,
|
||||
# t_mediumint MEDIUMINT,
|
||||
# t_int INT,
|
||||
# t_bigint BIGINT,
|
||||
# t_float FLOAT,
|
||||
# t_double DOUBLE,
|
||||
# t_decimal DECIMAL (37, 16)
|
||||
# ) ENGINE=NDBCLUSTER;
|
||||
#
|
||||
# INSERT INTO t_num VALUE (
|
||||
# 1,
|
||||
# b'1010101010101010101010101010101010101010101010101010101010101010',
|
||||
# 125,
|
||||
# 1,
|
||||
# 32765,
|
||||
# 8388606,
|
||||
# 2147483647,
|
||||
# 9223372036854775807,
|
||||
# 1e+20,
|
||||
# 1e+150,
|
||||
# '331.0000000000'
|
||||
# );
|
||||
#
|
||||
# CREATE TABLE t_datetime (
|
||||
# t_pk INT PRIMARY KEY,
|
||||
# t_date DATE,
|
||||
# t_datetime DATETIME,
|
||||
# t_timestamp TIMESTAMP,
|
||||
# t_time TIME,
|
||||
# t_year YEAR
|
||||
# ) ENGINE=NDBCLUSTER;
|
||||
#
|
||||
# INSERT INTO t_datetime VALUE (
|
||||
# 1,
|
||||
# '1998-01-01',
|
||||
# '2006-08-10 10:11:12',
|
||||
# 20021029165106,
|
||||
# '19:38:34',
|
||||
# 2155
|
||||
# );
|
||||
#
|
||||
# CREATE TABLE t_string_1 (
|
||||
# t_pk INT PRIMARY KEY,
|
||||
# t_char CHAR(255),
|
||||
# t_varchar VARCHAR(655),
|
||||
# t_binary BINARY(255),
|
||||
# t_varbinary VARBINARY(6553)
|
||||
# ) ENGINE=NDBCLUSTER;
|
||||
#
|
||||
# CREATE TABLE t_string_2 (
|
||||
# t_pk INT PRIMARY KEY,
|
||||
# t_tinyblob TINYBLOB,
|
||||
# t_tinytext TINYTEXT,
|
||||
# t_blob BLOB,
|
||||
# t_text TEXT,
|
||||
# t_mediumblob MEDIUMBLOB,
|
||||
# t_mediumtext MEDIUMTEXT,
|
||||
# t_longblob LONGBLOB,
|
||||
# t_longtext LONGTEXT,
|
||||
# t_enum ENUM('001001','001004','001010','001018','001019','001020','001021','001027','001028','001029','001030','001031','001100','002003','002004','002005','002007')DEFAULT '001001' NOT NULL,
|
||||
# t_set SET('a','B')
|
||||
# ) ENGINE=NDBCLUSTER;
|
||||
#
|
||||
# INSERT INTO t_string_1 VALUE (
|
||||
# 1,
|
||||
# 'abcdefghijklmn',
|
||||
# 'abcdefghijklmnabcdefghijklmnabcdefghijklmnabcdefghijklmn',
|
||||
# 0x612020,
|
||||
# 0x4100
|
||||
# );
|
||||
#
|
||||
# INSERT INTO t_string_2 VALUE (
|
||||
# 1,
|
||||
# 'abcdefghijklmnabcdefghijklmn',
|
||||
# 'abcdefghijklmnabcdefghijklmn',
|
||||
# 'a123456789b123456789c123456789d123456789e123456789f123456789g123456789',
|
||||
# 'a123456789b123456789c123456789d123456789e123456789f123456789g123456789',
|
||||
# 'a123456789b123456789c123456789d123456789e123456789f123456789g123456789',
|
||||
# 'a123456789b123456789c123456789d123456789e123456789f123456789g123456789',
|
||||
# 'a123456789b123456789c123456789d123456789e123456789f123456789g123456789',
|
||||
# 'a123456789b123456789c123456789d123456789e123456789f123456789g123456789',
|
||||
# '001001',
|
||||
# 'a'
|
||||
# );
|
||||
#
|
||||
# CREATE TABLE t_gis (
|
||||
# t_pk INT PRIMARY KEY,
|
||||
# t_point POINT,
|
||||
# t_linestring LINESTRING,
|
||||
# t_polygon POLYGON,
|
||||
# t_multipoint MULTIPOINT,
|
||||
# t_multilinestring MULTILINESTRING,
|
||||
# t_multipolygon MULTIPOLYGON,
|
||||
# t_geometrycollection GEOMETRYCOLLECTION,
|
||||
# t_geometry GEOMETRY
|
||||
# ) ENGINE=NDBCLUSTER;
|
||||
#
|
||||
# INSERT INTO t_gis VALUE (
|
||||
# 1,
|
||||
# PointFromText('POINT(10 10)'),
|
||||
# LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)'),
|
||||
# PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))'),
|
||||
# MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)'),
|
||||
# MLineFromText('MULTILINESTRING((10 48,10 21,10 0))'),
|
||||
# MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'),
|
||||
# GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))'),
|
||||
# MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')
|
||||
# );
|
||||
#
|
||||
# INSERT INTO t_gis VALUE (
|
||||
# 2,
|
||||
# PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))),
|
||||
# LineStringFromWKB(LineString(Point(10, 10), Point(40, 10))),
|
||||
# PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))),
|
||||
# MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10))),
|
||||
# MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))),
|
||||
# MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))),
|
||||
# GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))),
|
||||
# GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9))))
|
||||
# );
|
||||
|
||||
|
||||
|
||||
#
|
||||
# Restore backup files (from little endian)
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
USE test;
|
||||
DROP TABLE IF EXISTS t_num,t_datetime,t_string_1,t_string_2,t_gis;
|
||||
--enable_warnings
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -m -r $MYSQL_TEST_DIR/std_data/ndb_backup50_data_le >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -r $MYSQL_TEST_DIR/std_data/ndb_backup50_data_le >> $NDB_TOOLS_OUTPUT
|
||||
SHOW TABLES;
|
||||
SHOW CREATE TABLE t_num;
|
||||
SHOW CREATE TABLE t_datetime;
|
||||
SHOW CREATE TABLE t_string_1;
|
||||
SHOW CREATE TABLE t_string_2;
|
||||
SHOW CREATE TABLE t_gis;
|
||||
SELECT * FROM t_datetime;
|
||||
SELECT t_pk,hex(t_bit),t_tinyint,t_bool,t_smallint,t_mediumint,t_int,t_bigint,t_float,t_double,t_decimal FROM t_num;
|
||||
SELECT t_pk,t_char,t_varchar,hex(t_binary),hex(t_varbinary) FROM t_string_1;
|
||||
SELECT * FROM t_string_2;
|
||||
SELECT AsText(t_point), AsText(t_linestring),AsText(t_polygon) FROM t_gis ORDER by t_pk;
|
||||
SELECT AsText(t_multipoint), AsText(t_multilinestring),AsText(t_multipolygon) FROM t_gis ORDER by t_pk;
|
||||
SELECT AsText(t_geometrycollection), AsText(t_geometry) FROM t_gis ORDER by t_pk;
|
||||
|
||||
#
|
||||
# Restore backup files (from big endian)
|
||||
#
|
||||
|
||||
DROP TABLE t_num,t_datetime,t_string_1,t_string_2,t_gis;
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 1 -m -r $MYSQL_TEST_DIR/std_data/ndb_backup50_data_be >> $NDB_TOOLS_OUTPUT
|
||||
--exec $NDB_TOOLS_DIR/ndb_restore --no-defaults -b 1 -n 2 -r $MYSQL_TEST_DIR/std_data/ndb_backup50_data_be >> $NDB_TOOLS_OUTPUT
|
||||
SHOW TABLES;
|
||||
SHOW CREATE TABLE t_num;
|
||||
SHOW CREATE TABLE t_datetime;
|
||||
SHOW CREATE TABLE t_string_1;
|
||||
SHOW CREATE TABLE t_string_2;
|
||||
SHOW CREATE TABLE t_gis;
|
||||
SELECT * FROM t_datetime;
|
||||
SELECT t_pk,hex(t_bit),t_tinyint,t_bool,t_smallint,t_mediumint,t_int,t_bigint,t_float,t_double,t_decimal FROM t_num;
|
||||
SELECT t_pk,t_char,t_varchar,hex(t_binary),hex(t_varbinary) FROM t_string_1;
|
||||
SELECT * FROM t_string_2;
|
||||
SELECT AsText(t_point), AsText(t_linestring),AsText(t_polygon) FROM t_gis ORDER by t_pk;
|
||||
SELECT AsText(t_multipoint), AsText(t_multilinestring),AsText(t_multipolygon) FROM t_gis ORDER by t_pk;
|
||||
SELECT AsText(t_geometrycollection), AsText(t_geometry) FROM t_gis ORDER by t_pk;
|
||||
|
||||
DROP TABLE t_num,t_datetime,t_string_1,t_string_2,t_gis;
|
333
mysql-test/t/parser_precedence.test
Normal file
333
mysql-test/t/parser_precedence.test
Normal file
|
@ -0,0 +1,333 @@
|
|||
|
||||
--disable_warnings
|
||||
drop table if exists t1_30237_bool;
|
||||
--enable_warnings
|
||||
|
||||
create table t1_30237_bool(A boolean, B boolean, C boolean);
|
||||
|
||||
insert into t1_30237_bool values
|
||||
(FALSE, FALSE, FALSE),
|
||||
(FALSE, FALSE, NULL),
|
||||
(FALSE, FALSE, TRUE),
|
||||
(FALSE, NULL, FALSE),
|
||||
(FALSE, NULL, NULL),
|
||||
(FALSE, NULL, TRUE),
|
||||
(FALSE, TRUE, FALSE),
|
||||
(FALSE, TRUE, NULL),
|
||||
(FALSE, TRUE, TRUE),
|
||||
(NULL, FALSE, FALSE),
|
||||
(NULL, FALSE, NULL),
|
||||
(NULL, FALSE, TRUE),
|
||||
(NULL, NULL, FALSE),
|
||||
(NULL, NULL, NULL),
|
||||
(NULL, NULL, TRUE),
|
||||
(NULL, TRUE, FALSE),
|
||||
(NULL, TRUE, NULL),
|
||||
(NULL, TRUE, TRUE),
|
||||
(TRUE, FALSE, FALSE),
|
||||
(TRUE, FALSE, NULL),
|
||||
(TRUE, FALSE, TRUE),
|
||||
(TRUE, NULL, FALSE),
|
||||
(TRUE, NULL, NULL),
|
||||
(TRUE, NULL, TRUE),
|
||||
(TRUE, TRUE, FALSE),
|
||||
(TRUE, TRUE, NULL),
|
||||
(TRUE, TRUE, TRUE) ;
|
||||
|
||||
--echo Testing OR, XOR, AND
|
||||
select A, B, A OR B, A XOR B, A AND B
|
||||
from t1_30237_bool where C is null order by A, B;
|
||||
|
||||
--echo Testing that OR is associative
|
||||
select A, B, C, (A OR B) OR C, A OR (B OR C), A OR B OR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A OR B) OR C) != (A OR (B OR C));
|
||||
|
||||
--echo Testing that XOR is associative
|
||||
select A, B, C, (A XOR B) XOR C, A XOR (B XOR C), A XOR B XOR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A XOR B) XOR C) != (A XOR (B XOR C));
|
||||
|
||||
--echo Testing that AND is associative
|
||||
select A, B, C, (A AND B) AND C, A AND (B AND C), A AND B AND C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A AND B) AND C) != (A AND (B AND C));
|
||||
|
||||
--echo Testing that AND has precedence over OR
|
||||
select A, B, C, (A OR B) AND C, A OR (B AND C), A OR B AND C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
select count(*) from t1_30237_bool
|
||||
where (A OR (B AND C)) != (A OR B AND C);
|
||||
select A, B, C, (A AND B) OR C, A AND (B OR C), A AND B OR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A AND B) OR C) != (A AND B OR C);
|
||||
|
||||
--echo Testing that AND has precedence over XOR
|
||||
select A, B, C, (A XOR B) AND C, A XOR (B AND C), A XOR B AND C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
select count(*) from t1_30237_bool
|
||||
where (A XOR (B AND C)) != (A XOR B AND C);
|
||||
select A, B, C, (A AND B) XOR C, A AND (B XOR C), A AND B XOR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A AND B) XOR C) != (A AND B XOR C);
|
||||
|
||||
--echo Testing that XOR has precedence over OR
|
||||
select A, B, C, (A XOR B) OR C, A XOR (B OR C), A XOR B OR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
select count(*) from t1_30237_bool
|
||||
where ((A XOR B) OR C) != (A XOR B OR C);
|
||||
select A, B, C, (A OR B) XOR C, A OR (B XOR C), A OR B XOR C
|
||||
from t1_30237_bool order by A, B, C;
|
||||
select count(*) from t1_30237_bool
|
||||
where (A OR (B XOR C)) != (A OR B XOR C);
|
||||
|
||||
drop table t1_30237_bool;
|
||||
|
||||
--echo Testing that NOT has precedence over OR
|
||||
select (NOT FALSE) OR TRUE, NOT (FALSE OR TRUE), NOT FALSE OR TRUE;
|
||||
|
||||
--echo Testing that NOT has precedence over XOR
|
||||
select (NOT FALSE) XOR FALSE, NOT (FALSE XOR FALSE), NOT FALSE XOR FALSE;
|
||||
|
||||
--echo Testing that NOT has precedence over AND
|
||||
select (NOT FALSE) AND FALSE, NOT (FALSE AND FALSE), NOT FALSE AND FALSE;
|
||||
|
||||
--echo Testing that NOT is associative
|
||||
select NOT NOT TRUE, NOT NOT NOT FALSE;
|
||||
|
||||
--echo Testing that IS has precedence over NOT
|
||||
select (NOT NULL) IS TRUE, NOT (NULL IS TRUE), NOT NULL IS TRUE;
|
||||
select (NOT NULL) IS NOT TRUE, NOT (NULL IS NOT TRUE), NOT NULL IS NOT TRUE;
|
||||
select (NOT NULL) IS FALSE, NOT (NULL IS FALSE), NOT NULL IS FALSE;
|
||||
select (NOT NULL) IS NOT FALSE, NOT (NULL IS NOT FALSE), NOT NULL IS NOT FALSE;
|
||||
select (NOT TRUE) IS UNKNOWN, NOT (TRUE IS UNKNOWN), NOT TRUE IS UNKNOWN;
|
||||
select (NOT TRUE) IS NOT UNKNOWN, NOT (TRUE IS NOT UNKNOWN), NOT TRUE IS NOT UNKNOWN;
|
||||
select (NOT TRUE) IS NULL, NOT (TRUE IS NULL), NOT TRUE IS NULL;
|
||||
select (NOT TRUE) IS NOT NULL, NOT (TRUE IS NOT NULL), NOT TRUE IS NOT NULL;
|
||||
|
||||
--echo Testing that IS [NOT] TRUE/FALSE/UNKNOWN predicates are not associative
|
||||
# Documenting existing behavior in 5.0.48
|
||||
-- error ER_PARSE_ERROR
|
||||
select TRUE IS TRUE IS TRUE IS TRUE;
|
||||
-- error ER_PARSE_ERROR
|
||||
select FALSE IS NOT TRUE IS NOT TRUE IS NOT TRUE;
|
||||
-- error ER_PARSE_ERROR
|
||||
select NULL IS FALSE IS FALSE IS FALSE;
|
||||
-- error ER_PARSE_ERROR
|
||||
select TRUE IS NOT FALSE IS NOT FALSE IS NOT FALSE;
|
||||
-- error ER_PARSE_ERROR
|
||||
select FALSE IS UNKNOWN IS UNKNOWN IS UNKNOWN;
|
||||
-- error ER_PARSE_ERROR
|
||||
select TRUE IS NOT UNKNOWN IS NOT UNKNOWN IS NOT UNKNOWN;
|
||||
|
||||
--echo Testing that IS [NOT] NULL predicates are associative
|
||||
# Documenting existing behavior in 5.0.48
|
||||
select FALSE IS NULL IS NULL IS NULL;
|
||||
select TRUE IS NOT NULL IS NOT NULL IS NOT NULL;
|
||||
|
||||
--echo Testing that comparison operators are left associative
|
||||
select 1 <=> 2 <=> 2, (1 <=> 2) <=> 2, 1 <=> (2 <=> 2);
|
||||
select 1 = 2 = 2, (1 = 2) = 2, 1 = (2 = 2);
|
||||
select 1 != 2 != 3, (1 != 2) != 3, 1 != (2 != 3);
|
||||
select 1 <> 2 <> 3, (1 <> 2) <> 3, 1 <> (2 <> 3);
|
||||
select 1 < 2 < 3, (1 < 2) < 3, 1 < (2 < 3);
|
||||
select 3 <= 2 <= 1, (3 <= 2) <= 1, 3 <= (2 <= 1);
|
||||
select 1 > 2 > 3, (1 > 2) > 3, 1 > (2 > 3);
|
||||
select 1 >= 2 >= 3, (1 >= 2) >= 3, 1 >= (2 >= 3);
|
||||
|
||||
-- echo Testing that | is associative
|
||||
select 0xF0 | 0x0F | 0x55, (0xF0 | 0x0F) | 0x55, 0xF0 | (0x0F | 0x55);
|
||||
|
||||
-- echo Testing that & is associative
|
||||
select 0xF5 & 0x5F & 0x55, (0xF5 & 0x5F) & 0x55, 0xF5 & (0x5F & 0x55);
|
||||
|
||||
-- echo Testing that << is left associative
|
||||
select 4 << 3 << 2, (4 << 3) << 2, 4 << (3 << 2);
|
||||
|
||||
-- echo Testing that >> is left associative
|
||||
select 256 >> 3 >> 2, (256 >> 3) >> 2, 256 >> (3 >> 2);
|
||||
|
||||
--echo Testing that & has precedence over |
|
||||
select 0xF0 & 0x0F | 0x55, (0xF0 & 0x0F) | 0x55, 0xF0 & (0x0F | 0x55);
|
||||
select 0x55 | 0xF0 & 0x0F, (0x55 | 0xF0) & 0x0F, 0x55 | (0xF0 & 0x0F);
|
||||
|
||||
--echo Testing that << has precedence over |
|
||||
select 0x0F << 4 | 0x0F, (0x0F << 4) | 0x0F, 0x0F << (4 | 0x0F);
|
||||
select 0x0F | 0x0F << 4, (0x0F | 0x0F) << 4, 0x0F | (0x0F << 4);
|
||||
|
||||
--echo Testing that >> has precedence over |
|
||||
select 0xF0 >> 4 | 0xFF, (0xF0 >> 4) | 0xFF, 0xF0 >> (4 | 0xFF);
|
||||
select 0xFF | 0xF0 >> 4, (0xFF | 0xF0) >> 4, 0xFF | (0xF0 >> 4);
|
||||
|
||||
--echo Testing that << has precedence over &
|
||||
select 0x0F << 4 & 0xF0, (0x0F << 4) & 0xF0, 0x0F << (4 & 0xF0);
|
||||
select 0xF0 & 0x0F << 4, (0xF0 & 0x0F) << 4, 0xF0 & (0x0F << 4);
|
||||
|
||||
--echo Testing that >> has precedence over &
|
||||
select 0xF0 >> 4 & 0x55, (0xF0 >> 4) & 0x55, 0xF0 >> (4 & 0x55);
|
||||
select 0x0F & 0xF0 >> 4, (0x0F & 0xF0) >> 4, 0x0F & (0xF0 >> 4);
|
||||
|
||||
--echo Testing that >> and << have the same precedence
|
||||
select 0xFF >> 4 << 2, (0xFF >> 4) << 2, 0xFF >> (4 << 2);
|
||||
select 0x0F << 4 >> 2, (0x0F << 4) >> 2, 0x0F << (4 >> 2);
|
||||
|
||||
--echo Testing that binary + is associative
|
||||
select 1 + 2 + 3, (1 + 2) + 3, 1 + (2 + 3);
|
||||
|
||||
--echo Testing that binary - is left associative
|
||||
select 1 - 2 - 3, (1 - 2) - 3, 1 - (2 - 3);
|
||||
|
||||
--echo Testing that binary + and binary - have the same precedence
|
||||
# evaluated left to right
|
||||
select 1 + 2 - 3, (1 + 2) - 3, 1 + (2 - 3);
|
||||
select 1 - 2 + 3, (1 - 2) + 3, 1 - (2 + 3);
|
||||
|
||||
--echo Testing that binary + has precedence over |
|
||||
select 0xF0 + 0x0F | 0x55, (0xF0 + 0x0F) | 0x55, 0xF0 + (0x0F | 0x55);
|
||||
select 0x55 | 0xF0 + 0x0F, (0x55 | 0xF0) + 0x0F, 0x55 | (0xF0 + 0x0F);
|
||||
|
||||
--echo Testing that binary + has precedence over &
|
||||
select 0xF0 + 0x0F & 0x55, (0xF0 + 0x0F) & 0x55, 0xF0 + (0x0F & 0x55);
|
||||
select 0x55 & 0xF0 + 0x0F, (0x55 & 0xF0) + 0x0F, 0x55 & (0xF0 + 0x0F);
|
||||
|
||||
--echo Testing that binary + has precedence over <<
|
||||
select 2 + 3 << 4, (2 + 3) << 4, 2 + (3 << 4);
|
||||
select 3 << 4 + 2, (3 << 4) + 2, 3 << (4 + 2);
|
||||
|
||||
--echo Testing that binary + has precedence over >>
|
||||
select 4 + 3 >> 2, (4 + 3) >> 2, 4 + (3 >> 2);
|
||||
select 3 >> 2 + 1, (3 >> 2) + 1, 3 >> (2 + 1);
|
||||
|
||||
--echo Testing that binary - has precedence over |
|
||||
select 0xFF - 0x0F | 0x55, (0xFF - 0x0F) | 0x55, 0xFF - (0x0F | 0x55);
|
||||
select 0x55 | 0xFF - 0xF0, (0x55 | 0xFF) - 0xF0, 0x55 | (0xFF - 0xF0);
|
||||
|
||||
--echo Testing that binary - has precedence over &
|
||||
select 0xFF - 0xF0 & 0x55, (0xFF - 0xF0) & 0x55, 0xFF - (0xF0 & 0x55);
|
||||
select 0x55 & 0xFF - 0xF0, (0x55 & 0xFF) - 0xF0, 0x55 & (0xFF - 0xF0);
|
||||
|
||||
--echo Testing that binary - has precedence over <<
|
||||
select 16 - 3 << 2, (16 - 3) << 2, 16 - (3 << 2);
|
||||
select 4 << 3 - 2, (4 << 3) - 2, 4 << (3 - 2);
|
||||
|
||||
--echo Testing that binary - has precedence over >>
|
||||
select 16 - 3 >> 2, (16 - 3) >> 2, 16 - (3 >> 2);
|
||||
select 16 >> 3 - 2, (16 >> 3) - 2, 16 >> (3 - 2);
|
||||
|
||||
--echo Testing that * is associative
|
||||
select 2 * 3 * 4, (2 * 3) * 4, 2 * (3 * 4);
|
||||
|
||||
--echo Testing that * has precedence over |
|
||||
select 2 * 0x40 | 0x0F, (2 * 0x40) | 0x0F, 2 * (0x40 | 0x0F);
|
||||
select 0x0F | 2 * 0x40, (0x0F | 2) * 0x40, 0x0F | (2 * 0x40);
|
||||
|
||||
--echo Testing that * has precedence over &
|
||||
select 2 * 0x40 & 0x55, (2 * 0x40) & 0x55, 2 * (0x40 & 0x55);
|
||||
select 0xF0 & 2 * 0x40, (0xF0 & 2) * 0x40, 0xF0 & (2 * 0x40);
|
||||
|
||||
--echo Testing that * has precedence over <<
|
||||
# Actually, can't prove it for the first case,
|
||||
# since << is a multiplication by a power of 2,
|
||||
# and * is associative
|
||||
select 5 * 3 << 4, (5 * 3) << 4, 5 * (3 << 4);
|
||||
select 2 << 3 * 4, (2 << 3) * 4, 2 << (3 * 4);
|
||||
|
||||
--echo Testing that * has precedence over >>
|
||||
# >> is a multiplication by a (negative) power of 2,
|
||||
# see above.
|
||||
select 3 * 4 >> 2, (3 * 4) >> 2, 3 * (4 >> 2);
|
||||
select 4 >> 2 * 3, (4 >> 2) * 3, 4 >> (2 * 3);
|
||||
|
||||
--echo Testing that * has precedence over binary +
|
||||
select 2 * 3 + 4, (2 * 3) + 4, 2 * (3 + 4);
|
||||
select 2 + 3 * 4, (2 + 3) * 4, 2 + (3 * 4);
|
||||
|
||||
--echo Testing that * has precedence over binary -
|
||||
select 4 * 3 - 2, (4 * 3) - 2, 4 * (3 - 2);
|
||||
select 4 - 3 * 2, (4 - 3) * 2, 4 - (3 * 2);
|
||||
|
||||
--echo Testing that / is left associative
|
||||
select 15 / 5 / 3, (15 / 5) / 3, 15 / (5 / 3);
|
||||
|
||||
--echo Testing that / has precedence over |
|
||||
select 105 / 5 | 2, (105 / 5) | 2, 105 / (5 | 2);
|
||||
select 105 | 2 / 5, (105 | 2) / 5, 105 | (2 / 5);
|
||||
|
||||
--echo Testing that / has precedence over &
|
||||
select 105 / 5 & 0x0F, (105 / 5) & 0x0F, 105 / (5 & 0x0F);
|
||||
select 0x0F & 105 / 5, (0x0F & 105) / 5, 0x0F & (105 / 5);
|
||||
|
||||
--echo Testing that / has precedence over <<
|
||||
select 0x80 / 4 << 2, (0x80 / 4) << 2, 0x80 / (4 << 2);
|
||||
select 0x80 << 4 / 2, (0x80 << 4) / 2, 0x80 << (4 / 2);
|
||||
|
||||
--echo Testing that / has precedence over >>
|
||||
select 0x80 / 4 >> 2, (0x80 / 4) >> 2, 0x80 / (4 >> 2);
|
||||
select 0x80 >> 4 / 2, (0x80 >> 4) / 2, 0x80 >> (4 / 2);
|
||||
|
||||
--echo Testing that / has precedence over binary +
|
||||
select 0x80 / 2 + 2, (0x80 / 2) + 2, 0x80 / (2 + 2);
|
||||
select 0x80 + 2 / 2, (0x80 + 2) / 2, 0x80 + (2 / 2);
|
||||
|
||||
--echo Testing that / has precedence over binary -
|
||||
select 0x80 / 4 - 2, (0x80 / 4) - 2, 0x80 / (4 - 2);
|
||||
select 0x80 - 4 / 2, (0x80 - 4) / 2, 0x80 - (4 / 2);
|
||||
|
||||
# TODO: %, DIV, MOD
|
||||
|
||||
--echo Testing that ^ is associative
|
||||
select 0xFF ^ 0xF0 ^ 0x0F, (0xFF ^ 0xF0) ^ 0x0F, 0xFF ^ (0xF0 ^ 0x0F);
|
||||
select 0xFF ^ 0xF0 ^ 0x55, (0xFF ^ 0xF0) ^ 0x55, 0xFF ^ (0xF0 ^ 0x55);
|
||||
|
||||
--echo Testing that ^ has precedence over |
|
||||
select 0xFF ^ 0xF0 | 0x0F, (0xFF ^ 0xF0) | 0x0F, 0xFF ^ (0xF0 | 0x0F);
|
||||
select 0xF0 | 0xFF ^ 0xF0, (0xF0 | 0xFF) ^ 0xF0, 0xF0 | (0xFF ^ 0xF0);
|
||||
|
||||
--echo Testing that ^ has precedence over &
|
||||
select 0xFF ^ 0xF0 & 0x0F, (0xFF ^ 0xF0) & 0x0F, 0xFF ^ (0xF0 & 0x0F);
|
||||
select 0x0F & 0xFF ^ 0xF0, (0x0F & 0xFF) ^ 0xF0, 0x0F & (0xFF ^ 0xF0);
|
||||
|
||||
--echo Testing that ^ has precedence over <<
|
||||
select 0xFF ^ 0xF0 << 2, (0xFF ^ 0xF0) << 2, 0xFF ^ (0xF0 << 2);
|
||||
select 0x0F << 2 ^ 0xFF, (0x0F << 2) ^ 0xFF, 0x0F << (2 ^ 0xFF);
|
||||
|
||||
--echo Testing that ^ has precedence over >>
|
||||
select 0xFF ^ 0xF0 >> 2, (0xFF ^ 0xF0) >> 2, 0xFF ^ (0xF0 >> 2);
|
||||
select 0xFF >> 2 ^ 0xF0, (0xFF >> 2) ^ 0xF0, 0xFF >> (2 ^ 0xF0);
|
||||
|
||||
--echo Testing that ^ has precedence over binary +
|
||||
select 0xFF ^ 0xF0 + 0x0F, (0xFF ^ 0xF0) + 0x0F, 0xFF ^ (0xF0 + 0x0F);
|
||||
select 0x0F + 0xFF ^ 0xF0, (0x0F + 0xFF) ^ 0xF0, 0x0F + (0xFF ^ 0xF0);
|
||||
|
||||
--echo Testing that ^ has precedence over binary -
|
||||
select 0xFF ^ 0xF0 - 1, (0xFF ^ 0xF0) - 1, 0xFF ^ (0xF0 - 1);
|
||||
select 0x55 - 0x0F ^ 0x55, (0x55 - 0x0F) ^ 0x55, 0x55 - (0x0F ^ 0x55);
|
||||
|
||||
--echo Testing that ^ has precedence over *
|
||||
select 0xFF ^ 0xF0 * 2, (0xFF ^ 0xF0) * 2, 0xFF ^ (0xF0 * 2);
|
||||
select 2 * 0xFF ^ 0xF0, (2 * 0xFF) ^ 0xF0, 2 * (0xFF ^ 0xF0);
|
||||
|
||||
--echo Testing that ^ has precedence over /
|
||||
select 0xFF ^ 0xF0 / 2, (0xFF ^ 0xF0) / 2, 0xFF ^ (0xF0 / 2);
|
||||
select 0xF2 / 2 ^ 0xF0, (0xF2 / 2) ^ 0xF0, 0xF2 / (2 ^ 0xF0);
|
||||
|
||||
--echo Testing that ^ has precedence over %
|
||||
select 0xFF ^ 0xF0 % 0x20, (0xFF ^ 0xF0) % 0x20, 0xFF ^ (0xF0 % 0x20);
|
||||
select 0xFF % 0x20 ^ 0xF0, (0xFF % 0x20) ^ 0xF0, 0xFF % (0x20 ^ 0xF0);
|
||||
|
||||
--echo Testing that ^ has precedence over DIV
|
||||
select 0xFF ^ 0xF0 DIV 2, (0xFF ^ 0xF0) DIV 2, 0xFF ^ (0xF0 DIV 2);
|
||||
select 0xF2 DIV 2 ^ 0xF0, (0xF2 DIV 2) ^ 0xF0, 0xF2 DIV (2 ^ 0xF0);
|
||||
|
||||
--echo Testing that ^ has precedence over MOD
|
||||
select 0xFF ^ 0xF0 MOD 0x20, (0xFF ^ 0xF0) MOD 0x20, 0xFF ^ (0xF0 MOD 0x20);
|
||||
select 0xFF MOD 0x20 ^ 0xF0, (0xFF MOD 0x20) ^ 0xF0, 0xFF MOD (0x20 ^ 0xF0);
|
||||
|
|
@ -3460,4 +3460,28 @@ SHOW WARNINGS;
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug #27695: Misleading warning when declaring all space column names and
|
||||
# truncation of one-space column names to zero length names.
|
||||
#
|
||||
|
||||
--disable_ps_protocol
|
||||
|
||||
SELECT 1 AS ` `;
|
||||
SELECT 1 AS ` `;
|
||||
SELECT 1 AS ` x`;
|
||||
|
||||
CREATE VIEW v1 AS SELECT 1 AS ` `;
|
||||
SELECT `` FROM v1;
|
||||
|
||||
CREATE VIEW v2 AS SELECT 1 AS ` `;
|
||||
SELECT `` FROM v2;
|
||||
|
||||
CREATE VIEW v3 AS SELECT 1 AS ` x`;
|
||||
SELECT `x` FROM v3;
|
||||
|
||||
DROP VIEW v1, v2, v3;
|
||||
|
||||
--enable_ps_protocol
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
@ -1 +1 @@
|
|||
--skip-grant-tables --loose-shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX --loose-shared-memory=1
|
||||
--skip-grant-tables --loose-shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX$MTR_BUILD_THREAD --loose-shared-memory=1
|
19
mysql-test/t/shm.test
Normal file
19
mysql-test/t/shm.test
Normal file
|
@ -0,0 +1,19 @@
|
|||
# We currently only have shm support on windows, so in order
|
||||
# to optimize things we skip this test on all other platforms
|
||||
--source include/windows.inc
|
||||
|
||||
# Only run this test if shared memory is avaliable
|
||||
let $shm= query_get_value("SHOW VARIABLES LIKE 'shared_memory'", Value, 1);
|
||||
if (`SELECT '$shm' != 'ON'`){
|
||||
skip No shm support;
|
||||
}
|
||||
|
||||
# Source select test case
|
||||
-- source include/common-tests.inc
|
||||
|
||||
#
|
||||
# Bug #24924: shared-memory-base-name that is too long causes buffer overflow
|
||||
#
|
||||
--exec $MYSQLADMIN --no-defaults --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ping
|
||||
|
||||
--echo End of 5.0 tests.
|
|
@ -7300,4 +7300,91 @@ CALL p1();
|
|||
SET NAMES default;
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
#
|
||||
# Bug#29408 Cannot find view in columns table if the selection contains a function
|
||||
#
|
||||
delimiter |;
|
||||
|
||||
create function f1()
|
||||
returns int(11)
|
||||
not deterministic
|
||||
contains sql
|
||||
sql security definer
|
||||
comment ''
|
||||
begin
|
||||
declare x int(11);
|
||||
set x=-1;
|
||||
return x;
|
||||
end|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
create view v1 as select 1 as one, f1() as days;
|
||||
|
||||
connect (bug29408, localhost, root,,*NO-ONE*);
|
||||
connection bug29408;
|
||||
|
||||
show create view test.v1;
|
||||
select column_name from information_schema.columns
|
||||
where table_name='v1' and table_schema='test';
|
||||
|
||||
connection default;
|
||||
disconnect bug29408;
|
||||
drop view v1;
|
||||
drop function f1;
|
||||
|
||||
#
|
||||
# Bug#13675: DATETIME/DATE type in store proc param seems to be converted as
|
||||
# varbinary
|
||||
#
|
||||
|
||||
--echo
|
||||
--echo # Bug#13675.
|
||||
--echo
|
||||
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
--echo
|
||||
|
||||
CREATE PROCEDURE p1(v DATETIME) CREATE TABLE t1 SELECT v;
|
||||
|
||||
CREATE PROCEDURE p2(v INT) CREATE TABLE t1 SELECT v;
|
||||
|
||||
--echo
|
||||
CALL p1(NOW());
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
CALL p1('text');
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
CALL p2(10);
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
CALL p2('text');
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
@ -139,4 +139,36 @@ disconnect con3;
|
|||
disconnect con2;
|
||||
disconnect con1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #30377: EXPLAIN loses last_query_cost when used with UNION
|
||||
#
|
||||
|
||||
CREATE TABLE t1 ( a INT );
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
|
||||
SELECT a FROM t1 LIMIT 1;
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
|
||||
EXPLAIN SELECT a FROM t1;
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
|
||||
SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY a;
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
|
||||
EXPLAIN SELECT a FROM t1 UNION SELECT a FROM t1 ORDER BY a;
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
|
||||
SELECT a IN (SELECT a FROM t1) FROM t1 LIMIT 1;
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
|
||||
SELECT (SELECT a FROM t1 LIMIT 1) x FROM t1 LIMIT 1;
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
|
||||
SELECT * FROM t1 a, t1 b LIMIT 1;
|
||||
SHOW SESSION STATUS LIKE 'Last_query_cost';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
# End of 5.0 tests
|
||||
|
|
|
@ -291,4 +291,31 @@ INSERT INTO t1 (b, a) VALUES (1, 1), (3, 2), (0, 3), (3, 4);
|
|||
SELECT b+0, COUNT(DISTINCT a) FROM t1 GROUP BY b;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#30245: A wrong type of a BIT field is reported when grouped by it.
|
||||
#
|
||||
CREATE TABLE t1 (b BIT);
|
||||
INSERT INTO t1 (b) VALUES (1), (0);
|
||||
--enable_metadata
|
||||
--replace_column 1 #
|
||||
SELECT DISTINCT b FROM t1;
|
||||
--replace_column 1 #
|
||||
SELECT b FROM t1 GROUP BY b;
|
||||
--disable_metadata
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# BUG#30324 Wrong query result for COUNT(DISTINCT(bit_column))
|
||||
#
|
||||
CREATE TABLE t1 (a int, b bit(2));
|
||||
INSERT INTO t1 VALUES (3, 2), (2, 3), (2, 0), (3, 2), (3, 1);
|
||||
SELECT COUNT(DISTINCT b) FROM t1 GROUP BY a;
|
||||
DROP TABLE t1;
|
||||
|
||||
create table t2 (a int, b bit(2), c char(10));
|
||||
INSERT INTO t2 VALUES (3, 2, 'two'), (2, 3, 'three'), (2, 0, 'zero'),
|
||||
(3, 2, 'two'), (3, 1, 'one');
|
||||
SELECT COUNT(DISTINCT b,c) FROM t2 GROUP BY a;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
@ -312,4 +312,40 @@ drop function metaphon;
|
|||
set GLOBAL query_cache_size=default;
|
||||
|
||||
|
||||
#
|
||||
# Bug #29804 UDF parameters don't contain correct string length
|
||||
#
|
||||
|
||||
CREATE TABLE const_len_bug (
|
||||
str_const varchar(4000),
|
||||
result1 varchar(4000),
|
||||
result2 varchar(4000)
|
||||
);
|
||||
|
||||
DELIMITER |;
|
||||
CREATE TRIGGER check_const_len_trigger BEFORE INSERT ON const_len_bug FOR EACH ROW BEGIN
|
||||
set NEW.str_const = 'bar';
|
||||
set NEW.result2 = check_const_len(NEW.str_const);
|
||||
END |
|
||||
|
||||
CREATE PROCEDURE check_const_len_sp (IN str_const VARCHAR(4000))
|
||||
BEGIN
|
||||
DECLARE result VARCHAR(4000);
|
||||
SET result = check_const_len(str_const);
|
||||
insert into const_len_bug values(str_const, result, "");
|
||||
END |
|
||||
DELIMITER ;|
|
||||
|
||||
--replace_result $UDF_EXAMPLE_LIB UDF_EXAMPLE_LIB
|
||||
eval CREATE FUNCTION check_const_len RETURNS string SONAME "$UDF_EXAMPLE_LIB";
|
||||
|
||||
CALL check_const_len_sp("foo");
|
||||
|
||||
SELECT * from const_len_bug;
|
||||
|
||||
DROP FUNCTION check_const_len;
|
||||
DROP PROCEDURE check_const_len_sp;
|
||||
DROP TRIGGER check_const_len_trigger;
|
||||
DROP TABLE const_len_bug;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
# Windows-specific tests
|
||||
--source include/windows.inc
|
||||
|
||||
#
|
||||
# Bug #24924: shared-memory-base-name that is too long causes buffer overflow
|
||||
#
|
||||
--exec $MYSQLADMIN --no-defaults --user=root --host=127.0.0.1 --port=$MASTER_MYPORT --shared-memory-base-name=HeyMrBaseNameXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ping
|
||||
|
||||
--echo End of 5.0 tests.
|
|
@ -6,7 +6,7 @@ Next DBTUP 4014
|
|||
Next DBLQH 5043
|
||||
Next DBDICT 6007
|
||||
Next DBDIH 7183
|
||||
Next DBTC 8039
|
||||
Next DBTC 8052
|
||||
Next CMVMI 9000
|
||||
Next BACKUP 10022
|
||||
Next DBUTIL 11002
|
||||
|
@ -296,6 +296,10 @@ ABORT OF TCKEYREQ
|
|||
|
||||
8038 : Simulate API disconnect just after SCAN_TAB_REQ
|
||||
|
||||
8039 : Simulate failure of TransactionBufferMemory allocation for OI lookup
|
||||
|
||||
8051 : Simulate failure of allocation for saveINDXKEYINFO
|
||||
|
||||
|
||||
CMVMI
|
||||
-----
|
||||
|
|
|
@ -1497,12 +1497,12 @@ private:
|
|||
void clearCommitAckMarker(ApiConnectRecord * const regApiPtr,
|
||||
TcConnectRecord * const regTcPtr);
|
||||
// Trigger and index handling
|
||||
bool saveINDXKEYINFO(Signal* signal,
|
||||
TcIndexOperation* indexOp,
|
||||
const Uint32 *src,
|
||||
Uint32 len);
|
||||
int saveINDXKEYINFO(Signal* signal,
|
||||
TcIndexOperation* indexOp,
|
||||
const Uint32 *src,
|
||||
Uint32 len);
|
||||
bool receivedAllINDXKEYINFO(TcIndexOperation* indexOp);
|
||||
bool saveINDXATTRINFO(Signal* signal,
|
||||
int saveINDXATTRINFO(Signal* signal,
|
||||
TcIndexOperation* indexOp,
|
||||
const Uint32 *src,
|
||||
Uint32 len);
|
||||
|
|
|
@ -1789,9 +1789,18 @@ start_failure:
|
|||
}//switch
|
||||
}
|
||||
|
||||
static
|
||||
inline
|
||||
bool
|
||||
compare_transid(Uint32* val0, Uint32* val1)
|
||||
{
|
||||
Uint32 tmp0 = val0[0] ^ val1[0];
|
||||
Uint32 tmp1 = val0[1] ^ val1[1];
|
||||
return (tmp0 | tmp1) == 0;
|
||||
}
|
||||
|
||||
void Dbtc::execKEYINFO(Signal* signal)
|
||||
{
|
||||
UintR compare_transid1, compare_transid2;
|
||||
jamEntry();
|
||||
apiConnectptr.i = signal->theData[0];
|
||||
tmaxData = 20;
|
||||
|
@ -1801,10 +1810,8 @@ void Dbtc::execKEYINFO(Signal* signal)
|
|||
}//if
|
||||
ptrAss(apiConnectptr, apiConnectRecord);
|
||||
ttransid_ptr = 1;
|
||||
compare_transid1 = apiConnectptr.p->transid[0] ^ signal->theData[1];
|
||||
compare_transid2 = apiConnectptr.p->transid[1] ^ signal->theData[2];
|
||||
compare_transid1 = compare_transid1 | compare_transid2;
|
||||
if (compare_transid1 != 0) {
|
||||
if (compare_transid(apiConnectptr.p->transid, signal->theData+1) == false)
|
||||
{
|
||||
TCKEY_abort(signal, 19);
|
||||
return;
|
||||
}//if
|
||||
|
@ -2105,7 +2112,6 @@ void Dbtc::saveAttrbuf(Signal* signal)
|
|||
|
||||
void Dbtc::execATTRINFO(Signal* signal)
|
||||
{
|
||||
UintR compare_transid1, compare_transid2;
|
||||
UintR Tdata1 = signal->theData[0];
|
||||
UintR Tlength = signal->length();
|
||||
UintR TapiConnectFilesize = capiConnectFilesize;
|
||||
|
@ -2120,17 +2126,13 @@ void Dbtc::execATTRINFO(Signal* signal)
|
|||
return;
|
||||
}//if
|
||||
|
||||
UintR Tdata2 = signal->theData[1];
|
||||
UintR Tdata3 = signal->theData[2];
|
||||
ApiConnectRecord * const regApiPtr = &localApiConnectRecord[Tdata1];
|
||||
compare_transid1 = regApiPtr->transid[0] ^ Tdata2;
|
||||
compare_transid2 = regApiPtr->transid[1] ^ Tdata3;
|
||||
apiConnectptr.p = regApiPtr;
|
||||
compare_transid1 = compare_transid1 | compare_transid2;
|
||||
|
||||
if (compare_transid1 != 0) {
|
||||
if (compare_transid(regApiPtr->transid, signal->theData+1) == false)
|
||||
{
|
||||
DEBUG("Drop ATTRINFO, wrong transid, lenght="<<Tlength
|
||||
<< " transid("<<hex<<Tdata2<<", "<<Tdata3);
|
||||
<< " transid("<<hex<<signal->theData[1]<<", "<<signal->theData[2]);
|
||||
TCKEY_abort(signal, 19);
|
||||
return;
|
||||
}//if
|
||||
|
@ -5456,11 +5458,32 @@ void Dbtc::execTC_COMMITREQ(Signal* signal)
|
|||
}
|
||||
}//Dbtc::execTC_COMMITREQ()
|
||||
|
||||
/**
|
||||
* TCROLLBACKREQ
|
||||
*
|
||||
* Format is:
|
||||
*
|
||||
* thedata[0] = apiconnectptr
|
||||
* thedata[1] = transid[0]
|
||||
* thedata[2] = transid[1]
|
||||
* OPTIONAL thedata[3] = flags
|
||||
*
|
||||
* Flags:
|
||||
* 0x1 = potentiallyBad data from API (try not to assert)
|
||||
*/
|
||||
void Dbtc::execTCROLLBACKREQ(Signal* signal)
|
||||
{
|
||||
bool potentiallyBad= false;
|
||||
UintR compare_transid1, compare_transid2;
|
||||
|
||||
jamEntry();
|
||||
|
||||
if(unlikely((signal->getLength() >= 4) && (signal->theData[3] & 0x1)))
|
||||
{
|
||||
ndbout_c("Trying to roll back potentially bad txn\n");
|
||||
potentiallyBad= true;
|
||||
}
|
||||
|
||||
apiConnectptr.i = signal->theData[0];
|
||||
if (apiConnectptr.i >= capiConnectFilesize) {
|
||||
goto TC_ROLL_warning;
|
||||
|
@ -5547,12 +5570,14 @@ void Dbtc::execTCROLLBACKREQ(Signal* signal)
|
|||
|
||||
TC_ROLL_warning:
|
||||
jam();
|
||||
warningHandlerLab(signal, __LINE__);
|
||||
if(likely(potentiallyBad==false))
|
||||
warningHandlerLab(signal, __LINE__);
|
||||
return;
|
||||
|
||||
TC_ROLL_system_error:
|
||||
jam();
|
||||
systemErrorLab(signal, __LINE__);
|
||||
if(likely(potentiallyBad==false))
|
||||
systemErrorLab(signal, __LINE__);
|
||||
return;
|
||||
}//Dbtc::execTCROLLBACKREQ()
|
||||
|
||||
|
@ -11559,6 +11584,7 @@ void Dbtc::execTCINDXREQ(Signal* signal)
|
|||
// This is a newly started transaction, clean-up
|
||||
releaseAllSeizedIndexOperations(regApiPtr);
|
||||
|
||||
regApiPtr->apiConnectstate = CS_STARTED;
|
||||
regApiPtr->transid[0] = tcIndxReq->transId1;
|
||||
regApiPtr->transid[1] = tcIndxReq->transId2;
|
||||
}//if
|
||||
|
@ -11599,20 +11625,29 @@ void Dbtc::execTCINDXREQ(Signal* signal)
|
|||
Uint32 includedIndexLength = MIN(indexLength, indexBufSize);
|
||||
indexOp->expectedAttrInfo = attrLength;
|
||||
Uint32 includedAttrLength = MIN(attrLength, attrBufSize);
|
||||
if (saveINDXKEYINFO(signal,
|
||||
indexOp,
|
||||
dataPtr,
|
||||
includedIndexLength)) {
|
||||
|
||||
int ret;
|
||||
if ((ret = saveINDXKEYINFO(signal,
|
||||
indexOp,
|
||||
dataPtr,
|
||||
includedIndexLength)) == 0)
|
||||
{
|
||||
jam();
|
||||
// We have received all we need
|
||||
readIndexTable(signal, regApiPtr, indexOp);
|
||||
return;
|
||||
}
|
||||
else if (ret == -1)
|
||||
{
|
||||
jam();
|
||||
return;
|
||||
}
|
||||
|
||||
dataPtr += includedIndexLength;
|
||||
if (saveINDXATTRINFO(signal,
|
||||
indexOp,
|
||||
dataPtr,
|
||||
includedAttrLength)) {
|
||||
includedAttrLength) == 0) {
|
||||
jam();
|
||||
// We have received all we need
|
||||
readIndexTable(signal, regApiPtr, indexOp);
|
||||
|
@ -11715,13 +11750,25 @@ void Dbtc::execINDXKEYINFO(Signal* signal)
|
|||
TcIndexOperationPtr indexOpPtr;
|
||||
TcIndexOperation* indexOp;
|
||||
|
||||
if (compare_transid(regApiPtr->transid, indxKeyInfo->transId) == false)
|
||||
{
|
||||
TCKEY_abort(signal, 19);
|
||||
return;
|
||||
}
|
||||
|
||||
if (regApiPtr->apiConnectstate == CS_ABORTING)
|
||||
{
|
||||
jam();
|
||||
return;
|
||||
}
|
||||
|
||||
if((indexOpPtr.i = regApiPtr->accumulatingIndexOp) != RNIL)
|
||||
{
|
||||
indexOp = c_theIndexOperationPool.getPtr(indexOpPtr.i);
|
||||
if (saveINDXKEYINFO(signal,
|
||||
indexOp,
|
||||
src,
|
||||
keyInfoLength)) {
|
||||
keyInfoLength) == 0) {
|
||||
jam();
|
||||
// We have received all we need
|
||||
readIndexTable(signal, regApiPtr, indexOp);
|
||||
|
@ -11748,17 +11795,31 @@ void Dbtc::execINDXATTRINFO(Signal* signal)
|
|||
TcIndexOperationPtr indexOpPtr;
|
||||
TcIndexOperation* indexOp;
|
||||
|
||||
if (compare_transid(regApiPtr->transid, indxAttrInfo->transId) == false)
|
||||
{
|
||||
TCKEY_abort(signal, 19);
|
||||
return;
|
||||
}
|
||||
|
||||
if (regApiPtr->apiConnectstate == CS_ABORTING)
|
||||
{
|
||||
jam();
|
||||
return;
|
||||
}
|
||||
|
||||
if((indexOpPtr.i = regApiPtr->accumulatingIndexOp) != RNIL)
|
||||
{
|
||||
indexOp = c_theIndexOperationPool.getPtr(indexOpPtr.i);
|
||||
if (saveINDXATTRINFO(signal,
|
||||
indexOp,
|
||||
src,
|
||||
attrInfoLength)) {
|
||||
attrInfoLength) == 0) {
|
||||
jam();
|
||||
// We have received all we need
|
||||
readIndexTable(signal, regApiPtr, indexOp);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -11766,12 +11827,13 @@ void Dbtc::execINDXATTRINFO(Signal* signal)
|
|||
* Save signal INDXKEYINFO
|
||||
* Return true if we have received all needed data
|
||||
*/
|
||||
bool Dbtc::saveINDXKEYINFO(Signal* signal,
|
||||
TcIndexOperation* indexOp,
|
||||
const Uint32 *src,
|
||||
Uint32 len)
|
||||
int
|
||||
Dbtc::saveINDXKEYINFO(Signal* signal,
|
||||
TcIndexOperation* indexOp,
|
||||
const Uint32 *src,
|
||||
Uint32 len)
|
||||
{
|
||||
if (!indexOp->keyInfo.append(src, len)) {
|
||||
if (ERROR_INSERTED(8039) || !indexOp->keyInfo.append(src, len)) {
|
||||
jam();
|
||||
// Failed to seize keyInfo, abort transaction
|
||||
#ifdef VM_TRACE
|
||||
|
@ -11781,15 +11843,17 @@ bool Dbtc::saveINDXKEYINFO(Signal* signal,
|
|||
apiConnectptr.i = indexOp->connectionIndex;
|
||||
ptrCheckGuard(apiConnectptr, capiConnectFilesize, apiConnectRecord);
|
||||
releaseIndexOperation(apiConnectptr.p, indexOp);
|
||||
terrorCode = 4000;
|
||||
terrorCode = 289;
|
||||
if(TcKeyReq::getExecuteFlag(indexOp->tcIndxReq.requestInfo))
|
||||
apiConnectptr.p->m_exec_flag= 1;
|
||||
abortErrorLab(signal);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
if (receivedAllINDXKEYINFO(indexOp) && receivedAllINDXATTRINFO(indexOp)) {
|
||||
jam();
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
return false;
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool Dbtc::receivedAllINDXKEYINFO(TcIndexOperation* indexOp)
|
||||
|
@ -11801,12 +11865,13 @@ bool Dbtc::receivedAllINDXKEYINFO(TcIndexOperation* indexOp)
|
|||
* Save signal INDXATTRINFO
|
||||
* Return true if we have received all needed data
|
||||
*/
|
||||
bool Dbtc::saveINDXATTRINFO(Signal* signal,
|
||||
TcIndexOperation* indexOp,
|
||||
const Uint32 *src,
|
||||
Uint32 len)
|
||||
int
|
||||
Dbtc::saveINDXATTRINFO(Signal* signal,
|
||||
TcIndexOperation* indexOp,
|
||||
const Uint32 *src,
|
||||
Uint32 len)
|
||||
{
|
||||
if (!indexOp->attrInfo.append(src, len)) {
|
||||
if (ERROR_INSERTED(8051) || !indexOp->attrInfo.append(src, len)) {
|
||||
jam();
|
||||
#ifdef VM_TRACE
|
||||
ndbout_c("Dbtc::saveINDXATTRINFO: Failed to seize attrInfo\n");
|
||||
|
@ -11814,15 +11879,17 @@ bool Dbtc::saveINDXATTRINFO(Signal* signal,
|
|||
apiConnectptr.i = indexOp->connectionIndex;
|
||||
ptrCheckGuard(apiConnectptr, capiConnectFilesize, apiConnectRecord);
|
||||
releaseIndexOperation(apiConnectptr.p, indexOp);
|
||||
terrorCode = 4000;
|
||||
terrorCode = 289;
|
||||
if(TcKeyReq::getExecuteFlag(indexOp->tcIndxReq.requestInfo))
|
||||
apiConnectptr.p->m_exec_flag= 1;
|
||||
abortErrorLab(signal);
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
if (receivedAllINDXKEYINFO(indexOp) && receivedAllINDXATTRINFO(indexOp)) {
|
||||
jam();
|
||||
return true;
|
||||
return 0;
|
||||
}
|
||||
return false;
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool Dbtc::receivedAllINDXATTRINFO(TcIndexOperation* indexOp)
|
||||
|
@ -12006,6 +12073,9 @@ void Dbtc::execTCKEYREF(Signal* signal)
|
|||
tcIndxRef->transId[0] = tcKeyRef->transId[0];
|
||||
tcIndxRef->transId[1] = tcKeyRef->transId[1];
|
||||
tcIndxRef->errorCode = tcKeyRef->errorCode;
|
||||
|
||||
releaseIndexOperation(regApiPtr, indexOp);
|
||||
|
||||
sendSignal(regApiPtr->ndbapiBlockref,
|
||||
GSN_TCINDXREF, signal, TcKeyRef::SignalLength, JBB);
|
||||
return;
|
||||
|
@ -12538,7 +12608,18 @@ void Dbtc::executeIndexOperation(Signal* signal,
|
|||
bool Dbtc::seizeIndexOperation(ApiConnectRecord* regApiPtr,
|
||||
TcIndexOperationPtr& indexOpPtr)
|
||||
{
|
||||
return regApiPtr->theSeizedIndexOperations.seize(indexOpPtr);
|
||||
if (regApiPtr->theSeizedIndexOperations.seize(indexOpPtr))
|
||||
{
|
||||
ndbassert(indexOpPtr.p->expectedKeyInfo == 0);
|
||||
ndbassert(indexOpPtr.p->keyInfo.getSize() == 0);
|
||||
ndbassert(indexOpPtr.p->expectedAttrInfo == 0);
|
||||
ndbassert(indexOpPtr.p->attrInfo.getSize() == 0);
|
||||
ndbassert(indexOpPtr.p->expectedTransIdAI == 0);
|
||||
ndbassert(indexOpPtr.p->transIdAI.getSize() == 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void Dbtc::releaseIndexOperation(ApiConnectRecord* regApiPtr,
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue