mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merged 5.3 changes into the mwl #248 tree.
This commit is contained in:
@ -178,7 +178,7 @@ base_configs="--prefix=$prefix --enable-assembler "
|
|||||||
base_configs="$base_configs --with-extra-charsets=complex "
|
base_configs="$base_configs --with-extra-charsets=complex "
|
||||||
base_configs="$base_configs --enable-thread-safe-client "
|
base_configs="$base_configs --enable-thread-safe-client "
|
||||||
base_configs="$base_configs --with-big-tables"
|
base_configs="$base_configs --with-big-tables"
|
||||||
base_configs="$base_configs --with-plugin-aria --with-aria-tmp-tables --without-plugin-innodb_plugin"
|
base_configs="$base_configs --with-plugin-aria --with-aria-tmp-tables"
|
||||||
# Compile our client programs with static libraries to allow them to be moved
|
# Compile our client programs with static libraries to allow them to be moved
|
||||||
base_configs="$base_configs --with-mysqld-ldflags=-static --with-client-ldflags=-static"
|
base_configs="$base_configs --with-mysqld-ldflags=-static --with-client-ldflags=-static"
|
||||||
|
|
||||||
|
@ -277,7 +277,6 @@ API_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql.h \
|
|||||||
|
|
||||||
TEST_PREPROCESSOR_HEADER = $(API_PREPROCESSOR_HEADER) \
|
TEST_PREPROCESSOR_HEADER = $(API_PREPROCESSOR_HEADER) \
|
||||||
$(top_srcdir)/sql/mysql_priv.h
|
$(top_srcdir)/sql/mysql_priv.h
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Rules for checking that the abi/api has not changed.
|
# Rules for checking that the abi/api has not changed.
|
||||||
|
3
README
3
README
@ -45,6 +45,9 @@ https://bugs.launchpad.net/maria
|
|||||||
|
|
||||||
Bugs in the MySQL code can also be submitted at http://bugs.mysql.com
|
Bugs in the MySQL code can also be submitted at http://bugs.mysql.com
|
||||||
|
|
||||||
|
The code for MariaDB, including all revision history, can be found at:
|
||||||
|
https://code.launchpad.net/maria
|
||||||
|
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2009-2011 Monty Program Ab.
|
Copyright (c) 2009-2012 Monty Program Ab.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -732,7 +732,8 @@ void replace_dynstr_append_mem(DYNAMIC_STRING *ds, const char *val,
|
|||||||
int len);
|
int len);
|
||||||
void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val);
|
void replace_dynstr_append(DYNAMIC_STRING *ds, const char *val);
|
||||||
void replace_dynstr_append_uint(DYNAMIC_STRING *ds, uint val);
|
void replace_dynstr_append_uint(DYNAMIC_STRING *ds, uint val);
|
||||||
void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING* ds_input);
|
void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING* ds_input,
|
||||||
|
bool keep_header);
|
||||||
|
|
||||||
static int match_expected_error(struct st_command *command,
|
static int match_expected_error(struct st_command *command,
|
||||||
unsigned int err_errno,
|
unsigned int err_errno,
|
||||||
@ -2790,6 +2791,7 @@ void do_exec(struct st_command *command)
|
|||||||
FILE *res_file;
|
FILE *res_file;
|
||||||
char *cmd= command->first_argument;
|
char *cmd= command->first_argument;
|
||||||
DYNAMIC_STRING ds_cmd;
|
DYNAMIC_STRING ds_cmd;
|
||||||
|
DYNAMIC_STRING ds_sorted, *ds_result;
|
||||||
DBUG_ENTER("do_exec");
|
DBUG_ENTER("do_exec");
|
||||||
DBUG_PRINT("enter", ("cmd: '%s'", cmd));
|
DBUG_PRINT("enter", ("cmd: '%s'", cmd));
|
||||||
|
|
||||||
@ -2835,6 +2837,13 @@ void do_exec(struct st_command *command)
|
|||||||
die("popen(\"%s\", \"r\") failed", command->first_argument);
|
die("popen(\"%s\", \"r\") failed", command->first_argument);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ds_result= &ds_res;
|
||||||
|
if (display_result_sorted)
|
||||||
|
{
|
||||||
|
init_dynamic_string(&ds_sorted, "", 1024, 1024);
|
||||||
|
ds_result= &ds_sorted;
|
||||||
|
}
|
||||||
|
|
||||||
while (fgets(buf, sizeof(buf), res_file))
|
while (fgets(buf, sizeof(buf), res_file))
|
||||||
{
|
{
|
||||||
if (disable_result_log)
|
if (disable_result_log)
|
||||||
@ -2844,10 +2853,17 @@ void do_exec(struct st_command *command)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
replace_dynstr_append(&ds_res, buf);
|
replace_dynstr_append(ds_result, buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
error= pclose(res_file);
|
error= pclose(res_file);
|
||||||
|
|
||||||
|
if (display_result_sorted)
|
||||||
|
{
|
||||||
|
dynstr_append_sorted(&ds_res, &ds_sorted, 0);
|
||||||
|
dynstr_free(&ds_sorted);
|
||||||
|
}
|
||||||
|
|
||||||
if (error > 0)
|
if (error > 0)
|
||||||
{
|
{
|
||||||
uint status= WEXITSTATUS(error);
|
uint status= WEXITSTATUS(error);
|
||||||
@ -7743,7 +7759,7 @@ void run_query(struct st_connection *cn, struct st_command *command, int flags)
|
|||||||
if (display_result_sorted)
|
if (display_result_sorted)
|
||||||
{
|
{
|
||||||
/* Sort the result set and append it to result */
|
/* Sort the result set and append it to result */
|
||||||
dynstr_append_sorted(save_ds, &ds_sorted);
|
dynstr_append_sorted(save_ds, &ds_sorted, 1);
|
||||||
ds= save_ds;
|
ds= save_ds;
|
||||||
dynstr_free(&ds_sorted);
|
dynstr_free(&ds_sorted);
|
||||||
}
|
}
|
||||||
@ -10125,17 +10141,16 @@ void replace_dynstr_append_uint(DYNAMIC_STRING *ds, uint val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Build a list of pointer to each line in ds_input, sort
|
Build a list of pointer to each line in ds_input, sort
|
||||||
the list and use the sorted list to append the strings
|
the list and use the sorted list to append the strings
|
||||||
sorted to the output ds
|
sorted to the output ds
|
||||||
|
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
dynstr_append_sorted
|
dynstr_append_sorted()
|
||||||
ds - string where the sorted output will be appended
|
ds string where the sorted output will be appended
|
||||||
ds_input - string to be sorted
|
ds_input string to be sorted
|
||||||
|
keep_header If header should not be sorted
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int comp_lines(const char **a, const char **b)
|
static int comp_lines(const char **a, const char **b)
|
||||||
@ -10143,7 +10158,8 @@ static int comp_lines(const char **a, const char **b)
|
|||||||
return (strcmp(*a,*b));
|
return (strcmp(*a,*b));
|
||||||
}
|
}
|
||||||
|
|
||||||
void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING *ds_input)
|
void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING *ds_input,
|
||||||
|
bool keep_header)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
char *start= ds_input->str;
|
char *start= ds_input->str;
|
||||||
@ -10155,11 +10171,14 @@ void dynstr_append_sorted(DYNAMIC_STRING* ds, DYNAMIC_STRING *ds_input)
|
|||||||
|
|
||||||
my_init_dynamic_array(&lines, sizeof(const char*), 32, 32);
|
my_init_dynamic_array(&lines, sizeof(const char*), 32, 32);
|
||||||
|
|
||||||
/* First line is result header, skip past it */
|
if (keep_header)
|
||||||
while (*start && *start != '\n')
|
{
|
||||||
start++;
|
/* First line is result header, skip past it */
|
||||||
start++; /* Skip past \n */
|
while (*start && *start != '\n')
|
||||||
dynstr_append_mem(ds, ds_input->str, start - ds_input->str);
|
start++;
|
||||||
|
start++; /* Skip past \n */
|
||||||
|
dynstr_append_mem(ds, ds_input->str, start - ds_input->str);
|
||||||
|
}
|
||||||
|
|
||||||
/* Insert line(s) in array */
|
/* Insert line(s) in array */
|
||||||
while (*start)
|
while (*start)
|
||||||
@ -10237,4 +10256,3 @@ char *mysql_authentication_dialog_ask(MYSQL *mysql, int type,
|
|||||||
|
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,11 +45,11 @@
|
|||||||
* seems to actually advertise this properly, despite Unicode 3.1 having
|
* seems to actually advertise this properly, despite Unicode 3.1 having
|
||||||
* been around since 2001... */
|
* been around since 2001... */
|
||||||
|
|
||||||
/* XXXMYSQL : Added FreeBSD to bypass this check.
|
/* XXXMYSQL : Added FreeBSD & AIX to bypass this check.
|
||||||
TODO : Verify if FreeBSD stores ISO 10646 in wchar_t. */
|
TODO : Verify if FreeBSD & AIX stores ISO 10646 in wchar_t. */
|
||||||
#if !defined(__NetBSD__) && !defined(__sun) \
|
#if !defined(__NetBSD__) && !defined(__sun) \
|
||||||
&& !(defined(__APPLE__) && defined(__MACH__)) \
|
&& !(defined(__APPLE__) && defined(__MACH__)) \
|
||||||
&& !defined(__FreeBSD__)
|
&& !defined(__FreeBSD__) && !defined(_AIX)
|
||||||
#ifndef __STDC_ISO_10646__
|
#ifndef __STDC_ISO_10646__
|
||||||
/* In many places it is assumed that the first 127 code points are ASCII
|
/* In many places it is assumed that the first 127 code points are ASCII
|
||||||
* compatible, so ensure wchar_t indeed does ISO 10646 and not some other
|
* compatible, so ensure wchar_t indeed does ISO 10646 and not some other
|
||||||
|
@ -200,7 +200,7 @@ el_set(EditLine *el, int op, ...)
|
|||||||
ret = -1;
|
ret = -1;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
// XXX: The two strdup's leak
|
/* XXX: The two strdups leak. */
|
||||||
ret = map_addfunc(el, Strdup(wargv[0]), Strdup(wargv[1]),
|
ret = map_addfunc(el, Strdup(wargv[0]), Strdup(wargv[1]),
|
||||||
func);
|
func);
|
||||||
ct_free_argv(wargv);
|
ct_free_argv(wargv);
|
||||||
|
@ -1978,7 +1978,7 @@ rl_callback_read_char()
|
|||||||
} else
|
} else
|
||||||
wbuf = NULL;
|
wbuf = NULL;
|
||||||
(*(void (*)(const char *))rl_linefunc)(wbuf);
|
(*(void (*)(const char *))rl_linefunc)(wbuf);
|
||||||
//el_set(e, EL_UNBUFFERED, 1);
|
/*el_set(e, EL_UNBUFFERED, 1);*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,6 +40,17 @@
|
|||||||
#ifndef _h_sys
|
#ifndef _h_sys
|
||||||
#define _h_sys
|
#define _h_sys
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
/* Apparently we need _GNU_SOURCE defined to get access to wcsdup on Linux */
|
||||||
|
#ifndef _GNU_SOURCE
|
||||||
|
#define _GNU_SOURCE
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __USE_XOPEN
|
||||||
|
#define __USE_XOPEN
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_SYS_CDEFS_H
|
#ifdef HAVE_SYS_CDEFS_H
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#endif
|
#endif
|
||||||
@ -92,17 +103,6 @@ size_t strlcpy(char *dst, const char *src, size_t size);
|
|||||||
char *fgetln(FILE *fp, size_t *len);
|
char *fgetln(FILE *fp, size_t *len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __linux__
|
|
||||||
/* Apparently we need _GNU_SOURCE defined to get access to wcsdup on Linux */
|
|
||||||
#ifndef _GNU_SOURCE
|
|
||||||
#define _GNU_SOURCE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __USE_XOPEN
|
|
||||||
#define __USE_XOPEN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
#include <wctype.h>
|
#include <wctype.h>
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ dnl When changing the major version number please also check the switch
|
|||||||
dnl statement in mysqlbinlog::check_master_version(). You may also need
|
dnl statement in mysqlbinlog::check_master_version(). You may also need
|
||||||
dnl to update version.c in ndb.
|
dnl to update version.c in ndb.
|
||||||
|
|
||||||
AC_INIT([MariaDB Server], [5.3.4-MariaDB-rc], [], [mysql])
|
AC_INIT([MariaDB Server], [5.3.5-MariaDB-ga], [], [mysql])
|
||||||
|
|
||||||
AC_CONFIG_SRCDIR([sql/mysqld.cc])
|
AC_CONFIG_SRCDIR([sql/mysqld.cc])
|
||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
@ -2034,7 +2034,7 @@ dnl Checks for library functions.
|
|||||||
AC_FUNC_ALLOCA
|
AC_FUNC_ALLOCA
|
||||||
AC_PROG_GCC_TRADITIONAL
|
AC_PROG_GCC_TRADITIONAL
|
||||||
AC_TYPE_SIGNAL
|
AC_TYPE_SIGNAL
|
||||||
AC_CHECK_FUNCS(re_comp regcomp strdup)
|
AC_CHECK_FUNCS(re_comp regcomp strdup strndup)
|
||||||
|
|
||||||
dnl Sun compilers have their own vis.h that is about something
|
dnl Sun compilers have their own vis.h that is about something
|
||||||
dnl totally different. So, not to change the libedit source, we
|
dnl totally different. So, not to change the libedit source, we
|
||||||
|
@ -45,8 +45,8 @@
|
|||||||
#define MACHINE_TYPE "ia64"
|
#define MACHINE_TYPE "ia64"
|
||||||
#elif defined(_M_IX86)
|
#elif defined(_M_IX86)
|
||||||
#define MACHINE_TYPE "ia32"
|
#define MACHINE_TYPE "ia32"
|
||||||
#elif defined(_M_ALPHA)
|
#elif defined(_M_X64)
|
||||||
#define MACHINE_TYPE "axp"
|
#define MACHINE_TYPE "x64"
|
||||||
#else
|
#else
|
||||||
#define MACHINE_TYPE "unknown" /* Define to machine type name */
|
#define MACHINE_TYPE "unknown" /* Define to machine type name */
|
||||||
#endif
|
#endif
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
/* Internal temp table, used for temporary results */
|
/* Internal temp table, used for temporary results */
|
||||||
#define HA_OPEN_INTERNAL_TABLE 512
|
#define HA_OPEN_INTERNAL_TABLE 512
|
||||||
#define HA_OPEN_MERGE_TABLE 1024
|
#define HA_OPEN_MERGE_TABLE 1024
|
||||||
|
#define HA_OPEN_FOR_STATUS 2048
|
||||||
|
|
||||||
/* The following is parameter to ha_rkey() how to use key */
|
/* The following is parameter to ha_rkey() how to use key */
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
/*
|
/* Copyright (c) 2001, 2011, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2001, 2010, Oracle and/or its affiliates.
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -12,8 +11,7 @@
|
|||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _my_stacktrace_h_
|
#ifndef _my_stacktrace_h_
|
||||||
#define _my_stacktrace_h_
|
#define _my_stacktrace_h_
|
||||||
@ -63,6 +61,69 @@ void my_set_exception_pointers(EXCEPTION_POINTERS *ep);
|
|||||||
void my_write_core(int sig);
|
void my_write_core(int sig);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Async-signal-safe utility functions used by signal handler routines.
|
||||||
|
Declared here in order to unit-test them.
|
||||||
|
These are not general-purpose, but tailored to the signal handling routines.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
Converts a longlong value to string.
|
||||||
|
@param base 10 for decimal, 16 for hex values (0..9a..f)
|
||||||
|
@param val The value to convert
|
||||||
|
@param buf Assumed to point to the *end* of the buffer.
|
||||||
|
@returns Pointer to the first character of the converted string.
|
||||||
|
Negative values:
|
||||||
|
for base-10 the return string will be prepended with '-'
|
||||||
|
for base-16 the return string will contain 16 characters
|
||||||
|
Implemented with simplicity, and async-signal-safety in mind.
|
||||||
|
*/
|
||||||
|
char *my_safe_itoa(int base, longlong val, char *buf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Converts a ulonglong value to string.
|
||||||
|
@param base 10 for decimal, 16 for hex values (0..9a..f)
|
||||||
|
@param val The value to convert
|
||||||
|
@param buf Assumed to point to the *end* of the buffer.
|
||||||
|
@returns Pointer to the first character of the converted string.
|
||||||
|
Implemented with simplicity, and async-signal-safety in mind.
|
||||||
|
*/
|
||||||
|
char *my_safe_utoa(int base, ulonglong val, char *buf);
|
||||||
|
|
||||||
|
/**
|
||||||
|
A (very) limited version of snprintf.
|
||||||
|
@param to Destination buffer.
|
||||||
|
@param n Size of destination buffer.
|
||||||
|
@param fmt printf() style format string.
|
||||||
|
@returns Number of bytes written, including terminating '\0'
|
||||||
|
Supports 'd' 'i' 'u' 'x' 'p' 's' conversion.
|
||||||
|
Supports 'l' and 'll' modifiers for integral types.
|
||||||
|
Does not support any width/precision.
|
||||||
|
Implemented with simplicity, and async-signal-safety in mind.
|
||||||
|
*/
|
||||||
|
size_t my_safe_snprintf(char* to, size_t n, const char* fmt, ...)
|
||||||
|
ATTRIBUTE_FORMAT(printf, 3, 4);
|
||||||
|
|
||||||
|
/**
|
||||||
|
A (very) limited version of snprintf, which writes the result to STDERR.
|
||||||
|
@sa my_safe_snprintf
|
||||||
|
Implemented with simplicity, and async-signal-safety in mind.
|
||||||
|
@note Has an internal buffer capacity of 512 bytes,
|
||||||
|
which should suffice for our signal handling routines.
|
||||||
|
*/
|
||||||
|
size_t my_safe_printf_stderr(const char* fmt, ...)
|
||||||
|
ATTRIBUTE_FORMAT(printf, 1, 2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Writes up to count bytes from buffer to STDERR.
|
||||||
|
Implemented with simplicity, and async-signal-safety in mind.
|
||||||
|
@param buf Buffer containing data to be written.
|
||||||
|
@param count Number of bytes to write.
|
||||||
|
@returns Number of bytes written.
|
||||||
|
*/
|
||||||
|
size_t my_write_stderr(const void *buf, size_t count);
|
||||||
|
|
||||||
C_MODE_END
|
C_MODE_END
|
||||||
|
|
||||||
#endif /* _my_stacktrace_h_ */
|
#endif /* _my_stacktrace_h_ */
|
||||||
|
@ -82,9 +82,9 @@ void get_tty_password_buff(const char *opt_message, char *to, size_t length)
|
|||||||
_cputs(opt_message ? opt_message : "Enter password: ");
|
_cputs(opt_message ? opt_message : "Enter password: ");
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
char tmp;
|
int tmp;
|
||||||
tmp=_getch();
|
tmp=_getch();
|
||||||
if (tmp == '\b' || (int) tmp == 127)
|
if (tmp == '\b' || tmp == 127)
|
||||||
{
|
{
|
||||||
if (pos != to)
|
if (pos != to)
|
||||||
{
|
{
|
||||||
@ -93,15 +93,13 @@ void get_tty_password_buff(const char *opt_message, char *to, size_t length)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tmp == '\n' || tmp == '\r' || tmp == 3)
|
if (tmp == -1 || tmp == '\n' || tmp == '\r' || tmp == 3)
|
||||||
break;
|
break;
|
||||||
if (iscntrl(tmp) || pos == end)
|
if (iscntrl(tmp) || pos == end)
|
||||||
continue;
|
continue;
|
||||||
_cputs("*");
|
_cputs("*");
|
||||||
*(pos++) = tmp;
|
*(pos++) = (char)tmp;
|
||||||
}
|
}
|
||||||
while (pos != to && isspace(pos[-1]) == ' ')
|
|
||||||
pos--; /* Allow dummy space at end */
|
|
||||||
*pos=0;
|
*pos=0;
|
||||||
_cputs("\n");
|
_cputs("\n");
|
||||||
}
|
}
|
||||||
@ -148,8 +146,6 @@ static void get_password(char *to,uint length,int fd, my_bool echo)
|
|||||||
}
|
}
|
||||||
*(pos++) = tmp;
|
*(pos++) = tmp;
|
||||||
}
|
}
|
||||||
while (pos != to && isspace(pos[-1]) == ' ')
|
|
||||||
pos--; /* Allow dummy space at end */
|
|
||||||
*pos=0;
|
*pos=0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -104,6 +104,7 @@ SET(LIBMYSQLD_SOURCES libmysqld.c emb_qcache.cc lib_sql.cc
|
|||||||
../sql/password.c ../sql/discover.cc ../sql/derror.cc
|
../sql/password.c ../sql/discover.cc ../sql/derror.cc
|
||||||
../sql/field.cc ../sql/field_conv.cc ../sql-common/client_plugin.c
|
../sql/field.cc ../sql/field_conv.cc ../sql-common/client_plugin.c
|
||||||
../sql/filesort.cc ../sql/gstream.cc ../sql/ha_partition.cc
|
../sql/filesort.cc ../sql/gstream.cc ../sql/ha_partition.cc
|
||||||
|
../sql/signal_handler.cc
|
||||||
../sql/handler.cc ../sql/hash_filo.cc ../sql/hostname.cc
|
../sql/handler.cc ../sql/hash_filo.cc ../sql/hostname.cc
|
||||||
../sql/init.cc ../sql/item_buff.cc ../sql/item_cmpfunc.cc
|
../sql/init.cc ../sql/item_buff.cc ../sql/item_cmpfunc.cc
|
||||||
../sql/item.cc ../sql/item_create.cc ../sql/item_func.cc
|
../sql/item.cc ../sql/item_create.cc ../sql/item_func.cc
|
||||||
|
@ -144,6 +144,8 @@ install-data-local:
|
|||||||
uninstall-local:
|
uninstall-local:
|
||||||
@RM@ -f -r $(DESTDIR)$(testdir)
|
@RM@ -f -r $(DESTDIR)$(testdir)
|
||||||
|
|
||||||
|
uninstall-am: uninstall-local
|
||||||
|
|
||||||
# mtr - a shortcut for executing mysql-test-run.pl
|
# mtr - a shortcut for executing mysql-test-run.pl
|
||||||
mtr:
|
mtr:
|
||||||
$(RM) -f mtr
|
$(RM) -f mtr
|
||||||
|
@ -852,3 +852,25 @@ SET optimizer_switch=@save_optimizer_switch;
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
|
--echo # check "Handler_pushed" status varuiables
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 CHAR(1),
|
||||||
|
c2 CHAR(1),
|
||||||
|
KEY (c1)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES ('3', '3'),('4','4'),('5','5');
|
||||||
|
|
||||||
|
flush status;
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
|
||||||
|
SELECT * FROM t1 FORCE INDEX(c1) WHERE (c1='3' or c1='4') and c1 % 2 = 0 ;
|
||||||
|
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
|
||||||
|
SELECT * FROM t1 WHERE (c2='3' or c2='4') and c2 % 2 = 0 ;
|
||||||
|
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ while ($mysql_errno)
|
|||||||
# Strangely enough, the server might return "Too many connections"
|
# Strangely enough, the server might return "Too many connections"
|
||||||
# while being shutdown, thus 1040 is an "allowed" error
|
# while being shutdown, thus 1040 is an "allowed" error
|
||||||
# See BUG#36228
|
# See BUG#36228
|
||||||
--error 0,1040,1053,2002,2003,2006,2013
|
--error 0,1040,1053,2002,2003,2005,2006,2013
|
||||||
show status;
|
show status;
|
||||||
|
|
||||||
dec $counter;
|
dec $counter;
|
||||||
|
@ -12,7 +12,7 @@ while (!$mysql_errno)
|
|||||||
# Strangely enough, the server might return "Too many connections"
|
# Strangely enough, the server might return "Too many connections"
|
||||||
# while being shutdown, thus 1040 is an "allowed" error.
|
# while being shutdown, thus 1040 is an "allowed" error.
|
||||||
# See BUG#36228.
|
# See BUG#36228.
|
||||||
--error 0,1040,1053,2002,2003,2006,2013
|
--error 0,1040,1053,2002,2003,2005,2006,2013
|
||||||
show status;
|
show status;
|
||||||
|
|
||||||
dec $counter;
|
dec $counter;
|
||||||
|
@ -931,6 +931,13 @@ sub collect_one_test_case {
|
|||||||
$tinfo->{'long_test'}= 1;
|
$tinfo->{'long_test'}= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( ! $tinfo->{'big_test'} and $::opt_big_test > 1 )
|
||||||
|
{
|
||||||
|
$tinfo->{'skip'}= 1;
|
||||||
|
$tinfo->{'comment'}= "Small test";
|
||||||
|
return $tinfo
|
||||||
|
}
|
||||||
|
|
||||||
if ( $tinfo->{'need_debug'} && ! $::debug_compiled_binaries )
|
if ( $tinfo->{'need_debug'} && ! $::debug_compiled_binaries )
|
||||||
{
|
{
|
||||||
$tinfo->{'skip'}= 1;
|
$tinfo->{'skip'}= 1;
|
||||||
|
@ -990,7 +990,7 @@ sub command_line_setup {
|
|||||||
'skip-test=s' => \&collect_option,
|
'skip-test=s' => \&collect_option,
|
||||||
'do-test=s' => \&collect_option,
|
'do-test=s' => \&collect_option,
|
||||||
'start-from=s' => \&collect_option,
|
'start-from=s' => \&collect_option,
|
||||||
'big-test' => \$opt_big_test,
|
'big-test+' => \$opt_big_test,
|
||||||
'combination=s' => \@opt_combinations,
|
'combination=s' => \@opt_combinations,
|
||||||
'skip-combinations' => \&collect_option,
|
'skip-combinations' => \&collect_option,
|
||||||
'experimental=s' => \@opt_experimentals,
|
'experimental=s' => \@opt_experimentals,
|
||||||
@ -1761,8 +1761,11 @@ sub collect_mysqld_features {
|
|||||||
# Put variables into hash
|
# Put variables into hash
|
||||||
if ( $line =~ /^([\S]+)[ \t]+(.*?)\r?$/ )
|
if ( $line =~ /^([\S]+)[ \t]+(.*?)\r?$/ )
|
||||||
{
|
{
|
||||||
# print "$1=\"$2\"\n";
|
my $name= $1;
|
||||||
$mysqld_variables{$1}= $2;
|
my $value=$2;
|
||||||
|
$name =~ s/_/-/g;
|
||||||
|
# print "$name=\"$value\"\n";
|
||||||
|
$mysqld_variables{$name}= $value;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1816,8 +1819,11 @@ sub collect_mysqld_features_from_running_server ()
|
|||||||
# Put variables into hash
|
# Put variables into hash
|
||||||
if ( $line =~ /^([\S]+)[ \t]+(.*?)\r?$/ )
|
if ( $line =~ /^([\S]+)[ \t]+(.*?)\r?$/ )
|
||||||
{
|
{
|
||||||
# print "$1=\"$2\"\n";
|
my $name= $1;
|
||||||
$mysqld_variables{$1}= $2;
|
my $value=$2;
|
||||||
|
$name =~ s/_/-/g;
|
||||||
|
# print "$name=\"$value\"\n";
|
||||||
|
$mysqld_variables{$name}= $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2512,7 +2518,8 @@ sub setup_vardir() {
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
# hm, what paths work for debs and for rpms ?
|
# hm, what paths work for debs and for rpms ?
|
||||||
for (<$bindir/lib/mysql/plugin/*.so>,
|
for (<$bindir/lib64/mysql/plugin/*.so>,
|
||||||
|
<$bindir/lib/mysql/plugin/*.so>,
|
||||||
<$bindir/lib/plugin/*.dll>)
|
<$bindir/lib/plugin/*.dll>)
|
||||||
{
|
{
|
||||||
my $pname=basename($_);
|
my $pname=basename($_);
|
||||||
@ -4466,9 +4473,9 @@ sub extract_warning_lines ($$) {
|
|||||||
qr/Failed on request_dump/,
|
qr/Failed on request_dump/,
|
||||||
qr/Slave: Can't drop database.* database doesn't exist/,
|
qr/Slave: Can't drop database.* database doesn't exist/,
|
||||||
qr/Slave: Operation DROP USER failed for 'create_rout_db'/,
|
qr/Slave: Operation DROP USER failed for 'create_rout_db'/,
|
||||||
qr|Checking table: '\./mtr/test_suppressions'|,
|
qr|Checking table: '\..mtr.test_suppressions'|,
|
||||||
qr|Table \./test/bug53592 has a primary key in InnoDB data dictionary, but not in MySQL|,
|
qr|Table \./test/bug53592 has a primary key in InnoDB data dictionary, but not in MySQL|,
|
||||||
qr|mysqld: Table '\./mtr/test_suppressions' is marked as crashed and should be repaired|,
|
qr|Table '\..mtr.test_suppressions' is marked as crashed and should be repaired|,
|
||||||
qr|Can't open shared library.*ha_archive|,
|
qr|Can't open shared library.*ha_archive|,
|
||||||
qr|InnoDB: Error: table 'test/bug39438'|,
|
qr|InnoDB: Error: table 'test/bug39438'|,
|
||||||
qr|Access denied for user|,
|
qr|Access denied for user|,
|
||||||
@ -6007,7 +6014,8 @@ Options to control what test suites or cases to run
|
|||||||
list of suite names.
|
list of suite names.
|
||||||
The default is: "$DEFAULT_SUITES"
|
The default is: "$DEFAULT_SUITES"
|
||||||
skip-rpl Skip the replication test cases.
|
skip-rpl Skip the replication test cases.
|
||||||
big-test Also run tests marked as "big"
|
big-test Also run tests marked as "big". Repeat this option
|
||||||
|
twice to run only "big" tests.
|
||||||
staging-run Run a limited number of tests (no slow tests). Used
|
staging-run Run a limited number of tests (no slow tests). Used
|
||||||
for running staging trees with valgrind.
|
for running staging trees with valgrind.
|
||||||
enable-disabled Run also tests marked as disabled
|
enable-disabled Run also tests marked as disabled
|
||||||
|
@ -12782,3 +12782,22 @@ a b c d e f
|
|||||||
-1 b c d e 1
|
-1 b c d e 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET sort_buffer_size=DEFAULT;
|
SET sort_buffer_size=DEFAULT;
|
||||||
|
#
|
||||||
|
# BUG#11758979 - 51252: ARCHIVE TABLES CAUSE 100% CPU USAGE
|
||||||
|
# AND HANG IN SHOW TABLE STATUS
|
||||||
|
# (to be executed with valgrind)
|
||||||
|
CREATE TABLE t1(a BLOB, b VARCHAR(200)) ENGINE=ARCHIVE;
|
||||||
|
INSERT INTO t1 VALUES(NULL, '');
|
||||||
|
FLUSH TABLE t1;
|
||||||
|
# we need this select to workaround BUG#11764364
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a b
|
||||||
|
NULL
|
||||||
|
CHECKSUM TABLE t1 EXTENDED;
|
||||||
|
Table Checksum
|
||||||
|
test.t1 286155052
|
||||||
|
FLUSH TABLE t1;
|
||||||
|
OPTIMIZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 optimize status OK
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -1556,6 +1556,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 7
|
Handler_read_rnd_next 7
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1));
|
CREATE TABLE t1(c1 VARCHAR(33), KEY USING BTREE (c1));
|
||||||
|
@ -267,3 +267,19 @@ drop table t1;
|
|||||||
create table t1(a char character set latin1 default _cp1251 0xFF);
|
create table t1(a char character set latin1 default _cp1251 0xFF);
|
||||||
ERROR 42000: Invalid default value for 'a'
|
ERROR 42000: Invalid default value for 'a'
|
||||||
End of 4.1 tests
|
End of 4.1 tests
|
||||||
|
SET CHARACTER SET DEFAULT;
|
||||||
|
#
|
||||||
|
# LP BUG#944504 Item_func_conv_charset tries to execute subquery constant
|
||||||
|
#
|
||||||
|
SET optimizer_switch = 'in_to_exists=on';
|
||||||
|
SET character_set_connection = utf8;
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(1) );
|
||||||
|
INSERT INTO t1 VALUES ('m'),('n');
|
||||||
|
CREATE VIEW v1 AS SELECT 'w' ;
|
||||||
|
SELECT * FROM t1 WHERE a < ALL ( SELECT * FROM v1 );
|
||||||
|
ERROR HY000: Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '<='
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
SET character_set_connection = default;
|
||||||
|
SET optimizer_switch= default;
|
||||||
|
#End of 5.3 tests
|
||||||
|
@ -273,4 +273,13 @@ ON alias3.f4 != 0
|
|||||||
) ON alias3.f4 != 0;
|
) ON alias3.f4 != 0;
|
||||||
f4 f4 f2 f4
|
f4 f4 f2 f4
|
||||||
drop table t1,t2,t3,t4;
|
drop table t1,t2,t3,t4;
|
||||||
|
#
|
||||||
|
# LP BUG#910123 MariaDB 5.3.3 causes 1093 error on Drupal
|
||||||
|
# Fix: force materialization in case of conflict
|
||||||
|
#
|
||||||
|
SET optimizer_switch='derived_merge=on';
|
||||||
|
CREATE TABLE t1 ( i INT );
|
||||||
|
INSERT INTO t1 VALUES ( (SELECT 1 FROM ( SELECT * FROM t1 ) as a) );
|
||||||
|
drop table t1;
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
set optimizer_switch=@exit_optimizer_switch;
|
set optimizer_switch=@exit_optimizer_switch;
|
||||||
|
@ -79,6 +79,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
flush status;
|
flush status;
|
||||||
select * from (select * from t1 where f1 in (2,3)) tt where f11=2;
|
select * from (select * from t1 where f1 in (2,3)) tt where f11=2;
|
||||||
@ -91,6 +92,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 12
|
Handler_read_rnd_next 12
|
||||||
for merged views
|
for merged views
|
||||||
create view v1 as select * from t1;
|
create view v1 as select * from t1;
|
||||||
@ -162,6 +164,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
flush status;
|
flush status;
|
||||||
select * from v4 where f2 in (1,3);
|
select * from v4 where f2 in (1,3);
|
||||||
@ -174,6 +177,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 12
|
Handler_read_rnd_next 12
|
||||||
for materialized derived tables
|
for materialized derived tables
|
||||||
explain for simple derived
|
explain for simple derived
|
||||||
@ -224,6 +228,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
flush status;
|
flush status;
|
||||||
select * from t1 join (select * from t2 group by f2) tt on f1=f2;
|
select * from t1 join (select * from t2 group by f2) tt on f1=f2;
|
||||||
@ -238,6 +243,7 @@ Handler_read_key 11
|
|||||||
Handler_read_next 3
|
Handler_read_next 3
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 11
|
Handler_read_rnd 11
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 36
|
Handler_read_rnd_next 36
|
||||||
for materialized views
|
for materialized views
|
||||||
drop view v1,v2,v3;
|
drop view v1,v2,v3;
|
||||||
@ -311,6 +317,7 @@ Handler_read_key 22
|
|||||||
Handler_read_next 22
|
Handler_read_next 22
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 60
|
Handler_read_rnd_next 60
|
||||||
explain showing late materialization
|
explain showing late materialization
|
||||||
flush status;
|
flush status;
|
||||||
@ -326,6 +333,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
flush status;
|
flush status;
|
||||||
select * from t1 join v2 on f1=f2;
|
select * from t1 join v2 on f1=f2;
|
||||||
@ -340,6 +348,7 @@ Handler_read_key 11
|
|||||||
Handler_read_next 3
|
Handler_read_next 3
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 11
|
Handler_read_rnd 11
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 36
|
Handler_read_rnd_next 36
|
||||||
explain extended select * from v1 join v4 on f1=f2;
|
explain extended select * from v1 join v4 on f1=f2;
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
@ -411,7 +420,7 @@ join
|
|||||||
(select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) z
|
(select * from (select * from t1 where f1 < 7 group by f1) tt where f1 > 2) z
|
||||||
on x.f1 = z.f1;
|
on x.f1 = z.f1;
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 SIMPLE <derived3> ALL key0 NULL NULL NULL 11 100.00 Using where
|
1 SIMPLE <derived3> ALL NULL NULL NULL NULL 11 100.00 Using where
|
||||||
1 SIMPLE <derived5> ref key0 key0 5 tt.f1 2 100.00
|
1 SIMPLE <derived5> ref key0 key0 5 tt.f1 2 100.00
|
||||||
5 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
5 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||||
3 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
3 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||||
@ -433,6 +442,7 @@ Handler_read_key 2
|
|||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 8
|
Handler_read_rnd 8
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 39
|
Handler_read_rnd_next 39
|
||||||
flush status;
|
flush status;
|
||||||
merged in merged derived join merged in merged derived
|
merged in merged derived join merged in merged derived
|
||||||
@ -468,7 +478,7 @@ join
|
|||||||
(select * from t1 where f1 < 7 group by f1) tt where f1 > 2 group by f1) z
|
(select * from t1 where f1 < 7 group by f1) tt where f1 > 2 group by f1) z
|
||||||
on x.f1 = z.f1;
|
on x.f1 = z.f1;
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY <derived2> ALL key0 NULL NULL NULL 11 100.00 Using where
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 11 100.00 Using where
|
||||||
1 PRIMARY <derived4> ref key0 key0 5 x.f1 2 100.00
|
1 PRIMARY <derived4> ref key0 key0 5 x.f1 2 100.00
|
||||||
4 DERIVED <derived5> ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
4 DERIVED <derived5> ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||||
5 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
5 DERIVED t1 ALL NULL NULL NULL NULL 11 100.00 Using where; Using temporary; Using filesort
|
||||||
@ -1079,7 +1089,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY t system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t system NULL NULL NULL NULL 1 100.00
|
||||||
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
||||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t1` `t` join `test`.`t2` left join `test`.`t3` on((0 <> 0)) where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t1` `t` join `test`.`t2` left join `test`.`t3` on((0 <> 0)) where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
||||||
SELECT t.a,t.b FROM t3 RIGHT JOIN ((SELECT * FROM t1) AS t, t2) ON t2.b != 0
|
SELECT t.a,t.b FROM t3 RIGHT JOIN ((SELECT * FROM t1) AS t, t2) ON t2.b != 0
|
||||||
@ -1093,7 +1103,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
||||||
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
||||||
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t1` join `test`.`t2` left join `test`.`t3` on((0 <> 0)) where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t1` join `test`.`t2` left join `test`.`t3` on((0 <> 0)) where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
||||||
SELECT t.a,t.b FROM t3 RIGHT JOIN (v1 AS t, t2) ON t2.b != 0
|
SELECT t.a,t.b FROM t3 RIGHT JOIN (v1 AS t, t2) ON t2.b != 0
|
||||||
@ -1107,7 +1117,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
||||||
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
||||||
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t3 system NULL NULL NULL NULL 1 100.00
|
||||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t1` join `test`.`t2` left join `test`.`t3` on((0 <> 0)) where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
Note 1003 select 6 AS `a`,5 AS `b` from `test`.`t1` join `test`.`t2` left join `test`.`t3` on((0 <> 0)) where (not(<expr_cache><6,5>(<in_optimizer>((6,5),<exists>(select 7,5 having (trigcond(((<cache>(6) = 7) or isnull(7))) and trigcond(((<cache>(5) = 5) or isnull(5))) and trigcond(<is_not_null_test>(7)) and trigcond(<is_not_null_test>(5))))))))
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
@ -1448,14 +1458,14 @@ WHERE (t2.a ,t1.b) NOT IN (SELECT DISTINCT c,a FROM t3 t);
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
2 DEPENDENT SUBQUERY t ref PRIMARY,c c 4 func 2 Using where; Using index
|
2 DEPENDENT SUBQUERY t eq_ref PRIMARY,c PRIMARY 4 func 1 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM t1 , t2
|
SELECT * FROM t1 , t2
|
||||||
WHERE (t2.a ,t1.b) NOT IN (SELECT DISTINCT c,a FROM (SELECT * FROM t3) t);
|
WHERE (t2.a ,t1.b) NOT IN (SELECT DISTINCT c,a FROM (SELECT * FROM t3) t);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
2 DEPENDENT SUBQUERY t3 ref PRIMARY,c c 4 func 2 Using where; Using index
|
2 DEPENDENT SUBQUERY t3 eq_ref PRIMARY,c PRIMARY 4 func 1 Using where
|
||||||
SELECT * FROM t1 , t2
|
SELECT * FROM t1 , t2
|
||||||
WHERE (t2.a ,t1.b) NOT IN (SELECT DISTINCT c,a FROM (SELECT * FROM t3) t);
|
WHERE (t2.a ,t1.b) NOT IN (SELECT DISTINCT c,a FROM (SELECT * FROM t3) t);
|
||||||
b a
|
b a
|
||||||
@ -1575,7 +1585,7 @@ a
|
|||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT v1.a FROM v1,v2 WHERE v2.b = v1.b ORDER BY 1;
|
SELECT v1.a FROM v1,v2 WHERE v2.b = v1.b ORDER BY 1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <derived2> ALL key0 NULL NULL NULL 3 Using where; Using filesort
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3 Using where; Using filesort
|
||||||
1 PRIMARY <derived3> ref key0 key0 5 v1.b 2
|
1 PRIMARY <derived3> ref key0 key0 5 v1.b 2
|
||||||
3 DERIVED t2 ALL NULL NULL NULL NULL 5 Using temporary; Using filesort
|
3 DERIVED t2 ALL NULL NULL NULL NULL 5 Using temporary; Using filesort
|
||||||
2 DERIVED t1 ALL NULL NULL NULL NULL 3 Using temporary; Using filesort
|
2 DERIVED t1 ALL NULL NULL NULL NULL 3 Using temporary; Using filesort
|
||||||
@ -1790,6 +1800,7 @@ INSERT INTO t2 VALUES (7), (4);
|
|||||||
CREATE TABLE t1 (b int NOT NULL);
|
CREATE TABLE t1 (b int NOT NULL);
|
||||||
INSERT INTO t1 VALUES (5), (7);
|
INSERT INTO t1 VALUES (5), (7);
|
||||||
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1;
|
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT * FROM t1;
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
SET SESSION optimizer_switch='derived_merge=off';
|
SET SESSION optimizer_switch='derived_merge=off';
|
||||||
PREPARE st1 FROM
|
PREPARE st1 FROM
|
||||||
'SELECT * FROM (SELECT * FROM t2 LEFT JOIN v1 ON t2.a = v1.b) AS t';
|
'SELECT * FROM (SELECT * FROM t2 LEFT JOIN v1 ON t2.a = v1.b) AS t';
|
||||||
@ -1802,9 +1813,9 @@ a b
|
|||||||
7 7
|
7 7
|
||||||
4 NULL
|
4 NULL
|
||||||
DEALLOCATE PREPARE st1;
|
DEALLOCATE PREPARE st1;
|
||||||
|
set SESSION optimizer_switch= @save_optimizer_switch;
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
SET SESSION optimizer_switch='derived_merge=on';
|
|
||||||
#
|
#
|
||||||
# LP bug #879939: assertion in ha_maria::enable_indexes
|
# LP bug #879939: assertion in ha_maria::enable_indexes
|
||||||
# with derived_with_keys=on
|
# with derived_with_keys=on
|
||||||
@ -1822,6 +1833,7 @@ INSERT INTO t1 VALUES
|
|||||||
('USA','Mesquite'), ('USA','Metairie'), ('USA','Miami');
|
('USA','Mesquite'), ('USA','Metairie'), ('USA','Miami');
|
||||||
CREATE TABLE t3 (a varchar(35));
|
CREATE TABLE t3 (a varchar(35));
|
||||||
INSERT INTO t3 VALUES ('Miami');
|
INSERT INTO t3 VALUES ('Miami');
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
SET optimizer_switch = 'derived_with_keys=on';
|
SET optimizer_switch = 'derived_with_keys=on';
|
||||||
SET @@tmp_table_size=1024*4;
|
SET @@tmp_table_size=1024*4;
|
||||||
explain SELECT * FROM (SELECT t1.* FROM t1, t2) AS t JOIN t3 ON t3.a = t.b;
|
explain SELECT * FROM (SELECT t1.* FROM t1, t2) AS t JOIN t3 ON t3.a = t.b;
|
||||||
@ -1845,6 +1857,7 @@ USA Miami Miami
|
|||||||
USA Miami Miami
|
USA Miami Miami
|
||||||
USA Miami Miami
|
USA Miami Miami
|
||||||
SET @@tmp_table_size=default;
|
SET @@tmp_table_size=default;
|
||||||
|
set SESSION optimizer_switch= @save_optimizer_switch;
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
#
|
#
|
||||||
# BUG#882994: Crash in QUICK_RANGE_SELECT::reset with derived_with_keys
|
# BUG#882994: Crash in QUICK_RANGE_SELECT::reset with derived_with_keys
|
||||||
@ -1879,5 +1892,74 @@ ORDER BY CONCAT(alias2.col_varchar_nokey);
|
|||||||
col_varchar_key pk col_varchar_key col_varchar_nokey
|
col_varchar_key pk col_varchar_key col_varchar_nokey
|
||||||
set max_heap_table_size= @tmp_882994;
|
set max_heap_table_size= @tmp_882994;
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
#
|
||||||
|
# LP bug #917990: Bad estimate of #rows for derived table with LIMIT
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(8), (3), (4), (7), (9), (5), (1), (2);
|
||||||
|
SELECT * FROM (SELECT * FROM t1 LIMIT 3) t;
|
||||||
|
a
|
||||||
|
8
|
||||||
|
3
|
||||||
|
4
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM (SELECT * FROM t1 LIMIT 3) t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||||
|
2 DERIVED t1 ALL NULL NULL NULL NULL 8
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# LP BUG#921878 incorrect check of items during columns union types
|
||||||
|
# aggregation for merged derived tables
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET SESSION optimizer_switch='derived_merge=on';
|
||||||
|
CREATE TABLE t1 ( a ENUM( 'x', 'y' ) );
|
||||||
|
insert into t1 values ('x');
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
insert into t1 values ('y');
|
||||||
|
CREATE TABLE t3 LIKE t1;
|
||||||
|
INSERT INTO t3
|
||||||
|
SELECT * FROM ( SELECT * FROM t1 ) AS A
|
||||||
|
UNION SELECT * FROM t2;
|
||||||
|
select * from t3;
|
||||||
|
a
|
||||||
|
x
|
||||||
|
y
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
set SESSION optimizer_switch= @save_optimizer_switch;
|
||||||
|
#
|
||||||
|
# LP BUG#944782: derived table from an information schema table
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET SESSION optimizer_switch='derived_merge=on';
|
||||||
|
SET SESSION optimizer_switch='derived_with_keys=on';
|
||||||
|
CREATE TABLE t1 (c1 int PRIMARY KEY, c2 char(5));
|
||||||
|
EXPLAIN
|
||||||
|
SELECT COUNT(*) > 0
|
||||||
|
FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
INNER JOIN
|
||||||
|
(SELECT TABLE_SCHEMA,
|
||||||
|
GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC) AS COL_NAMES
|
||||||
|
FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
|
GROUP BY TABLE_SCHEMA) AS UNIQUES
|
||||||
|
ON ( COLUMNS.TABLE_SCHEMA = UNIQUES.TABLE_SCHEMA);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY COLUMNS ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases
|
||||||
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 DERIVED STATISTICS ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases; Using filesort
|
||||||
|
SELECT COUNT(*) > 0
|
||||||
|
FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
|
INNER JOIN
|
||||||
|
(SELECT TABLE_SCHEMA,
|
||||||
|
GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX ASC) AS COL_NAMES
|
||||||
|
FROM INFORMATION_SCHEMA.STATISTICS
|
||||||
|
GROUP BY TABLE_SCHEMA) AS UNIQUES
|
||||||
|
ON ( COLUMNS.TABLE_SCHEMA = UNIQUES.TABLE_SCHEMA);
|
||||||
|
COUNT(*) > 0
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
set SESSION optimizer_switch= @save_optimizer_switch;
|
||||||
set optimizer_switch=@exit_optimizer_switch;
|
set optimizer_switch=@exit_optimizer_switch;
|
||||||
set join_cache_level=@exit_join_cache_level;
|
set join_cache_level=@exit_join_cache_level;
|
||||||
|
@ -1825,6 +1825,70 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
|
# Bug #904345: MIN/MAX optimization with constant FALSE condition
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int NOT NULL, KEY(a));
|
||||||
|
INSERT INTO t1 VALUES (10), (8), (11), (7), (15), (12), (9);
|
||||||
|
CREATE TABLE t2 (a int, b int);
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(8,2), (6,9), (8,4), (5,3), (9,1);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT MAX(a) FROM t1 WHERE (1,2) IN (SELECT 3,4) AND a<10;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t1 range a a 4 NULL 4 100.00 Using where; Using index
|
||||||
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select max(`test`.`t1`.`a`) AS `MAX(a)` from `test`.`t1` where (<expr_cache><1,2>(<in_optimizer>((1,2),<exists>(select 3,4 having (((1 = 3) or isnull(3)) and ((2 = 4) or isnull(4)) and <is_not_null_test>(3) and <is_not_null_test>(4))))) and (`test`.`t1`.`a` < 10))
|
||||||
|
SELECT MAX(a) FROM t1 WHERE (1,2) IN (SELECT 3,4) AND a<10;
|
||||||
|
MAX(a)
|
||||||
|
NULL
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT MAX(a) FROM t1 WHERE (1,2) IN (SELECT a,b FROM t2 WHERE b<5) and a<10;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1 100.00
|
||||||
|
1 PRIMARY t1 range a a 4 NULL 4 100.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select max(`test`.`t1`.`a`) AS `MAX(a)` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b` = 2) and (`test`.`t2`.`a` = 1) and (`test`.`t1`.`a` < 10))
|
||||||
|
SELECT MAX(a) FROM t1 WHERE (1,2) IN (SELECT a,b FROM t2 WHERE b<5) and a<10;
|
||||||
|
MAX(a)
|
||||||
|
NULL
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT MAX(a) FROM t1 WHERE RAND()*0<>0 AND a<10;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 range a a 4 NULL 4 100.00 Using where; Using index
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select max(`test`.`t1`.`a`) AS `MAX(a)` from `test`.`t1` where (((rand() * 0) <> 0) and (`test`.`t1`.`a` < 10))
|
||||||
|
SELECT MAX(a) FROM t1 WHERE RAND()*0<>0 AND a<10;
|
||||||
|
MAX(a)
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# Bug #879860: MIN/MAX for subquery returning empty set
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int PRIMARY KEY);
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
CREATE TABLE t2 (a int NOT NULL);
|
||||||
|
INSERT INTO t2 VALUES (10);
|
||||||
|
CREATE TABLE t3 ( a int, b int);
|
||||||
|
INSERT INTO t3 VALUES (19,1), (20,5);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT (SELECT MIN(t1.a) FROM t1,t2 WHERE t2.a = t3.b) FROM t3;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||||
|
2 DEPENDENT SUBQUERY t2 system NULL NULL NULL NULL 1 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1276 Field or reference 'test.t3.b' of SELECT #2 was resolved in SELECT #1
|
||||||
|
Note 1003 select <expr_cache><`test`.`t3`.`b`>((select min(1) from `test`.`t1` join `test`.`t2` where (10 = `test`.`t3`.`b`))) AS `(SELECT MIN(t1.a) FROM t1,t2 WHERE t2.a = t3.b)` from `test`.`t3`
|
||||||
|
SELECT (SELECT MIN(t1.a) FROM t1,t2 WHERE t2.a = t3.b) FROM t3;
|
||||||
|
(SELECT MIN(t1.a) FROM t1,t2 WHERE t2.a = t3.b)
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
End of 5.2 tests
|
||||||
|
#
|
||||||
# BUG#46680 - Assertion failed in file item_subselect.cc,
|
# BUG#46680 - Assertion failed in file item_subselect.cc,
|
||||||
# line 305 crashing on HAVING subquery
|
# line 305 crashing on HAVING subquery
|
||||||
#
|
#
|
||||||
@ -1977,4 +2041,3 @@ set @@optimizer_switch=@save_optimizer_switch;
|
|||||||
# Cleanup for BUG#46680
|
# Cleanup for BUG#46680
|
||||||
#
|
#
|
||||||
DROP TABLE IF EXISTS t1,t2,t3,empty1;
|
DROP TABLE IF EXISTS t1,t2,t3,empty1;
|
||||||
End of 6.0 tests
|
|
||||||
|
@ -2407,7 +2407,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE
|
EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE
|
||||||
a IN (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
a IN (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 8 Using where
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 8
|
||||||
1 PRIMARY t1_outer ref a a 5 <subquery2>.max(b) 2 Using index
|
1 PRIMARY t1_outer ref a a 5 <subquery2>.max(b) 2 Using index
|
||||||
2 MATERIALIZED t1 range NULL a 5 NULL 8 Using index for group-by
|
2 MATERIALIZED t1 range NULL a 5 NULL 8 Using index for group-by
|
||||||
EXPLAIN SELECT 1 FROM t1 AS t1_outer GROUP BY a HAVING
|
EXPLAIN SELECT 1 FROM t1 AS t1_outer GROUP BY a HAVING
|
||||||
|
@ -571,6 +571,17 @@ f1
|
|||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
|
# LP bug:938518 HAVING does not reject the result of aggregation
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, a INT);
|
||||||
|
INSERT INTO t1 VALUES (2,7), (4,7), (6,2), (17,0);
|
||||||
|
SELECT MIN(t.pk) FROM t1, t1 as t WHERE t1.pk = 1;
|
||||||
|
MIN(t.pk)
|
||||||
|
NULL
|
||||||
|
SELECT MIN(t.pk) FROM t1, t1 as t WHERE t1.pk = 1 HAVING MIN(t.pk) < 10;
|
||||||
|
MIN(t.pk)
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
# LP bug #791761: MAX over an empty join + HAVING
|
# LP bug #791761: MAX over an empty join + HAVING
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int, b int , KEY (b)) ;
|
CREATE TABLE t1 (a int, b int , KEY (b)) ;
|
||||||
@ -594,3 +605,33 @@ SELECT MAX(t1.b) AS f FROM t1 JOIN t2 ON t2.a != 0
|
|||||||
WHERE (SELECT f3 FROM t3) <> 0 HAVING f <> 6 ;
|
WHERE (SELECT f3 FROM t3) <> 0 HAVING f <> 6 ;
|
||||||
f
|
f
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# LP bug:806955 HAVING not observed with aggregate +subquery
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f3 int, f10 varchar(1), f11 int, KEY (f10) );
|
||||||
|
INSERT INTO t1 VALUES (NULL,'a',0),(8,'b',0);
|
||||||
|
CREATE TABLE t2 (f2 int);
|
||||||
|
INSERT INTO t2 VALUES (7);
|
||||||
|
CREATE TABLE t3 (f3 int);
|
||||||
|
INSERT INTO t3 VALUES (0),(8);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=off,materialization=off';
|
||||||
|
SELECT MIN( t1.f10 ) AS field1
|
||||||
|
FROM t1 , t2
|
||||||
|
WHERE t2.f2 IN ( SELECT f3 FROM t3 )
|
||||||
|
HAVING field1 < 's';
|
||||||
|
field1
|
||||||
|
explain extended
|
||||||
|
SELECT MIN( t1.f10 ) AS field1
|
||||||
|
FROM t1 , t2
|
||||||
|
WHERE t2.f2 IN ( SELECT f3 FROM t3 )
|
||||||
|
HAVING field1 < 's';
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t2 system NULL NULL NULL NULL 1 100.00
|
||||||
|
1 PRIMARY t1 index NULL f10 4 NULL 2 100.00 Using index
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select min(`test`.`t1`.`f10`) AS `field1` from `test`.`t1` join `test`.`t2` where <expr_cache><7>(<in_optimizer>(7,<exists>(select `test`.`t3`.`f3` from `test`.`t3` where (<cache>(7) = `test`.`t3`.`f3`)))) having (`field1` < 's')
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
End of 5.2 tests
|
||||||
|
@ -549,7 +549,7 @@ primary key (pk1, pk2)
|
|||||||
);
|
);
|
||||||
explain select * from t1 where pk1 = 1 and pk2 < 80 and key1=0;
|
explain select * from t1 where pk1 = 1 and pk2 < 80 and key1=0;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY,key1 PRIMARY 8 NULL 9 Using index condition; Using where
|
1 SIMPLE t1 range PRIMARY,key1 PRIMARY 8 NULL 9 Using where
|
||||||
select * from t1 where pk1 = 1 and pk2 < 80 and key1=0;
|
select * from t1 where pk1 = 1 and pk2 < 80 and key1=0;
|
||||||
pk1 pk2 key1 key2 pktail1ok pktail2ok pktail3bad pktail4bad pktail5bad pk2copy badkey filler1 filler2
|
pk1 pk2 key1 key2 pktail1ok pktail2ok pktail3bad pktail4bad pktail5bad pk2copy badkey filler1 filler2
|
||||||
1 10 0 0 0 0 0 0 0 10 0 filler-data-10 filler2
|
1 10 0 0 0 0 0 0 0 10 0 filler-data-10 filler2
|
||||||
|
@ -13,9 +13,26 @@ FILES
|
|||||||
GLOBAL_STATUS
|
GLOBAL_STATUS
|
||||||
GLOBAL_VARIABLES
|
GLOBAL_VARIABLES
|
||||||
INDEX_STATISTICS
|
INDEX_STATISTICS
|
||||||
|
INNODB_BUFFER_POOL_PAGES
|
||||||
|
INNODB_BUFFER_POOL_PAGES_BLOB
|
||||||
|
INNODB_BUFFER_POOL_PAGES_INDEX
|
||||||
|
INNODB_CMP
|
||||||
|
INNODB_CMPMEM
|
||||||
|
INNODB_CMPMEM_RESET
|
||||||
|
INNODB_CMP_RESET
|
||||||
|
INNODB_INDEX_STATS
|
||||||
|
INNODB_LOCKS
|
||||||
|
INNODB_LOCK_WAITS
|
||||||
|
INNODB_RSEG
|
||||||
|
INNODB_SYS_INDEXES
|
||||||
|
INNODB_SYS_STATS
|
||||||
|
INNODB_SYS_TABLES
|
||||||
|
INNODB_TABLE_STATS
|
||||||
|
INNODB_TRX
|
||||||
KEY_CACHES
|
KEY_CACHES
|
||||||
KEY_COLUMN_USAGE
|
KEY_COLUMN_USAGE
|
||||||
PARTITIONS
|
PARTITIONS
|
||||||
|
PBXT_STATISTICS
|
||||||
PLUGINS
|
PLUGINS
|
||||||
PROCESSLIST
|
PROCESSLIST
|
||||||
PROFILING
|
PROFILING
|
||||||
@ -34,25 +51,8 @@ TRIGGERS
|
|||||||
USER_PRIVILEGES
|
USER_PRIVILEGES
|
||||||
USER_STATISTICS
|
USER_STATISTICS
|
||||||
VIEWS
|
VIEWS
|
||||||
INNODB_BUFFER_POOL_PAGES
|
|
||||||
PBXT_STATISTICS
|
|
||||||
INNODB_CMP
|
|
||||||
INNODB_RSEG
|
|
||||||
XTRADB_ENHANCEMENTS
|
|
||||||
INNODB_BUFFER_POOL_PAGES_INDEX
|
|
||||||
XTRADB_ADMIN_COMMAND
|
XTRADB_ADMIN_COMMAND
|
||||||
INNODB_TRX
|
XTRADB_ENHANCEMENTS
|
||||||
INNODB_SYS_TABLES
|
|
||||||
INNODB_LOCK_WAITS
|
|
||||||
INNODB_SYS_STATS
|
|
||||||
INNODB_LOCKS
|
|
||||||
INNODB_CMPMEM
|
|
||||||
INNODB_TABLE_STATS
|
|
||||||
INNODB_SYS_INDEXES
|
|
||||||
INNODB_CMP_RESET
|
|
||||||
INNODB_BUFFER_POOL_PAGES_BLOB
|
|
||||||
INNODB_CMPMEM_RESET
|
|
||||||
INNODB_INDEX_STATS
|
|
||||||
SELECT t.table_name, c1.column_name
|
SELECT t.table_name, c1.column_name
|
||||||
FROM information_schema.tables t
|
FROM information_schema.tables t
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
@ -66,7 +66,7 @@ FROM information_schema.columns c2
|
|||||||
WHERE c2.table_schema = t.table_schema AND
|
WHERE c2.table_schema = t.table_schema AND
|
||||||
c2.table_name = t.table_name AND
|
c2.table_name = t.table_name AND
|
||||||
c2.column_name LIKE '%SCHEMA%'
|
c2.column_name LIKE '%SCHEMA%'
|
||||||
);
|
) order by t.table_name;
|
||||||
table_name column_name
|
table_name column_name
|
||||||
CHARACTER_SETS CHARACTER_SET_NAME
|
CHARACTER_SETS CHARACTER_SET_NAME
|
||||||
CLIENT_STATISTICS CLIENT
|
CLIENT_STATISTICS CLIENT
|
||||||
@ -80,9 +80,26 @@ FILES TABLE_SCHEMA
|
|||||||
GLOBAL_STATUS VARIABLE_NAME
|
GLOBAL_STATUS VARIABLE_NAME
|
||||||
GLOBAL_VARIABLES VARIABLE_NAME
|
GLOBAL_VARIABLES VARIABLE_NAME
|
||||||
INDEX_STATISTICS TABLE_SCHEMA
|
INDEX_STATISTICS TABLE_SCHEMA
|
||||||
|
INNODB_BUFFER_POOL_PAGES page_type
|
||||||
|
INNODB_BUFFER_POOL_PAGES_BLOB space_id
|
||||||
|
INNODB_BUFFER_POOL_PAGES_INDEX index_id
|
||||||
|
INNODB_CMP page_size
|
||||||
|
INNODB_CMPMEM page_size
|
||||||
|
INNODB_CMPMEM_RESET page_size
|
||||||
|
INNODB_CMP_RESET page_size
|
||||||
|
INNODB_INDEX_STATS table_schema
|
||||||
|
INNODB_LOCKS lock_id
|
||||||
|
INNODB_LOCK_WAITS requesting_trx_id
|
||||||
|
INNODB_RSEG rseg_id
|
||||||
|
INNODB_SYS_INDEXES TABLE_ID
|
||||||
|
INNODB_SYS_STATS INDEX_ID
|
||||||
|
INNODB_SYS_TABLES SCHEMA
|
||||||
|
INNODB_TABLE_STATS table_schema
|
||||||
|
INNODB_TRX trx_id
|
||||||
KEY_CACHES KEY_CACHE_NAME
|
KEY_CACHES KEY_CACHE_NAME
|
||||||
KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
|
KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
|
||||||
PARTITIONS TABLE_SCHEMA
|
PARTITIONS TABLE_SCHEMA
|
||||||
|
PBXT_STATISTICS ID
|
||||||
PLUGINS PLUGIN_NAME
|
PLUGINS PLUGIN_NAME
|
||||||
PROCESSLIST ID
|
PROCESSLIST ID
|
||||||
PROFILING QUERY_ID
|
PROFILING QUERY_ID
|
||||||
@ -101,25 +118,8 @@ TRIGGERS TRIGGER_SCHEMA
|
|||||||
USER_PRIVILEGES GRANTEE
|
USER_PRIVILEGES GRANTEE
|
||||||
USER_STATISTICS USER
|
USER_STATISTICS USER
|
||||||
VIEWS TABLE_SCHEMA
|
VIEWS TABLE_SCHEMA
|
||||||
INNODB_BUFFER_POOL_PAGES page_type
|
|
||||||
PBXT_STATISTICS ID
|
|
||||||
INNODB_CMP page_size
|
|
||||||
INNODB_RSEG rseg_id
|
|
||||||
XTRADB_ENHANCEMENTS name
|
|
||||||
INNODB_BUFFER_POOL_PAGES_INDEX index_id
|
|
||||||
XTRADB_ADMIN_COMMAND result_message
|
XTRADB_ADMIN_COMMAND result_message
|
||||||
INNODB_TRX trx_id
|
XTRADB_ENHANCEMENTS name
|
||||||
INNODB_SYS_TABLES SCHEMA
|
|
||||||
INNODB_LOCK_WAITS requesting_trx_id
|
|
||||||
INNODB_SYS_STATS INDEX_ID
|
|
||||||
INNODB_LOCKS lock_id
|
|
||||||
INNODB_CMPMEM page_size
|
|
||||||
INNODB_TABLE_STATS table_schema
|
|
||||||
INNODB_SYS_INDEXES TABLE_ID
|
|
||||||
INNODB_CMP_RESET page_size
|
|
||||||
INNODB_BUFFER_POOL_PAGES_BLOB space_id
|
|
||||||
INNODB_CMPMEM_RESET page_size
|
|
||||||
INNODB_INDEX_STATS table_schema
|
|
||||||
SELECT t.table_name, c1.column_name
|
SELECT t.table_name, c1.column_name
|
||||||
FROM information_schema.tables t
|
FROM information_schema.tables t
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
@ -133,7 +133,7 @@ FROM information_schema.columns c2
|
|||||||
WHERE c2.table_schema = 'information_schema' AND
|
WHERE c2.table_schema = 'information_schema' AND
|
||||||
c2.table_name = t.table_name AND
|
c2.table_name = t.table_name AND
|
||||||
c2.column_name LIKE '%SCHEMA%'
|
c2.column_name LIKE '%SCHEMA%'
|
||||||
);
|
) order by t.table_name;
|
||||||
table_name column_name
|
table_name column_name
|
||||||
CHARACTER_SETS CHARACTER_SET_NAME
|
CHARACTER_SETS CHARACTER_SET_NAME
|
||||||
CLIENT_STATISTICS CLIENT
|
CLIENT_STATISTICS CLIENT
|
||||||
@ -147,9 +147,26 @@ FILES TABLE_SCHEMA
|
|||||||
GLOBAL_STATUS VARIABLE_NAME
|
GLOBAL_STATUS VARIABLE_NAME
|
||||||
GLOBAL_VARIABLES VARIABLE_NAME
|
GLOBAL_VARIABLES VARIABLE_NAME
|
||||||
INDEX_STATISTICS TABLE_SCHEMA
|
INDEX_STATISTICS TABLE_SCHEMA
|
||||||
|
INNODB_BUFFER_POOL_PAGES page_type
|
||||||
|
INNODB_BUFFER_POOL_PAGES_BLOB space_id
|
||||||
|
INNODB_BUFFER_POOL_PAGES_INDEX index_id
|
||||||
|
INNODB_CMP page_size
|
||||||
|
INNODB_CMPMEM page_size
|
||||||
|
INNODB_CMPMEM_RESET page_size
|
||||||
|
INNODB_CMP_RESET page_size
|
||||||
|
INNODB_INDEX_STATS table_schema
|
||||||
|
INNODB_LOCKS lock_id
|
||||||
|
INNODB_LOCK_WAITS requesting_trx_id
|
||||||
|
INNODB_RSEG rseg_id
|
||||||
|
INNODB_SYS_INDEXES TABLE_ID
|
||||||
|
INNODB_SYS_STATS INDEX_ID
|
||||||
|
INNODB_SYS_TABLES SCHEMA
|
||||||
|
INNODB_TABLE_STATS table_schema
|
||||||
|
INNODB_TRX trx_id
|
||||||
KEY_CACHES KEY_CACHE_NAME
|
KEY_CACHES KEY_CACHE_NAME
|
||||||
KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
|
KEY_COLUMN_USAGE CONSTRAINT_SCHEMA
|
||||||
PARTITIONS TABLE_SCHEMA
|
PARTITIONS TABLE_SCHEMA
|
||||||
|
PBXT_STATISTICS ID
|
||||||
PLUGINS PLUGIN_NAME
|
PLUGINS PLUGIN_NAME
|
||||||
PROCESSLIST ID
|
PROCESSLIST ID
|
||||||
PROFILING QUERY_ID
|
PROFILING QUERY_ID
|
||||||
@ -168,25 +185,8 @@ TRIGGERS TRIGGER_SCHEMA
|
|||||||
USER_PRIVILEGES GRANTEE
|
USER_PRIVILEGES GRANTEE
|
||||||
USER_STATISTICS USER
|
USER_STATISTICS USER
|
||||||
VIEWS TABLE_SCHEMA
|
VIEWS TABLE_SCHEMA
|
||||||
INNODB_BUFFER_POOL_PAGES page_type
|
|
||||||
PBXT_STATISTICS ID
|
|
||||||
INNODB_CMP page_size
|
|
||||||
INNODB_RSEG rseg_id
|
|
||||||
XTRADB_ENHANCEMENTS name
|
|
||||||
INNODB_BUFFER_POOL_PAGES_INDEX index_id
|
|
||||||
XTRADB_ADMIN_COMMAND result_message
|
XTRADB_ADMIN_COMMAND result_message
|
||||||
INNODB_TRX trx_id
|
XTRADB_ENHANCEMENTS name
|
||||||
INNODB_SYS_TABLES SCHEMA
|
|
||||||
INNODB_LOCK_WAITS requesting_trx_id
|
|
||||||
INNODB_SYS_STATS INDEX_ID
|
|
||||||
INNODB_LOCKS lock_id
|
|
||||||
INNODB_CMPMEM page_size
|
|
||||||
INNODB_TABLE_STATS table_schema
|
|
||||||
INNODB_SYS_INDEXES TABLE_ID
|
|
||||||
INNODB_CMP_RESET page_size
|
|
||||||
INNODB_BUFFER_POOL_PAGES_BLOB space_id
|
|
||||||
INNODB_CMPMEM_RESET page_size
|
|
||||||
INNODB_INDEX_STATS table_schema
|
|
||||||
select 1 as f1 from information_schema.tables where "CHARACTER_SETS"=
|
select 1 as f1 from information_schema.tables where "CHARACTER_SETS"=
|
||||||
(select cast(table_name as char) from information_schema.tables
|
(select cast(table_name as char) from information_schema.tables
|
||||||
order by table_name limit 1) limit 1;
|
order by table_name limit 1) limit 1;
|
||||||
@ -259,10 +259,11 @@ USER_PRIVILEGES information_schema.USER_PRIVILEGES 1
|
|||||||
USER_STATISTICS information_schema.USER_STATISTICS 1
|
USER_STATISTICS information_schema.USER_STATISTICS 1
|
||||||
VIEWS information_schema.VIEWS 1
|
VIEWS information_schema.VIEWS 1
|
||||||
XTRADB_ENHANCEMENTS information_schema.XTRADB_ENHANCEMENTS 1
|
XTRADB_ENHANCEMENTS information_schema.XTRADB_ENHANCEMENTS 1
|
||||||
|
+---------------------------------------+
|
||||||
|
+---------------------------------------+
|
||||||
|
+---------------------------------------+
|
||||||
Database: information_schema
|
Database: information_schema
|
||||||
+---------------------------------------+
|
|
||||||
| Tables |
|
| Tables |
|
||||||
+---------------------------------------+
|
|
||||||
| CHARACTER_SETS |
|
| CHARACTER_SETS |
|
||||||
| CLIENT_STATISTICS |
|
| CLIENT_STATISTICS |
|
||||||
| COLLATIONS |
|
| COLLATIONS |
|
||||||
@ -275,9 +276,26 @@ Database: information_schema
|
|||||||
| GLOBAL_STATUS |
|
| GLOBAL_STATUS |
|
||||||
| GLOBAL_VARIABLES |
|
| GLOBAL_VARIABLES |
|
||||||
| INDEX_STATISTICS |
|
| INDEX_STATISTICS |
|
||||||
|
| INNODB_BUFFER_POOL_PAGES |
|
||||||
|
| INNODB_BUFFER_POOL_PAGES_BLOB |
|
||||||
|
| INNODB_BUFFER_POOL_PAGES_INDEX |
|
||||||
|
| INNODB_CMP |
|
||||||
|
| INNODB_CMPMEM |
|
||||||
|
| INNODB_CMPMEM_RESET |
|
||||||
|
| INNODB_CMP_RESET |
|
||||||
|
| INNODB_INDEX_STATS |
|
||||||
|
| INNODB_LOCKS |
|
||||||
|
| INNODB_LOCK_WAITS |
|
||||||
|
| INNODB_RSEG |
|
||||||
|
| INNODB_SYS_INDEXES |
|
||||||
|
| INNODB_SYS_STATS |
|
||||||
|
| INNODB_SYS_TABLES |
|
||||||
|
| INNODB_TABLE_STATS |
|
||||||
|
| INNODB_TRX |
|
||||||
| KEY_CACHES |
|
| KEY_CACHES |
|
||||||
| KEY_COLUMN_USAGE |
|
| KEY_COLUMN_USAGE |
|
||||||
| PARTITIONS |
|
| PARTITIONS |
|
||||||
|
| PBXT_STATISTICS |
|
||||||
| PLUGINS |
|
| PLUGINS |
|
||||||
| PROCESSLIST |
|
| PROCESSLIST |
|
||||||
| PROFILING |
|
| PROFILING |
|
||||||
@ -296,30 +314,13 @@ Database: information_schema
|
|||||||
| USER_PRIVILEGES |
|
| USER_PRIVILEGES |
|
||||||
| USER_STATISTICS |
|
| USER_STATISTICS |
|
||||||
| VIEWS |
|
| VIEWS |
|
||||||
| INNODB_BUFFER_POOL_PAGES |
|
|
||||||
| PBXT_STATISTICS |
|
|
||||||
| INNODB_CMP |
|
|
||||||
| INNODB_RSEG |
|
|
||||||
| XTRADB_ENHANCEMENTS |
|
|
||||||
| INNODB_BUFFER_POOL_PAGES_INDEX |
|
|
||||||
| XTRADB_ADMIN_COMMAND |
|
| XTRADB_ADMIN_COMMAND |
|
||||||
| INNODB_TRX |
|
| XTRADB_ENHANCEMENTS |
|
||||||
| INNODB_SYS_TABLES |
|
+---------------------------------------+
|
||||||
| INNODB_LOCK_WAITS |
|
+---------------------------------------+
|
||||||
| INNODB_SYS_STATS |
|
|
||||||
| INNODB_LOCKS |
|
|
||||||
| INNODB_CMPMEM |
|
|
||||||
| INNODB_TABLE_STATS |
|
|
||||||
| INNODB_SYS_INDEXES |
|
|
||||||
| INNODB_CMP_RESET |
|
|
||||||
| INNODB_BUFFER_POOL_PAGES_BLOB |
|
|
||||||
| INNODB_CMPMEM_RESET |
|
|
||||||
| INNODB_INDEX_STATS |
|
|
||||||
+---------------------------------------+
|
+---------------------------------------+
|
||||||
Database: INFORMATION_SCHEMA
|
Database: INFORMATION_SCHEMA
|
||||||
+---------------------------------------+
|
|
||||||
| Tables |
|
| Tables |
|
||||||
+---------------------------------------+
|
|
||||||
| CHARACTER_SETS |
|
| CHARACTER_SETS |
|
||||||
| CLIENT_STATISTICS |
|
| CLIENT_STATISTICS |
|
||||||
| COLLATIONS |
|
| COLLATIONS |
|
||||||
@ -332,9 +333,26 @@ Database: INFORMATION_SCHEMA
|
|||||||
| GLOBAL_STATUS |
|
| GLOBAL_STATUS |
|
||||||
| GLOBAL_VARIABLES |
|
| GLOBAL_VARIABLES |
|
||||||
| INDEX_STATISTICS |
|
| INDEX_STATISTICS |
|
||||||
|
| INNODB_BUFFER_POOL_PAGES |
|
||||||
|
| INNODB_BUFFER_POOL_PAGES_BLOB |
|
||||||
|
| INNODB_BUFFER_POOL_PAGES_INDEX |
|
||||||
|
| INNODB_CMP |
|
||||||
|
| INNODB_CMPMEM |
|
||||||
|
| INNODB_CMPMEM_RESET |
|
||||||
|
| INNODB_CMP_RESET |
|
||||||
|
| INNODB_INDEX_STATS |
|
||||||
|
| INNODB_LOCKS |
|
||||||
|
| INNODB_LOCK_WAITS |
|
||||||
|
| INNODB_RSEG |
|
||||||
|
| INNODB_SYS_INDEXES |
|
||||||
|
| INNODB_SYS_STATS |
|
||||||
|
| INNODB_SYS_TABLES |
|
||||||
|
| INNODB_TABLE_STATS |
|
||||||
|
| INNODB_TRX |
|
||||||
| KEY_CACHES |
|
| KEY_CACHES |
|
||||||
| KEY_COLUMN_USAGE |
|
| KEY_COLUMN_USAGE |
|
||||||
| PARTITIONS |
|
| PARTITIONS |
|
||||||
|
| PBXT_STATISTICS |
|
||||||
| PLUGINS |
|
| PLUGINS |
|
||||||
| PROCESSLIST |
|
| PROCESSLIST |
|
||||||
| PROFILING |
|
| PROFILING |
|
||||||
@ -353,32 +371,14 @@ Database: INFORMATION_SCHEMA
|
|||||||
| USER_PRIVILEGES |
|
| USER_PRIVILEGES |
|
||||||
| USER_STATISTICS |
|
| USER_STATISTICS |
|
||||||
| VIEWS |
|
| VIEWS |
|
||||||
| INNODB_BUFFER_POOL_PAGES |
|
|
||||||
| PBXT_STATISTICS |
|
|
||||||
| INNODB_CMP |
|
|
||||||
| INNODB_RSEG |
|
|
||||||
| XTRADB_ENHANCEMENTS |
|
|
||||||
| INNODB_BUFFER_POOL_PAGES_INDEX |
|
|
||||||
| XTRADB_ADMIN_COMMAND |
|
| XTRADB_ADMIN_COMMAND |
|
||||||
| INNODB_TRX |
|
| XTRADB_ENHANCEMENTS |
|
||||||
| INNODB_SYS_TABLES |
|
+--------------------+
|
||||||
| INNODB_LOCK_WAITS |
|
+--------------------+
|
||||||
| INNODB_SYS_STATS |
|
+--------------------+
|
||||||
| INNODB_LOCKS |
|
|
||||||
| INNODB_CMPMEM |
|
|
||||||
| INNODB_TABLE_STATS |
|
|
||||||
| INNODB_SYS_INDEXES |
|
|
||||||
| INNODB_CMP_RESET |
|
|
||||||
| INNODB_BUFFER_POOL_PAGES_BLOB |
|
|
||||||
| INNODB_CMPMEM_RESET |
|
|
||||||
| INNODB_INDEX_STATS |
|
|
||||||
+---------------------------------------+
|
|
||||||
Wildcard: inf_rmation_schema
|
Wildcard: inf_rmation_schema
|
||||||
+--------------------+
|
|
||||||
| Databases |
|
| Databases |
|
||||||
+--------------------+
|
|
||||||
| information_schema |
|
| information_schema |
|
||||||
+--------------------+
|
|
||||||
SELECT table_schema, count(*) FROM information_schema.TABLES WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA;
|
SELECT table_schema, count(*) FROM information_schema.TABLES WHERE table_schema IN ('mysql', 'INFORMATION_SCHEMA', 'test', 'mysqltest') AND table_name<>'ndb_binlog_index' AND table_name<>'ndb_apply_status' GROUP BY TABLE_SCHEMA;
|
||||||
table_schema count(*)
|
table_schema count(*)
|
||||||
information_schema 52
|
information_schema 52
|
||||||
|
@ -783,7 +783,7 @@ create table t1 (a int primary key,b int, c int, d int, e int, f int, g int, h
|
|||||||
insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
|
insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
|
||||||
explain select * from t1 where a > 0 and a < 50;
|
explain select * from t1 where a > 0 and a < 50;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL # Using index condition
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL # Using where
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
|
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
|
||||||
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
|
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
|
||||||
|
@ -167,7 +167,7 @@ WHERE ts BETWEEN '0000-00-00' AND '2010-00-01 00:00:00'
|
|||||||
ORDER BY ts DESC
|
ORDER BY ts DESC
|
||||||
LIMIT 2;
|
LIMIT 2;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 4 Using index condition
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 4 Using where
|
||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
@ -431,7 +431,7 @@ SELECT * FROM t1
|
|||||||
WHERE pk IN (SELECT it.pk FROM t2 JOIN t2 AS it ON it.i=it.i WHERE it.pk-t1.i<10);
|
WHERE pk IN (SELECT it.pk FROM t2 JOIN t2 AS it ON it.i=it.i WHERE it.pk-t1.i<10);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
2 DEPENDENT SUBQUERY it eq_ref PRIMARY PRIMARY 4 func 1 Using index condition
|
2 DEPENDENT SUBQUERY it eq_ref PRIMARY PRIMARY 4 func 1 Using where
|
||||||
2 DEPENDENT SUBQUERY t2 index NULL PRIMARY 4 NULL 3 Using where; Using index; Using join buffer (flat, BNL join)
|
2 DEPENDENT SUBQUERY t2 index NULL PRIMARY 4 NULL 3 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
SELECT * FROM t1
|
SELECT * FROM t1
|
||||||
WHERE pk IN (SELECT it.pk FROM t2 JOIN t2 AS it ON it.i=it.i WHERE it.pk-t1.i<10);
|
WHERE pk IN (SELECT it.pk FROM t2 JOIN t2 AS it ON it.i=it.i WHERE it.pk-t1.i<10);
|
||||||
@ -452,7 +452,7 @@ PRIMARY KEY (pk)
|
|||||||
INSERT INTO t1 VALUES (1,9),(2,7),(3,6),(4,3),(5,1);
|
INSERT INTO t1 VALUES (1,9),(2,7),(3,6),(4,3),(5,1);
|
||||||
EXPLAIN SELECT pk, c1 FROM t1 WHERE pk <> 3;
|
EXPLAIN SELECT pk, c1 FROM t1 WHERE pk <> 3;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 4 Using index condition
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 4 Using where
|
||||||
SET SESSION optimizer_switch='index_condition_pushdown=off';
|
SET SESSION optimizer_switch='index_condition_pushdown=off';
|
||||||
SELECT pk, c1 FROM t1 WHERE pk <> 3;
|
SELECT pk, c1 FROM t1 WHERE pk <> 3;
|
||||||
pk c1
|
pk c1
|
||||||
@ -507,8 +507,8 @@ SELECT c2 FROM t1 JOIN t2 ON t1.c1 = t2.c1
|
|||||||
WHERE (t2.pk <= 4 AND t1.pk IN (2,1)) OR
|
WHERE (t2.pk <= 4 AND t1.pk IN (2,1)) OR
|
||||||
(t1.pk > 1 AND t2.pk BETWEEN 6 AND 6);
|
(t1.pk > 1 AND t2.pk BETWEEN 6 AND 6);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 Using index condition; Using where
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 1 Using where
|
||||||
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t2 range PRIMARY PRIMARY 4 NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
SELECT c2 FROM t1 JOIN t2 ON t1.c1 = t2.c1
|
SELECT c2 FROM t1 JOIN t2 ON t1.c1 = t2.c1
|
||||||
WHERE (t2.pk <= 4 AND t1.pk IN (2,1)) OR
|
WHERE (t2.pk <= 4 AND t1.pk IN (2,1)) OR
|
||||||
(t1.pk > 1 AND t2.pk BETWEEN 6 AND 6);
|
(t1.pk > 1 AND t2.pk BETWEEN 6 AND 6);
|
||||||
@ -680,7 +680,7 @@ EXPLAIN
|
|||||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||||
HAVING t1.c != 5 ORDER BY t1.c;
|
HAVING t1.c != 5 ORDER BY t1.c;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Using where; Using filesort
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 2 Using where; Using filesort
|
||||||
1 SIMPLE t2 ref a a 515 test.t1.a 1 Using where
|
1 SIMPLE t2 ref a a 515 test.t1.a 1 Using where
|
||||||
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
SELECT t1.b, t1.c FROM t1, t2 WHERE t1.a = t2.a AND t1.b != 0
|
||||||
HAVING t1.c != 5 ORDER BY t1.c;
|
HAVING t1.c != 5 ORDER BY t1.c;
|
||||||
@ -793,7 +793,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 PRIMARY t ALL PRIMARY,c NULL NULL NULL 64 Using where
|
1 PRIMARY t ALL PRIMARY,c NULL NULL NULL 64 Using where
|
||||||
1 PRIMARY t2 ref g g 5 test.t.c 9 Using where
|
1 PRIMARY t2 ref g g 5 test.t.c 9 Using where
|
||||||
2 DEPENDENT SUBQUERY t1 index PRIMARY d 3 NULL 64 Using where; Using index
|
2 DEPENDENT SUBQUERY t1 index PRIMARY d 3 NULL 64 Using where; Using index
|
||||||
2 DEPENDENT SUBQUERY t2 eq_ref PRIMARY PRIMARY 4 test.t1.a 1 Using index condition; Using where
|
2 DEPENDENT SUBQUERY t2 eq_ref PRIMARY PRIMARY 4 test.t1.a 1 Using where
|
||||||
SELECT COUNT(*) FROM t1 AS t, t2
|
SELECT COUNT(*) FROM t1 AS t, t2
|
||||||
WHERE c = g
|
WHERE c = g
|
||||||
AND (EXISTS (SELECT * FROM t1, t2 WHERE a = f AND h <= t.e AND a > t.b)
|
AND (EXISTS (SELECT * FROM t1, t2 WHERE a = f AND h <= t.e AND a > t.b)
|
||||||
@ -808,5 +808,32 @@ COUNT(*)
|
|||||||
1478
|
1478
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
# check "Handler_pushed" status varuiables
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 CHAR(1),
|
||||||
|
c2 CHAR(1),
|
||||||
|
KEY (c1)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES ('3', '3'),('4','4'),('5','5');
|
||||||
|
flush status;
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 0
|
||||||
|
Handler_icp_match 0
|
||||||
|
SELECT * FROM t1 FORCE INDEX(c1) WHERE (c1='3' or c1='4') and c1 % 2 = 0 ;
|
||||||
|
c1 c2
|
||||||
|
4 4
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 2
|
||||||
|
Handler_icp_match 1
|
||||||
|
SELECT * FROM t1 WHERE (c2='3' or c2='4') and c2 % 2 = 0 ;
|
||||||
|
c1 c2
|
||||||
|
4 4
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 2
|
||||||
|
Handler_icp_match 1
|
||||||
|
DROP TABLE t1;
|
||||||
set optimizer_switch=@innodb_icp_tmp;
|
set optimizer_switch=@innodb_icp_tmp;
|
||||||
set storage_engine= @save_storage_engine;
|
set storage_engine= @save_storage_engine;
|
||||||
|
@ -82,7 +82,7 @@ insert into t2 values ('a-1010=A', 1010), ('a-1030=A', 1030), ('a-1020=A', 1020)
|
|||||||
explain select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
explain select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 30 test.t2.a,test.t2.b 1 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered scan
|
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 30 test.t2.a,test.t2.b 1 Using where; Using join buffer (flat, BKA join); Key-ordered scan
|
||||||
select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
select * from t1, t2 where t1.a=t2.a and t1.b=t2.b;
|
||||||
a b filler a b
|
a b filler a b
|
||||||
a-1010=A 1010 filler a-1010=A 1010
|
a-1010=A 1010 filler a-1010=A 1010
|
||||||
@ -91,7 +91,7 @@ a-1030=A 1030 filler a-1030=A 1030
|
|||||||
explain select * from t1, t2 where t1.a=t2.a;
|
explain select * from t1, t2 where t1.a=t2.a;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 SIMPLE t1 ref PRIMARY PRIMARY 26 test.t2.a 1 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered scan
|
1 SIMPLE t1 ref PRIMARY PRIMARY 26 test.t2.a 1 Using where; Using join buffer (flat, BKA join); Key-ordered scan
|
||||||
select * from t1, t2 where t1.a=t2.a;
|
select * from t1, t2 where t1.a=t2.a;
|
||||||
a b filler a b
|
a b filler a b
|
||||||
a-1010=A 1010 filler a-1010=A 1010
|
a-1010=A 1010 filler a-1010=A 1010
|
||||||
@ -133,7 +133,7 @@ set join_cache_level=6;
|
|||||||
explain select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
explain select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 SIMPLE t1 ref PRIMARY PRIMARY 4 test.t2.a 1 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered scan
|
1 SIMPLE t1 ref PRIMARY PRIMARY 4 test.t2.a 1 Using where; Using join buffer (flat, BKA join); Key-ordered scan
|
||||||
select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
select * from t1, t2 where t1.a=t2.a and t2.b + t1.b > 100;
|
||||||
a b c filler a b
|
a b c filler a b
|
||||||
set optimizer_switch='index_condition_pushdown=off';
|
set optimizer_switch='index_condition_pushdown=off';
|
||||||
|
@ -697,6 +697,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 1
|
Handler_read_rnd_next 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
|
@ -860,6 +860,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 5
|
Handler_read_rnd_next 5
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
@ -1269,10 +1270,60 @@ Handler_read_key 1
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 1
|
Handler_read_rnd_next 1
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
|
# Bug #43368: STRAIGHT_JOIN DOESN'T WORK FOR NESTED JOINS
|
||||||
|
#
|
||||||
|
create table t1(c1 int primary key, c2 char(10)) engine=myisam;
|
||||||
|
create table t2(c1 int primary key, c2 char(10), ref_t1 int) engine=myisam;
|
||||||
|
create table t3(c1 int primary key, c2 char(10), ref_t1 int) engine=myisam;
|
||||||
|
create table t4(c1 int primary key, c2 char(10), ref_t1 int) engine=myisam;
|
||||||
|
insert into t1 values(1,'a');
|
||||||
|
insert into t2 values(1,'a', 1);
|
||||||
|
insert into t3 values(1,'a', 1);
|
||||||
|
insert into t3 values(2,'b',2);
|
||||||
|
insert into t4 values(1,'a', 1);
|
||||||
|
insert into t4 values(2,'a', 2);
|
||||||
|
insert into t4 values(3,'a', 3);
|
||||||
|
insert into t4 values(4,'a', 4);
|
||||||
|
insert into t1 values(2,'b');
|
||||||
|
insert into t1 values(3,'c');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT *
|
||||||
|
FROM t4 JOIN
|
||||||
|
(t1 JOIN t3 ON t3.ref_t1=t1.c1 JOIN t2 ON t2.ref_t1=t1.c1)
|
||||||
|
ON t4.ref_t1=t1.c1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 system NULL NULL NULL NULL 1
|
||||||
|
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1
|
||||||
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 4 Using where; Using join buffer (flat, BNL join)
|
||||||
|
EXPLAIN
|
||||||
|
SELECT STRAIGHT_JOIN *
|
||||||
|
FROM t4 JOIN
|
||||||
|
(t1 JOIN t3 ON t3.ref_t1=t1.c1 JOIN t2 ON t2.ref_t1=t1.c1)
|
||||||
|
ON t4.ref_t1=t1.c1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 4
|
||||||
|
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||||
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
EXPLAIN
|
||||||
|
SELECT *
|
||||||
|
FROM t4 STRAIGHT_JOIN
|
||||||
|
(t1 JOIN t3 ON t3.ref_t1=t1.c1 JOIN t2 ON t2.ref_t1=t1.c1)
|
||||||
|
ON t4.ref_t1=t1.c1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (flat, BNL join)
|
||||||
|
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t4.ref_t1 1
|
||||||
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
End of 5.2 tests
|
||||||
|
#
|
||||||
# BUG#724275: Crash in JOIN::optimize in maria-5.3
|
# BUG#724275: Crash in JOIN::optimize in maria-5.3
|
||||||
#
|
#
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
|
@ -3506,6 +3506,7 @@ insert into t2 values (2,1, 'qwerty'),(2,2, 'qwerty'),(2,3, 'qwerty'),
|
|||||||
insert into t2 values (3,1, 'qwerty'),(3,4, 'qwerty');
|
insert into t2 values (3,1, 'qwerty'),(3,4, 'qwerty');
|
||||||
insert into t2 values (4,1, 'qwerty'),(4,2, 'qwerty'),(4,3, 'qwerty'),
|
insert into t2 values (4,1, 'qwerty'),(4,2, 'qwerty'),(4,3, 'qwerty'),
|
||||||
(4,4, 'qwerty');
|
(4,4, 'qwerty');
|
||||||
|
flush status;
|
||||||
set join_cache_level=5;
|
set join_cache_level=5;
|
||||||
select t2.f1, t2.f2, t2.f3 from t1,t2
|
select t2.f1, t2.f2, t2.f3 from t1,t2
|
||||||
where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
|
where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
|
||||||
@ -3519,6 +3520,10 @@ where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 SIMPLE t2 ref f1 f1 4 test.t1.f1 3 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
1 SIMPLE t2 ref f1 f1 4 test.t1.f1 3 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 20
|
||||||
|
Handler_icp_match 4
|
||||||
set join_cache_level=6;
|
set join_cache_level=6;
|
||||||
select t2.f1, t2.f2, t2.f3 from t1,t2
|
select t2.f1, t2.f2, t2.f3 from t1,t2
|
||||||
where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
|
where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
|
||||||
@ -3532,6 +3537,10 @@ where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 SIMPLE t2 ref f1 f1 4 test.t1.f1 3 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
1 SIMPLE t2 ref f1 f1 4 test.t1.f1 3 Using index condition(BKA); Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 40
|
||||||
|
Handler_icp_match 8
|
||||||
set join_cache_level=7;
|
set join_cache_level=7;
|
||||||
select t2.f1, t2.f2, t2.f3 from t1,t2
|
select t2.f1, t2.f2, t2.f3 from t1,t2
|
||||||
where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
|
where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
|
||||||
@ -3545,6 +3554,10 @@ where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 SIMPLE t2 ref f1 f1 4 test.t1.f1 3 Using index condition(BKA); Using where; Using join buffer (flat, BKAH join); Key-ordered Rowid-ordered scan
|
1 SIMPLE t2 ref f1 f1 4 test.t1.f1 3 Using index condition(BKA); Using where; Using join buffer (flat, BKAH join); Key-ordered Rowid-ordered scan
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 60
|
||||||
|
Handler_icp_match 12
|
||||||
set join_cache_level=8;
|
set join_cache_level=8;
|
||||||
select t2.f1, t2.f2, t2.f3 from t1,t2
|
select t2.f1, t2.f2, t2.f3 from t1,t2
|
||||||
where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
|
where t1.f1=t2.f1 and t2.f2 between t1.f1 and t1.f2 and t2.f2 + 1 >= t1.f1 + 1;
|
||||||
@ -3558,6 +3571,10 @@ where t1.f1=t2.f1 and t2.f2 between t1.f1 and t2.f2;
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 SIMPLE t2 ref f1 f1 4 test.t1.f1 3 Using index condition(BKA); Using where; Using join buffer (flat, BKAH join); Key-ordered Rowid-ordered scan
|
1 SIMPLE t2 ref f1 f1 4 test.t1.f1 3 Using index condition(BKA); Using where; Using join buffer (flat, BKAH join); Key-ordered Rowid-ordered scan
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 80
|
||||||
|
Handler_icp_match 16
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
#
|
#
|
||||||
@ -5134,7 +5151,7 @@ EXPLAIN
|
|||||||
SELECT * FROM (SELECT DISTINCT * FROM t1) t
|
SELECT * FROM (SELECT DISTINCT * FROM t1) t
|
||||||
WHERE t.a IN (SELECT t2.a FROM t2);
|
WHERE t.a IN (SELECT t2.a FROM t2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <derived2> ALL key0 NULL NULL NULL 3
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 3
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 4 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 4 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
|
||||||
2 DERIVED t1 ALL NULL NULL NULL NULL 3 Using temporary
|
2 DERIVED t1 ALL NULL NULL NULL NULL 3 Using temporary
|
||||||
SELECT * FROM (SELECT DISTINCT * FROM t1) t
|
SELECT * FROM (SELECT DISTINCT * FROM t1) t
|
||||||
@ -5389,4 +5406,184 @@ x 5 5 4
|
|||||||
SET join_cache_level = DEFAULT;
|
SET join_cache_level = DEFAULT;
|
||||||
SET optimizer_switch=@tmp_optimizer_switch;
|
SET optimizer_switch=@tmp_optimizer_switch;
|
||||||
DROP TABLE t1,t2,t3,t4;
|
DROP TABLE t1,t2,t3,t4;
|
||||||
|
#
|
||||||
|
# Bug#53305 Duplicate weedout + join buffer (join cache --level=7,8)
|
||||||
|
#
|
||||||
|
create table t1 (uid int, fid int, index(uid));
|
||||||
|
insert into t1 values
|
||||||
|
(1,1), (1,2), (1,3), (1,4),
|
||||||
|
(2,5), (2,6), (2,7), (2,8),
|
||||||
|
(3,1), (3,2), (3,9);
|
||||||
|
create table t2 (uid int primary key, name varchar(128), index(name));
|
||||||
|
insert into t2 values
|
||||||
|
(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"),
|
||||||
|
(6, "F"), (7, "G"), (8, "H"), (9, "I");
|
||||||
|
create table t3 (uid int, fid int, index(uid));
|
||||||
|
insert into t3 values
|
||||||
|
(1,1), (1,2), (1,3),(1,4),
|
||||||
|
(2,5), (2,6), (2,7), (2,8),
|
||||||
|
(3,1), (3,2), (3,9);
|
||||||
|
set @tmp_optimizer_switch=@@optimizer_switch;
|
||||||
|
set @@optimizer_switch='semijoin=on';
|
||||||
|
set optimizer_switch='materialization=off';
|
||||||
|
set optimizer_switch='loosescan=off,firstmatch=off';
|
||||||
|
set optimizer_switch='mrr_sort_keys=off';
|
||||||
|
set join_cache_level=7;
|
||||||
|
create table t4 (uid int primary key, name varchar(128), index(name));
|
||||||
|
insert into t4 values
|
||||||
|
(1, "A"), (2, "B"), (3, "C"), (4, "D"), (5, "E"),
|
||||||
|
(6, "F"), (7, "G"), (8, "H"), (9, "I");
|
||||||
|
explain select name from t2, t1
|
||||||
|
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
|
||||||
|
and t2.uid=t1.fid;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t3 ref uid uid 5 const 4 Using where; Start temporary
|
||||||
|
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 4 test.t3.fid 1 Using index
|
||||||
|
1 PRIMARY t1 ALL uid NULL NULL NULL 11 Using where; End temporary; Using join buffer (flat, BNL join)
|
||||||
|
1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t1.fid 1 Using join buffer (flat, BKAH join); Rowid-ordered scan
|
||||||
|
select name from t2, t1
|
||||||
|
where t1.uid in (select t4.uid from t4, t3 where t3.uid=1 and t4.uid=t3.fid)
|
||||||
|
and t2.uid=t1.fid;
|
||||||
|
name
|
||||||
|
A
|
||||||
|
A
|
||||||
|
B
|
||||||
|
B
|
||||||
|
C
|
||||||
|
D
|
||||||
|
E
|
||||||
|
F
|
||||||
|
G
|
||||||
|
H
|
||||||
|
I
|
||||||
|
set join_cache_level = default;
|
||||||
|
set optimizer_switch=@tmp_optimizer_switch;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
#
|
||||||
|
# Bug#50358 - semijoin execution of subquery with outerjoin
|
||||||
|
# emplying join buffer
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (i int);
|
||||||
|
CREATE TABLE t2 (i int);
|
||||||
|
CREATE TABLE t3 (i int);
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
INSERT INTO t2 VALUES (6);
|
||||||
|
INSERT INTO t3 VALUES (1), (2);
|
||||||
|
set @tmp_optimizer_switch=@@optimizer_switch;
|
||||||
|
set @@optimizer_switch='semijoin=on';
|
||||||
|
set optimizer_switch='materialization=on';
|
||||||
|
set join_cache_level=0;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 WHERE t1.i IN
|
||||||
|
(SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 1 Using where
|
||||||
|
SELECT * FROM t1 WHERE t1.i IN
|
||||||
|
(SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i);
|
||||||
|
i
|
||||||
|
1
|
||||||
|
2
|
||||||
|
set join_cache_level=2;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 WHERE t1.i IN
|
||||||
|
(SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (flat, BNL join)
|
||||||
|
SELECT * FROM t1 WHERE t1.i IN
|
||||||
|
(SELECT t3.i FROM t3 LEFT JOIN t2 ON t2.i=t3.i);
|
||||||
|
i
|
||||||
|
1
|
||||||
|
2
|
||||||
|
set join_cache_level = default;
|
||||||
|
set optimizer_switch=@tmp_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# Bug #12546542: missing row with semijoin=off + join cache
|
||||||
|
# (LP bug #922971)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a varchar(1024));
|
||||||
|
INSERT INTO t1 VALUES ('v'), ('we');
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
a varchar(1024) CHARACTER SET utf8 DEFAULT NULL, b int, c int
|
||||||
|
);
|
||||||
|
INSERT INTO t2 VALUES ('we',4,NULL), ('v',1305673728,6);
|
||||||
|
CREATE TABLE t3 (b int, c int);
|
||||||
|
INSERT INTO t3 VALUES (4,4);
|
||||||
|
set @tmp_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=off';
|
||||||
|
set optimizer_switch='materialization=off';
|
||||||
|
set join_cache_level=0;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT t2.a FROM t2 LEFT JOIN t3 ON t2.b = t3.b
|
||||||
|
WHERE t2.c < 10 OR t3.c > 1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 1 Using where
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT t2.a FROM t2 LEFT JOIN t3 ON t2.b = t3.b
|
||||||
|
WHERE t2.c < 10 OR t3.c > 1);
|
||||||
|
a
|
||||||
|
v
|
||||||
|
we
|
||||||
|
set join_cache_level=2;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT t2.a FROM t2 LEFT JOIN t3 ON t2.b = t3.b
|
||||||
|
WHERE t2.c < 10 OR t3.c > 1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (flat, BNL join)
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT t2.a FROM t2 LEFT JOIN t3 ON t2.b = t3.b
|
||||||
|
WHERE t2.c < 10 OR t3.c > 1);
|
||||||
|
a
|
||||||
|
v
|
||||||
|
we
|
||||||
|
set join_cache_level = default;
|
||||||
|
set optimizer_switch=@tmp_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# Bug #925985: LEFT JOIN with optimize_join_buffer_size=off +
|
||||||
|
# join_buffer_size > join_buffer_space_limit
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES (5), (3);
|
||||||
|
CREATE TABLE t2 (a int, b int);
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(3,30), (1,10), (7,70), (2,20),
|
||||||
|
(3,31), (1,11), (7,71), (2,21),
|
||||||
|
(3,32), (1,12), (7,72), (2,22);
|
||||||
|
CREATE TABLE t3 (b int, c int);
|
||||||
|
INSERT INTO t3 VALUES (32, 302), (42,400), (30,300);
|
||||||
|
set @tmp_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='optimize_join_buffer_size=off';
|
||||||
|
set join_buffer_space_limit=4096;
|
||||||
|
set join_buffer_size=4096*2;
|
||||||
|
set join_cache_level=2;
|
||||||
|
set optimizer_switch='outer_join_with_cache=on';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1, t2 LEFT JOIN t3 ON t2.b=t3.b WHERE t1.a=t2.a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 12 Using where; Using join buffer (flat, BNL join)
|
||||||
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
SELECT * FROM t1, t2 LEFT JOIN t3 ON t2.b=t3.b WHERE t1.a=t2.a;
|
||||||
|
a a b b c
|
||||||
|
3 3 30 30 300
|
||||||
|
3 3 31 NULL NULL
|
||||||
|
3 3 32 32 302
|
||||||
|
set join_buffer_space_limit=default;
|
||||||
|
set join_buffer_size=default;
|
||||||
|
set join_cache_level=default;
|
||||||
|
set optimizer_switch=@tmp_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
set @@optimizer_switch=@save_optimizer_switch;
|
set @@optimizer_switch=@save_optimizer_switch;
|
||||||
|
@ -1240,6 +1240,7 @@ Handler_read_key 5
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 6
|
Handler_read_rnd_next 6
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (c int PRIMARY KEY, e int NOT NULL);
|
CREATE TABLE t1 (c int PRIMARY KEY, e int NOT NULL);
|
||||||
@ -1499,6 +1500,7 @@ Handler_read_key 4
|
|||||||
Handler_read_next 5
|
Handler_read_next 5
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 1048581
|
Handler_read_rnd_next 1048581
|
||||||
flush status;
|
flush status;
|
||||||
select sum(t3.b) from t2 left join t3 on t3.a=t2.a and t2.a <> 10;
|
select sum(t3.b) from t2 left join t3 on t3.a=t2.a and t2.a <> 10;
|
||||||
@ -1511,6 +1513,7 @@ Handler_read_key 4
|
|||||||
Handler_read_next 5
|
Handler_read_next 5
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 1048581
|
Handler_read_rnd_next 1048581
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
#
|
#
|
||||||
@ -1653,4 +1656,88 @@ b b a b
|
|||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
SET SESSION join_cache_level=default;
|
SET SESSION join_cache_level=default;
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# LP bug #943543: LEFT JOIN converted to JOIN with
|
||||||
|
# ORed IS NULL(primary key) in WHERE clause
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int, b int NOT NULL, pk int NOT NULL,
|
||||||
|
PRIMARY KEY (pk), INDEX idx(b)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(NULL,1,1), (6,2,2), (5,3,3), (NULL,4,4),
|
||||||
|
(1,9,6), (8,5,7), (NULL,8,8), (8,1,5);
|
||||||
|
CREATE TABLE t2 (pk int PRIMARY KEY);
|
||||||
|
INSERT INTO t2 VALUES (3), (8), (5);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT t1.pk FROM t2 JOIN t1 ON t2.pk = t1.a
|
||||||
|
WHERE t1.b BETWEEN 5 AND 6 AND t1.pk IS NULL OR t1.pk = 5
|
||||||
|
ORDER BY t1.pk;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 100.00
|
||||||
|
1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 100.00 Using index
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 5 AS `pk` from `test`.`t2` join `test`.`t1` where (1) order by 5
|
||||||
|
SELECT t1.pk FROM t2 JOIN t1 ON t2.pk = t1.a
|
||||||
|
WHERE t1.b BETWEEN 5 AND 6 AND t1.pk IS NULL OR t1.pk = 5
|
||||||
|
ORDER BY t1.pk;
|
||||||
|
pk
|
||||||
|
5
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT t1.pk FROM t2 LEFT JOIN t1 ON t2.pk = t1.a
|
||||||
|
WHERE t1.b BETWEEN 5 AND 6 AND t1.pk IS NULL OR t1.pk = 5
|
||||||
|
ORDER BY t1.pk;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 const PRIMARY,idx PRIMARY 4 const 1 100.00
|
||||||
|
1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 100.00 Using index
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 5 AS `pk` from `test`.`t2` join `test`.`t1` where ((((1 between 5 and 6) and isnull(5)) or 1)) order by 5
|
||||||
|
SELECT t1.pk FROM t2 LEFT JOIN t1 ON t2.pk = t1.a
|
||||||
|
WHERE t1.b BETWEEN 5 AND 6 AND t1.pk IS NULL OR t1.pk = 5
|
||||||
|
ORDER BY t1.pk;
|
||||||
|
pk
|
||||||
|
5
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 (c int, d int, KEY (c));
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(3,30), (8,88), (5,50), (8,81),
|
||||||
|
(4,40), (9,90), (7,70), (9,90),
|
||||||
|
(13,130), (18,188), (15,150), (18,181),
|
||||||
|
(14,140), (19,190), (17,170), (19,190);
|
||||||
|
INSERT INTO t1 VALUES (8,5,9);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT t1.b, t2.c, t2.d FROM t2 JOIN t1 ON t2.c = t1.a
|
||||||
|
WHERE t1.pk BETWEEN 5 AND 6 AND t1.b IS NULL OR t1.b = 5
|
||||||
|
ORDER BY t1.b;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ref idx idx 4 const 2 100.00 Using where
|
||||||
|
1 SIMPLE t2 ref c c 5 test.t1.a 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d` from `test`.`t2` join `test`.`t1` where ((`test`.`t2`.`c` = `test`.`t1`.`a`) and (`test`.`t1`.`b` = 5)) order by `test`.`t1`.`b`
|
||||||
|
SELECT t1.b, t2.c, t2.d FROM t2 JOIN t1 ON t2.c = t1.a
|
||||||
|
WHERE t1.pk BETWEEN 5 AND 6 AND t1.b IS NULL OR t1.b = 5
|
||||||
|
ORDER BY t1.b;
|
||||||
|
b c d
|
||||||
|
5 8 88
|
||||||
|
5 8 81
|
||||||
|
5 8 88
|
||||||
|
5 8 81
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT t1.b, t2.c, t2.d FROM t2 LEFT JOIN t1 ON t2.c = t1.a
|
||||||
|
WHERE t1.pk BETWEEN 5 AND 6 AND t1.b IS NULL OR t1.b = 5
|
||||||
|
ORDER BY t1.b;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ref PRIMARY,idx idx 4 const 2 100.00 Using where; Using filesort
|
||||||
|
1 SIMPLE t2 ref c c 5 test.t1.a 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d` from `test`.`t2` join `test`.`t1` where ((`test`.`t2`.`c` = `test`.`t1`.`a`) and (((`test`.`t1`.`pk` between 5 and 6) and isnull(`test`.`t1`.`b`)) or (`test`.`t1`.`b` = 5))) order by `test`.`t1`.`b`
|
||||||
|
SELECT t1.b, t2.c, t2.d FROM t2 LEFT JOIN t1 ON t2.c = t1.a
|
||||||
|
WHERE t1.pk BETWEEN 5 AND 6 AND t1.b IS NULL OR t1.b = 5
|
||||||
|
ORDER BY t1.b;
|
||||||
|
b c d
|
||||||
|
5 8 88
|
||||||
|
5 8 81
|
||||||
|
5 8 88
|
||||||
|
5 8 81
|
||||||
|
DROP TABLE t1,t2;
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
@ -17,3 +17,138 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE t2 index NULL fkey 5 NULL 5 Using index
|
1 SIMPLE t2 index NULL fkey 5 NULL 5 Using index
|
||||||
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.fkey 1 Using where
|
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.fkey 1 Using where
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
CREATE TABLE t1(a int, b int, KEY (a), PRIMARY KEY (b)) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE t2 (b int, PRIMARY KEY (b));
|
||||||
|
INSERT INTO t2 VALUES (4),(9);
|
||||||
|
SELECT STRAIGHT_JOIN t1.a FROM t1 RIGHT JOIN t2 ON t1.b = t2.b
|
||||||
|
WHERE (t1.b NOT BETWEEN 1 AND 7 OR t1.a IS NULL AND t1.b = t2.b) AND t2.b = 4
|
||||||
|
GROUP BY 1;
|
||||||
|
a
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
Bug #59487: WRONG RESULT WITH STRAIGHT_JOIN AND RIGHT JOIN
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int(11) NOT NULL,
|
||||||
|
col_varchar_10_latin1_key varchar(10) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t1 VALUES (1,'1');
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
pk int(11) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
CREATE TABLE t3 (
|
||||||
|
pk int(11) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t3 VALUES (1);
|
||||||
|
CREATE TABLE t4 (
|
||||||
|
pk int(11) NOT NULL,
|
||||||
|
col_int int(11) DEFAULT NULL,
|
||||||
|
col_int_key int(11) DEFAULT NULL,
|
||||||
|
col_varchar_10_latin1_key varchar(10) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t4 VALUES (1,1,1,'1');
|
||||||
|
CREATE TABLE t5 (
|
||||||
|
col_int int(11) DEFAULT NULL,
|
||||||
|
col_varchar_10_utf8_key varchar(10) CHARACTER SET utf8 DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t5 VALUES (1,'1');
|
||||||
|
CREATE TABLE t6 (
|
||||||
|
col_int_key int(11) DEFAULT NULL,
|
||||||
|
col_varchar_10_latin1_key varchar(10) DEFAULT NULL,
|
||||||
|
pk int(11) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
INSERT INTO t6 VALUES (1,'1',1);
|
||||||
|
SELECT STRAIGHT_JOIN t6a.pk, t2.pk
|
||||||
|
FROM t6 AS t6a
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t2
|
||||||
|
RIGHT JOIN
|
||||||
|
(
|
||||||
|
(t1 LEFT JOIN (t4 JOIN t3 ON t4.col_int) ON t4.col_int_key = t1.pk)
|
||||||
|
LEFT JOIN
|
||||||
|
(t5 JOIN t6 AS t6b
|
||||||
|
ON t5.col_varchar_10_utf8_key = t6b.col_varchar_10_latin1_key)
|
||||||
|
ON t1.pk = t5.col_int
|
||||||
|
)
|
||||||
|
ON t4.col_varchar_10_latin1_key = t1.col_varchar_10_latin1_key
|
||||||
|
AND t5.col_varchar_10_utf8_key = 0
|
||||||
|
)
|
||||||
|
ON t6a.pk IS TRUE
|
||||||
|
WHERE t6b.col_int_key IS TRUE;
|
||||||
|
pk pk
|
||||||
|
1 NULL
|
||||||
|
EXPLAIN SELECT STRAIGHT_JOIN t6a.pk, t2.pk
|
||||||
|
FROM t6 AS t6a
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t2
|
||||||
|
RIGHT JOIN
|
||||||
|
(
|
||||||
|
(t1 LEFT JOIN (t4 JOIN t3 ON t4.col_int) ON t4.col_int_key = t1.pk)
|
||||||
|
LEFT JOIN
|
||||||
|
(t5 JOIN t6 AS t6b
|
||||||
|
ON t5.col_varchar_10_utf8_key = t6b.col_varchar_10_latin1_key)
|
||||||
|
ON t1.pk = t5.col_int
|
||||||
|
)
|
||||||
|
ON t4.col_varchar_10_latin1_key = t1.col_varchar_10_latin1_key
|
||||||
|
AND t5.col_varchar_10_utf8_key = 0
|
||||||
|
)
|
||||||
|
ON t6a.pk IS TRUE
|
||||||
|
WHERE t6b.col_int_key IS TRUE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t6a ALL NULL NULL NULL NULL 1 Using where
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 1 Using join buffer (flat, BNL join)
|
||||||
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t6b ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
SELECT t6a.pk, t2.pk
|
||||||
|
FROM t6 AS t6a
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t2
|
||||||
|
RIGHT JOIN
|
||||||
|
(
|
||||||
|
(t1 LEFT JOIN (t4 JOIN t3 ON t4.col_int) ON t4.col_int_key = t1.pk)
|
||||||
|
LEFT JOIN
|
||||||
|
(t5 JOIN t6 AS t6b
|
||||||
|
ON t5.col_varchar_10_utf8_key = t6b.col_varchar_10_latin1_key)
|
||||||
|
ON t1.pk = t5.col_int
|
||||||
|
)
|
||||||
|
ON t4.col_varchar_10_latin1_key = t1.col_varchar_10_latin1_key
|
||||||
|
AND t5.col_varchar_10_utf8_key = 0
|
||||||
|
)
|
||||||
|
ON t6a.pk IS TRUE
|
||||||
|
WHERE t6b.col_int_key IS TRUE;
|
||||||
|
pk pk
|
||||||
|
1 NULL
|
||||||
|
EXPLAIN SELECT t6a.pk, t2.pk
|
||||||
|
FROM t6 AS t6a
|
||||||
|
LEFT JOIN
|
||||||
|
(
|
||||||
|
t2
|
||||||
|
RIGHT JOIN
|
||||||
|
(
|
||||||
|
(t1 LEFT JOIN (t4 JOIN t3 ON t4.col_int) ON t4.col_int_key = t1.pk)
|
||||||
|
LEFT JOIN
|
||||||
|
(t5 JOIN t6 AS t6b
|
||||||
|
ON t5.col_varchar_10_utf8_key = t6b.col_varchar_10_latin1_key)
|
||||||
|
ON t1.pk = t5.col_int
|
||||||
|
)
|
||||||
|
ON t4.col_varchar_10_latin1_key = t1.col_varchar_10_latin1_key
|
||||||
|
AND t5.col_varchar_10_utf8_key = 0
|
||||||
|
)
|
||||||
|
ON t6a.pk IS TRUE
|
||||||
|
WHERE t6b.col_int_key IS TRUE;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t6a ALL NULL NULL NULL NULL 1 Using where
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 1 Using join buffer (flat, BNL join)
|
||||||
|
1 SIMPLE t4 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t6b ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
drop table t1,t2,t3,t4,t5,t6;
|
||||||
|
@ -1251,6 +1251,7 @@ Handler_read_key 5
|
|||||||
Handler_read_next 9
|
Handler_read_next 9
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 3
|
Handler_read_rnd 3
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 6
|
Handler_read_rnd_next 6
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (c int PRIMARY KEY, e int NOT NULL);
|
CREATE TABLE t1 (c int PRIMARY KEY, e int NOT NULL);
|
||||||
@ -1510,6 +1511,7 @@ Handler_read_key 4
|
|||||||
Handler_read_next 5
|
Handler_read_next 5
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 1048581
|
Handler_read_rnd_next 1048581
|
||||||
flush status;
|
flush status;
|
||||||
select sum(t3.b) from t2 left join t3 on t3.a=t2.a and t2.a <> 10;
|
select sum(t3.b) from t2 left join t3 on t3.a=t2.a and t2.a <> 10;
|
||||||
@ -1522,6 +1524,7 @@ Handler_read_key 4
|
|||||||
Handler_read_next 5
|
Handler_read_next 5
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 5
|
Handler_read_rnd 5
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 1048581
|
Handler_read_rnd_next 1048581
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
#
|
#
|
||||||
@ -1664,6 +1667,90 @@ b b a b
|
|||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
SET SESSION join_cache_level=default;
|
SET SESSION join_cache_level=default;
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# LP bug #943543: LEFT JOIN converted to JOIN with
|
||||||
|
# ORed IS NULL(primary key) in WHERE clause
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a int, b int NOT NULL, pk int NOT NULL,
|
||||||
|
PRIMARY KEY (pk), INDEX idx(b)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(NULL,1,1), (6,2,2), (5,3,3), (NULL,4,4),
|
||||||
|
(1,9,6), (8,5,7), (NULL,8,8), (8,1,5);
|
||||||
|
CREATE TABLE t2 (pk int PRIMARY KEY);
|
||||||
|
INSERT INTO t2 VALUES (3), (8), (5);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT t1.pk FROM t2 JOIN t1 ON t2.pk = t1.a
|
||||||
|
WHERE t1.b BETWEEN 5 AND 6 AND t1.pk IS NULL OR t1.pk = 5
|
||||||
|
ORDER BY t1.pk;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 100.00
|
||||||
|
1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 100.00 Using index
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 5 AS `pk` from `test`.`t2` join `test`.`t1` where (1) order by 5
|
||||||
|
SELECT t1.pk FROM t2 JOIN t1 ON t2.pk = t1.a
|
||||||
|
WHERE t1.b BETWEEN 5 AND 6 AND t1.pk IS NULL OR t1.pk = 5
|
||||||
|
ORDER BY t1.pk;
|
||||||
|
pk
|
||||||
|
5
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT t1.pk FROM t2 LEFT JOIN t1 ON t2.pk = t1.a
|
||||||
|
WHERE t1.b BETWEEN 5 AND 6 AND t1.pk IS NULL OR t1.pk = 5
|
||||||
|
ORDER BY t1.pk;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 const PRIMARY,idx PRIMARY 4 const 1 100.00
|
||||||
|
1 SIMPLE t2 const PRIMARY PRIMARY 4 const 1 100.00 Using index
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 5 AS `pk` from `test`.`t2` join `test`.`t1` where ((((1 between 5 and 6) and isnull(5)) or 1)) order by 5
|
||||||
|
SELECT t1.pk FROM t2 LEFT JOIN t1 ON t2.pk = t1.a
|
||||||
|
WHERE t1.b BETWEEN 5 AND 6 AND t1.pk IS NULL OR t1.pk = 5
|
||||||
|
ORDER BY t1.pk;
|
||||||
|
pk
|
||||||
|
5
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 (c int, d int, KEY (c));
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(3,30), (8,88), (5,50), (8,81),
|
||||||
|
(4,40), (9,90), (7,70), (9,90),
|
||||||
|
(13,130), (18,188), (15,150), (18,181),
|
||||||
|
(14,140), (19,190), (17,170), (19,190);
|
||||||
|
INSERT INTO t1 VALUES (8,5,9);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT t1.b, t2.c, t2.d FROM t2 JOIN t1 ON t2.c = t1.a
|
||||||
|
WHERE t1.pk BETWEEN 5 AND 6 AND t1.b IS NULL OR t1.b = 5
|
||||||
|
ORDER BY t1.b;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ref idx idx 4 const 2 100.00 Using where
|
||||||
|
1 SIMPLE t2 ref c c 5 test.t1.a 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d` from `test`.`t2` join `test`.`t1` where ((`test`.`t2`.`c` = `test`.`t1`.`a`) and (`test`.`t1`.`b` = 5)) order by `test`.`t1`.`b`
|
||||||
|
SELECT t1.b, t2.c, t2.d FROM t2 JOIN t1 ON t2.c = t1.a
|
||||||
|
WHERE t1.pk BETWEEN 5 AND 6 AND t1.b IS NULL OR t1.b = 5
|
||||||
|
ORDER BY t1.b;
|
||||||
|
b c d
|
||||||
|
5 8 88
|
||||||
|
5 8 81
|
||||||
|
5 8 88
|
||||||
|
5 8 81
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT t1.b, t2.c, t2.d FROM t2 LEFT JOIN t1 ON t2.c = t1.a
|
||||||
|
WHERE t1.pk BETWEEN 5 AND 6 AND t1.b IS NULL OR t1.b = 5
|
||||||
|
ORDER BY t1.b;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ref PRIMARY,idx idx 4 const 2 100.00 Using where; Using filesort
|
||||||
|
1 SIMPLE t2 ref c c 5 test.t1.a 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`b` AS `b`,`test`.`t2`.`c` AS `c`,`test`.`t2`.`d` AS `d` from `test`.`t2` join `test`.`t1` where ((`test`.`t2`.`c` = `test`.`t1`.`a`) and (((`test`.`t1`.`pk` between 5 and 6) and isnull(`test`.`t1`.`b`)) or (`test`.`t1`.`b` = 5))) order by `test`.`t1`.`b`
|
||||||
|
SELECT t1.b, t2.c, t2.d FROM t2 LEFT JOIN t1 ON t2.c = t1.a
|
||||||
|
WHERE t1.pk BETWEEN 5 AND 6 AND t1.b IS NULL OR t1.b = 5
|
||||||
|
ORDER BY t1.b;
|
||||||
|
b c d
|
||||||
|
5 8 88
|
||||||
|
5 8 81
|
||||||
|
5 8 88
|
||||||
|
5 8 81
|
||||||
|
DROP TABLE t1,t2;
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
show variables like 'join_cache_level';
|
show variables like 'join_cache_level';
|
||||||
|
@ -367,6 +367,22 @@ Variable_name Value
|
|||||||
key_cache_block_size 1536
|
key_cache_block_size 1536
|
||||||
SET GLOBAL key_cache_block_size= @bug28478_key_cache_block_size;
|
SET GLOBAL key_cache_block_size= @bug28478_key_cache_block_size;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#12361113: crash when load index into cache
|
||||||
|
#
|
||||||
|
# Note that this creates an empty disabled key cache!
|
||||||
|
SET GLOBAL key_cache_none.key_cache_block_size = 1024;
|
||||||
|
CREATE TABLE t1 (a INT, b INTEGER NOT NULL, KEY (b) ) ENGINE = MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (1, 1);
|
||||||
|
CACHE INDEX t1 in key_cache_none;
|
||||||
|
ERROR HY000: Unknown key cache 'key_cache_none'
|
||||||
|
# The bug crashed the server at LOAD INDEX below. Now it will succeed
|
||||||
|
# since the default cache is used due to CACHE INDEX failed for
|
||||||
|
# key_cache_none.
|
||||||
|
LOAD INDEX INTO CACHE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 preload_keys status OK
|
||||||
|
DROP TABLE t1;
|
||||||
set global key_buffer_size=@save_key_buffer_size;
|
set global key_buffer_size=@save_key_buffer_size;
|
||||||
set global key_cache_block_size=@save_key_cache_block_size;
|
set global key_cache_block_size=@save_key_cache_block_size;
|
||||||
select @@key_buffer_size;
|
select @@key_buffer_size;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
drop table if exists t1,t2;
|
drop table if exists t1,t2;
|
||||||
|
drop DATABASE if exists mysqltest_1;
|
||||||
create table t1(n int);
|
create table t1(n int);
|
||||||
insert into t1 values (1);
|
insert into t1 values (1);
|
||||||
lock tables t1 write;
|
lock tables t1 write;
|
||||||
|
@ -814,5 +814,32 @@ COUNT(*)
|
|||||||
1478
|
1478
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
# check "Handler_pushed" status varuiables
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 CHAR(1),
|
||||||
|
c2 CHAR(1),
|
||||||
|
KEY (c1)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES ('3', '3'),('4','4'),('5','5');
|
||||||
|
flush status;
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 0
|
||||||
|
Handler_icp_match 0
|
||||||
|
SELECT * FROM t1 FORCE INDEX(c1) WHERE (c1='3' or c1='4') and c1 % 2 = 0 ;
|
||||||
|
c1 c2
|
||||||
|
4 4
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 2
|
||||||
|
Handler_icp_match 1
|
||||||
|
SELECT * FROM t1 WHERE (c2='3' or c2='4') and c2 % 2 = 0 ;
|
||||||
|
c1 c2
|
||||||
|
4 4
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 2
|
||||||
|
Handler_icp_match 1
|
||||||
|
DROP TABLE t1;
|
||||||
set storage_engine= @save_storage_engine;
|
set storage_engine= @save_storage_engine;
|
||||||
set optimizer_switch=@maria_icp_tmp;
|
set optimizer_switch=@maria_icp_tmp;
|
||||||
|
@ -385,6 +385,8 @@ col_varchar_1024_latin1_key varchar(1024) DEFAULT NULL,
|
|||||||
PRIMARY KEY (pk),
|
PRIMARY KEY (pk),
|
||||||
KEY col_varchar_1024_latin1_key (col_varchar_1024_latin1_key)
|
KEY col_varchar_1024_latin1_key (col_varchar_1024_latin1_key)
|
||||||
) ENGINE=Aria;
|
) ENGINE=Aria;
|
||||||
|
Warnings:
|
||||||
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,'z'), (2,'abcdefjhjkl'), (3,'in'), (4,'abcdefjhjkl'), (6,'abcdefjhjkl'),
|
(1,'z'), (2,'abcdefjhjkl'), (3,'in'), (4,'abcdefjhjkl'), (6,'abcdefjhjkl'),
|
||||||
(11,'zx'), (12,'abcdefjhjm'), (13,'jn'), (14,'abcdefjhjp'), (16,'abcdefjhjr');
|
(11,'zx'), (12,'abcdefjhjm'), (13,'jn'), (14,'abcdefjhjp'), (16,'abcdefjhjr');
|
||||||
@ -398,7 +400,7 @@ WHERE
|
|||||||
table1.col_varchar_1024_latin1_key = table2.col_varchar_10_latin1 AND table1.pk<>0 ;
|
table1.col_varchar_1024_latin1_key = table2.col_varchar_10_latin1 AND table1.pk<>0 ;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE table2 ALL NULL NULL NULL NULL 2 Using where
|
1 SIMPLE table2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
1 SIMPLE table1 ref PRIMARY,col_varchar_1024_latin1_key col_varchar_1024_latin1_key 1027 test.table2.col_varchar_10_latin1 2 Using index condition(BKA); Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
1 SIMPLE table1 ref PRIMARY,col_varchar_1024_latin1_key col_varchar_1024_latin1_key 1003 test.table2.col_varchar_10_latin1 2 Using where
|
||||||
SELECT count(*)
|
SELECT count(*)
|
||||||
FROM t1 AS table1, t2 AS table2
|
FROM t1 AS table1, t2 AS table2
|
||||||
WHERE
|
WHERE
|
||||||
@ -420,6 +422,8 @@ f4 varchar(1024) COLLATE utf8_bin,
|
|||||||
f5 varchar(1024) COLLATE latin1_bin,
|
f5 varchar(1024) COLLATE latin1_bin,
|
||||||
KEY (f5)
|
KEY (f5)
|
||||||
) ENGINE=Aria TRANSACTIONAL=0 ;
|
) ENGINE=Aria TRANSACTIONAL=0 ;
|
||||||
|
Warnings:
|
||||||
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
# Fill the table with some data
|
# Fill the table with some data
|
||||||
SELECT alias2.* , alias1.f2
|
SELECT alias2.* , alias1.f2
|
||||||
FROM
|
FROM
|
||||||
|
40
mysql-test/r/myisam-big.result
Normal file
40
mysql-test/r/myisam-big.result
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
drop table if exists t1,t2;
|
||||||
|
create table t1 (id int, sometext varchar(100)) engine=myisam;
|
||||||
|
insert into t1 values (1, "hello"),(2, "hello2"),(4, "hello3"),(4, "hello4");
|
||||||
|
create table t2 like t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
insert into t2 select * from t1;
|
||||||
|
insert into t1 select * from t1;
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
131072
|
||||||
|
alter table t1 add index (id), add index(sometext), add index(sometext,id);
|
||||||
|
alter table t1 disable keys;
|
||||||
|
alter table t1 enable keys;
|
||||||
|
drop table t1,t2;
|
@ -812,6 +812,33 @@ COUNT(*)
|
|||||||
1478
|
1478
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
# check "Handler_pushed" status varuiables
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
c1 CHAR(1),
|
||||||
|
c2 CHAR(1),
|
||||||
|
KEY (c1)
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES ('3', '3'),('4','4'),('5','5');
|
||||||
|
flush status;
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 0
|
||||||
|
Handler_icp_match 0
|
||||||
|
SELECT * FROM t1 FORCE INDEX(c1) WHERE (c1='3' or c1='4') and c1 % 2 = 0 ;
|
||||||
|
c1 c2
|
||||||
|
4 4
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 2
|
||||||
|
Handler_icp_match 1
|
||||||
|
SELECT * FROM t1 WHERE (c2='3' or c2='4') and c2 % 2 = 0 ;
|
||||||
|
c1 c2
|
||||||
|
4 4
|
||||||
|
show status like "Handler_icp%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_icp_attempts 2
|
||||||
|
Handler_icp_match 1
|
||||||
|
DROP TABLE t1;
|
||||||
drop table if exists t0, t1, t1i, t1m;
|
drop table if exists t0, t1, t1i, t1m;
|
||||||
#
|
#
|
||||||
# BUG#826935 Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))' failed
|
# BUG#826935 Assertion `!table || (!table->read_set || bitmap_is_set(table->read_set, field_index))' failed
|
||||||
|
19
mysql-test/r/myisam_icp_notembedded.result
Normal file
19
mysql-test/r/myisam_icp_notembedded.result
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
drop table if exists t1,t2;
|
||||||
|
set @myisam_icp_notembedded_tmp=@@optimizer_switch;
|
||||||
|
set optimizer_switch='mrr=on,mrr_sort_keys=on,index_condition_pushdown=on';
|
||||||
|
#
|
||||||
|
# BUG#933412: Server crashes in _mi_put_key_in_record on KILL QUERY with ICP, STRAIGHT_JOIN
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
b INT,
|
||||||
|
c VARCHAR(1) NOT NULL,
|
||||||
|
d DATETIME,
|
||||||
|
KEY (c, b)
|
||||||
|
) ENGINE=MyISAM;
|
||||||
|
# INSERT some data
|
||||||
|
CREATE TABLE t2 ( a INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(7),(3),(7),(3);
|
||||||
|
# Now run a number of ICP queries while trying to kill them
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
set optimizer_switch=@myisam_icp_notembedded_tmp;
|
@ -557,4 +557,81 @@ COUNT(alias2.f2)
|
|||||||
set @@join_cache_level= @tmp_730133_jcl;
|
set @@join_cache_level= @tmp_730133_jcl;
|
||||||
set @@optimizer_switch= @tmp_730133_os;
|
set @@optimizer_switch= @tmp_730133_os;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Test of MRR handler counters
|
||||||
|
#
|
||||||
|
flush status;
|
||||||
|
show status like 'Handler_mrr%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_mrr_init 0
|
||||||
|
Handler_mrr_key_refills 0
|
||||||
|
Handler_mrr_rowid_refills 0
|
||||||
|
create table t0 (a int);
|
||||||
|
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
create table t1 (a int, b int, filler char(200), key(a));
|
||||||
|
insert into t1
|
||||||
|
select A.a+10*B.a+100*C.a+1000*D.a, 123,'filler' from t0 A, t0 B, t0 C, t0 D;
|
||||||
|
explain select sum(b) from t1 where a < 10;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 range a a 5 NULL 8 Using index condition; Rowid-ordered scan
|
||||||
|
# This should show one MRR scan and no re-fills:
|
||||||
|
flush status;
|
||||||
|
select sum(b) from t1 where a < 10;
|
||||||
|
sum(b)
|
||||||
|
1230
|
||||||
|
show status like 'handler_mrr%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_mrr_init 1
|
||||||
|
Handler_mrr_key_refills 0
|
||||||
|
Handler_mrr_rowid_refills 0
|
||||||
|
set @mrr_buffer_size_save= @@mrr_buffer_size;
|
||||||
|
set mrr_buffer_size=128;
|
||||||
|
explain select sum(b) from t1 where a < 1600;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 range a a 5 NULL 1380 Using index condition; Rowid-ordered scan
|
||||||
|
# This should show one MRR scan and one extra rowid sort:
|
||||||
|
flush status;
|
||||||
|
select sum(b) from t1 where a < 1600;
|
||||||
|
sum(b)
|
||||||
|
196800
|
||||||
|
show status like 'handler_mrr%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_mrr_init 1
|
||||||
|
Handler_mrr_key_refills 0
|
||||||
|
Handler_mrr_rowid_refills 1
|
||||||
|
set @@mrr_buffer_size= @mrr_buffer_size_save;
|
||||||
|
#Now, let's check BKA:
|
||||||
|
set @join_cache_level_save= @@join_cache_level;
|
||||||
|
set @join_buffer_size_save= @@join_buffer_size;
|
||||||
|
set join_cache_level=6;
|
||||||
|
explain select sum(t1.b) from t0,t1 where t0.a=t1.a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using where
|
||||||
|
1 SIMPLE t1 ref a a 5 test.t0.a 1 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||||
|
flush status;
|
||||||
|
select sum(t1.b) from t0,t1 where t0.a=t1.a;
|
||||||
|
sum(t1.b)
|
||||||
|
1230
|
||||||
|
show status like 'handler_mrr%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_mrr_init 1
|
||||||
|
Handler_mrr_key_refills 0
|
||||||
|
Handler_mrr_rowid_refills 0
|
||||||
|
set join_buffer_size=10;
|
||||||
|
explain select sum(t1.b) from t0,t1 where t0.a=t1.a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using where
|
||||||
|
1 SIMPLE t1 ref a a 5 test.t0.a 1 Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||||
|
flush status;
|
||||||
|
select sum(t1.b) from t0,t1 where t0.a=t1.a;
|
||||||
|
sum(t1.b)
|
||||||
|
1230
|
||||||
|
show status like 'handler_mrr%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_mrr_init 1or2
|
||||||
|
Handler_mrr_key_refills 1or2
|
||||||
|
Handler_mrr_rowid_refills 1or2
|
||||||
|
set join_cache_level= @join_cache_level_save;
|
||||||
|
set join_buffer_size= @join_buffer_size_save;
|
||||||
|
drop table t0, t1;
|
||||||
set optimizer_switch= @myisam_mrr_tmp;
|
set optimizer_switch= @myisam_mrr_tmp;
|
||||||
|
@ -146,6 +146,7 @@ CREATE TABLE `я` (a INT);
|
|||||||
SET NAMES DEFAULT;
|
SET NAMES DEFAULT;
|
||||||
call mtr.add_suppression("@003f.frm' \\(errno: 22\\)");
|
call mtr.add_suppression("@003f.frm' \\(errno: 22\\)");
|
||||||
mysqlcheck --default-character-set="latin1" --databases test
|
mysqlcheck --default-character-set="latin1" --databases test
|
||||||
|
call mtr.add_suppression("Can't find file: '..test.@003f.frm'");
|
||||||
test.?
|
test.?
|
||||||
Error : Table doesn't exist
|
Error : Table doesn't exist
|
||||||
status : Operation failed
|
status : Operation failed
|
||||||
|
@ -427,6 +427,7 @@ Handler_read_key 6
|
|||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 5
|
Handler_read_rnd_next 5
|
||||||
DROP TABLE t1,t2,t3,t4;
|
DROP TABLE t1,t2,t3,t4;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
|
@ -1729,3 +1729,57 @@ select 1 order by max(1) + min(1);
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
#
|
||||||
|
# Fix of LP BUG#793589 Wrong result with double ORDER BY
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( b int) ;
|
||||||
|
INSERT INTO t1 VALUES (8),(9);
|
||||||
|
CREATE TABLE t2 ( a int, b int, PRIMARY KEY (a)) ;
|
||||||
|
INSERT INTO t2 VALUES (6,7),(7,7),(8,1),(9,7),(10,1),(11,5),(12,2),(13,0),(14,1),(15,8),(16,1),(17,1),(18,9),(19,1),(20,5);
|
||||||
|
SELECT t2.b AS field1 FROM t1, t2 WHERE t1.b = t2.a GROUP BY field1 ORDER BY t1.b, field1;
|
||||||
|
field1
|
||||||
|
1
|
||||||
|
7
|
||||||
|
SELECT t2.b, t1.b FROM t1, t2 WHERE t1.b = t2.a GROUP BY t2.b ORDER BY t1.b, t2.b;
|
||||||
|
b b
|
||||||
|
1 8
|
||||||
|
7 9
|
||||||
|
SELECT t2.b,t1.b FROM t1, t2 WHERE t1.b = t2.a GROUP BY t2.b ORDER BY t1.b;
|
||||||
|
b b
|
||||||
|
1 8
|
||||||
|
7 9
|
||||||
|
SELECT t2.b FROM t1, t2 WHERE t1.b = t2.a GROUP BY t2.b ORDER BY t1.b;
|
||||||
|
b
|
||||||
|
1
|
||||||
|
7
|
||||||
|
# field1 removed from ORDER BY
|
||||||
|
explain extended
|
||||||
|
SELECT t2.b AS field1 FROM t1, t2 WHERE t1.b = t2.a GROUP BY field1 ORDER BY t1.b, field1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary; Using filesort
|
||||||
|
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.b 1 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t2`.`b` AS `field1` from `test`.`t1` join `test`.`t2` where (`test`.`t2`.`a` = `test`.`t1`.`b`) group by `test`.`t2`.`b` order by `test`.`t1`.`b`
|
||||||
|
explain extended
|
||||||
|
SELECT t2.b, t1.b FROM t1, t2 WHERE t1.b = t2.a GROUP BY t2.b ORDER BY t1.b, t2.b;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary; Using filesort
|
||||||
|
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.b 1 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t2`.`b` AS `b`,`test`.`t1`.`b` AS `b` from `test`.`t1` join `test`.`t2` where (`test`.`t2`.`a` = `test`.`t1`.`b`) group by `test`.`t2`.`b` order by `test`.`t1`.`b`
|
||||||
|
explain extended
|
||||||
|
SELECT t2.b,t1.b FROM t1, t2 WHERE t1.b = t2.a GROUP BY t2.b ORDER BY t1.b;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary; Using filesort
|
||||||
|
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.b 1 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t2`.`b` AS `b`,`test`.`t1`.`b` AS `b` from `test`.`t1` join `test`.`t2` where (`test`.`t2`.`a` = `test`.`t1`.`b`) group by `test`.`t2`.`b` order by `test`.`t1`.`b`
|
||||||
|
explain extended
|
||||||
|
SELECT t2.b FROM t1, t2 WHERE t1.b = t2.a GROUP BY t2.b ORDER BY t1.b;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary; Using filesort
|
||||||
|
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.b 1 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t2`.`b` AS `b` from `test`.`t1` join `test`.`t2` where (`test`.`t2`.`a` = `test`.`t1`.`b`) group by `test`.`t2`.`b` order by `test`.`t1`.`b`
|
||||||
|
drop table t1,t2;
|
||||||
|
End of 5.2 tests
|
||||||
|
@ -382,6 +382,7 @@ Handler_read_key 2
|
|||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
EXPLAIN PARTITIONS SELECT c1 FROM t2 WHERE (c1 > 10 AND c1 < 13) OR (c1 > 17 AND c1 < 20);
|
EXPLAIN PARTITIONS SELECT c1 FROM t2 WHERE (c1 > 10 AND c1 < 13) OR (c1 > 17 AND c1 < 20);
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
@ -400,6 +401,7 @@ Handler_read_key 2
|
|||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE `t1` (
|
CREATE TABLE `t1` (
|
||||||
@ -430,6 +432,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
EXPLAIN PARTITIONS SELECT c1 FROM t2 WHERE (c1 > 2 AND c1 < 5);
|
EXPLAIN PARTITIONS SELECT c1 FROM t2 WHERE (c1 > 2 AND c1 < 5);
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
@ -446,6 +449,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
EXPLAIN PARTITIONS SELECT c1 FROM t1 WHERE (c1 > 12 AND c1 < 15);
|
EXPLAIN PARTITIONS SELECT c1 FROM t1 WHERE (c1 > 12 AND c1 < 15);
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
@ -462,6 +466,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
EXPLAIN PARTITIONS SELECT c1 FROM t2 WHERE (c1 > 12 AND c1 < 15);
|
EXPLAIN PARTITIONS SELECT c1 FROM t2 WHERE (c1 > 12 AND c1 < 15);
|
||||||
id select_type table partitions type possible_keys key key_len ref rows Extra
|
id select_type table partitions type possible_keys key key_len ref rows Extra
|
||||||
@ -478,6 +483,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
create table t1 (a int) partition by list ((a/3)*10 div 1)
|
create table t1 (a int) partition by list ((a/3)*10 div 1)
|
||||||
|
@ -2639,7 +2639,10 @@ flush status;
|
|||||||
delete from t2 where b > 5;
|
delete from t2 where b > 5;
|
||||||
show status like 'Handler_read_rnd_next';
|
show status like 'Handler_read_rnd_next';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_rnd_next 1215
|
Handler_read_rnd_next 815
|
||||||
|
show status like 'Handler_read_rnd_deleted';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_rnd_deleted 400
|
||||||
show status like 'Handler_read_key';
|
show status like 'Handler_read_key';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
@ -2653,7 +2656,10 @@ flush status;
|
|||||||
delete from t2 where b < 5 or b > 3;
|
delete from t2 where b < 5 or b > 3;
|
||||||
show status like 'Handler_read_rnd_next';
|
show status like 'Handler_read_rnd_next';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_rnd_next 1215
|
Handler_read_rnd_next 515
|
||||||
|
show status like 'Handler_read_rnd_deleted';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_rnd_deleted 700
|
||||||
show status like 'Handler_read_key';
|
show status like 'Handler_read_key';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
@ -3082,6 +3082,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
flush status;
|
flush status;
|
||||||
execute st;
|
execute st;
|
||||||
@ -3094,6 +3095,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
flush status;
|
flush status;
|
||||||
select * from t1 use index() where a=3;
|
select * from t1 use index() where a=3;
|
||||||
@ -3106,6 +3108,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 8
|
Handler_read_rnd_next 8
|
||||||
flush status;
|
flush status;
|
||||||
execute st;
|
execute st;
|
||||||
@ -3118,6 +3121,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
deallocate prepare st;
|
deallocate prepare st;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
@ -121,8 +121,8 @@ insert into t1 values (1);
|
|||||||
explain select * from t1 where 3 in (select (1+1) union select 1);
|
explain select * from t1 where 3 in (select (1+1) union select 1);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL No tables used
|
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||||
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
|
NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
|
||||||
select * from t1 where 3 in (select (1+1) union select 1);
|
select * from t1 where 3 in (select (1+1) union select 1);
|
||||||
a
|
a
|
||||||
|
@ -1769,6 +1769,21 @@ SELECT * FROM t1, t1 as t2 WHERE t1.i4 BETWEEN t2.pk AND t2.pk;
|
|||||||
pk i4 pk i4
|
pk i4 pk i4
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
#
|
||||||
|
# LP Bug #533117: Wrong use_count in SEL_ARG trees
|
||||||
|
# (Bug #58731)
|
||||||
|
#
|
||||||
|
create table t1 (a int, b int, c int, key idx (a,b,c));
|
||||||
|
insert into t1 values (0,0,0), (2,2,0), (1,1,1), (2,2,1);
|
||||||
|
explain
|
||||||
|
select * from t1 force index (idx) where a >=1 and c <= 1 and a=b and b > 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 range idx idx 5 NULL 3 Using where; Using index
|
||||||
|
select * from t1 force index (idx) where a >=1 and c <= 1 and a=b and b > 1;
|
||||||
|
a b c
|
||||||
|
2 2 0
|
||||||
|
2 2 1
|
||||||
|
drop table t1;
|
||||||
create table t1 (f1 datetime, key (f1));
|
create table t1 (f1 datetime, key (f1));
|
||||||
insert into t1 values ('2000-03-09 15:56:59'),('2000-05-05 23:24:28'),('2000-06-13 13:12:06');
|
insert into t1 values ('2000-03-09 15:56:59'),('2000-05-05 23:24:28'),('2000-06-13 13:12:06');
|
||||||
select min(f1) from t1 where f1 >= '2006-05-25 07:00:20' and f1 between '2003-11-23 10:00:09' and '2010-01-01 01:01:01' and f1 > '2001-01-01 01:01:01';
|
select min(f1) from t1 where f1 >= '2006-05-25 07:00:20' and f1 between '2003-11-23 10:00:09' and '2010-01-01 01:01:01' and f1 > '2001-01-01 01:01:01';
|
||||||
|
@ -1771,6 +1771,21 @@ SELECT * FROM t1, t1 as t2 WHERE t1.i4 BETWEEN t2.pk AND t2.pk;
|
|||||||
pk i4 pk i4
|
pk i4 pk i4
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
#
|
||||||
|
# LP Bug #533117: Wrong use_count in SEL_ARG trees
|
||||||
|
# (Bug #58731)
|
||||||
|
#
|
||||||
|
create table t1 (a int, b int, c int, key idx (a,b,c));
|
||||||
|
insert into t1 values (0,0,0), (2,2,0), (1,1,1), (2,2,1);
|
||||||
|
explain
|
||||||
|
select * from t1 force index (idx) where a >=1 and c <= 1 and a=b and b > 1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 range idx idx 5 NULL 3 Using where; Using index
|
||||||
|
select * from t1 force index (idx) where a >=1 and c <= 1 and a=b and b > 1;
|
||||||
|
a b c
|
||||||
|
2 2 0
|
||||||
|
2 2 1
|
||||||
|
drop table t1;
|
||||||
create table t1 (f1 datetime, key (f1));
|
create table t1 (f1 datetime, key (f1));
|
||||||
insert into t1 values ('2000-03-09 15:56:59'),('2000-05-05 23:24:28'),('2000-06-13 13:12:06');
|
insert into t1 values ('2000-03-09 15:56:59'),('2000-05-05 23:24:28'),('2000-06-13 13:12:06');
|
||||||
select min(f1) from t1 where f1 >= '2006-05-25 07:00:20' and f1 between '2003-11-23 10:00:09' and '2010-01-01 01:01:01' and f1 > '2001-01-01 01:01:01';
|
select min(f1) from t1 where f1 >= '2006-05-25 07:00:20' and f1 between '2003-11-23 10:00:09' and '2010-01-01 01:01:01' and f1 > '2001-01-01 01:01:01';
|
||||||
|
@ -328,15 +328,15 @@ ID Name Country Population
|
|||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE (ID < 10) OR (ID BETWEEN 100 AND 110);
|
SELECT * FROM City WHERE (ID < 10) OR (ID BETWEEN 100 AND 110);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 20 Using index condition; Using where
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 20 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE (ID < 200) OR (ID BETWEEN 100 AND 200);
|
SELECT * FROM City WHERE (ID < 200) OR (ID BETWEEN 100 AND 200);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 200 Using index condition; Using where
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 200 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE (ID < 600) OR (ID BETWEEN 900 AND 1500);
|
SELECT * FROM City WHERE (ID < 600) OR (ID BETWEEN 900 AND 1500);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 1198 Using index condition; Using where
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 1198 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE Country > 'A' AND Country < 'ARG';
|
SELECT * FROM City WHERE Country > 'A' AND Country < 'ARG';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
@ -355,7 +355,7 @@ WHERE ((ID < 10) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
|
|||||||
OR ((ID BETWEEN 100 AND 110) AND
|
OR ((ID BETWEEN 100 AND 110) AND
|
||||||
(Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
|
(Name LIKE 'P%' OR (Population > 103000 AND Population < 104000)));
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY,Population,Country,Name PRIMARY 4 NULL 20 Using index condition; Using where
|
1 SIMPLE City range PRIMARY,Population,Country,Name PRIMARY 4 NULL 20 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City
|
SELECT * FROM City
|
||||||
WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
|
WHERE ((ID < 800) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
|
||||||
@ -369,7 +369,7 @@ WHERE ((ID < 200) AND (Name LIKE 'Ha%' OR (Country > 'A' AND Country < 'ARG')))
|
|||||||
OR ((ID BETWEEN 100 AND 200) AND
|
OR ((ID BETWEEN 100 AND 200) AND
|
||||||
(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
|
(Name LIKE 'Pa%' OR (Population > 103000 AND Population < 104000)));
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY,Population,Country,Name PRIMARY 4 NULL 200 Using index condition; Using where
|
1 SIMPLE City range PRIMARY,Population,Country,Name PRIMARY 4 NULL 200 Using where
|
||||||
SELECT * FROM City USE INDEX ()
|
SELECT * FROM City USE INDEX ()
|
||||||
WHERE ((ID < 10) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
|
WHERE ((ID < 10) AND (Name LIKE 'H%' OR (Country > 'A' AND Country < 'ARG')))
|
||||||
OR ((ID BETWEEN 100 AND 110) AND
|
OR ((ID BETWEEN 100 AND 110) AND
|
||||||
@ -601,11 +601,11 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE ID BETWEEN 3400 AND 3800;
|
SELECT * FROM City WHERE ID BETWEEN 3400 AND 3800;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 400 Using index condition
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 400 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
|
SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using index condition
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE Name LIKE 'P%';
|
SELECT * FROM City WHERE Name LIKE 'P%';
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
@ -765,27 +765,27 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
|
SELECT * FROM City WHERE ID BETWEEN 3790 AND 3800;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using index condition
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE ID BETWEEN 4025 AND 4035;
|
SELECT * FROM City WHERE ID BETWEEN 4025 AND 4035;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using index condition
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE ID BETWEEN 4028 AND 4032;
|
SELECT * FROM City WHERE ID BETWEEN 4028 AND 4032;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 5 Using index condition
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 5 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE ID BETWEEN 3500 AND 3800;
|
SELECT * FROM City WHERE ID BETWEEN 3500 AND 3800;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 300 Using index condition
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 300 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE ID BETWEEN 4000 AND 4300;
|
SELECT * FROM City WHERE ID BETWEEN 4000 AND 4300;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 80 Using index condition
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 80 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE ID BETWEEN 250 and 260 ;
|
SELECT * FROM City WHERE ID BETWEEN 250 and 260 ;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using index condition
|
1 SIMPLE City range PRIMARY PRIMARY 4 NULL 11 Using where
|
||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM City WHERE (Population > 101000 AND Population < 102000);
|
SELECT * FROM City WHERE (Population > 101000 AND Population < 102000);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
@ -1422,7 +1422,7 @@ SELECT * FROM t1
|
|||||||
WHERE t1.a>300 AND t1.c!=0 AND t1.b>=350 AND t1.b<=400 AND
|
WHERE t1.a>300 AND t1.c!=0 AND t1.b>=350 AND t1.b<=400 AND
|
||||||
(t1.c=0 OR t1.a=500);
|
(t1.c=0 OR t1.a=500);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY,idx PRIMARY 4 NULL 1 Using index condition; Using where
|
1 SIMPLE t1 range PRIMARY,idx PRIMARY 4 NULL 1 Using where
|
||||||
SELECT * FROM t1
|
SELECT * FROM t1
|
||||||
WHERE t1.a>300 AND t1.c!=0 AND t1.b>=350 AND t1.b<=400 AND
|
WHERE t1.a>300 AND t1.c!=0 AND t1.b>=350 AND t1.b<=400 AND
|
||||||
(t1.c=0 OR t1.a=500);
|
(t1.c=0 OR t1.a=500);
|
||||||
|
@ -2782,10 +2782,10 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||||
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||||
select max(key1) from t1 where key1 <= 0.6158;
|
select max(key1) from t1 where key1 <= 0.6158;
|
||||||
max(key1)
|
max(key1)
|
||||||
0.615800023078918
|
0.615800023078918
|
||||||
@ -2804,10 +2804,10 @@ max(key1) min(key2)
|
|||||||
0.615800023078918 1.37619996070862
|
0.615800023078918 1.37619996070862
|
||||||
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||||
max(key1)
|
max(key1)
|
||||||
0.615800023078918
|
0.384499996900558
|
||||||
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||||
min(key1)
|
min(key1)
|
||||||
0.376199990510941
|
0.384499996900558
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
|
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
|
||||||
INSERT INTO t1 VALUES (10);
|
INSERT INTO t1 VALUES (10);
|
||||||
@ -4342,6 +4342,7 @@ Handler_read_key 2
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 6
|
Handler_read_rnd_next 6
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
CREATE TABLE t1 (f1 bigint(20) NOT NULL default '0',
|
CREATE TABLE t1 (f1 bigint(20) NOT NULL default '0',
|
||||||
@ -4820,10 +4821,10 @@ SET SESSION join_buffer_size = 2048;
|
|||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 12
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 12
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 1 Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using where
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using where
|
||||||
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 const 1
|
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.f1 1
|
||||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||||
|
@ -2793,10 +2793,10 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||||
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||||
select max(key1) from t1 where key1 <= 0.6158;
|
select max(key1) from t1 where key1 <= 0.6158;
|
||||||
max(key1)
|
max(key1)
|
||||||
0.615800023078918
|
0.615800023078918
|
||||||
@ -2815,10 +2815,10 @@ max(key1) min(key2)
|
|||||||
0.615800023078918 1.37619996070862
|
0.615800023078918 1.37619996070862
|
||||||
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||||
max(key1)
|
max(key1)
|
||||||
0.615800023078918
|
0.384499996900558
|
||||||
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||||
min(key1)
|
min(key1)
|
||||||
0.376199990510941
|
0.384499996900558
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
|
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
|
||||||
INSERT INTO t1 VALUES (10);
|
INSERT INTO t1 VALUES (10);
|
||||||
@ -4353,7 +4353,8 @@ Handler_read_key 2
|
|||||||
Handler_read_next 10
|
Handler_read_next 10
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 10
|
Handler_read_rnd 10
|
||||||
Handler_read_rnd_next 7
|
Handler_read_rnd_deleted 1
|
||||||
|
Handler_read_rnd_next 6
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
CREATE TABLE t1 (f1 bigint(20) NOT NULL default '0',
|
CREATE TABLE t1 (f1 bigint(20) NOT NULL default '0',
|
||||||
f2 int(11) NOT NULL default '0',
|
f2 int(11) NOT NULL default '0',
|
||||||
@ -4831,10 +4832,10 @@ SET SESSION join_buffer_size = 2048;
|
|||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 12
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 12
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (flat, BNL join)
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 1 Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 const 1 Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.f1 1 Using join buffer (incremental, BKA join); Key-ordered Rowid-ordered scan
|
||||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
|
||||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||||
|
@ -2782,10 +2782,10 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
explain select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE t1 index key1 key1 5 NULL 4 Using where; Using index
|
||||||
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
explain select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
1 SIMPLE t1 range key1 key1 5 NULL 3 Using where; Using index
|
||||||
select max(key1) from t1 where key1 <= 0.6158;
|
select max(key1) from t1 where key1 <= 0.6158;
|
||||||
max(key1)
|
max(key1)
|
||||||
0.615800023078918
|
0.615800023078918
|
||||||
@ -2804,10 +2804,10 @@ max(key1) min(key2)
|
|||||||
0.615800023078918 1.37619996070862
|
0.615800023078918 1.37619996070862
|
||||||
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
select max(key1) from t1 where key1 <= 0.6158 and rand() + 0.5 >= 0.5;
|
||||||
max(key1)
|
max(key1)
|
||||||
0.615800023078918
|
0.384499996900558
|
||||||
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
select min(key1) from t1 where key1 >= 0.3762 and rand() + 0.5 >= 0.5;
|
||||||
min(key1)
|
min(key1)
|
||||||
0.376199990510941
|
0.384499996900558
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
|
CREATE TABLE t1 (i BIGINT UNSIGNED NOT NULL);
|
||||||
INSERT INTO t1 VALUES (10);
|
INSERT INTO t1 VALUES (10);
|
||||||
@ -4342,6 +4342,7 @@ Handler_read_key 2
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 6
|
Handler_read_rnd_next 6
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
CREATE TABLE t1 (f1 bigint(20) NOT NULL default '0',
|
CREATE TABLE t1 (f1 bigint(20) NOT NULL default '0',
|
||||||
@ -4820,10 +4821,10 @@ SET SESSION join_buffer_size = 2048;
|
|||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 system NULL NULL NULL NULL 1
|
|
||||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 12
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 12
|
||||||
|
1 SIMPLE t1 ALL NULL NULL NULL NULL 1 Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using where
|
1 SIMPLE t3 ALL NULL NULL NULL NULL 1 Using where
|
||||||
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 const 1
|
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 4 test.t1.f1 1
|
||||||
1 SIMPLE t5 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
1 SIMPLE t5 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||||
1 SIMPLE t6 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
1 SIMPLE t6 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||||
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
SELECT STRAIGHT_JOIN * FROM t2, (t1 LEFT JOIN (t3,t4) ON t1.f1 = t4.f1), t5, t6;
|
||||||
|
@ -275,12 +275,18 @@ Variable_name Value
|
|||||||
Handler_commit 0
|
Handler_commit 0
|
||||||
Handler_delete 0
|
Handler_delete 0
|
||||||
Handler_discover 0
|
Handler_discover 0
|
||||||
|
Handler_icp_attempts 0
|
||||||
|
Handler_icp_match 0
|
||||||
|
Handler_mrr_init 0
|
||||||
|
Handler_mrr_key_refills 0
|
||||||
|
Handler_mrr_rowid_refills 0
|
||||||
Handler_prepare 0
|
Handler_prepare 0
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 4
|
Handler_read_key 4
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 7
|
Handler_read_rnd 7
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 23
|
Handler_read_rnd_next 23
|
||||||
Handler_rollback 0
|
Handler_rollback 0
|
||||||
Handler_savepoint 0
|
Handler_savepoint 0
|
||||||
@ -296,7 +302,39 @@ Created_tmp_files 0
|
|||||||
Created_tmp_tables 2
|
Created_tmp_tables 2
|
||||||
Handler_tmp_update 2
|
Handler_tmp_update 2
|
||||||
Handler_tmp_write 7
|
Handler_tmp_write 7
|
||||||
Rows_tmp_read 34
|
Rows_tmp_read 40
|
||||||
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (i int(11) DEFAULT NULL, KEY i (i) ) ENGINE=MyISAM;
|
||||||
|
insert into t1 values (1),(2),(3),(4),(5);
|
||||||
|
flush status;
|
||||||
|
select * from t1 where i=5 union select * from t1 where i=5;
|
||||||
|
i
|
||||||
|
5
|
||||||
|
show status like "handler%";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_commit 0
|
||||||
|
Handler_delete 0
|
||||||
|
Handler_discover 0
|
||||||
|
Handler_icp_attempts 0
|
||||||
|
Handler_icp_match 0
|
||||||
|
Handler_mrr_init 0
|
||||||
|
Handler_mrr_key_refills 0
|
||||||
|
Handler_mrr_rowid_refills 0
|
||||||
|
Handler_prepare 0
|
||||||
|
Handler_read_first 0
|
||||||
|
Handler_read_key 2
|
||||||
|
Handler_read_next 2
|
||||||
|
Handler_read_prev 0
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 1
|
||||||
|
Handler_read_rnd_next 2
|
||||||
|
Handler_rollback 0
|
||||||
|
Handler_savepoint 0
|
||||||
|
Handler_savepoint_rollback 0
|
||||||
|
Handler_tmp_update 0
|
||||||
|
Handler_tmp_write 2
|
||||||
|
Handler_update 0
|
||||||
|
Handler_write 0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set @@global.concurrent_insert= @old_concurrent_insert;
|
set @@global.concurrent_insert= @old_concurrent_insert;
|
||||||
SET GLOBAL log_output = @old_log_output;
|
SET GLOBAL log_output = @old_log_output;
|
||||||
|
@ -100,12 +100,18 @@ Variable_name Value
|
|||||||
Handler_commit 19
|
Handler_commit 19
|
||||||
Handler_delete 1
|
Handler_delete 1
|
||||||
Handler_discover 0
|
Handler_discover 0
|
||||||
|
Handler_icp_attempts 0
|
||||||
|
Handler_icp_match 0
|
||||||
|
Handler_mrr_init 0
|
||||||
|
Handler_mrr_key_refills 0
|
||||||
|
Handler_mrr_rowid_refills 0
|
||||||
Handler_prepare 18
|
Handler_prepare 18
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 3
|
Handler_read_key 3
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 5
|
Handler_read_rnd_next 5
|
||||||
Handler_rollback 2
|
Handler_rollback 2
|
||||||
Handler_savepoint 0
|
Handler_savepoint 0
|
||||||
|
@ -2973,7 +2973,7 @@ Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<expr_cac
|
|||||||
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 10 func,func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1 100.00
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`flag` = 'N'))
|
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`flag` = 'N'))
|
||||||
@ -3563,7 +3563,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 21 test.t1.a,test.t1.b 1
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 9 Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||||
ALTER TABLE t1 ADD INDEX(a);
|
ALTER TABLE t1 ADD INDEX(a);
|
||||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||||
@ -3575,7 +3575,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL a NULL NULL NULL 9 Using where
|
1 PRIMARY t1 ALL a NULL NULL NULL 9 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 21 test.t1.a,test.t1.b 1
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 9 Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
create table t1( f1 int,f2 int);
|
create table t1( f1 int,f2 int);
|
||||||
@ -4471,14 +4471,14 @@ SET @save_join_cache_level=@@join_cache_level;
|
|||||||
SET join_cache_level=0;
|
SET join_cache_level=0;
|
||||||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT min(a) FROM t1 GROUP BY a);
|
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT min(a) FROM t1 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY <subquery2> const distinct_key distinct_key 5 const 1 100.00
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 1 AS `1` from <materialize> (select min(`test`.`t1`.`a`) from `test`.`t1` group by `test`.`t1`.`a`) join `test`.`t1` where (`<subquery2>`.`min(a)` = 1)
|
Note 1003 select 1 AS `1` from <materialize> (select min(`test`.`t1`.`a`) from `test`.`t1` group by `test`.`t1`.`a`) join `test`.`t1` where (`<subquery2>`.`min(a)` = 1)
|
||||||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT min(a) FROM t1 WHERE a > 3 GROUP BY a);
|
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT min(a) FROM t1 WHERE a > 3 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY <subquery2> const distinct_key distinct_key 5 const 1 100.00
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
||||||
Warnings:
|
Warnings:
|
||||||
@ -4567,6 +4567,13 @@ CREATE TABLE t1(a1 int);
|
|||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `1` from `test`.`t1` where <nop>(<in_optimizer>(1,((select max(`test`.`t1`.`a1`) from `test`.`t1`) > 1)))
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
@ -5005,7 +5012,6 @@ EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
|
|||||||
WHERE t1.a = d1.a;
|
WHERE t1.a = d1.a;
|
||||||
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests.
|
|
||||||
Set up test tables.
|
Set up test tables.
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
t1_id INT UNSIGNED,
|
t1_id INT UNSIGNED,
|
||||||
@ -5448,10 +5454,161 @@ NULL
|
|||||||
NULL
|
NULL
|
||||||
5
|
5
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a1 int);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
CREATE TABLE t2(a1 int);
|
||||||
|
INSERT INTO t2 VALUES (3);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
create table t2(i int);
|
||||||
|
insert into t2 values(0);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
|
||||||
|
;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL,
|
||||||
|
col_varchar_key varchar(1) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (pk),
|
||||||
|
KEY col_varchar_key (col_varchar_key)
|
||||||
|
);
|
||||||
|
SELECT t1.pk
|
||||||
|
FROM t1
|
||||||
|
WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
|
||||||
|
;
|
||||||
|
pk
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
drop table t2, t1;
|
||||||
|
drop view v1;
|
||||||
|
#
|
||||||
|
# BUG#50257: Missing info in REF column of the EXPLAIN
|
||||||
|
# lines for subselects
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
||||||
|
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
||||||
|
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref a a 5 const 1
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
||||||
|
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
||||||
|
# (duplicate of LP bug #888456)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 varchar(1));
|
||||||
|
INSERT INTO t1 VALUES ('v'),('s');
|
||||||
|
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
||||||
|
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
||||||
|
('d'),('y'),('t'),('d'),('s');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
|
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
f1 f1_key
|
||||||
|
v j
|
||||||
|
s j
|
||||||
|
v v
|
||||||
|
s v
|
||||||
|
v c
|
||||||
|
s c
|
||||||
|
v m
|
||||||
|
s m
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v y
|
||||||
|
s y
|
||||||
|
v t
|
||||||
|
s t
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v s
|
||||||
|
s s
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# LP bug 919427: EXPLAIN for a query over a single-row table
|
||||||
|
# with IN subquery in WHERE condition
|
||||||
|
#
|
||||||
|
CREATE TABLE ot (
|
||||||
|
col_int_nokey int(11),
|
||||||
|
col_varchar_nokey varchar(1)
|
||||||
|
) ;
|
||||||
|
INSERT INTO ot VALUES (1,'x');
|
||||||
|
CREATE TABLE it1(
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key,col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it1 VALUES (NULL,'x'), (NULL,'f');
|
||||||
|
CREATE TABLE it2 (
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
col_varchar_key2 varchar(1),
|
||||||
|
KEY idx_cvk_cvk2_cik (col_varchar_key, col_varchar_key2, col_int_key),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key, col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it2 VALUES (NULL,'x','x'), (NULL,'f','f');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
|
2 MATERIALIZED it1 ref idx_cvk_cik idx_cvk_cik 9 const,const 1 Using where; Using index
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||||
|
2 MATERIALIZED it2 ref idx_cvk_cvk2_cik,idx_cvk_cik idx_cvk_cvk2_cik 8 const,const 1 Using where; Using index
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
DROP TABLE ot,it1,it2;
|
||||||
End of 5.2 tests
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||||
# maria-5.3
|
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 ( f1 int );
|
CREATE TABLE t1 ( f1 int );
|
||||||
INSERT INTO t1 VALUES (19), (20);
|
INSERT INTO t1 VALUES (19), (20);
|
||||||
@ -5498,32 +5655,6 @@ b c
|
|||||||
9 NULL
|
9 NULL
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
End of 5.3 tests
|
|
||||||
#
|
|
||||||
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
|
||||||
#
|
|
||||||
CREATE TABLE t1(a1 int);
|
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
|
||||||
CREATE TABLE t2(a1 int);
|
|
||||||
INSERT INTO t2 VALUES (3);
|
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SET SESSION sql_mode=@old_sql_mode;
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
#
|
#
|
||||||
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
||||||
# behaves differently than real NULL
|
# behaves differently than real NULL
|
||||||
@ -5573,27 +5704,6 @@ id parent_id
|
|||||||
DROP TABLE parent, child;
|
DROP TABLE parent, child;
|
||||||
# End of test for bug#11764086.
|
# End of test for bug#11764086.
|
||||||
#
|
#
|
||||||
# BUG#50257: Missing info in REF column of the EXPLAIN
|
|
||||||
# lines for subselects
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
|
||||||
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
|
||||||
|
|
||||||
set @tmp_optimizer_switch=@@optimizer_switch;
|
|
||||||
set optimizer_switch='derived_merge=off,derived_with_keys=off';
|
|
||||||
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
|
||||||
2 DERIVED t1 ref a a 5 const 1
|
|
||||||
set optimizer_switch=@tmp_optimizer_switch;
|
|
||||||
|
|
||||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
|
||||||
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
|
||||||
|
|
||||||
DROP TABLE t1;
|
|
||||||
#
|
|
||||||
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
||||||
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
||||||
#
|
#
|
||||||
@ -5619,54 +5729,6 @@ GROUP BY b
|
|||||||
1
|
1
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (f1 varchar(1));
|
|
||||||
INSERT INTO t1 VALUES ('v'),('s');
|
|
||||||
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
|
||||||
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
|
||||||
('d'),('y'),('t'),('d'),('s');
|
|
||||||
SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
f1 f1_key
|
|
||||||
v j
|
|
||||||
s j
|
|
||||||
v v
|
|
||||||
s v
|
|
||||||
v c
|
|
||||||
s c
|
|
||||||
v m
|
|
||||||
s m
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v y
|
|
||||||
s y
|
|
||||||
v t
|
|
||||||
s t
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v s
|
|
||||||
s s
|
|
||||||
explain SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
|
||||||
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
|
||||||
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
|
||||||
DROP TABLE t1,t2;
|
|
||||||
#
|
|
||||||
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
@ -5908,5 +5970,39 @@ a
|
|||||||
2009-02-02
|
2009-02-02
|
||||||
set @@optimizer_switch=@old_optimizer_switch;
|
set @@optimizer_switch=@old_optimizer_switch;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# LP BUG#908269 incorrect condition in case of subqueries depending
|
||||||
|
# on constant tables
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT );
|
||||||
|
INSERT INTO t1 VALUES (1),(5);
|
||||||
|
CREATE TABLE t2 ( b INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
CREATE TABLE t3 ( c INT );
|
||||||
|
INSERT INTO t3 VALUES (4),(5);
|
||||||
|
SET optimizer_switch='subquery_cache=off';
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR b * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR rand() * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR rand() * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
set optimizer_switch=@subselect_tmp;
|
||||||
|
#
|
||||||
|
# LP BUG#905353 Wrong non-empty result with a constant table,
|
||||||
|
# aggregate function in subquery, MyISAM or Aria
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT a FROM t1 WHERE ( SELECT MIN(a) = 100 );
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
# return optimizer switch changed in the beginning of this test
|
# return optimizer switch changed in the beginning of this test
|
||||||
set optimizer_switch=@subselect_tmp;
|
set optimizer_switch=@subselect_tmp;
|
||||||
|
@ -124,6 +124,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 50
|
Handler_read_rnd_next 50
|
||||||
select 'No key lookups, seq reads: 29= 5 reads from t2 + 4 * 6 reads from t1.' Z;
|
select 'No key lookups, seq reads: 29= 5 reads from t2 + 4 * 6 reads from t1.' Z;
|
||||||
Z
|
Z
|
||||||
|
@ -134,6 +134,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 50
|
Handler_read_rnd_next 50
|
||||||
select 'No key lookups, seq reads: 29= 5 reads from t2 + 4 * 6 reads from t1.' Z;
|
select 'No key lookups, seq reads: 29= 5 reads from t2 + 4 * 6 reads from t1.' Z;
|
||||||
Z
|
Z
|
||||||
@ -1155,7 +1156,7 @@ insert into t4 select a from t3;
|
|||||||
explain select * from t3 where a in (select t1.kp1 from t1,t4 where kp1<20
|
explain select * from t3 where a in (select t1.kp1 from t1,t4 where kp1<20
|
||||||
and t4.pk=t1.c);
|
and t4.pk=t1.c);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 range kp1 kp1 5 NULL 48 Using index condition; Using where; Rowid-ordered scan; LooseScan
|
1 PRIMARY t1 range kp1 kp1 5 NULL 48 Using index condition; Using where; LooseScan
|
||||||
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 4 test.t1.c 1 Using index; FirstMatch(t1)
|
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 4 test.t1.c 1 Using index; FirstMatch(t1)
|
||||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
||||||
drop table t1, t3, t4;
|
drop table t1, t3, t4;
|
||||||
|
@ -831,7 +831,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2);
|
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No matching min/max row
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No matching min/max row
|
||||||
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2);
|
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2);
|
||||||
f1 f2
|
f1 f2
|
||||||
SET @@optimizer_switch = 'materialization=off,in_to_exists=on,semijoin=off';
|
SET @@optimizer_switch = 'materialization=off,in_to_exists=on,semijoin=off';
|
||||||
@ -922,7 +922,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2);
|
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No matching min/max row
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No matching min/max row
|
||||||
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2);
|
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2);
|
||||||
f1 f2
|
f1 f2
|
||||||
INSERT INTO t1 VALUES (1, 2);
|
INSERT INTO t1 VALUES (1, 2);
|
||||||
@ -1017,7 +1017,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2 WHERE f3 > 10);
|
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2 WHERE f3 > 10);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No matching min/max row
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No matching min/max row
|
||||||
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2 WHERE f3 > 10);
|
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2 WHERE f3 > 10);
|
||||||
f1 f2
|
f1 f2
|
||||||
SET @@optimizer_switch = 'materialization=off,in_to_exists=on,semijoin=off';
|
SET @@optimizer_switch = 'materialization=off,in_to_exists=on,semijoin=off';
|
||||||
@ -1108,7 +1108,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2 WHERE f3 > 10);
|
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2 WHERE f3 > 10);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No matching min/max row
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No matching min/max row
|
||||||
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2 WHERE f3 > 10);
|
SELECT * FROM t1 WHERE (2, 0) NOT IN (SELECT min(f3)+f3, min(f4)+f3+max(f4) FROM t2 WHERE f3 > 10);
|
||||||
f1 f2
|
f1 f2
|
||||||
set @@optimizer_switch=@save_optimizer_switch;
|
set @@optimizer_switch=@save_optimizer_switch;
|
||||||
@ -1249,7 +1249,7 @@ EXPLAIN
|
|||||||
SELECT * FROM (t2 LEFT JOIN t1 ON t1.c1) LEFT JOIN t3 on t3.c1 WHERE 's' IN (SELECT c1 FROM t2);
|
SELECT * FROM (t2 LEFT JOIN t1 ON t1.c1) LEFT JOIN t3 on t3.c1 WHERE 's' IN (SELECT c1 FROM t2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
|
1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
@ -1258,7 +1258,7 @@ c1 c1 c1
|
|||||||
EXPLAIN
|
EXPLAIN
|
||||||
SELECT * FROM t4 LEFT JOIN t2 ON t4.c1 WHERE 's' IN (SELECT c1 FROM t2);
|
SELECT * FROM t4 LEFT JOIN t2 ON t4.c1 WHERE 's' IN (SELECT c1 FROM t2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY t4 index NULL PRIMARY 3 NULL 2 Using index; Using join buffer (flat, BNL join)
|
1 PRIMARY t4 index NULL PRIMARY 3 NULL 2 Using index; Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
@ -1820,37 +1820,6 @@ AND t2.f2 = t1.f1;
|
|||||||
f1 f2 f1 f2
|
f1 f2 f1 f2
|
||||||
drop table t1,t2,t3,t4;
|
drop table t1,t2,t3,t4;
|
||||||
#
|
#
|
||||||
# LP BUG#806943 Second crash with select_describe with nested subqueries in maria-5.3
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 ( f4 int) ;
|
|
||||||
INSERT INTO t1 VALUES (0),(0);
|
|
||||||
CREATE TABLE t2 ( f2 int) ;
|
|
||||||
CREATE TABLE t3 ( f1 int NOT NULL );
|
|
||||||
CREATE TABLE t4 ( f2 int, f3 int) ;
|
|
||||||
INSERT INTO t4 VALUES (8,0),(3,0);
|
|
||||||
EXPLAIN SELECT *
|
|
||||||
FROM t2, t3
|
|
||||||
WHERE t3.f1 = (
|
|
||||||
SELECT SUM( f2 )
|
|
||||||
FROM t4
|
|
||||||
WHERE EXISTS (
|
|
||||||
SELECT DISTINCT f4
|
|
||||||
FROM t1));
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
|
||||||
2 SUBQUERY t4 ALL NULL NULL NULL NULL 2
|
|
||||||
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2
|
|
||||||
SELECT *
|
|
||||||
FROM t2, t3
|
|
||||||
WHERE t3.f1 = (
|
|
||||||
SELECT SUM( f2 )
|
|
||||||
FROM t4
|
|
||||||
WHERE EXISTS (
|
|
||||||
SELECT DISTINCT f4
|
|
||||||
FROM t1));
|
|
||||||
f2 f1
|
|
||||||
drop table t1, t2, t3, t4;
|
|
||||||
#
|
|
||||||
# LP BUG#611690 Crash in select_describe() with nested subqueries
|
# LP BUG#611690 Crash in select_describe() with nested subqueries
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
@ -2141,6 +2110,20 @@ WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.a < ANY (SELECT t4.a FROM t4) and t3
|
|||||||
c a b
|
c a b
|
||||||
10 7 0
|
10 7 0
|
||||||
drop table t2, t3, t4;
|
drop table t2, t3, t4;
|
||||||
|
#
|
||||||
|
# BUG#934597: Assertion `! is_set()' failed in Diagnostics_area::set_ok_status(THD...
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(1) );
|
||||||
|
INSERT INTO t1 VALUES ('u'),('k');
|
||||||
|
CREATE TABLE t2 AS
|
||||||
|
SELECT a AS field1 FROM t1
|
||||||
|
WHERE ( SELECT alias1.a
|
||||||
|
FROM t1 AS alias1
|
||||||
|
) IS NOT NULL;
|
||||||
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
|
DROP TABLE t2;
|
||||||
|
ERROR 42S02: Unknown table 't2'
|
||||||
|
DROP TABLE t1;
|
||||||
set optimizer_switch=@subselect4_tmp;
|
set optimizer_switch=@subselect4_tmp;
|
||||||
SET optimizer_switch= @@global.optimizer_switch;
|
SET optimizer_switch= @@global.optimizer_switch;
|
||||||
set @@tmp_table_size= @@global.tmp_table_size;
|
set @@tmp_table_size= @@global.tmp_table_size;
|
||||||
|
@ -36,6 +36,7 @@ Handler_read_key 7
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 31
|
Handler_read_rnd_next 31
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
@ -62,6 +63,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 61
|
Handler_read_rnd_next 61
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (where)
|
#single value subquery test (where)
|
||||||
@ -87,6 +89,7 @@ Handler_read_key 7
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 31
|
Handler_read_rnd_next 31
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
@ -111,6 +114,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 61
|
Handler_read_rnd_next 61
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (having)
|
#single value subquery test (having)
|
||||||
@ -136,6 +140,7 @@ Handler_read_key 7
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 31
|
Handler_read_rnd_next 31
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
@ -160,6 +165,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 61
|
Handler_read_rnd_next 61
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (OUTER JOIN ON)
|
#single value subquery test (OUTER JOIN ON)
|
||||||
@ -257,6 +263,7 @@ Handler_read_key 7
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 442
|
Handler_read_rnd_next 442
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
@ -353,6 +360,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 472
|
Handler_read_rnd_next 472
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (GROUP BY)
|
#single value subquery test (GROUP BY)
|
||||||
@ -374,6 +382,7 @@ Handler_read_key 17
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 4
|
Handler_read_rnd 4
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 36
|
Handler_read_rnd_next 36
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
@ -394,6 +403,7 @@ Handler_read_key 10
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 4
|
Handler_read_rnd 4
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 86
|
Handler_read_rnd_next 86
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (distinct GROUP BY)
|
#single value subquery test (distinct GROUP BY)
|
||||||
@ -415,6 +425,7 @@ Handler_read_key 17
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 4
|
Handler_read_rnd 4
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 41
|
Handler_read_rnd_next 41
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
@ -435,6 +446,7 @@ Handler_read_key 10
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 4
|
Handler_read_rnd 4
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 91
|
Handler_read_rnd_next 91
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (ORDER BY)
|
#single value subquery test (ORDER BY)
|
||||||
@ -462,6 +474,7 @@ Handler_read_key 7
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 10
|
Handler_read_rnd 10
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 42
|
Handler_read_rnd_next 42
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
@ -488,6 +501,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 10
|
Handler_read_rnd 10
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 72
|
Handler_read_rnd_next 72
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (distinct ORDER BY)
|
#single value subquery test (distinct ORDER BY)
|
||||||
@ -509,7 +523,8 @@ Handler_read_key 7
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 4
|
Handler_read_rnd 4
|
||||||
Handler_read_rnd_next 37
|
Handler_read_rnd_deleted 1
|
||||||
|
Handler_read_rnd_next 36
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
select distinct a from t1 ORDER BY (select d from t2 where b=c);
|
select distinct a from t1 ORDER BY (select d from t2 where b=c);
|
||||||
@ -529,7 +544,8 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 4
|
Handler_read_rnd 4
|
||||||
Handler_read_rnd_next 67
|
Handler_read_rnd_deleted 1
|
||||||
|
Handler_read_rnd_next 66
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (LEFT JOIN ON)
|
#single value subquery test (LEFT JOIN ON)
|
||||||
flush status;
|
flush status;
|
||||||
@ -626,6 +642,7 @@ Handler_read_key 70
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 141
|
Handler_read_rnd_next 141
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
flush status;
|
flush status;
|
||||||
@ -722,6 +739,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 671
|
Handler_read_rnd_next 671
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
#single value subquery test (PS)
|
#single value subquery test (PS)
|
||||||
@ -1345,6 +1363,7 @@ Handler_read_key 11
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 145
|
Handler_read_rnd_next 145
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
flush status;
|
flush status;
|
||||||
@ -1373,6 +1392,7 @@ Handler_read_key 32
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 84
|
Handler_read_rnd_next 84
|
||||||
#several subqueries (several levels)
|
#several subqueries (several levels)
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
@ -1404,6 +1424,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 127
|
Handler_read_rnd_next 127
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
flush status;
|
flush status;
|
||||||
@ -1432,6 +1453,7 @@ Handler_read_key 13
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 69
|
Handler_read_rnd_next 69
|
||||||
#clean up
|
#clean up
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
@ -1621,6 +1643,7 @@ Handler_read_key 15
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 8
|
Handler_read_rnd 8
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 57
|
Handler_read_rnd_next 57
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
flush status;
|
flush status;
|
||||||
@ -1645,6 +1668,7 @@ Handler_read_key 21
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 8
|
Handler_read_rnd 8
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 37
|
Handler_read_rnd_next 37
|
||||||
argument of aggregate function as parameter of subquery (illegal use)
|
argument of aggregate function as parameter of subquery (illegal use)
|
||||||
set optimizer_switch='subquery_cache=off';
|
set optimizer_switch='subquery_cache=off';
|
||||||
@ -1670,6 +1694,7 @@ Handler_read_key 15
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 8
|
Handler_read_rnd 8
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 57
|
Handler_read_rnd_next 57
|
||||||
set optimizer_switch='subquery_cache=on';
|
set optimizer_switch='subquery_cache=on';
|
||||||
flush status;
|
flush status;
|
||||||
@ -1694,6 +1719,7 @@ Handler_read_key 22
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 8
|
Handler_read_rnd 8
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 41
|
Handler_read_rnd_next 41
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
#test of flattening subquery optimisations and cache
|
#test of flattening subquery optimisations and cache
|
||||||
@ -1734,6 +1760,7 @@ Handler_read_key 15
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 16
|
Handler_read_rnd_next 16
|
||||||
alter table t2 drop primary key;
|
alter table t2 drop primary key;
|
||||||
set optimizer_switch='default,semijoin=off,materialization=off,subquery_cache=off';
|
set optimizer_switch='default,semijoin=off,materialization=off,subquery_cache=off';
|
||||||
@ -1770,6 +1797,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 151
|
Handler_read_rnd_next 151
|
||||||
set optimizer_switch='default,semijoin=off,materialization=off,subquery_cache=on';
|
set optimizer_switch='default,semijoin=off,materialization=off,subquery_cache=on';
|
||||||
explain select * from t1 where a in (select pk from t2);
|
explain select * from t1 where a in (select pk from t2);
|
||||||
@ -1805,6 +1833,7 @@ Handler_read_key 15
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 43
|
Handler_read_rnd_next 43
|
||||||
set optimizer_switch='default,semijoin=off,materialization=on,subquery_cache=on';
|
set optimizer_switch='default,semijoin=off,materialization=on,subquery_cache=on';
|
||||||
explain select * from t1 where a in (select pk from t2);
|
explain select * from t1 where a in (select pk from t2);
|
||||||
@ -1840,6 +1869,7 @@ Handler_read_key 18
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 27
|
Handler_read_rnd_next 27
|
||||||
drop table t0,t1,t2;
|
drop table t0,t1,t2;
|
||||||
set optimizer_switch='default';
|
set optimizer_switch='default';
|
||||||
|
@ -1473,7 +1473,7 @@ SET @@optimizer_switch='semijoin=on,materialization=on';
|
|||||||
EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Rowid-ordered scan
|
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Rowid-ordered scan
|
||||||
SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
||||||
pk
|
pk
|
||||||
@ -1793,7 +1793,7 @@ SELECT * FROM t1
|
|||||||
WHERE a IN ( SELECT MIN(a) FROM t1 );
|
WHERE a IN ( SELECT MIN(a) FROM t1 );
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
||||||
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 8 AS `a` from `test`.`t1` where <expr_cache><8>(<in_optimizer>(8,<exists>(select min(`test`.`t1`.`a`) from `test`.`t1` having (<cache>(8) = <ref_null_helper>(min(`test`.`t1`.`a`))))))
|
Note 1003 select 8 AS `a` from `test`.`t1` where <expr_cache><8>(<in_optimizer>(8,<exists>(select min(`test`.`t1`.`a`) from `test`.`t1` having (<cache>(8) = <ref_null_helper>(min(`test`.`t1`.`a`))))))
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -1811,6 +1811,159 @@ a b c
|
|||||||
4 4 2
|
4 4 2
|
||||||
4 4 4
|
4 4 4
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#922254: Assertion `0' failed at item_cmpfunc.cc:5899: Item* Item_equal::get_first(JOIN_TAB*, Item*)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(3) );
|
||||||
|
CREATE TABLE t2 ( b VARCHAR(3), c VARCHAR(8), KEY(c) );
|
||||||
|
INSERT INTO t2 VALUES ('USA','Abilene'),('USA','Akron');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM
|
||||||
|
( SELECT * FROM t1 ) AS alias1,
|
||||||
|
t2 AS alias2
|
||||||
|
WHERE b = a AND a IN (
|
||||||
|
SELECT alias3.c
|
||||||
|
FROM t2 AS alias3, t2 AS alias4
|
||||||
|
WHERE alias4.c = alias3.b
|
||||||
|
);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
3 MATERIALIZED alias3 ALL NULL NULL NULL NULL 2
|
||||||
|
3 MATERIALIZED alias4 index c c 11 NULL 2 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#928048: Query containing IN subquery with OR in the where clause returns a wrong result
|
||||||
|
#
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
insert into t1 values (7,5), (3,3), (5,4), (9,3);
|
||||||
|
create table t2 (a int, b int, index i_a(a));
|
||||||
|
insert into t2 values
|
||||||
|
(4,2), (7,9), (7,4), (3,1), (5,3), (3,1), (9,4), (8,1);
|
||||||
|
explain select * from t1 where t1.a in (select a from t2 where t2.a=7 or t2.b<=1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
2 MATERIALIZED t2 ALL i_a NULL NULL NULL 8 Using where
|
||||||
|
select * from t1 where t1.a in (select a from t2 where t2.a=7 or t2.b<=1);
|
||||||
|
a b
|
||||||
|
7 5
|
||||||
|
3 3
|
||||||
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#933407: Valgrind warnings in mark_as_null_row with materialization+semijoin, STRAIGHT_JOIN, impossible WHERE
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (0),(8);
|
||||||
|
SELECT STRAIGHT_JOIN MIN(a) FROM t1
|
||||||
|
WHERE a IN (
|
||||||
|
SELECT a FROM t1
|
||||||
|
WHERE 'condition'='impossible'
|
||||||
|
);
|
||||||
|
MIN(a)
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#938131: Subquery materialization is not used in CREATE TABLE SELECT
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a int);
|
||||||
|
INSERT INTO t1 values(1),(2);
|
||||||
|
CREATE TABLE t2(a int);
|
||||||
|
INSERT INTO t2 values(1),(2);
|
||||||
|
# Should use Materialization:
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a HAVING a > 1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using temporary
|
||||||
|
flush status;
|
||||||
|
CREATE TABLE t3 SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a HAVING a > 1);
|
||||||
|
SHOW STATUS LIKE 'Created_tmp_tables';
|
||||||
|
Variable_name Value
|
||||||
|
Created_tmp_tables 3
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# BUG#939009: Crash with aggregate function in IN subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch='materialization=on,semijoin=on';
|
||||||
|
CREATE TABLE t1 (a int, b int);
|
||||||
|
INSERT INTO t1 VALUES (7,1), (4,2), (7,7);
|
||||||
|
CREATE TABLE t2 ( c INT );
|
||||||
|
INSERT INTO t2 VALUES (4), (7), (6);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT MAX(c) FROM t2) AND b=7 AND (a IS NULL OR a=b);
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from <materialize> (select max(`test`.`t2`.`c`) from `test`.`t2`) join `test`.`t1` where ((`test`.`t1`.`a` = `<subquery2>`.`MAX(c)`) and (`test`.`t1`.`b` = 7) and (isnull(`<subquery2>`.`MAX(c)`) or (`<subquery2>`.`MAX(c)` = 7)))
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT MAX(c) FROM t2) AND b=7 AND (a IS NULL OR a=b);
|
||||||
|
a b
|
||||||
|
7 7
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT MAX(c) FROM t2 WHERE c < 4) AND b=7 AND (a IS NULL OR a=b);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT MAX(c) FROM t2 WHERE c < 4) AND b=7 AND (a IS NULL OR a=b);
|
||||||
|
a b
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#946055: Crash with semijoin IN subquery when hash join is used
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES (7);
|
||||||
|
CREATE TABLE t2 (b int, c int, d varchar(1), e varchar(1), KEY (c), KEY (d, c));
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(4,2,'v','v'), (6,1,'v','v'), (0,5,'x','x'), (7,1,'x','x'),
|
||||||
|
(7,3,'i','i'), (7,1,'e','e'), (1,4,'p','p'), (1,2,'j','j');
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET @save_join_cache_level=@@join_cache_level;
|
||||||
|
SET join_cache_level=2;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT a, c FROM t1, t2
|
||||||
|
WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
|
||||||
|
WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY t2 index NULL c 5 NULL 8 Using where; Using index
|
||||||
|
2 MATERIALIZED s2 ref d d 4 const 1 Using where; Using index
|
||||||
|
2 MATERIALIZED s1 ALL NULL NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||||
|
3 SUBQUERY t2 ALL NULL NULL NULL NULL 8
|
||||||
|
SELECT a, c FROM t1, t2
|
||||||
|
WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
|
||||||
|
WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
|
||||||
|
a c
|
||||||
|
7 1
|
||||||
|
7 1
|
||||||
|
7 1
|
||||||
|
SET optimizer_switch='join_cache_hashed=on';
|
||||||
|
SET join_cache_level=4;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT a, c FROM t1, t2
|
||||||
|
WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
|
||||||
|
WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY t2 index NULL c 5 NULL 8 Using where; Using index
|
||||||
|
2 MATERIALIZED s2 ref d d 4 const 1 Using where; Using index
|
||||||
|
2 MATERIALIZED s1 hash_ALL NULL #hash#$hj 5 test.s2.d 8 Using where; Using join buffer (flat, BNLH join)
|
||||||
|
3 SUBQUERY t2 ALL NULL NULL NULL NULL 8
|
||||||
|
SELECT a, c FROM t1, t2
|
||||||
|
WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
|
||||||
|
WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
|
||||||
|
a c
|
||||||
|
7 1
|
||||||
|
7 1
|
||||||
|
7 1
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
SET join_cache_level=@save_join_cache_level;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# This must be at the end:
|
# This must be at the end:
|
||||||
set optimizer_switch=@subselect_sj_mat_tmp;
|
set optimizer_switch=@subselect_sj_mat_tmp;
|
||||||
set join_cache_level=@save_join_cache_level;
|
set join_cache_level=@save_join_cache_level;
|
||||||
@ -1933,7 +2086,7 @@ SET @@optimizer_switch='default,semijoin=on,materialization=on';
|
|||||||
EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition
|
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition
|
||||||
SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
||||||
pk
|
pk
|
||||||
|
@ -348,7 +348,7 @@ FROM City LEFT JOIN Country ON (Country = Code and City.Population < 10000))
|
|||||||
AND Language IN ('English','Spanish');
|
AND Language IN ('English','Spanish');
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY CountryLanguage range Language Language 30 NULL 72 Using index condition; Using where; Rowid-ordered scan
|
1 PRIMARY CountryLanguage range Language Language 30 NULL 72 Using index condition; Using where; Rowid-ordered scan
|
||||||
2 DEPENDENT SUBQUERY City ref CityName CityName 35 func 2 Using index condition; Using where
|
2 DEPENDENT SUBQUERY City ref CityName CityName 35 func 1 Using index condition; Using where
|
||||||
2 DEPENDENT SUBQUERY Country eq_ref PRIMARY PRIMARY 3 world.City.Country 1 Using where; Using index
|
2 DEPENDENT SUBQUERY Country eq_ref PRIMARY PRIMARY 3 world.City.Country 1 Using where; Using index
|
||||||
select count(*)
|
select count(*)
|
||||||
from CountryLanguage
|
from CountryLanguage
|
||||||
|
@ -4569,6 +4569,13 @@ CREATE TABLE t1(a1 int);
|
|||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `1` from `test`.`t1` where <nop>(<in_optimizer>(1,((select max(`test`.`t1`.`a1`) from `test`.`t1`) > 1)))
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
@ -5007,7 +5014,6 @@ EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
|
|||||||
WHERE t1.a = d1.a;
|
WHERE t1.a = d1.a;
|
||||||
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests.
|
|
||||||
Set up test tables.
|
Set up test tables.
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
t1_id INT UNSIGNED,
|
t1_id INT UNSIGNED,
|
||||||
@ -5449,10 +5455,159 @@ NULL
|
|||||||
NULL
|
NULL
|
||||||
5
|
5
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a1 int);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
CREATE TABLE t2(a1 int);
|
||||||
|
INSERT INTO t2 VALUES (3);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
create table t2(i int);
|
||||||
|
insert into t2 values(0);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
|
||||||
|
;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL,
|
||||||
|
col_varchar_key varchar(1) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (pk),
|
||||||
|
KEY col_varchar_key (col_varchar_key)
|
||||||
|
);
|
||||||
|
SELECT t1.pk
|
||||||
|
FROM t1
|
||||||
|
WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
|
||||||
|
;
|
||||||
|
pk
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
drop table t2, t1;
|
||||||
|
drop view v1;
|
||||||
|
#
|
||||||
|
# BUG#50257: Missing info in REF column of the EXPLAIN
|
||||||
|
# lines for subselects
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
||||||
|
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
||||||
|
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref a a 5 const 1
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
||||||
|
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
||||||
|
# (duplicate of LP bug #888456)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 varchar(1));
|
||||||
|
INSERT INTO t1 VALUES ('v'),('s');
|
||||||
|
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
||||||
|
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
||||||
|
('d'),('y'),('t'),('d'),('s');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
|
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
f1 f1_key
|
||||||
|
v j
|
||||||
|
s j
|
||||||
|
v v
|
||||||
|
s v
|
||||||
|
v c
|
||||||
|
s c
|
||||||
|
v m
|
||||||
|
s m
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v y
|
||||||
|
s y
|
||||||
|
v t
|
||||||
|
s t
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v s
|
||||||
|
s s
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# LP bug 919427: EXPLAIN for a query over a single-row table
|
||||||
|
# with IN subquery in WHERE condition
|
||||||
|
#
|
||||||
|
CREATE TABLE ot (
|
||||||
|
col_int_nokey int(11),
|
||||||
|
col_varchar_nokey varchar(1)
|
||||||
|
) ;
|
||||||
|
INSERT INTO ot VALUES (1,'x');
|
||||||
|
CREATE TABLE it1(
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key,col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it1 VALUES (NULL,'x'), (NULL,'f');
|
||||||
|
CREATE TABLE it2 (
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
col_varchar_key2 varchar(1),
|
||||||
|
KEY idx_cvk_cvk2_cik (col_varchar_key, col_varchar_key2, col_int_key),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key, col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it2 VALUES (NULL,'x','x'), (NULL,'f','f');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY it1 ref idx_cvk_cik idx_cvk_cik 9 const,const 1 Using where; Using index; FirstMatch(ot)
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY it2 ref idx_cvk_cvk2_cik,idx_cvk_cik idx_cvk_cvk2_cik 8 const,const 1 Using where; Using index; FirstMatch(ot)
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
DROP TABLE ot,it1,it2;
|
||||||
End of 5.2 tests
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||||
# maria-5.3
|
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 ( f1 int );
|
CREATE TABLE t1 ( f1 int );
|
||||||
INSERT INTO t1 VALUES (19), (20);
|
INSERT INTO t1 VALUES (19), (20);
|
||||||
@ -5499,32 +5654,6 @@ b c
|
|||||||
9 NULL
|
9 NULL
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
End of 5.3 tests
|
|
||||||
#
|
|
||||||
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
|
||||||
#
|
|
||||||
CREATE TABLE t1(a1 int);
|
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
|
||||||
CREATE TABLE t2(a1 int);
|
|
||||||
INSERT INTO t2 VALUES (3);
|
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SET SESSION sql_mode=@old_sql_mode;
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
#
|
#
|
||||||
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
||||||
# behaves differently than real NULL
|
# behaves differently than real NULL
|
||||||
@ -5574,27 +5703,6 @@ id parent_id
|
|||||||
DROP TABLE parent, child;
|
DROP TABLE parent, child;
|
||||||
# End of test for bug#11764086.
|
# End of test for bug#11764086.
|
||||||
#
|
#
|
||||||
# BUG#50257: Missing info in REF column of the EXPLAIN
|
|
||||||
# lines for subselects
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
|
||||||
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
|
||||||
|
|
||||||
set @tmp_optimizer_switch=@@optimizer_switch;
|
|
||||||
set optimizer_switch='derived_merge=off,derived_with_keys=off';
|
|
||||||
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
|
||||||
2 DERIVED t1 ref a a 5 const 1
|
|
||||||
set optimizer_switch=@tmp_optimizer_switch;
|
|
||||||
|
|
||||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
|
||||||
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
|
||||||
|
|
||||||
DROP TABLE t1;
|
|
||||||
#
|
|
||||||
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
||||||
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
||||||
#
|
#
|
||||||
@ -5620,54 +5728,6 @@ GROUP BY b
|
|||||||
1
|
1
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (f1 varchar(1));
|
|
||||||
INSERT INTO t1 VALUES ('v'),('s');
|
|
||||||
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
|
||||||
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
|
||||||
('d'),('y'),('t'),('d'),('s');
|
|
||||||
SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
f1 f1_key
|
|
||||||
v j
|
|
||||||
s j
|
|
||||||
v v
|
|
||||||
s v
|
|
||||||
v c
|
|
||||||
s c
|
|
||||||
v m
|
|
||||||
s m
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v y
|
|
||||||
s y
|
|
||||||
v t
|
|
||||||
s t
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v s
|
|
||||||
s s
|
|
||||||
explain SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
|
||||||
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
|
||||||
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
|
||||||
DROP TABLE t1,t2;
|
|
||||||
#
|
|
||||||
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
@ -5909,6 +5969,40 @@ a
|
|||||||
2009-02-02
|
2009-02-02
|
||||||
set @@optimizer_switch=@old_optimizer_switch;
|
set @@optimizer_switch=@old_optimizer_switch;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# LP BUG#908269 incorrect condition in case of subqueries depending
|
||||||
|
# on constant tables
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT );
|
||||||
|
INSERT INTO t1 VALUES (1),(5);
|
||||||
|
CREATE TABLE t2 ( b INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
CREATE TABLE t3 ( c INT );
|
||||||
|
INSERT INTO t3 VALUES (4),(5);
|
||||||
|
SET optimizer_switch='subquery_cache=off';
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR b * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR rand() * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR rand() * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
set optimizer_switch=@subselect_tmp;
|
||||||
|
#
|
||||||
|
# LP BUG#905353 Wrong non-empty result with a constant table,
|
||||||
|
# aggregate function in subquery, MyISAM or Aria
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT a FROM t1 WHERE ( SELECT MIN(a) = 100 );
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
# return optimizer switch changed in the beginning of this test
|
# return optimizer switch changed in the beginning of this test
|
||||||
set optimizer_switch=@subselect_tmp;
|
set optimizer_switch=@subselect_tmp;
|
||||||
set optimizer_switch=default;
|
set optimizer_switch=default;
|
||||||
|
@ -4565,6 +4565,13 @@ CREATE TABLE t1(a1 int);
|
|||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `1` from `test`.`t1` where <nop>(<in_optimizer>(1,((select max(`test`.`t1`.`a1`) from `test`.`t1`) > 1)))
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
@ -5003,7 +5010,6 @@ EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
|
|||||||
WHERE t1.a = d1.a;
|
WHERE t1.a = d1.a;
|
||||||
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests.
|
|
||||||
Set up test tables.
|
Set up test tables.
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
t1_id INT UNSIGNED,
|
t1_id INT UNSIGNED,
|
||||||
@ -5445,10 +5451,159 @@ NULL
|
|||||||
NULL
|
NULL
|
||||||
5
|
5
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a1 int);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
CREATE TABLE t2(a1 int);
|
||||||
|
INSERT INTO t2 VALUES (3);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
create table t2(i int);
|
||||||
|
insert into t2 values(0);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
|
||||||
|
;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL,
|
||||||
|
col_varchar_key varchar(1) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (pk),
|
||||||
|
KEY col_varchar_key (col_varchar_key)
|
||||||
|
);
|
||||||
|
SELECT t1.pk
|
||||||
|
FROM t1
|
||||||
|
WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
|
||||||
|
;
|
||||||
|
pk
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
drop table t2, t1;
|
||||||
|
drop view v1;
|
||||||
|
#
|
||||||
|
# BUG#50257: Missing info in REF column of the EXPLAIN
|
||||||
|
# lines for subselects
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
||||||
|
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
||||||
|
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref a a 5 const 1
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
||||||
|
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
||||||
|
# (duplicate of LP bug #888456)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 varchar(1));
|
||||||
|
INSERT INTO t1 VALUES ('v'),('s');
|
||||||
|
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
||||||
|
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
||||||
|
('d'),('y'),('t'),('d'),('s');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
|
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
f1 f1_key
|
||||||
|
v j
|
||||||
|
s j
|
||||||
|
v v
|
||||||
|
s v
|
||||||
|
v c
|
||||||
|
s c
|
||||||
|
v m
|
||||||
|
s m
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v y
|
||||||
|
s y
|
||||||
|
v t
|
||||||
|
s t
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v s
|
||||||
|
s s
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# LP bug 919427: EXPLAIN for a query over a single-row table
|
||||||
|
# with IN subquery in WHERE condition
|
||||||
|
#
|
||||||
|
CREATE TABLE ot (
|
||||||
|
col_int_nokey int(11),
|
||||||
|
col_varchar_nokey varchar(1)
|
||||||
|
) ;
|
||||||
|
INSERT INTO ot VALUES (1,'x');
|
||||||
|
CREATE TABLE it1(
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key,col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it1 VALUES (NULL,'x'), (NULL,'f');
|
||||||
|
CREATE TABLE it2 (
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
col_varchar_key2 varchar(1),
|
||||||
|
KEY idx_cvk_cvk2_cik (col_varchar_key, col_varchar_key2, col_int_key),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key, col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it2 VALUES (NULL,'x','x'), (NULL,'f','f');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
2 DEPENDENT SUBQUERY it1 index_subquery idx_cvk_cik idx_cvk_cik 9 func,const 2 Using index; Using where
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
2 DEPENDENT SUBQUERY it2 index_subquery idx_cvk_cvk2_cik,idx_cvk_cik idx_cvk_cvk2_cik 8 func,const 1 Using index; Using where
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
DROP TABLE ot,it1,it2;
|
||||||
End of 5.2 tests
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||||
# maria-5.3
|
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 ( f1 int );
|
CREATE TABLE t1 ( f1 int );
|
||||||
INSERT INTO t1 VALUES (19), (20);
|
INSERT INTO t1 VALUES (19), (20);
|
||||||
@ -5495,32 +5650,6 @@ b c
|
|||||||
9 NULL
|
9 NULL
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
End of 5.3 tests
|
|
||||||
#
|
|
||||||
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
|
||||||
#
|
|
||||||
CREATE TABLE t1(a1 int);
|
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
|
||||||
CREATE TABLE t2(a1 int);
|
|
||||||
INSERT INTO t2 VALUES (3);
|
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SET SESSION sql_mode=@old_sql_mode;
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
#
|
#
|
||||||
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
||||||
# behaves differently than real NULL
|
# behaves differently than real NULL
|
||||||
@ -5570,27 +5699,6 @@ id parent_id
|
|||||||
DROP TABLE parent, child;
|
DROP TABLE parent, child;
|
||||||
# End of test for bug#11764086.
|
# End of test for bug#11764086.
|
||||||
#
|
#
|
||||||
# BUG#50257: Missing info in REF column of the EXPLAIN
|
|
||||||
# lines for subselects
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
|
||||||
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
|
||||||
|
|
||||||
set @tmp_optimizer_switch=@@optimizer_switch;
|
|
||||||
set optimizer_switch='derived_merge=off,derived_with_keys=off';
|
|
||||||
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
|
||||||
2 DERIVED t1 ref a a 5 const 1
|
|
||||||
set optimizer_switch=@tmp_optimizer_switch;
|
|
||||||
|
|
||||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
|
||||||
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
|
||||||
|
|
||||||
DROP TABLE t1;
|
|
||||||
#
|
|
||||||
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
||||||
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
||||||
#
|
#
|
||||||
@ -5616,54 +5724,6 @@ GROUP BY b
|
|||||||
1
|
1
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (f1 varchar(1));
|
|
||||||
INSERT INTO t1 VALUES ('v'),('s');
|
|
||||||
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
|
||||||
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
|
||||||
('d'),('y'),('t'),('d'),('s');
|
|
||||||
SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
f1 f1_key
|
|
||||||
v j
|
|
||||||
s j
|
|
||||||
v v
|
|
||||||
s v
|
|
||||||
v c
|
|
||||||
s c
|
|
||||||
v m
|
|
||||||
s m
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v y
|
|
||||||
s y
|
|
||||||
v t
|
|
||||||
s t
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v s
|
|
||||||
s s
|
|
||||||
explain SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
|
||||||
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
|
||||||
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
|
||||||
DROP TABLE t1,t2;
|
|
||||||
#
|
|
||||||
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
@ -5905,6 +5965,40 @@ a
|
|||||||
2009-02-02
|
2009-02-02
|
||||||
set @@optimizer_switch=@old_optimizer_switch;
|
set @@optimizer_switch=@old_optimizer_switch;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# LP BUG#908269 incorrect condition in case of subqueries depending
|
||||||
|
# on constant tables
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT );
|
||||||
|
INSERT INTO t1 VALUES (1),(5);
|
||||||
|
CREATE TABLE t2 ( b INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
CREATE TABLE t3 ( c INT );
|
||||||
|
INSERT INTO t3 VALUES (4),(5);
|
||||||
|
SET optimizer_switch='subquery_cache=off';
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR b * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR rand() * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR rand() * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
set optimizer_switch=@subselect_tmp;
|
||||||
|
#
|
||||||
|
# LP BUG#905353 Wrong non-empty result with a constant table,
|
||||||
|
# aggregate function in subquery, MyISAM or Aria
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT a FROM t1 WHERE ( SELECT MIN(a) = 100 );
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
# return optimizer switch changed in the beginning of this test
|
# return optimizer switch changed in the beginning of this test
|
||||||
set optimizer_switch=@subselect_tmp;
|
set optimizer_switch=@subselect_tmp;
|
||||||
set @optimizer_switch_for_subselect_test=null;
|
set @optimizer_switch_for_subselect_test=null;
|
||||||
|
@ -2979,7 +2979,7 @@ Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<in_optim
|
|||||||
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 10 func,func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1 100.00
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 9 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`flag` = 'N'))
|
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`flag` = 'N'))
|
||||||
@ -3569,7 +3569,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 9 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 21 test.t1.a,test.t1.b 1
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 9 Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||||
ALTER TABLE t1 ADD INDEX(a);
|
ALTER TABLE t1 ADD INDEX(a);
|
||||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||||
@ -3581,7 +3581,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
SELECT * FROM t1 WHERE (a,b) = ANY (SELECT a, max(b) FROM t1 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL a NULL NULL NULL 9 Using where
|
1 PRIMARY t1 ALL a NULL NULL NULL 9 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 23 test.t1.a,test.t1.b 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 21 test.t1.a,test.t1.b 1
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 9 Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 9 Using temporary
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
create table t1( f1 int,f2 int);
|
create table t1( f1 int,f2 int);
|
||||||
@ -4477,14 +4477,14 @@ SET @save_join_cache_level=@@join_cache_level;
|
|||||||
SET join_cache_level=0;
|
SET join_cache_level=0;
|
||||||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT min(a) FROM t1 GROUP BY a);
|
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT min(a) FROM t1 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY <subquery2> const distinct_key distinct_key 5 const 1 100.00
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 100.00 Using temporary
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select 1 AS `1` from <materialize> (select min(`test`.`t1`.`a`) from `test`.`t1` group by `test`.`t1`.`a`) join `test`.`t1` where (`<subquery2>`.`min(a)` = 1)
|
Note 1003 select 1 AS `1` from <materialize> (select min(`test`.`t1`.`a`) from `test`.`t1` group by `test`.`t1`.`a`) join `test`.`t1` where (`<subquery2>`.`min(a)` = 1)
|
||||||
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT min(a) FROM t1 WHERE a > 3 GROUP BY a);
|
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT min(a) FROM t1 WHERE a > 3 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY <subquery2> const distinct_key distinct_key 5 const 1 100.00
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 100.00 Using where; Using temporary
|
||||||
Warnings:
|
Warnings:
|
||||||
@ -4573,6 +4573,13 @@ CREATE TABLE t1(a1 int);
|
|||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `1` from `test`.`t1` where <nop>(<in_optimizer>(1,((select max(`test`.`t1`.`a1`) from `test`.`t1`) > 1)))
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
@ -5011,7 +5018,6 @@ EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
|
|||||||
WHERE t1.a = d1.a;
|
WHERE t1.a = d1.a;
|
||||||
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests.
|
|
||||||
Set up test tables.
|
Set up test tables.
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
t1_id INT UNSIGNED,
|
t1_id INT UNSIGNED,
|
||||||
@ -5454,10 +5460,161 @@ NULL
|
|||||||
NULL
|
NULL
|
||||||
5
|
5
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a1 int);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
CREATE TABLE t2(a1 int);
|
||||||
|
INSERT INTO t2 VALUES (3);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
create table t2(i int);
|
||||||
|
insert into t2 values(0);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
|
||||||
|
;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL,
|
||||||
|
col_varchar_key varchar(1) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (pk),
|
||||||
|
KEY col_varchar_key (col_varchar_key)
|
||||||
|
);
|
||||||
|
SELECT t1.pk
|
||||||
|
FROM t1
|
||||||
|
WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
|
||||||
|
;
|
||||||
|
pk
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
drop table t2, t1;
|
||||||
|
drop view v1;
|
||||||
|
#
|
||||||
|
# BUG#50257: Missing info in REF column of the EXPLAIN
|
||||||
|
# lines for subselects
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
||||||
|
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
||||||
|
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref a a 5 const 1
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
||||||
|
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
||||||
|
# (duplicate of LP bug #888456)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 varchar(1));
|
||||||
|
INSERT INTO t1 VALUES ('v'),('s');
|
||||||
|
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
||||||
|
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
||||||
|
('d'),('y'),('t'),('d'),('s');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
|
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
f1 f1_key
|
||||||
|
v j
|
||||||
|
s j
|
||||||
|
v v
|
||||||
|
s v
|
||||||
|
v c
|
||||||
|
s c
|
||||||
|
v m
|
||||||
|
s m
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v y
|
||||||
|
s y
|
||||||
|
v t
|
||||||
|
s t
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v s
|
||||||
|
s s
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# LP bug 919427: EXPLAIN for a query over a single-row table
|
||||||
|
# with IN subquery in WHERE condition
|
||||||
|
#
|
||||||
|
CREATE TABLE ot (
|
||||||
|
col_int_nokey int(11),
|
||||||
|
col_varchar_nokey varchar(1)
|
||||||
|
) ;
|
||||||
|
INSERT INTO ot VALUES (1,'x');
|
||||||
|
CREATE TABLE it1(
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key,col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it1 VALUES (NULL,'x'), (NULL,'f');
|
||||||
|
CREATE TABLE it2 (
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
col_varchar_key2 varchar(1),
|
||||||
|
KEY idx_cvk_cvk2_cik (col_varchar_key, col_varchar_key2, col_int_key),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key, col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it2 VALUES (NULL,'x','x'), (NULL,'f','f');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
|
2 MATERIALIZED it1 ref idx_cvk_cik idx_cvk_cik 9 const,const 1 Using where; Using index
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||||
|
2 MATERIALIZED it2 ref idx_cvk_cvk2_cik,idx_cvk_cik idx_cvk_cvk2_cik 8 const,const 1 Using where; Using index
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
DROP TABLE ot,it1,it2;
|
||||||
End of 5.2 tests
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||||
# maria-5.3
|
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 ( f1 int );
|
CREATE TABLE t1 ( f1 int );
|
||||||
INSERT INTO t1 VALUES (19), (20);
|
INSERT INTO t1 VALUES (19), (20);
|
||||||
@ -5504,32 +5661,6 @@ b c
|
|||||||
9 NULL
|
9 NULL
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
End of 5.3 tests
|
|
||||||
#
|
|
||||||
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
|
||||||
#
|
|
||||||
CREATE TABLE t1(a1 int);
|
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
|
||||||
CREATE TABLE t2(a1 int);
|
|
||||||
INSERT INTO t2 VALUES (3);
|
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SET SESSION sql_mode=@old_sql_mode;
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
#
|
#
|
||||||
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
||||||
# behaves differently than real NULL
|
# behaves differently than real NULL
|
||||||
@ -5579,27 +5710,6 @@ id parent_id
|
|||||||
DROP TABLE parent, child;
|
DROP TABLE parent, child;
|
||||||
# End of test for bug#11764086.
|
# End of test for bug#11764086.
|
||||||
#
|
#
|
||||||
# BUG#50257: Missing info in REF column of the EXPLAIN
|
|
||||||
# lines for subselects
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
|
||||||
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
|
||||||
|
|
||||||
set @tmp_optimizer_switch=@@optimizer_switch;
|
|
||||||
set optimizer_switch='derived_merge=off,derived_with_keys=off';
|
|
||||||
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
|
||||||
2 DERIVED t1 ref a a 5 const 1
|
|
||||||
set optimizer_switch=@tmp_optimizer_switch;
|
|
||||||
|
|
||||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
|
||||||
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
|
||||||
|
|
||||||
DROP TABLE t1;
|
|
||||||
#
|
|
||||||
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
||||||
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
||||||
#
|
#
|
||||||
@ -5625,54 +5735,6 @@ GROUP BY b
|
|||||||
1
|
1
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (f1 varchar(1));
|
|
||||||
INSERT INTO t1 VALUES ('v'),('s');
|
|
||||||
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
|
||||||
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
|
||||||
('d'),('y'),('t'),('d'),('s');
|
|
||||||
SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
f1 f1_key
|
|
||||||
v j
|
|
||||||
s j
|
|
||||||
v v
|
|
||||||
s v
|
|
||||||
v c
|
|
||||||
s c
|
|
||||||
v m
|
|
||||||
s m
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v y
|
|
||||||
s y
|
|
||||||
v t
|
|
||||||
s t
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v s
|
|
||||||
s s
|
|
||||||
explain SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
|
||||||
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
|
||||||
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
|
||||||
DROP TABLE t1,t2;
|
|
||||||
#
|
|
||||||
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
@ -5914,6 +5976,40 @@ a
|
|||||||
2009-02-02
|
2009-02-02
|
||||||
set @@optimizer_switch=@old_optimizer_switch;
|
set @@optimizer_switch=@old_optimizer_switch;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# LP BUG#908269 incorrect condition in case of subqueries depending
|
||||||
|
# on constant tables
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT );
|
||||||
|
INSERT INTO t1 VALUES (1),(5);
|
||||||
|
CREATE TABLE t2 ( b INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
CREATE TABLE t3 ( c INT );
|
||||||
|
INSERT INTO t3 VALUES (4),(5);
|
||||||
|
SET optimizer_switch='subquery_cache=off';
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR b * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR rand() * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR rand() * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
set optimizer_switch=@subselect_tmp;
|
||||||
|
#
|
||||||
|
# LP BUG#905353 Wrong non-empty result with a constant table,
|
||||||
|
# aggregate function in subquery, MyISAM or Aria
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT a FROM t1 WHERE ( SELECT MIN(a) = 100 );
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
# return optimizer switch changed in the beginning of this test
|
# return optimizer switch changed in the beginning of this test
|
||||||
set optimizer_switch=@subselect_tmp;
|
set optimizer_switch=@subselect_tmp;
|
||||||
set optimizer_switch=default;
|
set optimizer_switch=default;
|
||||||
|
@ -4565,6 +4565,13 @@ CREATE TABLE t1(a1 int);
|
|||||||
INSERT INTO t1 VALUES (1),(2);
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
2 SUBQUERY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select 1 AS `1` from `test`.`t1` where <nop>(<in_optimizer>(1,((select max(`test`.`t1`.`a1`) from `test`.`t1`) > 1)))
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t1);
|
||||||
1
|
1
|
||||||
1
|
1
|
||||||
@ -5003,7 +5010,6 @@ EXPLAIN EXTENDED SELECT DISTINCT 1 FROM t1,
|
|||||||
WHERE t1.a = d1.a;
|
WHERE t1.a = d1.a;
|
||||||
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
ERROR 42S22: Unknown column 'd1.a' in 'where clause'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.1 tests.
|
|
||||||
Set up test tables.
|
Set up test tables.
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
t1_id INT UNSIGNED,
|
t1_id INT UNSIGNED,
|
||||||
@ -5445,10 +5451,159 @@ NULL
|
|||||||
NULL
|
NULL
|
||||||
5
|
5
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a1 int);
|
||||||
|
INSERT INTO t1 VALUES (1),(2);
|
||||||
|
CREATE TABLE t2(a1 int);
|
||||||
|
INSERT INTO t2 VALUES (3);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
||||||
|
1
|
||||||
|
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
create table t2(i int);
|
||||||
|
insert into t2 values(0);
|
||||||
|
SELECT @@session.sql_mode INTO @old_sql_mode;
|
||||||
|
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT 'f' FROM t2 UNION SELECT 'x' FROM t2
|
||||||
|
;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int NOT NULL,
|
||||||
|
col_varchar_key varchar(1) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (pk),
|
||||||
|
KEY col_varchar_key (col_varchar_key)
|
||||||
|
);
|
||||||
|
SELECT t1.pk
|
||||||
|
FROM t1
|
||||||
|
WHERE t1.col_varchar_key < ALL ( SELECT * FROM v1 )
|
||||||
|
;
|
||||||
|
pk
|
||||||
|
SET SESSION sql_mode=@old_sql_mode;
|
||||||
|
drop table t2, t1;
|
||||||
|
drop view v1;
|
||||||
|
#
|
||||||
|
# BUG#50257: Missing info in REF column of the EXPLAIN
|
||||||
|
# lines for subselects
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
||||||
|
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
||||||
|
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 ref a a 5 const 1
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
||||||
|
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
||||||
|
# (duplicate of LP bug #888456)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 varchar(1));
|
||||||
|
INSERT INTO t1 VALUES ('v'),('s');
|
||||||
|
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
||||||
|
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
||||||
|
('d'),('y'),('t'),('d'),('s');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
|
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
||||||
|
SELECT table1.f1, table2.f1_key FROM t1 AS table1, t2 AS table2
|
||||||
|
WHERE EXISTS (SELECT DISTINCT f1_key FROM t2
|
||||||
|
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1);
|
||||||
|
f1 f1_key
|
||||||
|
v j
|
||||||
|
s j
|
||||||
|
v v
|
||||||
|
s v
|
||||||
|
v c
|
||||||
|
s c
|
||||||
|
v m
|
||||||
|
s m
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v y
|
||||||
|
s y
|
||||||
|
v t
|
||||||
|
s t
|
||||||
|
v d
|
||||||
|
s d
|
||||||
|
v s
|
||||||
|
s s
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# LP bug 919427: EXPLAIN for a query over a single-row table
|
||||||
|
# with IN subquery in WHERE condition
|
||||||
|
#
|
||||||
|
CREATE TABLE ot (
|
||||||
|
col_int_nokey int(11),
|
||||||
|
col_varchar_nokey varchar(1)
|
||||||
|
) ;
|
||||||
|
INSERT INTO ot VALUES (1,'x');
|
||||||
|
CREATE TABLE it1(
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key,col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it1 VALUES (NULL,'x'), (NULL,'f');
|
||||||
|
CREATE TABLE it2 (
|
||||||
|
col_int_key int(11),
|
||||||
|
col_varchar_key varchar(1),
|
||||||
|
col_varchar_key2 varchar(1),
|
||||||
|
KEY idx_cvk_cvk2_cik (col_varchar_key, col_varchar_key2, col_int_key),
|
||||||
|
KEY idx_cvk_cik (col_varchar_key, col_int_key)
|
||||||
|
);
|
||||||
|
INSERT INTO it2 VALUES (NULL,'x','x'), (NULL,'f','f');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
2 DEPENDENT SUBQUERY it1 index_subquery idx_cvk_cik idx_cvk_cik 9 func,const 2 Using index; Using where
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE col_varchar_nokey IN
|
||||||
|
(SELECT col_varchar_key FROM it1 WHERE col_int_key IS NULL);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
EXPLAIN
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot system NULL NULL NULL NULL 1
|
||||||
|
2 DEPENDENT SUBQUERY it2 index_subquery idx_cvk_cvk2_cik,idx_cvk_cik idx_cvk_cvk2_cik 8 func,const 1 Using index; Using where
|
||||||
|
SELECT col_int_nokey FROM ot
|
||||||
|
WHERE (col_varchar_nokey, 'x') IN
|
||||||
|
(SELECT col_varchar_key, col_varchar_key2 FROM it2);
|
||||||
|
col_int_nokey
|
||||||
|
1
|
||||||
|
DROP TABLE ot,it1,it2;
|
||||||
End of 5.2 tests
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||||
# maria-5.3
|
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 ( f1 int );
|
CREATE TABLE t1 ( f1 int );
|
||||||
INSERT INTO t1 VALUES (19), (20);
|
INSERT INTO t1 VALUES (19), (20);
|
||||||
@ -5495,32 +5650,6 @@ b c
|
|||||||
9 NULL
|
9 NULL
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
End of 5.3 tests
|
|
||||||
#
|
|
||||||
# Bug#12763207 - ASSERT IN SUBSELECT::SINGLE_VALUE_TRANSFORMER
|
|
||||||
#
|
|
||||||
CREATE TABLE t1(a1 int);
|
|
||||||
INSERT INTO t1 VALUES (1),(2);
|
|
||||||
CREATE TABLE t2(a1 int);
|
|
||||||
INSERT INTO t2 VALUES (3);
|
|
||||||
SELECT @@session.sql_mode INTO @old_sql_mode;
|
|
||||||
SET SESSION sql_mode='ONLY_FULL_GROUP_BY';
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 2.0 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT 'a' FROM t2);
|
|
||||||
1
|
|
||||||
SELECT 1 FROM t1 WHERE 1 < SOME (SELECT a1 FROM t2);
|
|
||||||
1
|
|
||||||
1
|
|
||||||
1
|
|
||||||
SET SESSION sql_mode=@old_sql_mode;
|
|
||||||
DROP TABLE t1, t2;
|
|
||||||
#
|
#
|
||||||
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
# Bug#11764086: Null left operand to NOT IN in WHERE clause
|
||||||
# behaves differently than real NULL
|
# behaves differently than real NULL
|
||||||
@ -5570,27 +5699,6 @@ id parent_id
|
|||||||
DROP TABLE parent, child;
|
DROP TABLE parent, child;
|
||||||
# End of test for bug#11764086.
|
# End of test for bug#11764086.
|
||||||
#
|
#
|
||||||
# BUG#50257: Missing info in REF column of the EXPLAIN
|
|
||||||
# lines for subselects
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (a INT, b INT, INDEX (a));
|
|
||||||
INSERT INTO t1 VALUES (3, 10), (2, 20), (7, 10), (5, 20);
|
|
||||||
|
|
||||||
set @tmp_optimizer_switch=@@optimizer_switch;
|
|
||||||
set optimizer_switch='derived_merge=off,derived_with_keys=off';
|
|
||||||
EXPLAIN SELECT * FROM (SELECT * FROM t1 WHERE a=7) t;
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
|
||||||
2 DERIVED t1 ref a a 5 const 1
|
|
||||||
set optimizer_switch=@tmp_optimizer_switch;
|
|
||||||
|
|
||||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t1 WHERE a=7);
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
|
||||||
2 SUBQUERY t1 ref a a 5 const 1 Using index
|
|
||||||
|
|
||||||
DROP TABLE t1;
|
|
||||||
#
|
|
||||||
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
# Bug 11765699 - 58690: !TABLE || (!TABLE->READ_SET ||
|
||||||
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
# BITMAP_IS_SET(TABLE->READ_SET, FIELD_INDEX
|
||||||
#
|
#
|
||||||
@ -5616,54 +5724,6 @@ GROUP BY b
|
|||||||
1
|
1
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
# BUG#12616253 - WRONG RESULT WITH EXISTS(SUBQUERY) (MISSING ROWS)
|
|
||||||
#
|
|
||||||
CREATE TABLE t1 (f1 varchar(1));
|
|
||||||
INSERT INTO t1 VALUES ('v'),('s');
|
|
||||||
CREATE TABLE t2 (f1_key varchar(1), KEY (f1_key));
|
|
||||||
INSERT INTO t2 VALUES ('j'),('v'),('c'),('m'),('d'),
|
|
||||||
('d'),('y'),('t'),('d'),('s');
|
|
||||||
SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
f1 f1_key
|
|
||||||
v j
|
|
||||||
s j
|
|
||||||
v v
|
|
||||||
s v
|
|
||||||
v c
|
|
||||||
s c
|
|
||||||
v m
|
|
||||||
s m
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v y
|
|
||||||
s y
|
|
||||||
v t
|
|
||||||
s t
|
|
||||||
v d
|
|
||||||
s d
|
|
||||||
v s
|
|
||||||
s s
|
|
||||||
explain SELECT table1.f1, table2.f1_key
|
|
||||||
FROM t1 AS table1, t2 AS table2
|
|
||||||
WHERE EXISTS
|
|
||||||
(
|
|
||||||
SELECT DISTINCT f1_key
|
|
||||||
FROM t2
|
|
||||||
WHERE f1_key != table2.f1_key AND f1_key >= table1.f1 );
|
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
|
||||||
1 PRIMARY table1 ALL NULL NULL NULL NULL 2
|
|
||||||
1 PRIMARY table2 index NULL f1_key 4 NULL 10 Using where; Using index; Using join buffer (flat, BNL join)
|
|
||||||
2 DEPENDENT SUBQUERY t2 index f1_key f1_key 4 NULL 10 Using where; Using index
|
|
||||||
DROP TABLE t1,t2;
|
|
||||||
#
|
|
||||||
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
# LP bug #826279: assertion failure with GROUP BY a result of subquery
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
@ -5905,6 +5965,40 @@ a
|
|||||||
2009-02-02
|
2009-02-02
|
||||||
set @@optimizer_switch=@old_optimizer_switch;
|
set @@optimizer_switch=@old_optimizer_switch;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# LP BUG#908269 incorrect condition in case of subqueries depending
|
||||||
|
# on constant tables
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT );
|
||||||
|
INSERT INTO t1 VALUES (1),(5);
|
||||||
|
CREATE TABLE t2 ( b INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
CREATE TABLE t3 ( c INT );
|
||||||
|
INSERT INTO t3 VALUES (4),(5);
|
||||||
|
SET optimizer_switch='subquery_cache=off';
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) ) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR EXISTS ( SELECT c FROM t3 WHERE c = b ) )
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR b * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR b * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
SELECT ( SELECT b FROM t2 WHERE b = a OR rand() * 0) FROM t1;
|
||||||
|
( SELECT b FROM t2 WHERE b = a OR rand() * 0)
|
||||||
|
1
|
||||||
|
NULL
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
set optimizer_switch=@subselect_tmp;
|
||||||
|
#
|
||||||
|
# LP BUG#905353 Wrong non-empty result with a constant table,
|
||||||
|
# aggregate function in subquery, MyISAM or Aria
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SELECT a FROM t1 WHERE ( SELECT MIN(a) = 100 );
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
# return optimizer switch changed in the beginning of this test
|
# return optimizer switch changed in the beginning of this test
|
||||||
set optimizer_switch=@subselect_tmp;
|
set optimizer_switch=@subselect_tmp;
|
||||||
set @optimizer_switch_for_subselect_test=null;
|
set @optimizer_switch_for_subselect_test=null;
|
||||||
|
@ -802,7 +802,7 @@ INSERT INTO t2 VALUES (1,'i','iiii','iiii','iiii','iiii','ffff','ffff','ffff','f
|
|||||||
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
|
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 13 func,func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 11 func,func 1 100.00
|
||||||
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 100.00 Using index condition; Rowid-ordered scan
|
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 100.00 Using index condition; Rowid-ordered scan
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`pk` > 0))
|
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`pk` > 0))
|
||||||
@ -1053,8 +1053,8 @@ AND t1.val IN (SELECT t3.val FROM t3
|
|||||||
WHERE t3.val LIKE 'a%' OR t3.val LIKE 'e%');
|
WHERE t3.val LIKE 'a%' OR t3.val LIKE 'e%');
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
||||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 14 func 1
|
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 13 func 1
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 14 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 13 func 1
|
||||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using where
|
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using where
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 Using where
|
||||||
SELECT *
|
SELECT *
|
||||||
@ -1231,6 +1231,364 @@ IN (SELECT t3.pk, t3.pk FROM t2 LEFT JOIN t3 ON t3.varchar_key)
|
|||||||
AND pk = 9;
|
AND pk = 9;
|
||||||
datetime_key
|
datetime_key
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# BUG#53060: LooseScan semijoin strategy does not return all rows
|
||||||
|
#
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=on,materialization=off';
|
||||||
|
set optimizer_switch='firstmatch=off,loosescan=on';
|
||||||
|
CREATE TABLE t1 (i INTEGER);
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
||||||
|
CREATE TABLE t2 (i INTEGER, j INTEGER, KEY k(i, j));
|
||||||
|
INSERT INTO t2 VALUES (1, 0), (1, 1), (2, 0), (2, 1);
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t2 index k k 10 NULL 4 Using where; Using index; LooseScan
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
|
||||||
|
SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0);
|
||||||
|
i
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
#
|
||||||
|
# BUG#49453: re-execution of prepared statement with view
|
||||||
|
# and semijoin crashes
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (city VARCHAR(50), country_id INT);
|
||||||
|
CREATE TABLE t2 (country_id INT, country VARCHAR(50));
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
('Batna',2),('Bchar',2),('Skikda',2),('Tafuna',3),('Algeria',2) ;
|
||||||
|
INSERT INTO t2 VALUES (2,'Algeria'),(2,'AlgeriaDup'),(3,'XAmerican Samoa');
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT country_id as vf_country_id
|
||||||
|
FROM t2
|
||||||
|
WHERE LEFT(country,1) = "A";
|
||||||
|
PREPARE stmt FROM "
|
||||||
|
SELECT city, country_id
|
||||||
|
FROM t1
|
||||||
|
WHERE country_id IN (SELECT vf_country_id FROM v1);
|
||||||
|
";
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
city country_id
|
||||||
|
Batna 2
|
||||||
|
Bchar 2
|
||||||
|
Skikda 2
|
||||||
|
Algeria 2
|
||||||
|
EXECUTE stmt;
|
||||||
|
city country_id
|
||||||
|
Batna 2
|
||||||
|
Bchar 2
|
||||||
|
Skikda 2
|
||||||
|
Algeria 2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
DROP VIEW v1;
|
||||||
|
#
|
||||||
|
# Bug#54437 Extra rows with LEFT JOIN + semijoin
|
||||||
|
#
|
||||||
|
create table t1 (a int);
|
||||||
|
create table t2 (a int);
|
||||||
|
create table t3 (a int);
|
||||||
|
insert into t1 values(1),(1);
|
||||||
|
insert into t2 values(1),(1),(1),(1);
|
||||||
|
insert into t3 values(2),(2);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='materialization=off';
|
||||||
|
set optimizer_switch='semijoin=off';
|
||||||
|
explain
|
||||||
|
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch='semijoin=on';
|
||||||
|
explain
|
||||||
|
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 4 Using where; Start temporary
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using where; End temporary
|
||||||
|
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
#
|
||||||
|
# Bug#55955: crash in MEMORY engine with IN(LEFT JOIN (JOIN))
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
CREATE TABLE t3 (a INT);
|
||||||
|
INSERT INTO t1 VALUES(1),(1);
|
||||||
|
INSERT INTO t2 VALUES(1),(1);
|
||||||
|
INSERT INTO t3 VALUES(2),(2);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=off,materialization=off';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2inner ALL NULL NULL NULL NULL 2
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch='semijoin=off,materialization=on';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2
|
||||||
|
2 MATERIALIZED t2inner ALL NULL NULL NULL NULL 2
|
||||||
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch='semijoin=on,materialization=off';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary
|
||||||
|
1 PRIMARY t2inner ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using where; End temporary
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# BUG#52329 - Wrong result: subquery materialization, IN,
|
||||||
|
# non-null field followed by nullable
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a1 CHAR(8) NOT NULL, a2 char(8) NOT NULL);
|
||||||
|
CREATE TABLE t2a (b1 char(8), b2 char(8));
|
||||||
|
CREATE TABLE t2b (b1 CHAR(8), b2 char(8) NOT NULL);
|
||||||
|
CREATE TABLE t2c (b1 CHAR(8) NOT NULL, b2 char(8));
|
||||||
|
INSERT INTO t1 VALUES ('1 - 12', '2 - 22');
|
||||||
|
INSERT INTO t2a VALUES ('1 - 11', '2 - 21'),
|
||||||
|
('1 - 11', '2 - 21'),
|
||||||
|
('1 - 12', '2 - 22'),
|
||||||
|
('1 - 12', '2 - 22'),
|
||||||
|
('1 - 13', '2 - 23');
|
||||||
|
INSERT INTO t2b SELECT * FROM t2a;
|
||||||
|
INSERT INTO t2c SELECT * FROM t2a;
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=off,materialization=on';
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE (a1, a2) IN (
|
||||||
|
SELECT b1, b2 FROM t2c WHERE b1 > '0' GROUP BY b1, b2);
|
||||||
|
a1 a2
|
||||||
|
1 - 12 2 - 22
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE (a1, a2) IN (
|
||||||
|
SELECT b1, b2 FROM t2a WHERE b1 > '0');
|
||||||
|
a1 a2
|
||||||
|
1 - 12 2 - 22
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE (a1, a2) IN (
|
||||||
|
SELECT b1, b2 FROM t2b WHERE b1 > '0');
|
||||||
|
a1 a2
|
||||||
|
1 - 12 2 - 22
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE (a1, a2) IN (
|
||||||
|
SELECT b1, b2 FROM t2c WHERE b1 > '0');
|
||||||
|
a1 a2
|
||||||
|
1 - 12 2 - 22
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2a,t2b,t2c;
|
||||||
|
#
|
||||||
|
# Bug#57623: subquery within before insert trigger causes crash (sj=on)
|
||||||
|
#
|
||||||
|
CREATE TABLE ot1(a INT);
|
||||||
|
CREATE TABLE ot2(a INT);
|
||||||
|
CREATE TABLE ot3(a INT);
|
||||||
|
CREATE TABLE it1(a INT);
|
||||||
|
INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
|
||||||
|
INSERT INTO ot2 VALUES(0),(2),(4),(6);
|
||||||
|
INSERT INTO ot3 VALUES(0),(3),(6);
|
||||||
|
INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=on';
|
||||||
|
set optimizer_switch='materialization=off';
|
||||||
|
explain SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot1 ALL NULL NULL NULL NULL 8
|
||||||
|
1 PRIMARY ot3 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
1 PRIMARY ot2 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
2 DEPENDENT SUBQUERY it1 ALL NULL NULL NULL NULL 8 Using where
|
||||||
|
SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
6 6 6
|
||||||
|
7 NULL NULL
|
||||||
|
prepare s from 'SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1)';
|
||||||
|
execute s;
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
6 6 6
|
||||||
|
7 NULL NULL
|
||||||
|
execute s;
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
6 6 6
|
||||||
|
7 NULL NULL
|
||||||
|
deallocate prepare s;
|
||||||
|
set optimizer_switch='materialization=on';
|
||||||
|
explain SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot1 ALL NULL NULL NULL NULL 8
|
||||||
|
1 PRIMARY ot3 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
1 PRIMARY ot2 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
2 MATERIALIZED it1 ALL NULL NULL NULL NULL 8
|
||||||
|
SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
6 6 6
|
||||||
|
7 NULL NULL
|
||||||
|
prepare s from 'SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1)';
|
||||||
|
execute s;
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
6 6 6
|
||||||
|
7 NULL NULL
|
||||||
|
execute s;
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
6 6 6
|
||||||
|
7 NULL NULL
|
||||||
|
deallocate prepare s;
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE ot1, ot2, ot3, it1;
|
||||||
|
#
|
||||||
|
# Bug#59919/11766739: Crash in tmp_table_param::init() with semijoin=on
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM;
|
||||||
|
CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM;
|
||||||
|
CREATE TABLE t3 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (1,1), (2,1);
|
||||||
|
INSERT INTO t3 VALUES
|
||||||
|
(1,1), (2,1), (5,4), (7,3), (8,2), (8,1), (7,3),
|
||||||
|
(9,5), (4,3), (7,2), (7,7), (3,1), (5,8), (9,7);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=off,materialization=on';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t3
|
||||||
|
WHERE f2 IN (SELECT t1.f1
|
||||||
|
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 14 Using where
|
||||||
|
2 MATERIALIZED t1 system NULL NULL NULL NULL 1
|
||||||
|
2 MATERIALIZED b1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED b2 ALL NULL NULL NULL NULL 2
|
||||||
|
SELECT * FROM t3
|
||||||
|
WHERE f2 IN (SELECT t1.f1
|
||||||
|
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
|
||||||
|
f1 f2
|
||||||
|
1 1
|
||||||
|
2 1
|
||||||
|
8 1
|
||||||
|
3 1
|
||||||
|
set optimizer_switch='semijoin=on,materialization=on';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t3
|
||||||
|
WHERE f2 IN (SELECT t1.f1
|
||||||
|
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 1
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 14 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED b1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED b2 ALL NULL NULL NULL NULL 2
|
||||||
|
SELECT * FROM t3
|
||||||
|
WHERE f2 IN (SELECT t1.f1
|
||||||
|
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
|
||||||
|
f1 f2
|
||||||
|
1 1
|
||||||
|
2 1
|
||||||
|
8 1
|
||||||
|
3 1
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE t1, t2, t3 ;
|
||||||
|
#
|
||||||
#
|
#
|
||||||
# BUG#784723: Wrong result with semijoin + nested subqueries in maria-5.3
|
# BUG#784723: Wrong result with semijoin + nested subqueries in maria-5.3
|
||||||
#
|
#
|
||||||
@ -1275,9 +1633,9 @@ select * from t1 A, t1 B
|
|||||||
where A.a = B.a and A.a in (select a from t2 C) and B.a in (select a from t2 D);
|
where A.a = B.a and A.a in (select a from t2 C) and B.a in (select a from t2 D);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY A ALL NULL NULL NULL NULL 3
|
1 PRIMARY A ALL NULL NULL NULL NULL 3
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY B ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY B ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED C ALL NULL NULL NULL NULL 3
|
2 MATERIALIZED C ALL NULL NULL NULL NULL 3
|
||||||
3 MATERIALIZED D ALL NULL NULL NULL NULL 3
|
3 MATERIALIZED D ALL NULL NULL NULL NULL 3
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
@ -1965,7 +2323,7 @@ explain
|
|||||||
SELECT * FROM t1 WHERE (a) IN (SELECT a FROM t2 JOIN t3 ON b = a);
|
SELECT * FROM t1 WHERE (a) IN (SELECT a FROM t2 JOIN t3 ON b = a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 9
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 13 Using where
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 13 Using where
|
||||||
2 MATERIALIZED t2 ref b b 4 test.t3.a 1 Using index
|
2 MATERIALIZED t2 ref b b 4 test.t3.a 1 Using index
|
||||||
SELECT * FROM t1 WHERE (a) IN (SELECT a FROM t2 JOIN t3 ON b = a);
|
SELECT * FROM t1 WHERE (a) IN (SELECT a FROM t2 JOIN t3 ON b = a);
|
||||||
@ -2085,7 +2443,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 RIGHT JOIN t2 ON b = a WHERE t2.b IN (SELECT c FROM t3);
|
SELECT * FROM t1 RIGHT JOIN t2 ON b = a WHERE t2.b IN (SELECT c FROM t3);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||||
SELECT * FROM t1 RIGHT JOIN t2 ON b = a WHERE t2.b IN (SELECT c FROM t3);
|
SELECT * FROM t1 RIGHT JOIN t2 ON b = a WHERE t2.b IN (SELECT c FROM t3);
|
||||||
@ -2152,4 +2510,122 @@ c c
|
|||||||
set optimizer_prune_level= @opl_901399;
|
set optimizer_prune_level= @opl_901399;
|
||||||
set optimizer_switch= @os_091399;
|
set optimizer_switch= @os_091399;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#912510: Crash in do_copy_not_null with semijoin=ON, firstmatch=ON, aggregate ...
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(1) NOT NULL );
|
||||||
|
INSERT INTO t1 VALUES ('k'),('l');
|
||||||
|
CREATE TABLE t2 ( b VARCHAR(1) NOT NULL, KEY(b) );
|
||||||
|
INSERT INTO t2 VALUES ('k'),('l');
|
||||||
|
CREATE TABLE t3 ( c VARCHAR(1) NOT NULL, KEY(c) );
|
||||||
|
INSERT INTO t3 VALUES ('m'),('n');
|
||||||
|
SELECT a, COUNT(*) FROM t1
|
||||||
|
WHERE a IN (
|
||||||
|
SELECT b FROM t2 force index(b), t3 force index(c)
|
||||||
|
WHERE c = b AND b = a
|
||||||
|
);
|
||||||
|
a COUNT(*)
|
||||||
|
NULL 0
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# BUG#920255: Wrong result (extra rows) with loosescan and IN subquery
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT PRIMARY KEY, b INT, KEY(b) );
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(1,2),(2,1),(3,3),(4,2),(5,5),
|
||||||
|
(6,3),(7,1),(8,4),(9,3),(10,2);
|
||||||
|
CREATE TABLE t2 ( c INT, d INT, UNIQUE KEY(c) );
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(1,2),(2,1),(3,3),(4,2),(5,5),(6,3),(7,1);
|
||||||
|
SELECT a, b, d FROM t1, t2
|
||||||
|
WHERE ( b, d ) IN
|
||||||
|
( SELECT b, d FROM t1, t2 WHERE b = c );
|
||||||
|
a b d
|
||||||
|
2 1 2
|
||||||
|
7 1 2
|
||||||
|
2 1 2
|
||||||
|
7 1 2
|
||||||
|
1 2 1
|
||||||
|
4 2 1
|
||||||
|
10 2 1
|
||||||
|
1 2 1
|
||||||
|
4 2 1
|
||||||
|
10 2 1
|
||||||
|
3 3 3
|
||||||
|
6 3 3
|
||||||
|
9 3 3
|
||||||
|
3 3 3
|
||||||
|
6 3 3
|
||||||
|
9 3 3
|
||||||
|
8 4 2
|
||||||
|
8 4 2
|
||||||
|
5 5 5
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# BUG#920713: Wrong result (missing rows) with firstmatch+BNL, IN subquery, ...
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(1) ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES ('e'),('w'),('a'),('h'),('x'),('k'),('g');
|
||||||
|
CREATE TABLE t2 ( b INT, c VARCHAR(1) );
|
||||||
|
INSERT INTO t2 VALUES (0,'j'),(8,'v');
|
||||||
|
SELECT * FROM t1 alias1, t2 alias2
|
||||||
|
WHERE alias2.c IN (
|
||||||
|
SELECT alias4.c FROM t1 alias3, t2 alias4
|
||||||
|
);
|
||||||
|
a b c
|
||||||
|
e 0 j
|
||||||
|
e 8 v
|
||||||
|
w 0 j
|
||||||
|
w 8 v
|
||||||
|
a 0 j
|
||||||
|
a 8 v
|
||||||
|
h 0 j
|
||||||
|
h 8 v
|
||||||
|
x 0 j
|
||||||
|
x 8 v
|
||||||
|
k 0 j
|
||||||
|
k 8 v
|
||||||
|
g 0 j
|
||||||
|
g 8 v
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# BUG#923246: Loosescan reports different result than other semijoin methods
|
||||||
|
#
|
||||||
|
set @tmp_923246= @@optimizer_switch;
|
||||||
|
set optimizer_switch='mrr=on,materialization=off';
|
||||||
|
create table t0 (a int);
|
||||||
|
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
create table t1 (kp1 int, kp2 int, c int, filler char(100), key(kp1, kp2));
|
||||||
|
insert into t1 select A.a+10*(B.a+10*C.a), 0, 0, 'filler' from t0 A, t0 B, t0 C;
|
||||||
|
insert into t1 select * from t1 where kp1 < 20;
|
||||||
|
create table t3 (a int);
|
||||||
|
insert into t3 select A.a + 10*B.a from t0 A, t0 B;
|
||||||
|
select * from t3 where a in (select kp1 from t1 where kp1<20);
|
||||||
|
a
|
||||||
|
0
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
10
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
15
|
||||||
|
16
|
||||||
|
17
|
||||||
|
18
|
||||||
|
19
|
||||||
|
explain select * from t3 where a in (select kp1 from t1 where kp1<20);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 range kp1 kp1 5 NULL 48 Using where; Using index; LooseScan
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
||||||
|
drop table t0,t1,t3;
|
||||||
|
set optimizer_switch= @tmp_923246;
|
||||||
set optimizer_switch=@subselect_sj_tmp;
|
set optimizer_switch=@subselect_sj_tmp;
|
||||||
|
@ -183,7 +183,7 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||||||
from t2 ot where a in (select a from t1 it);
|
from t2 ot where a in (select a from t1 it);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED it ALL NULL NULL NULL NULL 32
|
2 MATERIALIZED it ALL NULL NULL NULL NULL 32
|
||||||
select
|
select
|
||||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||||
@ -251,7 +251,7 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||||||
from t2 ot where a in (select a from t1 it);
|
from t2 ot where a in (select a from t1 it);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED it ALL NULL NULL NULL NULL 52
|
2 MATERIALIZED it ALL NULL NULL NULL NULL 52
|
||||||
select
|
select
|
||||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||||
@ -292,7 +292,7 @@ from t0 where a in
|
|||||||
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
|
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 9 func 1 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func 1 Using where
|
||||||
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
||||||
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
||||||
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
||||||
@ -721,7 +721,7 @@ The following must use loose index scan over t3, key a:
|
|||||||
explain select count(a) from t2 where a in ( SELECT a FROM t3);
|
explain select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 index a a 5 NULL 1000 Using index
|
1 PRIMARY t2 index a a 5 NULL 1000 Using index
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t3 index a a 5 NULL 30000 Using index
|
2 MATERIALIZED t3 index a a 5 NULL 30000 Using index
|
||||||
select count(a) from t2 where a in ( SELECT a FROM t3);
|
select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||||
count(a)
|
count(a)
|
||||||
@ -878,7 +878,7 @@ SELECT * FROM t3 LEFT JOIN (v1,t2) ON t3.a = t2.a
|
|||||||
WHERE t3.b IN (SELECT b FROM t4);
|
WHERE t3.b IN (SELECT b FROM t4);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 1
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 1
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
|
||||||
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2
|
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2
|
||||||
2 MATERIALIZED t4 ALL NULL NULL NULL NULL 2
|
2 MATERIALIZED t4 ALL NULL NULL NULL NULL 2
|
||||||
@ -889,5 +889,19 @@ a b b a
|
|||||||
c c NULL NULL
|
c c NULL NULL
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1,t2,t3,t4;
|
DROP TABLE t1,t2,t3,t4;
|
||||||
|
#
|
||||||
|
# BUG#912538: Wrong result (missing rows) with semijoin=on, firstmatch=on, ...
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT NOT NULL, UNIQUE KEY(a) );
|
||||||
|
INSERT INTO t1 VALUES (1),(2),(3),(4);
|
||||||
|
CREATE TABLE t2 ( b INT, c INT ) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,1);
|
||||||
|
SELECT * FROM t1, t2 WHERE c IN (SELECT c FROM t1, t2 WHERE a = b);
|
||||||
|
a b c
|
||||||
|
1 1 1
|
||||||
|
2 1 1
|
||||||
|
3 1 1
|
||||||
|
4 1 1
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# This must be the last in the file:
|
# This must be the last in the file:
|
||||||
set optimizer_switch=@subselect_sj2_tmp;
|
set optimizer_switch=@subselect_sj2_tmp;
|
||||||
|
@ -133,7 +133,7 @@ set max_heap_table_size= @save_max_heap_table_size;
|
|||||||
explain select * from t1 where a in (select b from t2);
|
explain select * from t1 where a in (select b from t2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t2 index b b 5 NULL 20 Using index
|
2 MATERIALIZED t2 index b b 5 NULL 20 Using index
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a b
|
a b
|
||||||
@ -195,7 +195,7 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||||||
from t2 ot where a in (select a from t1 it);
|
from t2 ot where a in (select a from t1 it);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED it ALL NULL NULL NULL NULL 32
|
2 MATERIALIZED it ALL NULL NULL NULL NULL 32
|
||||||
select
|
select
|
||||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||||
@ -263,7 +263,7 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||||||
from t2 ot where a in (select a from t1 it);
|
from t2 ot where a in (select a from t1 it);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED it ALL NULL NULL NULL NULL 52
|
2 MATERIALIZED it ALL NULL NULL NULL NULL 52
|
||||||
select
|
select
|
||||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||||
@ -304,7 +304,7 @@ from t0 where a in
|
|||||||
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
|
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 9 func 1 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func 1 Using where
|
||||||
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
||||||
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
||||||
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
||||||
@ -735,7 +735,7 @@ The following must use loose index scan over t3, key a:
|
|||||||
explain select count(a) from t2 where a in ( SELECT a FROM t3);
|
explain select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 index a a 5 NULL 1000 Using index
|
1 PRIMARY t2 index a a 5 NULL 1000 Using index
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t3 index a a 5 NULL 30000 Using index
|
2 MATERIALIZED t3 index a a 5 NULL 30000 Using index
|
||||||
select count(a) from t2 where a in ( SELECT a FROM t3);
|
select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||||
count(a)
|
count(a)
|
||||||
@ -892,7 +892,7 @@ SELECT * FROM t3 LEFT JOIN (v1,t2) ON t3.a = t2.a
|
|||||||
WHERE t3.b IN (SELECT b FROM t4);
|
WHERE t3.b IN (SELECT b FROM t4);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 1
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 1
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY t2 hash_ALL NULL #hash#$hj 5 test.t3.a 1 Using where; Using join buffer (flat, BNLH join)
|
1 PRIMARY t2 hash_ALL NULL #hash#$hj 5 test.t3.a 1 Using where; Using join buffer (flat, BNLH join)
|
||||||
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
|
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
|
||||||
2 MATERIALIZED t4 ALL NULL NULL NULL NULL 2
|
2 MATERIALIZED t4 ALL NULL NULL NULL NULL 2
|
||||||
@ -903,6 +903,20 @@ a b b a
|
|||||||
c c NULL NULL
|
c c NULL NULL
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1,t2,t3,t4;
|
DROP TABLE t1,t2,t3,t4;
|
||||||
|
#
|
||||||
|
# BUG#912538: Wrong result (missing rows) with semijoin=on, firstmatch=on, ...
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT NOT NULL, UNIQUE KEY(a) );
|
||||||
|
INSERT INTO t1 VALUES (1),(2),(3),(4);
|
||||||
|
CREATE TABLE t2 ( b INT, c INT ) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,1);
|
||||||
|
SELECT * FROM t1, t2 WHERE c IN (SELECT c FROM t1, t2 WHERE a = b);
|
||||||
|
a b c
|
||||||
|
1 1 1
|
||||||
|
2 1 1
|
||||||
|
3 1 1
|
||||||
|
4 1 1
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# This must be the last in the file:
|
# This must be the last in the file:
|
||||||
set optimizer_switch=@subselect_sj2_tmp;
|
set optimizer_switch=@subselect_sj2_tmp;
|
||||||
#
|
#
|
||||||
@ -924,9 +938,9 @@ SELECT t3.* FROM t1 JOIN t3 ON t3.b = t1.b
|
|||||||
WHERE c IN (SELECT t4.b FROM t4 JOIN t2);
|
WHERE c IN (SELECT t4.b FROM t4 JOIN t2);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 1 Using where
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 1 Using where
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 1
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 FirstMatch(t3)
|
||||||
1 PRIMARY t1 ref b b 4 test.t3.b 1 Using index
|
1 PRIMARY t1 ref b b 4 test.t3.b 1 Using index
|
||||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 Using where; FirstMatch(t2)
|
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 Using where; FirstMatch(t1)
|
||||||
SELECT t3.* FROM t1 JOIN t3 ON t3.b = t1.b
|
SELECT t3.* FROM t1 JOIN t3 ON t3.b = t1.b
|
||||||
WHERE c IN (SELECT t4.b FROM t4 JOIN t2);
|
WHERE c IN (SELECT t4.b FROM t4 JOIN t2);
|
||||||
b c
|
b c
|
||||||
@ -952,12 +966,13 @@ EXPLAIN
|
|||||||
SELECT * FROM t1, t2 WHERE b IN (SELECT a FROM t3, t4 WHERE b = pk);
|
SELECT * FROM t1, t2 WHERE b IN (SELECT a FROM t3, t4 WHERE b = pk);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 1
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 1
|
||||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 1 Using where
|
1 PRIMARY t4 ALL NULL NULL NULL NULL 1 Using where; FirstMatch(t2)
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 4 test.t4.b 1 Using where; FirstMatch(t4)
|
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 4 test.t4.b 1 Using where; FirstMatch(t1)
|
||||||
SELECT * FROM t1, t2 WHERE b IN (SELECT a FROM t3, t4 WHERE b = pk);
|
SELECT * FROM t1, t2 WHERE b IN (SELECT a FROM t3, t4 WHERE b = pk);
|
||||||
pk a b
|
pk a b
|
||||||
1 6 8
|
1 6 8
|
||||||
|
2 8 8
|
||||||
set optimizer_switch=@tmp_optimizer_switch;
|
set optimizer_switch=@tmp_optimizer_switch;
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
DROP TABLE t1,t2,t3,t4;
|
DROP TABLE t1,t2,t3,t4;
|
||||||
@ -975,7 +990,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE b IN (SELECT a FROM t2 GROUP BY a);
|
SELECT * FROM t1 WHERE b IN (SELECT a FROM t2 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 1
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 1
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 1
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 1
|
||||||
SELECT * FROM t1 WHERE b IN (SELECT a FROM t2 GROUP BY a);
|
SELECT * FROM t1 WHERE b IN (SELECT a FROM t2 GROUP BY a);
|
||||||
a b
|
a b
|
||||||
@ -984,7 +999,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 WHERE b IN (SELECT max(a) FROM t2 GROUP BY a);
|
SELECT * FROM t1 WHERE b IN (SELECT max(a) FROM t2 GROUP BY a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 1 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 1 Using where
|
||||||
1 PRIMARY <subquery2> hash_ALL distinct_key #hash#distinct_key 5 test.t1.b 1 Using join buffer (flat, BNLH join)
|
1 PRIMARY <subquery2> hash_ALL distinct_key #hash#distinct_key 4 test.t1.b 1 Using join buffer (flat, BNLH join)
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 1 Using temporary
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 1 Using temporary
|
||||||
SELECT * FROM t1 WHERE b IN (SELECT max(a) FROM t2 GROUP BY a);
|
SELECT * FROM t1 WHERE b IN (SELECT max(a) FROM t2 GROUP BY a);
|
||||||
a b
|
a b
|
||||||
|
@ -185,7 +185,7 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||||||
from t2 ot where a in (select a from t1 it);
|
from t2 ot where a in (select a from t1 it);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED it ALL NULL NULL NULL NULL 32
|
2 MATERIALIZED it ALL NULL NULL NULL NULL 32
|
||||||
select
|
select
|
||||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||||
@ -253,7 +253,7 @@ a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
|||||||
from t2 ot where a in (select a from t1 it);
|
from t2 ot where a in (select a from t1 it);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
1 PRIMARY ot ALL NULL NULL NULL NULL 22
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED it ALL NULL NULL NULL NULL 52
|
2 MATERIALIZED it ALL NULL NULL NULL NULL 52
|
||||||
select
|
select
|
||||||
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
a, mid(filler1, 1,10), length(filler1)=length(filler2)
|
||||||
@ -294,7 +294,7 @@ from t0 where a in
|
|||||||
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
|
(select t2.a+t3.a from t1 left join (t2 join t3) on t2.a=t1.a and t3.a=t1.a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 9 func 1 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func 1 Using where
|
||||||
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
2 MATERIALIZED t1 index a a 5 NULL 10 Using where; Using index
|
||||||
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
2 MATERIALIZED t2 ref a a 5 test.t1.a 1 Using index
|
||||||
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
2 MATERIALIZED t3 ref a a 5 test.t1.a 1 Using index
|
||||||
@ -723,7 +723,7 @@ The following must use loose index scan over t3, key a:
|
|||||||
explain select count(a) from t2 where a in ( SELECT a FROM t3);
|
explain select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 index a a 5 NULL 1000 Using index
|
1 PRIMARY t2 index a a 5 NULL 1000 Using index
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t3 index a a 5 NULL 30000 Using index
|
2 MATERIALIZED t3 index a a 5 NULL 30000 Using index
|
||||||
select count(a) from t2 where a in ( SELECT a FROM t3);
|
select count(a) from t2 where a in ( SELECT a FROM t3);
|
||||||
count(a)
|
count(a)
|
||||||
@ -880,7 +880,7 @@ SELECT * FROM t3 LEFT JOIN (v1,t2) ON t3.a = t2.a
|
|||||||
WHERE t3.b IN (SELECT b FROM t4);
|
WHERE t3.b IN (SELECT b FROM t4);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 1
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 1
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 1 Using where
|
||||||
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2
|
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 2
|
||||||
2 MATERIALIZED t4 ALL NULL NULL NULL NULL 2
|
2 MATERIALIZED t4 ALL NULL NULL NULL NULL 2
|
||||||
@ -891,6 +891,20 @@ a b b a
|
|||||||
c c NULL NULL
|
c c NULL NULL
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1,t2,t3,t4;
|
DROP TABLE t1,t2,t3,t4;
|
||||||
|
#
|
||||||
|
# BUG#912538: Wrong result (missing rows) with semijoin=on, firstmatch=on, ...
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT NOT NULL, UNIQUE KEY(a) );
|
||||||
|
INSERT INTO t1 VALUES (1),(2),(3),(4);
|
||||||
|
CREATE TABLE t2 ( b INT, c INT ) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES (1,1);
|
||||||
|
SELECT * FROM t1, t2 WHERE c IN (SELECT c FROM t1, t2 WHERE a = b);
|
||||||
|
a b c
|
||||||
|
1 1 1
|
||||||
|
2 1 1
|
||||||
|
3 1 1
|
||||||
|
4 1 1
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# This must be the last in the file:
|
# This must be the last in the file:
|
||||||
set optimizer_switch=@subselect_sj2_tmp;
|
set optimizer_switch=@subselect_sj2_tmp;
|
||||||
set optimizer_switch=default;
|
set optimizer_switch=default;
|
||||||
|
@ -815,7 +815,7 @@ INSERT INTO t2 VALUES (1,'i','iiii','iiii','iiii','iiii','ffff','ffff','ffff','f
|
|||||||
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
|
EXPLAIN EXTENDED SELECT pk FROM t1 WHERE (a, b) IN (SELECT a, b FROM t2 WHERE pk > 0);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 13 func,func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 11 func,func 1 100.00
|
||||||
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 100.00 Using index condition; Rowid-ordered scan
|
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 100.00 Using index condition; Rowid-ordered scan
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`pk` > 0))
|
Note 1003 select `test`.`t1`.`pk` AS `pk` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`pk` > 0))
|
||||||
@ -1066,8 +1066,8 @@ AND t1.val IN (SELECT t3.val FROM t3
|
|||||||
WHERE t3.val LIKE 'a%' OR t3.val LIKE 'e%');
|
WHERE t3.val LIKE 'a%' OR t3.val LIKE 'e%');
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 5
|
||||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 14 func 1
|
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 13 func 1
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 14 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 13 func 1
|
||||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using where
|
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 5 Using where
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 Using where
|
||||||
SELECT *
|
SELECT *
|
||||||
@ -1244,6 +1244,364 @@ IN (SELECT t3.pk, t3.pk FROM t2 LEFT JOIN t3 ON t3.varchar_key)
|
|||||||
AND pk = 9;
|
AND pk = 9;
|
||||||
datetime_key
|
datetime_key
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# BUG#53060: LooseScan semijoin strategy does not return all rows
|
||||||
|
#
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=on,materialization=off';
|
||||||
|
set optimizer_switch='firstmatch=off,loosescan=on';
|
||||||
|
CREATE TABLE t1 (i INTEGER);
|
||||||
|
INSERT INTO t1 VALUES (1), (2), (3), (4), (5);
|
||||||
|
CREATE TABLE t2 (i INTEGER, j INTEGER, KEY k(i, j));
|
||||||
|
INSERT INTO t2 VALUES (1, 0), (1, 1), (2, 0), (2, 1);
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t2 index k k 10 NULL 4 Using where; Using index; LooseScan
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
|
||||||
|
SELECT * FROM t1 WHERE (i) IN (SELECT i FROM t2 where j > 0);
|
||||||
|
i
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
#
|
||||||
|
# BUG#49453: re-execution of prepared statement with view
|
||||||
|
# and semijoin crashes
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (city VARCHAR(50), country_id INT);
|
||||||
|
CREATE TABLE t2 (country_id INT, country VARCHAR(50));
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
('Batna',2),('Bchar',2),('Skikda',2),('Tafuna',3),('Algeria',2) ;
|
||||||
|
INSERT INTO t2 VALUES (2,'Algeria'),(2,'AlgeriaDup'),(3,'XAmerican Samoa');
|
||||||
|
CREATE VIEW v1 AS
|
||||||
|
SELECT country_id as vf_country_id
|
||||||
|
FROM t2
|
||||||
|
WHERE LEFT(country,1) = "A";
|
||||||
|
PREPARE stmt FROM "
|
||||||
|
SELECT city, country_id
|
||||||
|
FROM t1
|
||||||
|
WHERE country_id IN (SELECT vf_country_id FROM v1);
|
||||||
|
";
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
city country_id
|
||||||
|
Batna 2
|
||||||
|
Bchar 2
|
||||||
|
Skikda 2
|
||||||
|
Algeria 2
|
||||||
|
EXECUTE stmt;
|
||||||
|
city country_id
|
||||||
|
Batna 2
|
||||||
|
Bchar 2
|
||||||
|
Skikda 2
|
||||||
|
Algeria 2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
DROP VIEW v1;
|
||||||
|
#
|
||||||
|
# Bug#54437 Extra rows with LEFT JOIN + semijoin
|
||||||
|
#
|
||||||
|
create table t1 (a int);
|
||||||
|
create table t2 (a int);
|
||||||
|
create table t3 (a int);
|
||||||
|
insert into t1 values(1),(1);
|
||||||
|
insert into t2 values(1),(1),(1),(1);
|
||||||
|
insert into t3 values(2),(2);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='materialization=off';
|
||||||
|
set optimizer_switch='semijoin=off';
|
||||||
|
explain
|
||||||
|
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 4 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
|
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch='semijoin=on';
|
||||||
|
explain
|
||||||
|
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 4 Using where; Start temporary; Using join buffer (flat, BNL join)
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using where; End temporary; Using join buffer (incremental, BNL join)
|
||||||
|
select * from t1 where t1.a in (select t2.a from t2 left join t3 on t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
#
|
||||||
|
# Bug#55955: crash in MEMORY engine with IN(LEFT JOIN (JOIN))
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
CREATE TABLE t3 (a INT);
|
||||||
|
INSERT INTO t1 VALUES(1),(1);
|
||||||
|
INSERT INTO t2 VALUES(1),(1);
|
||||||
|
INSERT INTO t3 VALUES(2),(2);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=off,materialization=off';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 DEPENDENT SUBQUERY t2inner ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||||
|
2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch='semijoin=off,materialization=on';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2
|
||||||
|
2 MATERIALIZED t2inner ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch='semijoin=on,materialization=off';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary; Using join buffer (flat, BNL join)
|
||||||
|
1 PRIMARY t2inner ALL NULL NULL NULL NULL 2 Using join buffer (incremental, BNL join)
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using where; End temporary; Using join buffer (incremental, BNL join)
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a
|
||||||
|
FROM t2 LEFT JOIN (t2 AS t2inner, t3) ON t2.a=t3.a);
|
||||||
|
a
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# BUG#52329 - Wrong result: subquery materialization, IN,
|
||||||
|
# non-null field followed by nullable
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a1 CHAR(8) NOT NULL, a2 char(8) NOT NULL);
|
||||||
|
CREATE TABLE t2a (b1 char(8), b2 char(8));
|
||||||
|
CREATE TABLE t2b (b1 CHAR(8), b2 char(8) NOT NULL);
|
||||||
|
CREATE TABLE t2c (b1 CHAR(8) NOT NULL, b2 char(8));
|
||||||
|
INSERT INTO t1 VALUES ('1 - 12', '2 - 22');
|
||||||
|
INSERT INTO t2a VALUES ('1 - 11', '2 - 21'),
|
||||||
|
('1 - 11', '2 - 21'),
|
||||||
|
('1 - 12', '2 - 22'),
|
||||||
|
('1 - 12', '2 - 22'),
|
||||||
|
('1 - 13', '2 - 23');
|
||||||
|
INSERT INTO t2b SELECT * FROM t2a;
|
||||||
|
INSERT INTO t2c SELECT * FROM t2a;
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=off,materialization=on';
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE (a1, a2) IN (
|
||||||
|
SELECT b1, b2 FROM t2c WHERE b1 > '0' GROUP BY b1, b2);
|
||||||
|
a1 a2
|
||||||
|
1 - 12 2 - 22
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE (a1, a2) IN (
|
||||||
|
SELECT b1, b2 FROM t2a WHERE b1 > '0');
|
||||||
|
a1 a2
|
||||||
|
1 - 12 2 - 22
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE (a1, a2) IN (
|
||||||
|
SELECT b1, b2 FROM t2b WHERE b1 > '0');
|
||||||
|
a1 a2
|
||||||
|
1 - 12 2 - 22
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE (a1, a2) IN (
|
||||||
|
SELECT b1, b2 FROM t2c WHERE b1 > '0');
|
||||||
|
a1 a2
|
||||||
|
1 - 12 2 - 22
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2a,t2b,t2c;
|
||||||
|
#
|
||||||
|
# Bug#57623: subquery within before insert trigger causes crash (sj=on)
|
||||||
|
#
|
||||||
|
CREATE TABLE ot1(a INT);
|
||||||
|
CREATE TABLE ot2(a INT);
|
||||||
|
CREATE TABLE ot3(a INT);
|
||||||
|
CREATE TABLE it1(a INT);
|
||||||
|
INSERT INTO ot1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
|
||||||
|
INSERT INTO ot2 VALUES(0),(2),(4),(6);
|
||||||
|
INSERT INTO ot3 VALUES(0),(3),(6);
|
||||||
|
INSERT INTO it1 VALUES(0),(1),(2),(3),(4),(5),(6),(7);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=on';
|
||||||
|
set optimizer_switch='materialization=off';
|
||||||
|
explain SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot1 ALL NULL NULL NULL NULL 8
|
||||||
|
1 PRIMARY ot3 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||||
|
1 PRIMARY ot2 ALL NULL NULL NULL NULL 4 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
2 DEPENDENT SUBQUERY it1 ALL NULL NULL NULL NULL 8 Using where
|
||||||
|
SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
6 6 6
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
7 NULL NULL
|
||||||
|
prepare s from 'SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1)';
|
||||||
|
execute s;
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
6 6 6
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
7 NULL NULL
|
||||||
|
execute s;
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
6 6 6
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
7 NULL NULL
|
||||||
|
deallocate prepare s;
|
||||||
|
set optimizer_switch='materialization=on';
|
||||||
|
explain SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY ot1 ALL NULL NULL NULL NULL 8
|
||||||
|
1 PRIMARY ot3 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||||
|
1 PRIMARY ot2 ALL NULL NULL NULL NULL 4 Using where; Using join buffer (incremental, BNL join)
|
||||||
|
2 MATERIALIZED it1 ALL NULL NULL NULL NULL 8
|
||||||
|
SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1);
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
6 6 6
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
7 NULL NULL
|
||||||
|
prepare s from 'SELECT *
|
||||||
|
FROM ot1
|
||||||
|
LEFT JOIN
|
||||||
|
(ot2 JOIN ot3 on ot2.a=ot3.a)
|
||||||
|
ON ot1.a=ot2.a AND ot1.a IN (SELECT a from it1)';
|
||||||
|
execute s;
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
6 6 6
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
7 NULL NULL
|
||||||
|
execute s;
|
||||||
|
a a a
|
||||||
|
0 0 0
|
||||||
|
6 6 6
|
||||||
|
1 NULL NULL
|
||||||
|
2 NULL NULL
|
||||||
|
3 NULL NULL
|
||||||
|
4 NULL NULL
|
||||||
|
5 NULL NULL
|
||||||
|
7 NULL NULL
|
||||||
|
deallocate prepare s;
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE ot1, ot2, ot3, it1;
|
||||||
|
#
|
||||||
|
# Bug#59919/11766739: Crash in tmp_table_param::init() with semijoin=on
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (f1 INTEGER) ENGINE=MyISAM;
|
||||||
|
CREATE TABLE t2 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM;
|
||||||
|
CREATE TABLE t3 (f1 INTEGER, f2 INTEGER) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
INSERT INTO t2 VALUES (1,1), (2,1);
|
||||||
|
INSERT INTO t3 VALUES
|
||||||
|
(1,1), (2,1), (5,4), (7,3), (8,2), (8,1), (7,3),
|
||||||
|
(9,5), (4,3), (7,2), (7,7), (3,1), (5,8), (9,7);
|
||||||
|
set @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
set optimizer_switch='semijoin=off,materialization=on';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t3
|
||||||
|
WHERE f2 IN (SELECT t1.f1
|
||||||
|
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 14 Using where
|
||||||
|
2 MATERIALIZED t1 system NULL NULL NULL NULL 1
|
||||||
|
2 MATERIALIZED b1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED b2 ALL NULL NULL NULL NULL 2
|
||||||
|
SELECT * FROM t3
|
||||||
|
WHERE f2 IN (SELECT t1.f1
|
||||||
|
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
|
||||||
|
f1 f2
|
||||||
|
1 1
|
||||||
|
2 1
|
||||||
|
8 1
|
||||||
|
3 1
|
||||||
|
set optimizer_switch='semijoin=on,materialization=on';
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t3
|
||||||
|
WHERE f2 IN (SELECT t1.f1
|
||||||
|
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 1
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 14 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED b1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED b2 ALL NULL NULL NULL NULL 2
|
||||||
|
SELECT * FROM t3
|
||||||
|
WHERE f2 IN (SELECT t1.f1
|
||||||
|
FROM t1 LEFT OUTER JOIN (t2 AS b1 JOIN t2 AS b2 ON TRUE) ON TRUE);
|
||||||
|
f1 f2
|
||||||
|
1 1
|
||||||
|
2 1
|
||||||
|
8 1
|
||||||
|
3 1
|
||||||
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE t1, t2, t3 ;
|
||||||
|
#
|
||||||
#
|
#
|
||||||
# BUG#784723: Wrong result with semijoin + nested subqueries in maria-5.3
|
# BUG#784723: Wrong result with semijoin + nested subqueries in maria-5.3
|
||||||
#
|
#
|
||||||
@ -1288,9 +1646,9 @@ select * from t1 A, t1 B
|
|||||||
where A.a = B.a and A.a in (select a from t2 C) and B.a in (select a from t2 D);
|
where A.a = B.a and A.a in (select a from t2 C) and B.a in (select a from t2 D);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY A ALL NULL NULL NULL NULL 3
|
1 PRIMARY A ALL NULL NULL NULL NULL 3
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY B ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY B ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED C ALL NULL NULL NULL NULL 3
|
2 MATERIALIZED C ALL NULL NULL NULL NULL 3
|
||||||
3 MATERIALIZED D ALL NULL NULL NULL NULL 3
|
3 MATERIALIZED D ALL NULL NULL NULL NULL 3
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
@ -1635,7 +1993,7 @@ explain extended
|
|||||||
SELECT * FROM t1 NATURAL LEFT JOIN (t2, t3) WHERE t2.f3 IN (SELECT * FROM t4);
|
SELECT * FROM t1 NATURAL LEFT JOIN (t2, t3) WHERE t2.f3 IN (SELECT * FROM t4);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 100.00
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 5 100.00 Using where; Using join buffer (incremental, BNL join)
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 5 100.00 Using where; Using join buffer (incremental, BNL join)
|
||||||
2 MATERIALIZED t4 index f2 f2 5 NULL 2 100.00 Using index
|
2 MATERIALIZED t4 index f2 f2 5 NULL 2 100.00 Using index
|
||||||
@ -1979,7 +2337,7 @@ explain
|
|||||||
SELECT * FROM t1 WHERE (a) IN (SELECT a FROM t2 JOIN t3 ON b = a);
|
SELECT * FROM t1 WHERE (a) IN (SELECT a FROM t2 JOIN t3 ON b = a);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 9
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 9
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 13 Using where
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 13 Using where
|
||||||
2 MATERIALIZED t2 ref b b 4 test.t3.a 1 Using index
|
2 MATERIALIZED t2 ref b b 4 test.t3.a 1 Using index
|
||||||
SELECT * FROM t1 WHERE (a) IN (SELECT a FROM t2 JOIN t3 ON b = a);
|
SELECT * FROM t1 WHERE (a) IN (SELECT a FROM t2 JOIN t3 ON b = a);
|
||||||
@ -2099,7 +2457,7 @@ EXPLAIN
|
|||||||
SELECT * FROM t1 RIGHT JOIN t2 ON b = a WHERE t2.b IN (SELECT c FROM t3);
|
SELECT * FROM t1 RIGHT JOIN t2 ON b = a WHERE t2.b IN (SELECT c FROM t3);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 2
|
||||||
SELECT * FROM t1 RIGHT JOIN t2 ON b = a WHERE t2.b IN (SELECT c FROM t3);
|
SELECT * FROM t1 RIGHT JOIN t2 ON b = a WHERE t2.b IN (SELECT c FROM t3);
|
||||||
@ -2166,6 +2524,124 @@ c c
|
|||||||
set optimizer_prune_level= @opl_901399;
|
set optimizer_prune_level= @opl_901399;
|
||||||
set optimizer_switch= @os_091399;
|
set optimizer_switch= @os_091399;
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#912510: Crash in do_copy_not_null with semijoin=ON, firstmatch=ON, aggregate ...
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(1) NOT NULL );
|
||||||
|
INSERT INTO t1 VALUES ('k'),('l');
|
||||||
|
CREATE TABLE t2 ( b VARCHAR(1) NOT NULL, KEY(b) );
|
||||||
|
INSERT INTO t2 VALUES ('k'),('l');
|
||||||
|
CREATE TABLE t3 ( c VARCHAR(1) NOT NULL, KEY(c) );
|
||||||
|
INSERT INTO t3 VALUES ('m'),('n');
|
||||||
|
SELECT a, COUNT(*) FROM t1
|
||||||
|
WHERE a IN (
|
||||||
|
SELECT b FROM t2 force index(b), t3 force index(c)
|
||||||
|
WHERE c = b AND b = a
|
||||||
|
);
|
||||||
|
a COUNT(*)
|
||||||
|
NULL 0
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# BUG#920255: Wrong result (extra rows) with loosescan and IN subquery
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a INT PRIMARY KEY, b INT, KEY(b) );
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(1,2),(2,1),(3,3),(4,2),(5,5),
|
||||||
|
(6,3),(7,1),(8,4),(9,3),(10,2);
|
||||||
|
CREATE TABLE t2 ( c INT, d INT, UNIQUE KEY(c) );
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(1,2),(2,1),(3,3),(4,2),(5,5),(6,3),(7,1);
|
||||||
|
SELECT a, b, d FROM t1, t2
|
||||||
|
WHERE ( b, d ) IN
|
||||||
|
( SELECT b, d FROM t1, t2 WHERE b = c );
|
||||||
|
a b d
|
||||||
|
1 2 1
|
||||||
|
1 2 1
|
||||||
|
2 1 2
|
||||||
|
2 1 2
|
||||||
|
3 3 3
|
||||||
|
3 3 3
|
||||||
|
4 2 1
|
||||||
|
4 2 1
|
||||||
|
5 5 5
|
||||||
|
6 3 3
|
||||||
|
6 3 3
|
||||||
|
7 1 2
|
||||||
|
7 1 2
|
||||||
|
8 4 2
|
||||||
|
8 4 2
|
||||||
|
9 3 3
|
||||||
|
9 3 3
|
||||||
|
10 2 1
|
||||||
|
10 2 1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# BUG#920713: Wrong result (missing rows) with firstmatch+BNL, IN subquery, ...
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(1) ) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES ('e'),('w'),('a'),('h'),('x'),('k'),('g');
|
||||||
|
CREATE TABLE t2 ( b INT, c VARCHAR(1) );
|
||||||
|
INSERT INTO t2 VALUES (0,'j'),(8,'v');
|
||||||
|
SELECT * FROM t1 alias1, t2 alias2
|
||||||
|
WHERE alias2.c IN (
|
||||||
|
SELECT alias4.c FROM t1 alias3, t2 alias4
|
||||||
|
);
|
||||||
|
a b c
|
||||||
|
e 0 j
|
||||||
|
e 8 v
|
||||||
|
w 0 j
|
||||||
|
w 8 v
|
||||||
|
a 0 j
|
||||||
|
a 8 v
|
||||||
|
h 0 j
|
||||||
|
h 8 v
|
||||||
|
x 0 j
|
||||||
|
x 8 v
|
||||||
|
k 0 j
|
||||||
|
k 8 v
|
||||||
|
g 0 j
|
||||||
|
g 8 v
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# BUG#923246: Loosescan reports different result than other semijoin methods
|
||||||
|
#
|
||||||
|
set @tmp_923246= @@optimizer_switch;
|
||||||
|
set optimizer_switch='mrr=on,materialization=off';
|
||||||
|
create table t0 (a int);
|
||||||
|
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
|
||||||
|
create table t1 (kp1 int, kp2 int, c int, filler char(100), key(kp1, kp2));
|
||||||
|
insert into t1 select A.a+10*(B.a+10*C.a), 0, 0, 'filler' from t0 A, t0 B, t0 C;
|
||||||
|
insert into t1 select * from t1 where kp1 < 20;
|
||||||
|
create table t3 (a int);
|
||||||
|
insert into t3 select A.a + 10*B.a from t0 A, t0 B;
|
||||||
|
select * from t3 where a in (select kp1 from t1 where kp1<20);
|
||||||
|
a
|
||||||
|
0
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
10
|
||||||
|
11
|
||||||
|
12
|
||||||
|
13
|
||||||
|
14
|
||||||
|
15
|
||||||
|
16
|
||||||
|
17
|
||||||
|
18
|
||||||
|
19
|
||||||
|
explain select * from t3 where a in (select kp1 from t1 where kp1<20);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 range kp1 kp1 5 NULL 48 Using where; Using index; LooseScan
|
||||||
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
||||||
|
drop table t0,t1,t3;
|
||||||
|
set optimizer_switch= @tmp_923246;
|
||||||
set optimizer_switch=@subselect_sj_tmp;
|
set optimizer_switch=@subselect_sj_tmp;
|
||||||
#
|
#
|
||||||
# BUG#49129: Wrong result with IN-subquery with join_cache_level=6 and firstmatch=off
|
# BUG#49129: Wrong result with IN-subquery with join_cache_level=6 and firstmatch=off
|
||||||
@ -2247,6 +2723,158 @@ w 5 19:11:10
|
|||||||
set optimizer_switch=@save_optimizer_switch;
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# BUG#912513: Wrong result (missing rows) with join_cache_hashed+materialization+semijoin=on
|
||||||
|
#
|
||||||
|
set @os_912513= @@optimizer_switch;
|
||||||
|
set @jcl_912513= @@join_cache_level;
|
||||||
|
SET optimizer_switch = 'semijoin=on,materialization=on,join_cache_hashed=on';
|
||||||
|
SET join_cache_level = 3;
|
||||||
|
CREATE TABLE t1 ( a INT, b INT, KEY(a) );
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7);
|
||||||
|
CREATE TABLE t2 ( c INT );
|
||||||
|
INSERT INTO t2 VALUES (1),(2),(3),(4),(5),(6),(7);
|
||||||
|
SELECT alias1.* FROM
|
||||||
|
t1 AS alias1 INNER JOIN t1 AS alias2
|
||||||
|
ON alias2.a = alias1.b
|
||||||
|
WHERE alias1.b IN (
|
||||||
|
SELECT a FROM t1, t2
|
||||||
|
);
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
2 2
|
||||||
|
3 3
|
||||||
|
4 4
|
||||||
|
5 5
|
||||||
|
6 6
|
||||||
|
7 7
|
||||||
|
DROP table t1, t2;
|
||||||
|
set @@optimizer_switch= @os_912513;
|
||||||
|
set @@join_cache_level= @jcl_912513;
|
||||||
|
# End
|
||||||
|
#
|
||||||
|
# BUG#934342: outer join + semijoin materialization
|
||||||
|
# + join_cache_level > 2
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a varchar(1), b varchar(1), INDEX idx_a(a) );
|
||||||
|
INSERT INTO t1 VALUES ('v','v'), ('w','w'), ('t','t');
|
||||||
|
CREATE TABLE t2 (c varchar(1), INDEX idx_c(c) );
|
||||||
|
INSERT INTO t2 VALUES ('v'), ('v'), ('s'), ('j');
|
||||||
|
CREATE TABLE t3 (c varchar(1), d varchar(1), INDEX idx_c(c) );
|
||||||
|
INSERT INTO t3 VALUES ('v','v'), ('v','v'), ('s','s'), ('j','j');
|
||||||
|
INSERT INTO t3 VALUES ('m','m'), ('d','d'), ('k','k'), ('m','m');
|
||||||
|
set @tmp_otimizer_switch= @@optimizer_switch;
|
||||||
|
set @tmp_join_cache_level=@@join_cache_level;
|
||||||
|
set optimizer_switch = 'materialization=on,semijoin=on,join_cache_hashed=on';
|
||||||
|
set join_cache_level=0;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON (c = b)
|
||||||
|
WHERE (a, b) IN (SELECT a, b FROM t1 t);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL idx_a NULL NULL NULL 3
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||||
|
1 PRIMARY t2 ref idx_c idx_c 4 test.t1.b 2 Using where; Using index
|
||||||
|
2 MATERIALIZED t ALL idx_a NULL NULL NULL 3
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON (c = b)
|
||||||
|
WHERE (a, b) IN (SELECT a, b FROM t1 t);
|
||||||
|
a b c
|
||||||
|
v v v
|
||||||
|
v v v
|
||||||
|
w w NULL
|
||||||
|
t t NULL
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 LEFT JOIN t3 ON (c = b)
|
||||||
|
WHERE (a, b) IN (SELECT a, b FROM t1 t);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL idx_a NULL NULL NULL 3
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||||
|
1 PRIMARY t3 ref idx_c idx_c 4 test.t1.b 2 Using where
|
||||||
|
2 MATERIALIZED t ALL idx_a NULL NULL NULL 3
|
||||||
|
SELECT * FROM t1 LEFT JOIN t3 ON (c = b)
|
||||||
|
WHERE (a, b) IN (SELECT a, b FROM t1 t);
|
||||||
|
a b c d
|
||||||
|
v v v v
|
||||||
|
v v v v
|
||||||
|
w w NULL NULL
|
||||||
|
t t NULL NULL
|
||||||
|
set join_cache_level=6;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON (c = b)
|
||||||
|
WHERE (a, b) IN (SELECT a, b FROM t1 t);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL idx_a NULL NULL NULL 3
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||||
|
1 PRIMARY t2 ref idx_c idx_c 4 test.t1.b 2 Using where; Using index
|
||||||
|
2 MATERIALIZED t ALL idx_a NULL NULL NULL 3
|
||||||
|
SELECT * FROM t1 LEFT JOIN t2 ON (c = b)
|
||||||
|
WHERE (a, b) IN (SELECT a, b FROM t1 t);
|
||||||
|
a b c
|
||||||
|
v v v
|
||||||
|
v v v
|
||||||
|
w w NULL
|
||||||
|
t t NULL
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1 LEFT JOIN t3 ON (c = b)
|
||||||
|
WHERE (a, b) IN (SELECT a, b FROM t1 t);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL idx_a NULL NULL NULL 3
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||||
|
1 PRIMARY t3 ref idx_c idx_c 4 test.t1.b 2 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan
|
||||||
|
2 MATERIALIZED t ALL idx_a NULL NULL NULL 3
|
||||||
|
SELECT * FROM t1 LEFT JOIN t3 ON (c = b)
|
||||||
|
WHERE (a, b) IN (SELECT a, b FROM t1 t);
|
||||||
|
a b c d
|
||||||
|
v v v v
|
||||||
|
v v v v
|
||||||
|
w w NULL NULL
|
||||||
|
t t NULL NULL
|
||||||
|
set optimizer_switch=@tmp_optimizer_switch;
|
||||||
|
set join_cache_level=@tmp_join_cache_level;
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
# End
|
||||||
|
#
|
||||||
|
# BUG#934348: GROUP BY with HAVING + semijoin materialization
|
||||||
|
# + join_cache_level > 2
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a varchar(1), INDEX idx_a(a));
|
||||||
|
INSERT INTO t1 VALUES ('c'), ('v'), ('c');
|
||||||
|
CREATE TABLE t2 (b varchar(1));
|
||||||
|
INSERT INTO t2 VALUES ('v'), ('c');
|
||||||
|
set @tmp_otimizer_switch= @@optimizer_switch;
|
||||||
|
set @tmp_join_cache_level=@@join_cache_level;
|
||||||
|
set optimizer_switch = 'materialization=on,semijoin=on,join_cache_hashed=on';
|
||||||
|
set join_cache_level=0;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT a FROM t1 t WHERE a IN (SELECT b FROM t1, t2 WHERE b = a)
|
||||||
|
GROUP BY a HAVING a != 'z';
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 Using temporary; Using filesort
|
||||||
|
1 PRIMARY t ref idx_a idx_a 4 test.t2.b 2 Using index
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED t1 ref idx_a idx_a 4 test.t2.b 2 Using index
|
||||||
|
SELECT a FROM t1 t WHERE a IN (SELECT b FROM t1, t2 WHERE b = a)
|
||||||
|
GROUP BY a HAVING a != 'z';
|
||||||
|
a
|
||||||
|
c
|
||||||
|
v
|
||||||
|
set join_cache_level=6;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT a FROM t1 t WHERE a IN (SELECT b FROM t1, t2 WHERE b = a)
|
||||||
|
GROUP BY a HAVING a != 'z';
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 Using temporary; Using filesort
|
||||||
|
1 PRIMARY t ref idx_a idx_a 4 test.t2.b 2 Using index
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
2 MATERIALIZED t1 ref idx_a idx_a 4 test.t2.b 2 Using index
|
||||||
|
SELECT a FROM t1 t WHERE a IN (SELECT b FROM t1, t2 WHERE b = a)
|
||||||
|
GROUP BY a HAVING a != 'z';
|
||||||
|
a
|
||||||
|
c
|
||||||
|
v
|
||||||
|
set optimizer_switch=@tmp_optimizer_switch;
|
||||||
|
set join_cache_level=@tmp_join_cache_level;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# End
|
# End
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
show variables like 'join_cache_level';
|
show variables like 'join_cache_level';
|
||||||
|
@ -47,7 +47,7 @@ explain extended
|
|||||||
select * from t1 where a1 in (select b1 from t2 where b1 > '0');
|
select * from t1 where a1 in (select b1 from t2 where b1 > '0');
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 9 func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func 1 100.00
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b1` > '0'))
|
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b1` > '0'))
|
||||||
@ -59,7 +59,7 @@ explain extended
|
|||||||
select * from t1 where a1 in (select b1 from t2 where b1 > '0' group by b1);
|
select * from t1 where a1 in (select b1 from t2 where b1 > '0' group by b1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 9 func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func 1 100.00
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b1` > '0'))
|
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b1` > '0'))
|
||||||
@ -71,7 +71,7 @@ explain extended
|
|||||||
select * from t1 where (a1, a2) in (select b1, b2 from t2 where b1 > '0' group by b1, b2);
|
select * from t1 where (a1, a2) in (select b1, b2 from t2 where b1 > '0' group by b1, b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 func,func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 func,func 1 100.00
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b1` > '0'))
|
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from `test`.`t1` semi join (`test`.`t2`) where ((`test`.`t2`.`b1` > '0'))
|
||||||
@ -83,7 +83,7 @@ explain extended
|
|||||||
select * from t1 where (a1, a2) in (select b1, min(b2) from t2 where b1 > '0' group by b1);
|
select * from t1 where (a1, a2) in (select b1, min(b2) from t2 where b1 > '0' group by b1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 test.t1.a1,test.t1.a2 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 test.t1.a1,test.t1.a2 1 100.00
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where; Using temporary
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where; Using temporary
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from <materialize> (select `test`.`t2`.`b1`,min(`test`.`t2`.`b2`) from `test`.`t2` where (`test`.`t2`.`b1` > '0') group by `test`.`t2`.`b1`) join `test`.`t1` where ((`<subquery2>`.`min(b2)` = `test`.`t1`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1`.`a1`))
|
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from <materialize> (select `test`.`t2`.`b1`,min(`test`.`t2`.`b2`) from `test`.`t2` where (`test`.`t2`.`b1` > '0') group by `test`.`t2`.`b1`) join `test`.`t1` where ((`<subquery2>`.`min(b2)` = `test`.`t1`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1`.`a1`))
|
||||||
@ -106,7 +106,7 @@ explain extended
|
|||||||
select * from t1i where a1 in (select max(b1) from t2i where b1 > '0' group by b1);
|
select * from t1i where a1 in (select max(b1) from t2i where b1 > '0' group by b1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1i index it1i1,it1i3 # 18 # 3 100.00 #
|
1 PRIMARY t1i index it1i1,it1i3 # 18 # 3 100.00 #
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key # 9 # 1 100.00 #
|
1 PRIMARY <subquery2> eq_ref distinct_key # 8 # 1 100.00 #
|
||||||
2 MATERIALIZED t2i index it2i1,it2i3 # 9 # 5 100.00 #
|
2 MATERIALIZED t2i index it2i1,it2i3 # 9 # 5 100.00 #
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from <materialize> (select max(`test`.`t2i`.`b1`) from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') group by `test`.`t2i`.`b1`) join `test`.`t1i` where (`<subquery2>`.`max(b1)` = `test`.`t1i`.`a1`)
|
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from <materialize> (select max(`test`.`t2i`.`b1`) from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') group by `test`.`t2i`.`b1`) join `test`.`t1i` where (`<subquery2>`.`max(b1)` = `test`.`t1i`.`a1`)
|
||||||
@ -153,7 +153,7 @@ explain extended
|
|||||||
select * from t1 where (a1, a2) in (select b1, max(b2) from t2i group by b1);
|
select * from t1 where (a1, a2) in (select b1, max(b2) from t2i group by b1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 test.t1.a1,test.t1.a2 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 test.t1.a1,test.t1.a2 1 100.00
|
||||||
2 MATERIALIZED t2i range NULL it2i3 9 NULL 3 100.00 Using index for group-by
|
2 MATERIALIZED t2i range NULL it2i3 9 NULL 3 100.00 Using index for group-by
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from <materialize> (select `test`.`t2i`.`b1`,max(`test`.`t2i`.`b2`) from `test`.`t2i` group by `test`.`t2i`.`b1`) join `test`.`t1` where ((`<subquery2>`.`max(b2)` = `test`.`t1`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1`.`a1`))
|
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from <materialize> (select `test`.`t2i`.`b1`,max(`test`.`t2i`.`b2`) from `test`.`t2i` group by `test`.`t2i`.`b1`) join `test`.`t1` where ((`<subquery2>`.`max(b2)` = `test`.`t1`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1`.`a1`))
|
||||||
@ -165,12 +165,12 @@ prepare st1 from "explain select * from t1 where (a1, a2) in (select b1, max(b2)
|
|||||||
execute st1;
|
execute st1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 test.t1.a1,test.t1.a2 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 test.t1.a1,test.t1.a2 1
|
||||||
2 MATERIALIZED t2i range NULL it2i3 9 NULL 3 Using index for group-by
|
2 MATERIALIZED t2i range NULL it2i3 9 NULL 3 Using index for group-by
|
||||||
execute st1;
|
execute st1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 test.t1.a1,test.t1.a2 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 test.t1.a1,test.t1.a2 1
|
||||||
2 MATERIALIZED t2i range NULL it2i3 9 NULL 3 Using index for group-by
|
2 MATERIALIZED t2i range NULL it2i3 9 NULL 3 Using index for group-by
|
||||||
prepare st2 from "select * from t1 where (a1, a2) in (select b1, max(b2) from t2i group by b1)";
|
prepare st2 from "select * from t1 where (a1, a2) in (select b1, max(b2) from t2i group by b1)";
|
||||||
execute st2;
|
execute st2;
|
||||||
@ -185,7 +185,7 @@ explain extended
|
|||||||
select * from t1 where (a1, a2) in (select b1, min(b2) from t2i where b1 > '0' group by b1);
|
select * from t1 where (a1, a2) in (select b1, min(b2) from t2i where b1 > '0' group by b1);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 test.t1.a1,test.t1.a2 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 test.t1.a1,test.t1.a2 1 100.00
|
||||||
2 MATERIALIZED t2i range it2i1,it2i3 it2i3 18 NULL 3 100.00 Using where; Using index for group-by
|
2 MATERIALIZED t2i range it2i1,it2i3 it2i3 18 NULL 3 100.00 Using where; Using index for group-by
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from <materialize> (select `test`.`t2i`.`b1`,min(`test`.`t2i`.`b2`) from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') group by `test`.`t2i`.`b1`) join `test`.`t1` where ((`<subquery2>`.`min(b2)` = `test`.`t1`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1`.`a1`))
|
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from <materialize> (select `test`.`t2i`.`b1`,min(`test`.`t2i`.`b2`) from `test`.`t2i` where (`test`.`t2i`.`b1` > '0') group by `test`.`t2i`.`b1`) join `test`.`t1` where ((`<subquery2>`.`min(b2)` = `test`.`t1`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1`.`a1`))
|
||||||
@ -233,7 +233,7 @@ explain extended
|
|||||||
select * from t1 where (a1, a2) in (select b1, b2 from t2 order by b1, b2);
|
select * from t1 where (a1, a2) in (select b1, b2 from t2 order by b1, b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 test.t1.a1,test.t1.a2 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 test.t1.a1,test.t1.a2 1 100.00
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from <materialize> (select `test`.`t2`.`b1`,`test`.`t2`.`b2` from `test`.`t2` order by `test`.`t2`.`b1`,`test`.`t2`.`b2`) join `test`.`t1` where ((`<subquery2>`.`b2` = `test`.`t1`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1`.`a1`))
|
Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2` from <materialize> (select `test`.`t2`.`b1`,`test`.`t2`.`b2` from `test`.`t2` order by `test`.`t2`.`b1`,`test`.`t2`.`b2`) join `test`.`t1` where ((`<subquery2>`.`b2` = `test`.`t1`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1`.`a1`))
|
||||||
@ -245,7 +245,7 @@ explain extended
|
|||||||
select * from t1i where (a1, a2) in (select b1, b2 from t2i order by b1, b2);
|
select * from t1i where (a1, a2) in (select b1, b2 from t2i order by b1, b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1i index it1i1,it1i2,it1i3 it1i3 18 NULL 3 100.00 Using where; Using index
|
1 PRIMARY t1i index it1i1,it1i2,it1i3 it1i3 18 NULL 3 100.00 Using where; Using index
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 test.t1i.a1,test.t1i.a2 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 test.t1i.a1,test.t1i.a2 1 100.00
|
||||||
2 MATERIALIZED t2i index NULL it2i3 18 NULL 5 100.00 Using index
|
2 MATERIALIZED t2i index NULL it2i3 18 NULL 5 100.00 Using index
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from <materialize> (select `test`.`t2i`.`b1`,`test`.`t2i`.`b2` from `test`.`t2i` order by `test`.`t2i`.`b1`,`test`.`t2i`.`b2`) join `test`.`t1i` where ((`<subquery2>`.`b2` = `test`.`t1i`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1i`.`a1`))
|
Note 1003 select `test`.`t1i`.`a1` AS `a1`,`test`.`t1i`.`a2` AS `a2` from <materialize> (select `test`.`t2i`.`b1`,`test`.`t2i`.`b2` from `test`.`t2i` order by `test`.`t2i`.`b1`,`test`.`t2i`.`b2`) join `test`.`t1i` where ((`<subquery2>`.`b2` = `test`.`t1i`.`a2`) and (`<subquery2>`.`b1` = `test`.`t1i`.`a1`))
|
||||||
@ -299,8 +299,8 @@ where (a1, a2) in (select b1, b2 from t2 where b1 > '0') and
|
|||||||
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 18 func,func 1 100.00
|
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 16 func,func 1 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 func,func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 func,func 1 100.00
|
||||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||||
3 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
3 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||||
@ -341,8 +341,8 @@ b2 in (select c2 from t3 where c2 LIKE '%03')) and
|
|||||||
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 18 func,func 1 100.00
|
1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 16 func,func 1 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 18 func,func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 16 func,func 1 100.00
|
||||||
5 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
5 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||||
5 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
5 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 100.00 Using where
|
||||||
@ -367,7 +367,7 @@ b2 in (select c2 from t3 t3b where c2 LIKE '%03')) and
|
|||||||
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 18 func,func 1 100.00
|
1 PRIMARY <subquery5> eq_ref distinct_key distinct_key 16 func,func 1 100.00
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 5 100.00 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 5 100.00 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
|
||||||
5 MATERIALIZED t3c ALL NULL NULL NULL NULL 4 100.00 Using where
|
5 MATERIALIZED t3c ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||||
5 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
5 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
@ -436,7 +436,7 @@ where (a1, a2) in (select * from t1 where a1 > '0' UNION select * from t2 where
|
|||||||
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
where (c1, c2) in (select b1, b2 from t2i where b2 > '0'));
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 18 func,func 1 100.00
|
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 16 func,func 1 100.00
|
||||||
4 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
4 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||||
4 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
4 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
@ -460,7 +460,7 @@ a1 = c1;
|
|||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 4 100.00 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t3 ALL NULL NULL NULL NULL 4 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 18 func,func 1 100.00
|
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 16 func,func 1 100.00
|
||||||
4 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
4 MATERIALIZED t3 ALL NULL NULL NULL NULL 4 100.00 Using where
|
||||||
4 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
4 MATERIALIZED t2i index it2i1,it2i2,it2i3 it2i3 18 NULL 5 80.00 Using where; Using index; Using join buffer (flat, BNL join)
|
||||||
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
@ -645,7 +645,7 @@ from t1_16
|
|||||||
where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0');
|
where a1 in (select substring(b1,1,16) from t2_16 where b1 > '0');
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_16 ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1_16 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 20 func 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 19 func 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_16 ALL NULL NULL NULL NULL 3 100.00 Using where
|
2 MATERIALIZED t2_16 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from `test`.`t1_16` semi join (`test`.`t2_16`) where ((`test`.`t2_16`.`b1` > '0') and (`test`.`t1_16`.`a1` = substr(`test`.`t2_16`.`b1`,1,16)))
|
Note 1003 select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from `test`.`t1_16` semi join (`test`.`t2_16`) where ((`test`.`t2_16`.`b1` > '0') and (`test`.`t1_16`.`a1` = substr(`test`.`t2_16`.`b1`,1,16)))
|
||||||
@ -675,7 +675,7 @@ from t1_16
|
|||||||
where a1 in (select group_concat(b1) from t2_16 group by b2);
|
where a1 in (select group_concat(b1) from t2_16 group by b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_16 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1_16 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 261 test.t1_16.a1 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 260 test.t1_16.a1 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_16 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
2 MATERIALIZED t2_16 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_16`.`b1` separator ',') from `test`.`t2_16` group by `test`.`t2_16`.`b2`) join `test`.`t1_16` where (`test`.`t1_16`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
Note 1003 select left(`test`.`t1_16`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_16`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_16`.`b1` separator ',') from `test`.`t2_16` group by `test`.`t2_16`.`b2`) join `test`.`t1_16` where (`test`.`t1_16`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
||||||
@ -760,7 +760,7 @@ from t1_512
|
|||||||
where a1 in (select substring(b1,1,512) from t2_512 where b1 > '0');
|
where a1 in (select substring(b1,1,512) from t2_512 where b1 > '0');
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 517 func 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 516 func 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using where
|
2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from `test`.`t1_512` semi join (`test`.`t2_512`) where ((`test`.`t2_512`.`b1` > '0') and (`test`.`t1_512`.`a1` = substr(`test`.`t2_512`.`b1`,1,512)))
|
Note 1003 select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from `test`.`t1_512` semi join (`test`.`t2_512`) where ((`test`.`t2_512`.`b1` > '0') and (`test`.`t1_512`.`a1` = substr(`test`.`t2_512`.`b1`,1,512)))
|
||||||
@ -775,7 +775,7 @@ from t1_512
|
|||||||
where a1 in (select group_concat(b1) from t2_512 group by b2);
|
where a1 in (select group_concat(b1) from t2_512 group by b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 261 test.t1_512.a1 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 260 test.t1_512.a1 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2`) join `test`.`t1_512` where (`test`.`t1_512`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
Note 1003 select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2`) join `test`.`t1_512` where (`test`.`t1_512`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
||||||
@ -789,7 +789,7 @@ from t1_512
|
|||||||
where a1 in (select group_concat(b1) from t2_512 group by b2);
|
where a1 in (select group_concat(b1) from t2_512 group by b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1_512 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 261 test.t1_512.a1 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 260 test.t1_512.a1 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
2 MATERIALIZED t2_512 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2`) join `test`.`t1_512` where (`test`.`t1_512`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
Note 1003 select left(`test`.`t1_512`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_512`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_512`.`b1` separator ',') from `test`.`t2_512` group by `test`.`t2_512`.`b2`) join `test`.`t1_512` where (`test`.`t1_512`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
||||||
@ -870,7 +870,7 @@ from t1_1024
|
|||||||
where a1 in (select group_concat(b1) from t2_1024 group by b2);
|
where a1 in (select group_concat(b1) from t2_1024 group by b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_1024 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1_1024 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 261 test.t1_1024.a1 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 260 test.t1_1024.a1 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_1024 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
2 MATERIALIZED t2_1024 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2`) join `test`.`t1_1024` where (`test`.`t1_1024`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
Note 1003 select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2`) join `test`.`t1_1024` where (`test`.`t1_1024`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
||||||
@ -884,7 +884,7 @@ from t1_1024
|
|||||||
where a1 in (select group_concat(b1) from t2_1024 group by b2);
|
where a1 in (select group_concat(b1) from t2_1024 group by b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_1024 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1_1024 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 261 test.t1_1024.a1 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 260 test.t1_1024.a1 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_1024 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
2 MATERIALIZED t2_1024 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2`) join `test`.`t1_1024` where (`test`.`t1_1024`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
Note 1003 select left(`test`.`t1_1024`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1024`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_1024`.`b1` separator ',') from `test`.`t2_1024` group by `test`.`t2_1024`.`b2`) join `test`.`t1_1024` where (`test`.`t1_1024`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
||||||
@ -965,7 +965,7 @@ from t1_1025
|
|||||||
where a1 in (select group_concat(b1) from t2_1025 group by b2);
|
where a1 in (select group_concat(b1) from t2_1025 group by b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_1025 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1_1025 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 261 test.t1_1025.a1 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 260 test.t1_1025.a1 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_1025 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
2 MATERIALIZED t2_1025 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2`) join `test`.`t1_1025` where (`test`.`t1_1025`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
Note 1003 select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2`) join `test`.`t1_1025` where (`test`.`t1_1025`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
||||||
@ -979,7 +979,7 @@ from t1_1025
|
|||||||
where a1 in (select group_concat(b1) from t2_1025 group by b2);
|
where a1 in (select group_concat(b1) from t2_1025 group by b2);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1_1025 ALL NULL NULL NULL NULL 3 100.00 Using where
|
1 PRIMARY t1_1025 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 261 test.t1_1025.a1 1 100.00 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 260 test.t1_1025.a1 1 100.00 Using where
|
||||||
2 MATERIALIZED t2_1025 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
2 MATERIALIZED t2_1025 ALL NULL NULL NULL NULL 3 100.00 Using filesort
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2`) join `test`.`t1_1025` where (`test`.`t1_1025`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
Note 1003 select left(`test`.`t1_1025`.`a1`,7) AS `left(a1,7)`,left(`test`.`t1_1025`.`a2`,7) AS `left(a2,7)` from <materialize> (select group_concat(`test`.`t2_1025`.`b1` separator ',') from `test`.`t2_1025` group by `test`.`t2_1025`.`b2`) join `test`.`t1_1025` where (`test`.`t1_1025`.`a1` = `<subquery2>`.`group_concat(b1)`)
|
||||||
@ -1001,7 +1001,7 @@ from t1bit
|
|||||||
where (a1, a2) in (select b1, b2 from t2bit);
|
where (a1, a2) in (select b1, b2 from t2bit);
|
||||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
1 PRIMARY t1bit ALL NULL NULL NULL NULL 3 100.00
|
1 PRIMARY t1bit ALL NULL NULL NULL NULL 3 100.00
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 10 func,func 1 100.00
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1 100.00
|
||||||
2 MATERIALIZED t2bit ALL NULL NULL NULL NULL 3 100.00
|
2 MATERIALIZED t2bit ALL NULL NULL NULL NULL 3 100.00
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1003 select conv(`test`.`t1bit`.`a1`,10,2) AS `bin(a1)`,conv(`test`.`t1bit`.`a2`,10,2) AS `bin(a2)` from `test`.`t1bit` semi join (`test`.`t2bit`) where 1
|
Note 1003 select conv(`test`.`t1bit`.`a1`,10,2) AS `bin(a1)`,conv(`test`.`t1bit`.`a2`,10,2) AS `bin(a2)` from `test`.`t1bit` semi join (`test`.`t2bit`) where 1
|
||||||
@ -1187,7 +1187,7 @@ insert into t1 values (5);
|
|||||||
explain select min(a1) from t1 where 7 in (select max(b1) from t2 group by b1);
|
explain select min(a1) from t1 where 7 in (select max(b1) from t2 group by b1);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
1 PRIMARY <subquery2> const distinct_key distinct_key 5 const 1
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1
|
||||||
2 MATERIALIZED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
2 MATERIALIZED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||||
select min(a1) from t1 where 7 in (select max(b1) from t2 group by b1);
|
select min(a1) from t1 where 7 in (select max(b1) from t2 group by b1);
|
||||||
min(a1)
|
min(a1)
|
||||||
@ -1236,7 +1236,7 @@ insert into t1 values ('aa', 'aaaa');
|
|||||||
explain select a,b from t1 where b in (select a from t1);
|
explain select a,b from t1 where b in (select a from t1);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 3 func 1 Using where
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 2 func 1 Using where
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2
|
||||||
select a,b from t1 where b in (select a from t1);
|
select a,b from t1 where b in (select a from t1);
|
||||||
a b
|
a b
|
||||||
@ -1273,7 +1273,7 @@ GROUP BY t3i
|
|||||||
);
|
);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 5 const 1
|
1 PRIMARY <subquery3> eq_ref distinct_key distinct_key 4 const 1
|
||||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where; Start temporary; End temporary; Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t4 ALL NULL NULL NULL NULL 2 Using where; Using join buffer (flat, BNL join)
|
||||||
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 Using temporary
|
3 MATERIALIZED t3 ALL NULL NULL NULL NULL 2 Using temporary
|
||||||
@ -1510,7 +1510,7 @@ SET @@optimizer_switch='semijoin=on,materialization=on';
|
|||||||
EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
EXPLAIN SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 func 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Rowid-ordered scan
|
2 MATERIALIZED t2 range PRIMARY PRIMARY 4 NULL 2 Using index condition; Rowid-ordered scan
|
||||||
SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
SELECT pk FROM t1 WHERE (a) IN (SELECT a FROM t2 WHERE pk > 0);
|
||||||
pk
|
pk
|
||||||
@ -1849,6 +1849,161 @@ a b c
|
|||||||
4 4 2
|
4 4 2
|
||||||
4 4 4
|
4 4 4
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#922254: Assertion `0' failed at item_cmpfunc.cc:5899: Item* Item_equal::get_first(JOIN_TAB*, Item*)
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(3) );
|
||||||
|
CREATE TABLE t2 ( b VARCHAR(3), c VARCHAR(8), KEY(c) );
|
||||||
|
INSERT INTO t2 VALUES ('USA','Abilene'),('USA','Akron');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM
|
||||||
|
( SELECT * FROM t1 ) AS alias1,
|
||||||
|
t2 AS alias2
|
||||||
|
WHERE b = a AND a IN (
|
||||||
|
SELECT alias3.c
|
||||||
|
FROM t2 AS alias3, t2 AS alias4
|
||||||
|
WHERE alias4.c = alias3.b
|
||||||
|
);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#928048: Query containing IN subquery with OR in the where clause returns a wrong result
|
||||||
|
#
|
||||||
|
create table t1 (a int, b int);
|
||||||
|
insert into t1 values (7,5), (3,3), (5,4), (9,3);
|
||||||
|
create table t2 (a int, b int, index i_a(a));
|
||||||
|
insert into t2 values
|
||||||
|
(4,2), (7,9), (7,4), (3,1), (5,3), (3,1), (9,4), (8,1);
|
||||||
|
explain select * from t1 where t1.a in (select a from t2 where t2.a=7 or t2.b<=1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 4
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
|
||||||
|
2 MATERIALIZED t2 ALL i_a NULL NULL NULL 8 Using where
|
||||||
|
select * from t1 where t1.a in (select a from t2 where t2.a=7 or t2.b<=1);
|
||||||
|
a b
|
||||||
|
7 5
|
||||||
|
3 3
|
||||||
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#933407: Valgrind warnings in mark_as_null_row with materialization+semijoin, STRAIGHT_JOIN, impossible WHERE
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (0),(8);
|
||||||
|
SELECT STRAIGHT_JOIN MIN(a) FROM t1
|
||||||
|
WHERE a IN (
|
||||||
|
SELECT a FROM t1
|
||||||
|
WHERE 'condition'='impossible'
|
||||||
|
);
|
||||||
|
MIN(a)
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#938131: Subquery materialization is not used in CREATE TABLE SELECT
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(a int);
|
||||||
|
INSERT INTO t1 values(1),(2);
|
||||||
|
CREATE TABLE t2(a int);
|
||||||
|
INSERT INTO t2 values(1),(2);
|
||||||
|
# Should use Materialization:
|
||||||
|
EXPLAIN SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a HAVING a > 1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 test.t1.a 1
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 Using temporary
|
||||||
|
flush status;
|
||||||
|
CREATE TABLE t3 SELECT * FROM t1 WHERE a IN (SELECT * FROM t2 GROUP BY a HAVING a > 1);
|
||||||
|
SHOW STATUS LIKE 'Created_tmp_tables';
|
||||||
|
Variable_name Value
|
||||||
|
Created_tmp_tables 2
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
|
# BUG#939009: Crash with aggregate function in IN subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch='materialization=on,semijoin=on';
|
||||||
|
CREATE TABLE t1 (a int, b int);
|
||||||
|
INSERT INTO t1 VALUES (7,1), (4,2), (7,7);
|
||||||
|
CREATE TABLE t2 ( c INT );
|
||||||
|
INSERT INTO t2 VALUES (4), (7), (6);
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT MAX(c) FROM t2) AND b=7 AND (a IS NULL OR a=b);
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1 100.00
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 100.00 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 100.00
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from <materialize> (select max(`test`.`t2`.`c`) from `test`.`t2`) join `test`.`t1` where ((`test`.`t1`.`a` = `<subquery2>`.`MAX(c)`) and (`test`.`t1`.`b` = 7) and (isnull(`<subquery2>`.`MAX(c)`) or (`<subquery2>`.`MAX(c)` = 7)))
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT MAX(c) FROM t2) AND b=7 AND (a IS NULL OR a=b);
|
||||||
|
a b
|
||||||
|
7 7
|
||||||
|
EXPLAIN
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT MAX(c) FROM t2 WHERE c < 4) AND b=7 AND (a IS NULL OR a=b);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> const distinct_key distinct_key 4 const 1
|
||||||
|
1 PRIMARY t1 ALL NULL NULL NULL NULL 3 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
SELECT * FROM t1
|
||||||
|
WHERE a IN (SELECT MAX(c) FROM t2 WHERE c < 4) AND b=7 AND (a IS NULL OR a=b);
|
||||||
|
a b
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
#
|
||||||
|
# BUG#946055: Crash with semijoin IN subquery when hash join is used
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES (7);
|
||||||
|
CREATE TABLE t2 (b int, c int, d varchar(1), e varchar(1), KEY (c), KEY (d, c));
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(4,2,'v','v'), (6,1,'v','v'), (0,5,'x','x'), (7,1,'x','x'),
|
||||||
|
(7,3,'i','i'), (7,1,'e','e'), (1,4,'p','p'), (1,2,'j','j');
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET @save_join_cache_level=@@join_cache_level;
|
||||||
|
SET join_cache_level=2;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT a, c FROM t1, t2
|
||||||
|
WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
|
||||||
|
WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY t2 index c c 5 NULL 8 Using index
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||||
|
2 MATERIALIZED s2 ref d d 4 const 1 Using where; Using index
|
||||||
|
2 MATERIALIZED s1 ALL c NULL NULL NULL 8 Using where; Using join buffer (flat, BNL join)
|
||||||
|
3 SUBQUERY t2 ALL NULL NULL NULL NULL 8
|
||||||
|
SELECT a, c FROM t1, t2
|
||||||
|
WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
|
||||||
|
WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
|
||||||
|
a c
|
||||||
|
7 1
|
||||||
|
7 1
|
||||||
|
7 1
|
||||||
|
SET optimizer_switch='join_cache_hashed=on';
|
||||||
|
SET join_cache_level=4;
|
||||||
|
EXPLAIN
|
||||||
|
SELECT a, c FROM t1, t2
|
||||||
|
WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
|
||||||
|
WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
|
1 PRIMARY t2 index c c 5 NULL 8 Using index
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 8 func,func 1
|
||||||
|
2 MATERIALIZED s2 ref d d 4 const 1 Using where; Using index
|
||||||
|
2 MATERIALIZED s1 hash_ALL c #hash#$hj 10 const,test.s2.d 8 Using where; Using join buffer (flat, BNLH join)
|
||||||
|
3 SUBQUERY t2 ALL NULL NULL NULL NULL 8
|
||||||
|
SELECT a, c FROM t1, t2
|
||||||
|
WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
|
||||||
|
WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
|
||||||
|
a c
|
||||||
|
7 1
|
||||||
|
7 1
|
||||||
|
7 1
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
SET join_cache_level=@save_join_cache_level;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# This must be at the end:
|
# This must be at the end:
|
||||||
set optimizer_switch=@subselect_sj_mat_tmp;
|
set optimizer_switch=@subselect_sj_mat_tmp;
|
||||||
set join_cache_level=@save_join_cache_level;
|
set join_cache_level=@save_join_cache_level;
|
||||||
|
@ -40,14 +40,14 @@ alter table t3 add primary key(a);
|
|||||||
# (despite that subquery's join output estimate is 50 rows)
|
# (despite that subquery's join output estimate is 50 rows)
|
||||||
explain select * from t3 where a in (select max(t2.a) from t1, t2 group by t2.b);
|
explain select * from t3 where a in (select max(t2.a) from t1, t2 group by t2.b);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5 Using where
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5
|
||||||
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 8 <subquery2>.max(t2.a) 1 Using where; Using index
|
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 8 <subquery2>.max(t2.a) 1 Using where; Using index
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
||||||
# Compare to this which really will have 50 record combinations:
|
# Compare to this which really will have 50 record combinations:
|
||||||
explain select * from t3 where a in (select max(t2.a) from t1, t2 group by t2.b, t1.b);
|
explain select * from t3 where a in (select max(t2.a) from t1, t2 group by t2.b, t1.b);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 50 Using where
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 50
|
||||||
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 8 <subquery2>.max(t2.a) 1 Using where; Using index
|
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 8 <subquery2>.max(t2.a) 1 Using where; Using index
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
||||||
@ -57,7 +57,7 @@ SET optimizer_switch='outer_join_with_cache=off';
|
|||||||
explain select * from t3
|
explain select * from t3
|
||||||
where a in (select max(t2.a) from t1 left join t2 on t1.a=t2.a group by t2.b, t1.b);
|
where a in (select max(t2.a) from t1 left join t2 on t1.a=t2.a group by t2.b, t1.b);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 50 Using where
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 50
|
||||||
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 8 <subquery2>.max(t2.a) 1 Using where; Using index
|
1 PRIMARY t3 eq_ref PRIMARY PRIMARY 8 <subquery2>.max(t2.a) 1 Using where; Using index
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using temporary
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using temporary
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using where
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using where
|
||||||
@ -69,7 +69,7 @@ t4.b=t0.a and t4.a in (select max(t2.a) from t1, t2 group by t2.b);
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
1 PRIMARY t0 ALL NULL NULL NULL NULL 10
|
||||||
1 PRIMARY t4 ALL a NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY t4 ALL a NULL NULL NULL 100 Using where; Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 5 test.t4.a 1
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 test.t4.a 1
|
||||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
||||||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
||||||
insert into t4 select 100 + (B.a *100 + A.a), 100 + (B.a*100 + A.a), 'filler' from t4 A, t0 B;
|
insert into t4 select 100 + (B.a *100 + A.a), 100 + (B.a*100 + A.a), 'filler' from t4 A, t0 B;
|
||||||
@ -77,8 +77,8 @@ explain select * from t4 where
|
|||||||
t4.a in (select max(t2.a) from t1, t2 group by t2.b) and
|
t4.a in (select max(t2.a) from t1, t2 group by t2.b) and
|
||||||
t4.b in (select max(t2.a) from t1, t2 group by t2.b);
|
t4.b in (select max(t2.a) from t1, t2 group by t2.b);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5 Using where
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 5
|
||||||
1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 5 Using join buffer (flat, BNL join)
|
||||||
1 PRIMARY t4 ref a a 10 <subquery2>.max(t2.a),<subquery3>.max(t2.a) 12
|
1 PRIMARY t4 ref a a 10 <subquery2>.max(t2.a),<subquery3>.max(t2.a) 12
|
||||||
3 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
3 MATERIALIZED t2 ALL NULL NULL NULL NULL 5 Using temporary
|
||||||
3 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
3 MATERIALIZED t1 ALL NULL NULL NULL NULL 10 Using join buffer (flat, BNL join)
|
||||||
@ -114,7 +114,7 @@ insert into t1 select A.a + 10*B.a + 100*C.a from t0 A, t0 B, t0 C;
|
|||||||
# The following must use non-merged SJ-Materialization:
|
# The following must use non-merged SJ-Materialization:
|
||||||
explain select * from t1 X join t0 Y on X.a < Y.a where X.a in (select max(a) from t0);
|
explain select * from t1 X join t0 Y on X.a < Y.a where X.a in (select max(a) from t0);
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 1 Using where
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 1
|
||||||
1 PRIMARY X ref a a 5 <subquery2>.max(a) 1 Using index
|
1 PRIMARY X ref a a 5 <subquery2>.max(a) 1 Using index
|
||||||
1 PRIMARY Y ALL NULL NULL NULL NULL 10 Using where; Using join buffer (flat, BNL join)
|
1 PRIMARY Y ALL NULL NULL NULL NULL 10 Using where; Using join buffer (flat, BNL join)
|
||||||
2 MATERIALIZED t0 ALL NULL NULL NULL NULL 10
|
2 MATERIALIZED t0 ALL NULL NULL NULL NULL 10
|
||||||
|
@ -95,3 +95,15 @@ SELECT SUM(DISTINCT id % 11) FROM t1;
|
|||||||
SUM(DISTINCT id % 11)
|
SUM(DISTINCT id % 11)
|
||||||
55
|
55
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #777654: empty subselect in FROM clause returning
|
||||||
|
# SUM(DISTINCT) over non-nullable field
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int NOT NULL) ;
|
||||||
|
SELECT SUM(DISTINCT a) FROM t1;
|
||||||
|
SUM(DISTINCT a)
|
||||||
|
NULL
|
||||||
|
SELECT * FROM (SELECT SUM(DISTINCT a) FROM t1) AS t;
|
||||||
|
SUM(DISTINCT a)
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -587,3 +587,16 @@ Variable_name Value
|
|||||||
Handler_read_next 1
|
Handler_read_next 1
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
#
|
||||||
|
# lp:923429 Crash in decimal_cmp on using UNIX_TIMESTAMP with a wrongly formatted timestamp
|
||||||
|
#
|
||||||
|
SELECT UNIX_TIMESTAMP('abc') > 0;
|
||||||
|
UNIX_TIMESTAMP('abc') > 0
|
||||||
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Incorrect datetime value: 'abc'
|
||||||
|
SELECT UNIX_TIMESTAMP('abc');
|
||||||
|
UNIX_TIMESTAMP('abc')
|
||||||
|
NULL
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Incorrect datetime value: 'abc'
|
||||||
|
@ -359,3 +359,25 @@ total_rows min_value MAX(c1+0)
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
create function y2k() returns int deterministic return 2000;
|
||||||
|
create table t1 (a year(2), b int);
|
||||||
|
insert t1 values (0,2000);
|
||||||
|
select a from t1 where a=2000;
|
||||||
|
a
|
||||||
|
00
|
||||||
|
select a from t1 where a=1000+1000;
|
||||||
|
a
|
||||||
|
00
|
||||||
|
select a from t1 where a=(select 2000);
|
||||||
|
a
|
||||||
|
00
|
||||||
|
select a from t1 where a=(select 2000 from dual where 1);
|
||||||
|
a
|
||||||
|
00
|
||||||
|
select a from t1 where a=y2k();
|
||||||
|
a
|
||||||
|
00
|
||||||
|
select a from t1 where a=b;
|
||||||
|
a
|
||||||
|
drop table t1;
|
||||||
|
drop function y2k;
|
||||||
|
@ -276,6 +276,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
flush status;
|
flush status;
|
||||||
update t1 set a=9999 order by a limit 1;
|
update t1 set a=9999 order by a limit 1;
|
||||||
@ -287,6 +288,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 2
|
Handler_read_rnd 2
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 9
|
Handler_read_rnd_next 9
|
||||||
flush status;
|
flush status;
|
||||||
delete from t1 order by a limit 1;
|
delete from t1 order by a limit 1;
|
||||||
@ -297,6 +299,7 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
flush status;
|
flush status;
|
||||||
delete from t1 order by a desc limit 1;
|
delete from t1 order by a desc limit 1;
|
||||||
@ -307,7 +310,8 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
Handler_read_rnd_next 9
|
Handler_read_rnd_deleted 1
|
||||||
|
Handler_read_rnd_next 8
|
||||||
alter table t1 disable keys;
|
alter table t1 disable keys;
|
||||||
flush status;
|
flush status;
|
||||||
delete from t1 order by a limit 1;
|
delete from t1 order by a limit 1;
|
||||||
@ -318,7 +322,8 @@ Handler_read_key 0
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
Handler_read_rnd_next 9
|
Handler_read_rnd_deleted 2
|
||||||
|
Handler_read_rnd_next 7
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a b
|
a b
|
||||||
0 0
|
0 0
|
||||||
@ -371,6 +376,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 1
|
Handler_read_next 1
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 1
|
Handler_read_rnd 1
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
create table t1(f1 int, `*f2` int);
|
create table t1(f1 int, `*f2` int);
|
||||||
@ -408,6 +414,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
SELECT user_id FROM t1 WHERE request_id=999999999999999999999999999999;
|
SELECT user_id FROM t1 WHERE request_id=999999999999999999999999999999;
|
||||||
user_id
|
user_id
|
||||||
@ -418,6 +425,7 @@ Handler_read_key 2
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
UPDATE t1 SET user_id=null WHERE request_id=9999999999999;
|
UPDATE t1 SET user_id=null WHERE request_id=9999999999999;
|
||||||
show status like '%Handler_read%';
|
show status like '%Handler_read%';
|
||||||
@ -427,6 +435,7 @@ Handler_read_key 3
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
UPDATE t1 SET user_id=null WHERE request_id=999999999999999999999999999999;
|
UPDATE t1 SET user_id=null WHERE request_id=999999999999999999999999999999;
|
||||||
show status like '%Handler_read%';
|
show status like '%Handler_read%';
|
||||||
@ -436,6 +445,7 @@ Handler_read_key 3
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 0
|
Handler_read_rnd_next 0
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
|
@ -304,7 +304,7 @@ a+1
|
|||||||
4
|
4
|
||||||
explain select * from v1;
|
explain select * from v1;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 4
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 2
|
||||||
2 DERIVED t1 ALL NULL NULL NULL NULL 4 Using filesort
|
2 DERIVED t1 ALL NULL NULL NULL NULL 4 Using filesort
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
@ -3930,6 +3930,63 @@ drop table t1,t2;
|
|||||||
# -- End of 5.1 tests.
|
# -- End of 5.1 tests.
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
# Bug #794005: crash in st_table::mark_virtual_columns_for_write
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
insert into t1 values (1);
|
||||||
|
CREATE TABLE t2 (a int);
|
||||||
|
insert into t2 values (1);
|
||||||
|
CREATE VIEW v2 AS SELECT * FROM t2;
|
||||||
|
CREATE VIEW v1 AS SELECT * FROM v2;
|
||||||
|
CREATE VIEW v3 AS SELECT t2.a,v1.a as b FROM t2,v1 where t2.a=v1.a;
|
||||||
|
CREATE OR REPLACE ALGORITHM = TEMPTABLE VIEW v2 AS SELECT * FROM t1;
|
||||||
|
UPDATE v1 SET a = 10;
|
||||||
|
ERROR HY000: The target table v1 of the UPDATE is not updatable
|
||||||
|
REPLACE v1 SET a = 10;
|
||||||
|
ERROR HY000: The target table v1 of the INSERT is not insertable-into
|
||||||
|
INSERT into v1 values (20);
|
||||||
|
ERROR HY000: The target table v1 of the INSERT is not insertable-into
|
||||||
|
DELETE from v1;
|
||||||
|
ERROR HY000: The target table v1 of the DELETE is not updatable
|
||||||
|
UPDATE v3 SET b= 10;
|
||||||
|
ERROR HY000: The target table v2 of the UPDATE is not updatable
|
||||||
|
REPLACE v3 SET b= 10;
|
||||||
|
ERROR HY000: The target table v3 of the INSERT is not insertable-into
|
||||||
|
INSERT into v3(b) values (20);
|
||||||
|
ERROR HY000: The target table v3 of the INSERT is not insertable-into
|
||||||
|
DELETE from v3 where b=20;
|
||||||
|
ERROR HY000: Can not delete from join view 'test.v3'
|
||||||
|
DELETE from v3 where a=20;
|
||||||
|
ERROR HY000: Can not delete from join view 'test.v3'
|
||||||
|
DELETE v1 from v1,t1 where v1.a=t1.a;
|
||||||
|
ERROR HY000: The target table v1 of the DELETE is not updatable
|
||||||
|
UPDATE v3 SET a = 10;
|
||||||
|
REPLACE v3 SET a = 11;
|
||||||
|
INSERT INTO v3(a) values (20);
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
10
|
||||||
|
11
|
||||||
|
20
|
||||||
|
CREATE OR REPLACE ALGORITHM = MERGE VIEW v2 AS SELECT * FROM t2;
|
||||||
|
DELETE from v1 where a=11;
|
||||||
|
DELETE v1 from v1,t1 where v1.a=t1.a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
10
|
||||||
|
20
|
||||||
|
DROP VIEW v1,v2,v3;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# -- End of 5.2 tests.
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
#
|
||||||
# Bug #59696 Optimizer does not use equalities for conditions over view
|
# Bug #59696 Optimizer does not use equalities for conditions over view
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int NOT NULL);
|
CREATE TABLE t1 (a int NOT NULL);
|
||||||
@ -3959,6 +4016,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 17
|
Handler_read_rnd_next 17
|
||||||
CREATE VIEW v AS SELECT * FROM t2;
|
CREATE VIEW v AS SELECT * FROM t2;
|
||||||
EXPLAIN EXTENDED
|
EXPLAIN EXTENDED
|
||||||
@ -3980,6 +4038,7 @@ Handler_read_key 1
|
|||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 17
|
Handler_read_rnd_next 17
|
||||||
DROP VIEW v;
|
DROP VIEW v;
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
@ -4374,4 +4433,7 @@ NULL NULL 1 0
|
|||||||
NULL NULL 1 0
|
NULL NULL 1 0
|
||||||
DROP VIEW v2;
|
DROP VIEW v2;
|
||||||
DROP TABLE t1, t2, t3;
|
DROP TABLE t1, t2, t3;
|
||||||
|
# -----------------------------------------------------------------
|
||||||
|
# -- End of 5.3 tests.
|
||||||
|
# -----------------------------------------------------------------
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
@ -778,7 +778,7 @@ create table t1 (a int primary key,b int, c int, d int, e int, f int, g int, h
|
|||||||
insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
|
insert into t1 values (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
|
||||||
explain select * from t1 where a > 0 and a < 50;
|
explain select * from t1 where a > 0 and a < 50;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL # Using index condition
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL # Using where
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
|
create table t1 (id int NOT NULL,id2 int NOT NULL,id3 int NOT NULL,dummy1 char(30),primary key (id,id2),index index_id3 (id3)) engine=innodb;
|
||||||
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
|
insert into t1 values (0,0,0,'ABCDEFGHIJ'),(2,2,2,'BCDEFGHIJK'),(1,1,1,'CDEFGHIJKL');
|
||||||
@ -2371,3 +2371,8 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set storage_engine=MyISAM;
|
set storage_engine=MyISAM;
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_key 0
|
||||||
|
f1
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_key 0
|
||||||
|
@ -121,7 +121,7 @@ key PRIMARY
|
|||||||
key_len 4
|
key_len 4
|
||||||
ref t2.a
|
ref t2.a
|
||||||
rows 1
|
rows 1
|
||||||
Extra Using index condition; Using where
|
Extra Using where
|
||||||
id 2
|
id 2
|
||||||
select_type DERIVED
|
select_type DERIVED
|
||||||
table NULL
|
table NULL
|
||||||
@ -328,7 +328,7 @@ key PRIMARY
|
|||||||
key_len 4
|
key_len 4
|
||||||
ref t2.a
|
ref t2.a
|
||||||
rows 1
|
rows 1
|
||||||
Extra Using index condition; Using where
|
Extra Using where
|
||||||
id 2
|
id 2
|
||||||
select_type DERIVED
|
select_type DERIVED
|
||||||
table NULL
|
table NULL
|
||||||
|
@ -2839,7 +2839,7 @@ SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.pk = t2.a
|
|||||||
WHERE t1.pk >= 6 HAVING t1.a<> 0 AND t1.a <> 11
|
WHERE t1.pk >= 6 HAVING t1.a<> 0 AND t1.a <> 11
|
||||||
ORDER BY t1.a;
|
ORDER BY t1.a;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 4 Using index condition; Using filesort
|
1 SIMPLE t1 range PRIMARY PRIMARY 4 NULL 4 Using where; Using filesort
|
||||||
1 SIMPLE t2 ref a a 5 test.t1.pk 1 Using index
|
1 SIMPLE t2 ref a a 5 test.t1.pk 1 Using index
|
||||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.pk = t2.a
|
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.pk = t2.a
|
||||||
WHERE t1.pk >= 6 HAVING t1.a<> 0 AND t1.a <> 11
|
WHERE t1.pk >= 6 HAVING t1.a<> 0 AND t1.a <> 11
|
||||||
|
@ -1394,6 +1394,17 @@ eval set storage_engine=$default;
|
|||||||
-- disable_query_log
|
-- disable_query_log
|
||||||
SET GLOBAL innodb_thread_concurrency = @innodb_thread_concurrency_orig;
|
SET GLOBAL innodb_thread_concurrency = @innodb_thread_concurrency_orig;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test fix for bug 13117023. InnoDB increments HA_READ_KEY_COUNT (aka
|
||||||
|
# HANDLER_READ_KEY) when it should not.
|
||||||
|
#
|
||||||
|
create table t1 (f1 integer primary key) engine=innodb;
|
||||||
|
flush status;
|
||||||
|
show status like "handler_read_key";
|
||||||
|
select f1 from t1;
|
||||||
|
show status like "handler_read_key";
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# #
|
# #
|
||||||
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
|
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
|
||||||
|
@ -36,7 +36,7 @@ let $wait_condition =
|
|||||||
# depending on platform.
|
# depending on platform.
|
||||||
#
|
#
|
||||||
connection con1;
|
connection con1;
|
||||||
-- error 1317, 2006, 2013
|
-- error 1317, 2006, 2013, 1927
|
||||||
reap;
|
reap;
|
||||||
connection default;
|
connection default;
|
||||||
DROP TABLE bug51920;
|
DROP TABLE bug51920;
|
||||||
|
@ -3259,3 +3259,14 @@ Variable_name Value
|
|||||||
Handler_delete 1
|
Handler_delete 1
|
||||||
set optimizer_switch=default;
|
set optimizer_switch=default;
|
||||||
DROP TABLE bug58912;
|
DROP TABLE bug58912;
|
||||||
|
create table t1 (f1 integer primary key) engine=innodb;
|
||||||
|
flush status;
|
||||||
|
show status like "handler_read_key";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_key 0
|
||||||
|
select f1 from t1;
|
||||||
|
f1
|
||||||
|
show status like "handler_read_key";
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_key 0
|
||||||
|
drop table t1;
|
||||||
|
@ -48,9 +48,9 @@ ON orgs.org_id=sa_opportunities.org_id
|
|||||||
LEFT JOIN bug30243_2 contacts
|
LEFT JOIN bug30243_2 contacts
|
||||||
ON orgs.org_id=contacts.org_id ;
|
ON orgs.org_id=contacts.org_id ;
|
||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 SIMPLE orgs index NULL org_id 4 NULL 128 Using index
|
1 SIMPLE orgs index NULL org_id 4 NULL # Using index
|
||||||
1 SIMPLE sa_opportunities ref org_id org_id 5 test.orgs.org_id 1 Using index
|
1 SIMPLE sa_opportunities ref org_id org_id 5 test.orgs.org_id # Using index
|
||||||
1 SIMPLE contacts ref contacts$org_id contacts$org_id 5 test.orgs.org_id 1 Using index
|
1 SIMPLE contacts ref contacts$org_id contacts$org_id 5 test.orgs.org_id # Using index
|
||||||
select @@innodb_stats_method;
|
select @@innodb_stats_method;
|
||||||
@@innodb_stats_method
|
@@innodb_stats_method
|
||||||
nulls_ignored
|
nulls_ignored
|
||||||
|
@ -2576,6 +2576,17 @@ set optimizer_switch=default;
|
|||||||
# Clean up after the Bug#55284/Bug#58912 test case.
|
# Clean up after the Bug#55284/Bug#58912 test case.
|
||||||
DROP TABLE bug58912;
|
DROP TABLE bug58912;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test fix for bug 13117023. InnoDB increments HA_READ_KEY_COUNT (aka
|
||||||
|
# HANDLER_READ_KEY) when it should not.
|
||||||
|
#
|
||||||
|
create table t1 (f1 integer primary key) engine=innodb;
|
||||||
|
flush status;
|
||||||
|
show status like "handler_read_key";
|
||||||
|
select f1 from t1;
|
||||||
|
show status like "handler_read_key";
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# #
|
# #
|
||||||
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
|
# Please, DO NOT TOUCH this file as well as the innodb.result file. #
|
||||||
|
@ -140,6 +140,7 @@ analyze table bug30243_3;
|
|||||||
|
|
||||||
# Following query plan shows that we get the correct rows per
|
# Following query plan shows that we get the correct rows per
|
||||||
# unique value (should be approximately 1 row per value)
|
# unique value (should be approximately 1 row per value)
|
||||||
|
--replace_column 9 #
|
||||||
explain SELECT COUNT(*), 0
|
explain SELECT COUNT(*), 0
|
||||||
FROM bug30243_1 orgs
|
FROM bug30243_1 orgs
|
||||||
LEFT JOIN bug30243_3 sa_opportunities
|
LEFT JOIN bug30243_3 sa_opportunities
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
-- source include/have_innodb_plugin.inc
|
--source include/have_innodb_plugin.inc
|
||||||
SET storage_engine=innodb;
|
SET storage_engine=innodb;
|
||||||
--source include/gis_generic.inc
|
--source include/gis_generic.inc
|
||||||
--source include/gis_keys.inc
|
--source include/gis_keys.inc
|
||||||
|
64
mysql-test/suite/maria/r/maria-gis-recovery.result
Normal file
64
mysql-test/suite/maria/r/maria-gis-recovery.result
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
set global aria_log_file_size=4294967295;
|
||||||
|
drop database if exists mysqltest;
|
||||||
|
create database mysqltest;
|
||||||
|
use mysqltest;
|
||||||
|
* shut down mysqld, removed logs, restarted it
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
i int,
|
||||||
|
shape GEOMETRY NOT NULL,
|
||||||
|
SPATIAL (shape)
|
||||||
|
) ENGINE=ARIA;
|
||||||
|
insert into t1 values(1,POINT(1, 1));
|
||||||
|
* copied t1 for feeding_recovery
|
||||||
|
insert into t1 values(2,POINT(2, 2)), (3,POINT(3, 3)), (4,POINT(4, 4));
|
||||||
|
flush table t1;
|
||||||
|
* copied t1 for comparison
|
||||||
|
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
|
||||||
|
* crashing mysqld intentionally
|
||||||
|
set global aria_checkpoint_interval=1;
|
||||||
|
ERROR HY000: Lost connection to MySQL server during query
|
||||||
|
* copied t1 back for feeding_recovery
|
||||||
|
* recovery happens
|
||||||
|
check table t1 extended;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
mysqltest.t1 check status OK
|
||||||
|
* testing that checksum after recovery is as expected
|
||||||
|
Checksum-check
|
||||||
|
ok
|
||||||
|
use mysqltest;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i` int(11) DEFAULT NULL,
|
||||||
|
`shape` geometry NOT NULL,
|
||||||
|
SPATIAL KEY `shape` (`shape`)
|
||||||
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
||||||
|
* TEST of UPDATE vs state.auto_increment
|
||||||
|
* copied t1 for feeding_recovery
|
||||||
|
update t1 set shape=POINT(5, 5) where i=2;
|
||||||
|
flush table t1;
|
||||||
|
* copied t1 for comparison
|
||||||
|
SET SESSION debug="+d,maria_flush_whole_log,maria_crash";
|
||||||
|
* crashing mysqld intentionally
|
||||||
|
set global aria_checkpoint_interval=1;
|
||||||
|
ERROR HY000: Lost connection to MySQL server during query
|
||||||
|
* copied t1 back for feeding_recovery
|
||||||
|
* recovery happens
|
||||||
|
check table t1 extended;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
mysqltest.t1 check status OK
|
||||||
|
* testing that checksum after recovery is as expected
|
||||||
|
Checksum-check
|
||||||
|
ok
|
||||||
|
use mysqltest;
|
||||||
|
show create table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`i` int(11) DEFAULT NULL,
|
||||||
|
`shape` geometry NOT NULL,
|
||||||
|
SPATIAL KEY `shape` (`shape`)
|
||||||
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
||||||
|
drop table t1;
|
||||||
|
drop database mysqltest_for_feeding_recovery;
|
||||||
|
drop database mysqltest_for_comparison;
|
||||||
|
drop database mysqltest;
|
@ -351,14 +351,14 @@ Table Op Msg_type Msg_text
|
|||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
drop table t1;
|
drop table t1;
|
||||||
CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), d varchar(255), e varchar(255), KEY t1 (a, b, c, d, e));
|
CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), d varchar(255), e varchar(255), KEY t1 (a, b, c, d, e));
|
||||||
ERROR 42000: Specified key was too long; max key length is 1208 bytes
|
ERROR 42000: Specified key was too long; max key length is 1000 bytes
|
||||||
CREATE TABLE t1 (a varchar(32000), unique key(a));
|
CREATE TABLE t1 (a varchar(32000), unique key(a));
|
||||||
ERROR 42000: Specified key was too long; max key length is 1208 bytes
|
ERROR 42000: Specified key was too long; max key length is 1000 bytes
|
||||||
CREATE TABLE t1 (a varchar(1), b varchar(1), key (a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b));
|
CREATE TABLE t1 (a varchar(1), b varchar(1), key (a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b,a,b));
|
||||||
ERROR 42000: Too many key parts specified; max 32 parts allowed
|
ERROR 42000: Too many key parts specified; max 32 parts allowed
|
||||||
CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), d varchar(255), e varchar(255));
|
CREATE TABLE t1 (a varchar(255), b varchar(255), c varchar(255), d varchar(255), e varchar(255));
|
||||||
ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e);
|
ALTER TABLE t1 ADD INDEX t1 (a, b, c, d, e);
|
||||||
ERROR 42000: Specified key was too long; max key length is 1208 bytes
|
ERROR 42000: Specified key was too long; max key length is 1000 bytes
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a int not null, b int, c int, key(b), key(c), key(a,b), key(c,a));
|
CREATE TABLE t1 (a int not null, b int, c int, key(b), key(c), key(a,b), key(c,a));
|
||||||
INSERT into t1 values (0,null,0), (0,null,1), (0,null,2), (0,null,3), (1,1,4);
|
INSERT into t1 values (0,null,0), (0,null,1), (0,null,2), (0,null,3), (1,1,4);
|
||||||
@ -1563,7 +1563,7 @@ a b
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (v varchar(65530), key(v));
|
create table t1 (v varchar(65530), key(v));
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1071 Specified key was too long; max key length is 1208 bytes
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
create table t1 (v varchar(65536));
|
create table t1 (v varchar(65536));
|
||||||
Warnings:
|
Warnings:
|
||||||
@ -1801,34 +1801,34 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a varchar(2048), key `a` (a));
|
create table t1 (a varchar(2048), key `a` (a));
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1071 Specified key was too long; max key length is 1208 bytes
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` varchar(2048) DEFAULT NULL,
|
`a` varchar(2048) DEFAULT NULL,
|
||||||
KEY `a` (`a`(1208))
|
KEY `a` (`a`(1000))
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a varchar(2048), key `a` (a) key_block_size=1024);
|
create table t1 (a varchar(2048), key `a` (a) key_block_size=1024);
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1071 Specified key was too long; max key length is 1208 bytes
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` varchar(2048) DEFAULT NULL,
|
`a` varchar(2048) DEFAULT NULL,
|
||||||
KEY `a` (`a`(1208)) KEY_BLOCK_SIZE=8192
|
KEY `a` (`a`(1000)) KEY_BLOCK_SIZE=8192
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=1024;
|
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=1024;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1071 Specified key was too long; max key length is 1208 bytes
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) NOT NULL,
|
`a` int(11) NOT NULL,
|
||||||
`b` varchar(2048) DEFAULT NULL,
|
`b` varchar(2048) DEFAULT NULL,
|
||||||
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
|
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
|
||||||
KEY `b` (`b`(1208)) KEY_BLOCK_SIZE=8192
|
KEY `b` (`b`(1000)) KEY_BLOCK_SIZE=8192
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=1024
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=1024
|
||||||
alter table t1 key_block_size=2048;
|
alter table t1 key_block_size=2048;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
@ -1837,7 +1837,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`a` int(11) NOT NULL,
|
`a` int(11) NOT NULL,
|
||||||
`b` varchar(2048) DEFAULT NULL,
|
`b` varchar(2048) DEFAULT NULL,
|
||||||
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
|
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
|
||||||
KEY `b` (`b`(1208)) KEY_BLOCK_SIZE=8192
|
KEY `b` (`b`(1000)) KEY_BLOCK_SIZE=8192
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=2048
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=2048
|
||||||
alter table t1 add c int, add key (c);
|
alter table t1 add c int, add key (c);
|
||||||
show create table t1;
|
show create table t1;
|
||||||
@ -1847,7 +1847,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`b` varchar(2048) DEFAULT NULL,
|
`b` varchar(2048) DEFAULT NULL,
|
||||||
`c` int(11) DEFAULT NULL,
|
`c` int(11) DEFAULT NULL,
|
||||||
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
|
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
|
||||||
KEY `b` (`b`(1208)) KEY_BLOCK_SIZE=8192,
|
KEY `b` (`b`(1000)) KEY_BLOCK_SIZE=8192,
|
||||||
KEY `c` (`c`) KEY_BLOCK_SIZE=8192
|
KEY `c` (`c`) KEY_BLOCK_SIZE=8192
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=2048
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=2048
|
||||||
alter table t1 key_block_size=0;
|
alter table t1 key_block_size=0;
|
||||||
@ -1860,33 +1860,33 @@ t1 CREATE TABLE `t1` (
|
|||||||
`c` int(11) DEFAULT NULL,
|
`c` int(11) DEFAULT NULL,
|
||||||
`d` int(11) DEFAULT NULL,
|
`d` int(11) DEFAULT NULL,
|
||||||
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
|
KEY `a` (`a`) KEY_BLOCK_SIZE=8192,
|
||||||
KEY `b` (`b`(1208)) KEY_BLOCK_SIZE=8192,
|
KEY `b` (`b`(1000)) KEY_BLOCK_SIZE=8192,
|
||||||
KEY `c` (`c`) KEY_BLOCK_SIZE=8192,
|
KEY `c` (`c`) KEY_BLOCK_SIZE=8192,
|
||||||
KEY `d` (`d`)
|
KEY `d` (`d`)
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=8192;
|
create table t1 (a int not null, b varchar(2048), key (a), key(b)) key_block_size=8192;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1071 Specified key was too long; max key length is 1208 bytes
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) NOT NULL,
|
`a` int(11) NOT NULL,
|
||||||
`b` varchar(2048) DEFAULT NULL,
|
`b` varchar(2048) DEFAULT NULL,
|
||||||
KEY `a` (`a`),
|
KEY `a` (`a`),
|
||||||
KEY `b` (`b`(1208))
|
KEY `b` (`b`(1000))
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=8192
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=8192
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null, b varchar(2048), key (a) key_block_size=1024, key(b)) key_block_size=8192;
|
create table t1 (a int not null, b varchar(2048), key (a) key_block_size=1024, key(b)) key_block_size=8192;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1071 Specified key was too long; max key length is 1208 bytes
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` int(11) NOT NULL,
|
`a` int(11) NOT NULL,
|
||||||
`b` varchar(2048) DEFAULT NULL,
|
`b` varchar(2048) DEFAULT NULL,
|
||||||
KEY `a` (`a`),
|
KEY `a` (`a`),
|
||||||
KEY `b` (`b`(1208))
|
KEY `b` (`b`(1000))
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=8192
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0 KEY_BLOCK_SIZE=8192
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null, b int, key (a) key_block_size=1024, key(b) key_block_size=8192) key_block_size=16384;
|
create table t1 (a int not null, b int, key (a) key_block_size=1024, key(b) key_block_size=8192) key_block_size=16384;
|
||||||
@ -1909,12 +1909,12 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
|
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1071 Specified key was too long; max key length is 1208 bytes
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` varchar(2048) DEFAULT NULL,
|
`a` varchar(2048) DEFAULT NULL,
|
||||||
KEY `a` (`a`(1208)) KEY_BLOCK_SIZE=8192
|
KEY `a` (`a`(1000)) KEY_BLOCK_SIZE=8192
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null, key `a` (a) key_block_size=1025);
|
create table t1 (a int not null, key `a` (a) key_block_size=1025);
|
||||||
|
@ -17,12 +17,12 @@ t1 CREATE TABLE `t1` (
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
|
create table t1 (a varchar(2048), key `a` (a) key_block_size=1000000000000000000);
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1071 Specified key was too long; max key length is 1208 bytes
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
`a` varchar(2048) DEFAULT NULL,
|
`a` varchar(2048) DEFAULT NULL,
|
||||||
KEY `a` (`a`(1208)) KEY_BLOCK_SIZE=8192
|
KEY `a` (`a`(1000)) KEY_BLOCK_SIZE=8192
|
||||||
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (a int not null, key `a` (a) key_block_size=1025);
|
create table t1 (a int not null, key `a` (a) key_block_size=1025);
|
||||||
@ -621,3 +621,50 @@ ERROR 23000: Duplicate entry '2' for key 'a'
|
|||||||
insert into t1 values(3);
|
insert into t1 values(3);
|
||||||
insert into t2 values(3);
|
insert into t2 values(3);
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT PRIMARY KEY,
|
||||||
|
b CHAR(255),
|
||||||
|
c VARCHAR(2048),
|
||||||
|
d VARCHAR(18990),
|
||||||
|
e CHAR(128),
|
||||||
|
f CHAR(192)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(1,'A','B','C','','D'),
|
||||||
|
(2,'Abcdefghi','E','F','','G');
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
g INT PRIMARY KEY,
|
||||||
|
h CHAR(32),
|
||||||
|
i CHAR(255),
|
||||||
|
j TEXT
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
INSERT INTO t2 VALUES (1,'M','','H'),
|
||||||
|
(2,'N','','H');
|
||||||
|
SELECT * FROM t1, t2 WHERE a = g ORDER BY b;
|
||||||
|
a b c d e f g h i j
|
||||||
|
1 A B C D 1 M H
|
||||||
|
2 Abcdefghi E F G 2 N H
|
||||||
|
drop table t1,t2;
|
||||||
|
CREATE TABLE t1 ( a VARCHAR(800),KEY(a) )
|
||||||
|
ENGINE=Aria DEFAULT CHARACTER SET latin1;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(REPEAT('abc ',200)), (REPEAT('def ',200)),
|
||||||
|
(REPEAT('ghi ',200)), (REPEAT('jkl ',200));
|
||||||
|
INSERT INTO t1 SELECT * FROM t1;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
ALTER TABLE t1 MODIFY a VARCHAR(800) CHARSET `ucs2`;
|
||||||
|
Warnings:
|
||||||
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
|
Warning 1071 Specified key was too long; max key length is 1000 bytes
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
SHOW CREATE table t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` varchar(800) CHARACTER SET ucs2 DEFAULT NULL,
|
||||||
|
KEY `a` (`a`(500))
|
||||||
|
) ENGINE=Aria DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -2,7 +2,7 @@ package My::Suite::Maria;
|
|||||||
|
|
||||||
@ISA = qw(My::Suite);
|
@ISA = qw(My::Suite);
|
||||||
|
|
||||||
return "Need Aria engine" unless $::mysqld_variables{'aria'} eq "ON";
|
return "Need Aria engine" unless $::mysqld_variables{'aria-block-size'} > 0;
|
||||||
|
|
||||||
bless { };
|
bless { };
|
||||||
|
|
||||||
|
1
mysql-test/suite/maria/t/maria-gis-recovery-master.opt
Normal file
1
mysql-test/suite/maria/t/maria-gis-recovery-master.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--skip-stack-trace --skip-core-file --loose-aria-log-dir-path=$MYSQLTEST_VARDIR/tmp
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user