Merge mronstrom@bk-internal.mysql.com:/home/bk/mysql-5.0
into c-4a09e253.1238-1-64736c10.cust.bredbandsbolaget.se:/home/pappa/mysql-5.1
This commit is contained in:
commit
02056f8e3a
@ -1036,7 +1036,9 @@ support-files/MacOSX/Description.plist
|
||||
support-files/MacOSX/Info.plist
|
||||
support-files/MacOSX/ReadMe.txt
|
||||
support-files/MacOSX/StartupParameters.plist
|
||||
support-files/MacOSX/postflight
|
||||
support-files/MacOSX/postinstall
|
||||
support-files/MacOSX/preflight
|
||||
support-files/MacOSX/preinstall
|
||||
support-files/binary-configure
|
||||
support-files/my-huge.cnf
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
EXTRA_DIST = FINISH.sh \
|
||||
SETUP.sh \
|
||||
autorun.sh \
|
||||
check-cpu \
|
||||
compile-alpha \
|
||||
compile-alpha-ccc \
|
||||
|
@ -90,6 +90,9 @@ case "$cpu_family--$model_name" in
|
||||
*Athlon*)
|
||||
cpu_arg="athlon";
|
||||
;;
|
||||
*Opteron*)
|
||||
cpu_arg="opteron";
|
||||
;;
|
||||
|
||||
# Intel ia64
|
||||
*Itanium*)
|
||||
@ -147,6 +150,9 @@ case "$cc_ver--$cc_verno" in
|
||||
ppc-*)
|
||||
check_cpu_args='-mcpu=$cpu_arg -mtune=$cpu_arg'
|
||||
;;
|
||||
x86_64-*)
|
||||
check_cpu_args='-mtune=$cpu_arg'
|
||||
;;
|
||||
*)
|
||||
check_cpu_cflags=""
|
||||
return
|
||||
|
@ -71,6 +71,8 @@ hours:
|
||||
[arjen:]checkout:get
|
||||
[kostja:]checkout:get
|
||||
[nick:]checkout:get
|
||||
[jonas:]checkout:get
|
||||
[tomas:]checkout:get
|
||||
checkout:edit
|
||||
eoln:unix
|
||||
|
||||
|
@ -2730,6 +2730,9 @@
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\strings\str_alloc.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\strings\strcend.c">
|
||||
<FileConfiguration
|
||||
|
@ -24,6 +24,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "innobase", "innobase\innoba
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmysql", "libmysql\libmysql.vcproj", "{1FC6EB72-1D0F-4E40-8851-1CC5DEB94F0F}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{EEC1300B-85A5-497C-B3E1-F708021DF859} = {EEC1300B-85A5-497C-B3E1-F708021DF859}
|
||||
{BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB} = {BA86AE72-0CF5-423D-BBA2-E12B0D72EBFB}
|
||||
{8762A9B8-72A9-462E-A9A2-F3265081F8AF} = {8762A9B8-72A9-462E-A9A2-F3265081F8AF}
|
||||
{44D9C7DC-6636-4B82-BD01-6876C64017DF} = {44D9C7DC-6636-4B82-BD01-6876C64017DF}
|
||||
|
@ -49,7 +49,7 @@ RSC=rc.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../zlib" /I "../include" /I "../regex" /I "../extra/yassl/include" /D "NDEBUG" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../zlib" /I "../include" /I "../regex" /I "../extra/yassl/include" /D "NDEBUG" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_ARCHIVE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x410 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
@ -75,7 +75,7 @@ LINK32=xilink6.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../storage/bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c
|
||||
# ADD CPP /nologo /G6 /MTd /W3 /Z7 /Od /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "_DEBUG" /D "SAFEMALLOC" /D "SAFE_MUTEX" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "HAVE_EXAMPLE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /FD /c
|
||||
# SUBTRACT CPP /Fr /YX
|
||||
# ADD BASE RSC /l 0x410 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
@ -102,7 +102,7 @@ LINK32=xilink6.exe
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G5 /MT /W3 /O2 /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "__WIN32__" /D "DBUG_OFF" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "HAVE_INNOBASE_DB" /D "HAVE_ARCHIVE_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x410 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
@ -130,7 +130,7 @@ LINK32=xilink6.exe
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../storage/bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt-max /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "__NT__" /D "DBUG_OFF" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_EXAMPLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-nt-max /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
@ -159,7 +159,7 @@ LINK32=xilink6.exe
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /D "NDEBUG" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../storage/bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "USE_SYMDIR" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-max /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../bdb/build_win32" /I "../include" /I "../regex" /I "../extra/yassl/include" /I "../zlib" /D "NDEBUG" /D "DBUG_OFF" /D "USE_SYMDIR" /D "HAVE_INNOBASE_DB" /D "HAVE_BERKELEY_DB" /D "HAVE_ARCHIVE_DB" /D "HAVE_BLACKHOLE_DB" /D "HAVE_EXAMPLE_DB" /D "HAVE_FEDERATED_DB" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-max /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
@ -215,7 +215,7 @@ LINK32=xilink6.exe
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D MYSQL_SERVER_SUFFIX=-pro /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_MBCS" /D "HAVE_DLOPEN" /D "HAVE_INNOBASE_DB" /D "HAVE_ARCHIVE_DB" /D "DBUG_OFF" /D "NDEBUG" /D "_WINDOWS" /D "_CONSOLE" /D MYSQL_SERVER_SUFFIX=-pro /FD /c
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@ -272,7 +272,7 @@ LINK32=xilink6.exe
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /D "DBUG_OFF" /D "MYSQL_SERVER" /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "USE_SYMDIR" /D "HAVE_DLOPEN" /D "NDEBUG" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "HAVE_INNOBASE_DB" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-pro-nt /FD /c
|
||||
# ADD CPP /nologo /G6 /MT /W3 /O2 /I "../include" /I "../regex" /I "../zlib" /I "../extra/yassl/include" /D "__NT__" /D "DBUG_OFF" /D "NDEBUG" /D "HAVE_INNOBASE_DB" /D "HAVE_ARCHIVE_DB" /D "MYSQL_SERVER" /D LICENSE=Commercial /D "_WINDOWS" /D "_CONSOLE" /D "_MBCS" /D "HAVE_DLOPEN" /D MYSQL_SERVER_SUFFIX=-pro-nt /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
@ -460,6 +460,10 @@ SOURCE=.\examples\ha_archive.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\examples\ha_example.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\ha_blackhole.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@ -759,6 +759,9 @@
|
||||
PreprocessorDefinitions=""/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\str_alloc.c">
|
||||
</File>
|
||||
<File
|
||||
RelativePath="strcend.c">
|
||||
<FileConfiguration
|
||||
|
@ -624,7 +624,7 @@ static struct my_option my_long_options[] =
|
||||
NO_ARG, 0, 0, 0, 0, 0, 0},
|
||||
#endif
|
||||
{"port", 'P', "Port number to use for connection.", (gptr*) &opt_mysql_port,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, MYSQL_PORT, 0, 0, 0, 0,
|
||||
(gptr*) &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0,
|
||||
0},
|
||||
{"prompt", OPT_PROMPT, "Set the mysql prompt to this value.",
|
||||
(gptr*) ¤t_prompt, (gptr*) ¤t_prompt, 0, GET_STR_ALLOC,
|
||||
@ -1598,11 +1598,8 @@ You can turn off this feature to get a quicker startup with -A\n\n");
|
||||
mysql_free_result(fields);
|
||||
}
|
||||
else
|
||||
{
|
||||
tee_fprintf(stdout,
|
||||
"Didn't find any fields in table '%s'\n",table_row[0]);
|
||||
field_names[i]= 0;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
mysql_free_result(tables);
|
||||
|
@ -575,8 +575,13 @@ static void print_result()
|
||||
|
||||
if (status)
|
||||
{
|
||||
/*
|
||||
if there was an error with the table, we have --auto-repair set,
|
||||
and this isn't a repair op, then add the table to the tables4repair
|
||||
list
|
||||
*/
|
||||
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR &&
|
||||
(!opt_fast || strcmp(row[3],"OK")))
|
||||
strcmp(row[3],"OK"))
|
||||
insert_dynamic(&tables4repair, prev);
|
||||
found_error=0;
|
||||
if (opt_silent)
|
||||
@ -595,8 +600,8 @@ static void print_result()
|
||||
strmov(prev, row[0]);
|
||||
putchar('\n');
|
||||
}
|
||||
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR &&
|
||||
!opt_fast)
|
||||
/* add the last table to be repaired to the list */
|
||||
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)
|
||||
insert_dynamic(&tables4repair, prev);
|
||||
mysql_free_result(res);
|
||||
}
|
||||
|
@ -2781,6 +2781,7 @@ static int run_query_normal(MYSQL* mysql, struct st_query* q, int flags)
|
||||
if (!disable_result_log)
|
||||
{
|
||||
ulong affected_rows; /* Ok to be undef if 'disable_info' is set */
|
||||
LINT_INIT(affected_rows);
|
||||
|
||||
if (res)
|
||||
{
|
||||
|
@ -62,10 +62,19 @@ AC_DEFUN([MYSQL_CHECK_NDB_OPTIONS], [
|
||||
[ndb_debug="$withval"],
|
||||
[ndb_debug="default"])
|
||||
AC_ARG_WITH([ndb-ccflags],
|
||||
[
|
||||
--with-ndb-ccflags Extra CC options for ndb compile],
|
||||
[ndb_cxxflags_fix="$ndb_cxxflags_fix $withval"],
|
||||
[ndb_cxxflags_fix=$ndb_cxxflags_fix])
|
||||
AC_HELP_STRING([--with-ndb-ccflags=CFLAGS],
|
||||
[Extra CFLAGS for ndb compile]),
|
||||
[ndb_ccflags=${withval}],
|
||||
[ndb_ccflags=""])
|
||||
|
||||
case "$ndb_ccflags" in
|
||||
"yes")
|
||||
AC_MSG_RESULT([The --ndb-ccflags option requires a parameter (passed to CC for ndb compilation)])
|
||||
;;
|
||||
*)
|
||||
ndb_cxxflags_fix="$ndb_cxxflags_fix $ndb_ccflags"
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_MSG_CHECKING([for NDB Cluster options])
|
||||
AC_MSG_RESULT([])
|
||||
|
@ -5,12 +5,9 @@ extra/yassl/src/Makefile)
|
||||
|
||||
AC_DEFUN([MYSQL_CHECK_YASSL], [
|
||||
AC_MSG_CHECKING(for yaSSL)
|
||||
AC_ARG_WITH([yassl],
|
||||
[ --with-yassl Include the yaSSL support],
|
||||
[yassl=yes],
|
||||
[yassl=no])
|
||||
AC_ARG_WITH([yassl], [ --with-yassl Include the yaSSL support],,)
|
||||
|
||||
if test "$yassl" = "yes"
|
||||
if test "$with_yassl" = "yes"
|
||||
then
|
||||
if test "$openssl" != "no"
|
||||
then
|
||||
@ -30,5 +27,5 @@ AC_DEFUN([MYSQL_CHECK_YASSL], [
|
||||
AC_SUBST(openssl_libs)
|
||||
AC_SUBST(openssl_includes)
|
||||
AC_SUBST(yassl_dir)
|
||||
AM_CONDITIONAL([HAVE_YASSL], [ test "$yassl" = "yes" ])
|
||||
AM_CONDITIONAL([HAVE_YASSL], [ test "with_yassl" = "yes" ])
|
||||
])
|
||||
|
101
configure.in
101
configure.in
@ -1,7 +1,7 @@
|
||||
dnl -*- ksh -*-
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.57)dnl Minimum Autoconf version required.
|
||||
AC_PREREQ(2.52)dnl Minimum Autoconf version required.
|
||||
|
||||
AC_INIT(sql/mysqld.cc)
|
||||
AC_CANONICAL_SYSTEM
|
||||
@ -131,6 +131,7 @@ AC_PROG_MAKE_SET
|
||||
# Hack for OS X/Darwin and Metrowerks CodeWarrior
|
||||
AC_ARG_WITH(darwin-mwcc,
|
||||
[ --with-darwin-mwcc Use Metrowerks CodeWarrior wrappers on OS X/Darwin],[
|
||||
if [ "with_darwin_mwcc" = yes ] ; then
|
||||
builddir=`pwd`
|
||||
ccwrapper="$builddir/support-files/MacOSX/mwcc-wrapper"
|
||||
arwrapper="$builddir/support-files/MacOSX/mwar-wrapper"
|
||||
@ -142,7 +143,7 @@ AC_ARG_WITH(darwin-mwcc,
|
||||
export CC CXX LD AR RANLIB
|
||||
AC_SUBST(AR)
|
||||
AC_SUBST(RANLIB)
|
||||
with_darwin_mwcc=yes
|
||||
fi
|
||||
])
|
||||
|
||||
AM_CONDITIONAL(DARWIN_MWCC, test x$with_darwin_mwcc = xyes)
|
||||
@ -2446,7 +2447,7 @@ thread_dirs=
|
||||
|
||||
dnl This probably should be cleaned up more - for now the threaded
|
||||
dnl client is just using plain-old libs.
|
||||
sql_client_dirs="libmysql strings regex client"
|
||||
sql_client_dirs="strings regex mysys sql/share libmysql client"
|
||||
linked_client_targets="linked_libmysql_sources"
|
||||
|
||||
if test "$THREAD_SAFE_CLIENT" != "no"
|
||||
@ -2484,7 +2485,7 @@ then
|
||||
AC_DEFINE([THREAD], [1],
|
||||
[Define if you want to have threaded code. This may be undef on client code])
|
||||
# Avoid _PROGRAMS names
|
||||
THREAD_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o"
|
||||
THREAD_LOBJECTS="thr_alarm.o thr_lock.o thr_mutex.o thr_rwlock.o my_pthread.o my_thr_init.o mf_keycache.o"
|
||||
AC_SUBST(THREAD_LOBJECTS)
|
||||
server_scripts="mysqld_safe mysql_install_db"
|
||||
sql_server_dirs="strings mysys dbug extra regex"
|
||||
@ -2597,7 +2598,6 @@ esac
|
||||
# END of configuration for optional table handlers
|
||||
#
|
||||
sql_server_dirs="$sql_server_dirs storage/myisam storage/myisammrg storage/heap vio sql"
|
||||
|
||||
fi
|
||||
|
||||
# IMPORTANT - do not modify LIBS past this line - this hack is the only way
|
||||
@ -2729,53 +2729,50 @@ AC_SUBST([NDB_SIZEOF_INT])
|
||||
AC_SUBST([NDB_SIZEOF_LONG])
|
||||
AC_SUBST([NDB_SIZEOF_LONG_LONG])
|
||||
|
||||
AC_CONFIG_FILES(storage/ndb/Makefile storage/ndb/include/Makefile dnl
|
||||
storage/ndb/src/Makefile storage/ndb/src/common/Makefile dnl
|
||||
storage/ndb/docs/Makefile dnl
|
||||
storage/ndb/tools/Makefile dnl
|
||||
storage/ndb/src/common/debugger/Makefile dnl
|
||||
storage/ndb/src/common/debugger/signaldata/Makefile dnl
|
||||
storage/ndb/src/common/portlib/Makefile dnl
|
||||
storage/ndb/src/common/util/Makefile dnl
|
||||
storage/ndb/src/common/logger/Makefile dnl
|
||||
storage/ndb/src/common/transporter/Makefile dnl
|
||||
storage/ndb/src/common/mgmcommon/Makefile dnl
|
||||
storage/ndb/src/kernel/Makefile dnl
|
||||
storage/ndb/src/kernel/error/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/cmvmi/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/dbacc/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/dbdict/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/dbdih/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/dblqh/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/dbtc/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/dbtup/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/ndbfs/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/ndbcntr/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/qmgr/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/trix/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/backup/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/dbutil/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/suma/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/grep/Makefile dnl
|
||||
storage/ndb/src/kernel/blocks/dbtux/Makefile dnl
|
||||
storage/ndb/src/kernel/vm/Makefile dnl
|
||||
storage/ndb/src/mgmapi/Makefile dnl
|
||||
storage/ndb/src/ndbapi/Makefile dnl
|
||||
storage/ndb/src/mgmsrv/Makefile dnl
|
||||
storage/ndb/src/mgmclient/Makefile dnl
|
||||
storage/ndb/src/cw/Makefile dnl
|
||||
storage/ndb/src/cw/cpcd/Makefile dnl
|
||||
storage/ndb/test/Makefile dnl
|
||||
storage/ndb/test/src/Makefile dnl
|
||||
storage/ndb/test/ndbapi/Makefile dnl
|
||||
storage/ndb/test/ndbapi/bank/Makefile dnl
|
||||
storage/ndb/test/tools/Makefile dnl
|
||||
storage/ndb/test/run-test/Makefile dnl
|
||||
storage/ndb/include/ndb_version.h dnl
|
||||
storage/ndb/include/ndb_global.h dnl
|
||||
storage/ndb/include/ndb_types.h dnl
|
||||
mysql-test/ndb/Makefile dnl
|
||||
AC_CONFIG_FILES(ndb/Makefile ndb/include/Makefile dnl
|
||||
ndb/src/Makefile ndb/src/common/Makefile dnl
|
||||
ndb/docs/Makefile dnl
|
||||
ndb/tools/Makefile dnl
|
||||
ndb/src/common/debugger/Makefile dnl
|
||||
ndb/src/common/debugger/signaldata/Makefile dnl
|
||||
ndb/src/common/portlib/Makefile dnl
|
||||
ndb/src/common/util/Makefile dnl
|
||||
ndb/src/common/logger/Makefile dnl
|
||||
ndb/src/common/transporter/Makefile dnl
|
||||
ndb/src/common/mgmcommon/Makefile dnl
|
||||
ndb/src/kernel/Makefile dnl
|
||||
ndb/src/kernel/error/Makefile dnl
|
||||
ndb/src/kernel/blocks/Makefile dnl
|
||||
ndb/src/kernel/blocks/cmvmi/Makefile dnl
|
||||
ndb/src/kernel/blocks/dbacc/Makefile dnl
|
||||
ndb/src/kernel/blocks/dbdict/Makefile dnl
|
||||
ndb/src/kernel/blocks/dbdih/Makefile dnl
|
||||
ndb/src/kernel/blocks/dblqh/Makefile dnl
|
||||
ndb/src/kernel/blocks/dbtc/Makefile dnl
|
||||
ndb/src/kernel/blocks/dbtup/Makefile dnl
|
||||
ndb/src/kernel/blocks/ndbfs/Makefile dnl
|
||||
ndb/src/kernel/blocks/ndbcntr/Makefile dnl
|
||||
ndb/src/kernel/blocks/qmgr/Makefile dnl
|
||||
ndb/src/kernel/blocks/trix/Makefile dnl
|
||||
ndb/src/kernel/blocks/backup/Makefile dnl
|
||||
ndb/src/kernel/blocks/dbutil/Makefile dnl
|
||||
ndb/src/kernel/blocks/suma/Makefile dnl
|
||||
ndb/src/kernel/blocks/dbtux/Makefile dnl
|
||||
ndb/src/kernel/vm/Makefile dnl
|
||||
ndb/src/mgmapi/Makefile dnl
|
||||
ndb/src/ndbapi/Makefile dnl
|
||||
ndb/src/mgmsrv/Makefile dnl
|
||||
ndb/src/mgmclient/Makefile dnl
|
||||
ndb/src/cw/Makefile dnl
|
||||
ndb/src/cw/cpcd/Makefile dnl
|
||||
ndb/test/Makefile dnl
|
||||
ndb/test/src/Makefile dnl
|
||||
ndb/test/ndbapi/Makefile dnl
|
||||
ndb/test/ndbapi/bank/Makefile dnl
|
||||
ndb/test/tools/Makefile dnl
|
||||
ndb/test/run-test/Makefile mysql-test/ndb/Makefile dnl
|
||||
ndb/include/ndb_version.h ndb/include/ndb_global.h dnl
|
||||
ndb/include/ndb_types.h dnl
|
||||
)
|
||||
fi
|
||||
|
||||
|
@ -18,7 +18,9 @@ char *argv[];
|
||||
#if defined(HAVE_PTHREAD_INIT) && defined(THREAD)
|
||||
pthread_init(); /* Must be called before DBUG_ENTER */
|
||||
#endif
|
||||
#ifdef THREAD
|
||||
my_thread_global_init();
|
||||
#endif
|
||||
{
|
||||
DBUG_ENTER ("main");
|
||||
DBUG_PROCESS (argv[0]);
|
||||
|
@ -1,7 +1,7 @@
|
||||
INCLUDES = -I../include -I../taocrypt/include -I../mySTL
|
||||
|
||||
noinst_LIBRARIES = libyassl.a
|
||||
libyassl_a_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \
|
||||
noinst_LTLIBRARIES = libyassl.la
|
||||
libyassl_la_SOURCES = buffer.cpp cert_wrapper.cpp crypto_wrapper.cpp \
|
||||
handshake.cpp lock.cpp log.cpp socket_wrapper.cpp ssl.cpp \
|
||||
template_instnt.cpp timer.cpp yassl_imp.cpp yassl_error.cpp yassl_int.cpp
|
||||
EXTRA_DIST = ../include/*.hpp ../include/openssl/*.h
|
||||
|
@ -1,7 +1,7 @@
|
||||
INCLUDES = -I../include -I../../mySTL
|
||||
|
||||
noinst_LIBRARIES = libtaocrypt.a
|
||||
libtaocrypt_a_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp asn.cpp \
|
||||
noinst_LTLIBRARIES = libtaocrypt.la
|
||||
libtaocrypt_la_SOURCES = aes.cpp aestables.cpp algebra.cpp arc4.cpp asn.cpp \
|
||||
coding.cpp dh.cpp des.cpp dsa.cpp file.cpp hash.cpp integer.cpp \
|
||||
md2.cpp md5.cpp misc.cpp random.cpp ripemd.cpp rsa.cpp sha.cpp \
|
||||
template_instnt.cpp
|
||||
|
@ -53,6 +53,7 @@ extern "C" {
|
||||
#define HAVE_PTHREAD_YIELD_ZERO_ARG 1
|
||||
#define HAVE_BROKEN_REALPATH 1
|
||||
|
||||
/* changes made to make use of LibC-June-2004 for building purpose */
|
||||
#undef HAVE_POSIX_SIGNALS
|
||||
#undef HAVE_PTHREAD_ATTR_SETSCOPE
|
||||
#undef HAVE_ALLOC_A
|
||||
@ -62,6 +63,8 @@ extern "C" {
|
||||
#undef HAVE_PTHREAD_SETSCHEDPARAM
|
||||
#undef HAVE_READLINK
|
||||
#undef HAVE_STPCPY
|
||||
/* changes end */
|
||||
|
||||
/* no libc crypt() function */
|
||||
#ifdef HAVE_OPENSSL
|
||||
#define HAVE_CRYPT 1
|
||||
|
@ -231,6 +231,7 @@ typedef struct charset_info_st
|
||||
uint mbmaxlen;
|
||||
uint16 min_sort_char;
|
||||
uint16 max_sort_char; /* For LIKE optimization */
|
||||
my_bool escape_with_backslash_is_dangerous;
|
||||
|
||||
MY_CHARSET_HANDLER *cset;
|
||||
MY_COLLATION_HANDLER *coll;
|
||||
|
@ -1015,7 +1015,17 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
|
||||
#ifndef set_timespec
|
||||
#ifdef HAVE_TIMESPEC_TS_SEC
|
||||
#define set_timespec(ABSTIME,SEC) { (ABSTIME).ts_sec=time(0) + (time_t) (SEC); (ABSTIME).ts_nsec=0; }
|
||||
#define set_timespec(ABSTIME,SEC) \
|
||||
{ \
|
||||
(ABSTIME).ts_sec=time(0) + (time_t) (SEC); \
|
||||
(ABSTIME).ts_nsec=0; \
|
||||
}
|
||||
#define set_timespec_nsec(ABSTIME,NSEC) \
|
||||
{ \
|
||||
ulonglong now= my_getsystime() + (NSEC/100); \
|
||||
(ABSTIME).ts_sec= (now / ULL(10000000)); \
|
||||
(ABSTIME).ts_nsec= (now % ULL(10000000) * 100 + ((NSEC) % 100)); \
|
||||
}
|
||||
#else
|
||||
#define set_timespec(ABSTIME,SEC) \
|
||||
{\
|
||||
@ -1024,6 +1034,12 @@ typedef char bool; /* Ordinary boolean values 0 1 */
|
||||
(ABSTIME).tv_sec=tv.tv_sec+(time_t) (SEC);\
|
||||
(ABSTIME).tv_nsec=tv.tv_usec*1000;\
|
||||
}
|
||||
#define set_timespec_nsec(ABSTIME,NSEC) \
|
||||
{\
|
||||
ulonglong now= my_getsystime() + (NSEC/100); \
|
||||
(ABSTIME).tv_sec= (now / ULL(10000000)); \
|
||||
(ABSTIME).tv_nsec= (now % ULL(10000000) * 100 + ((NSEC) % 100)); \
|
||||
}
|
||||
#endif /* HAVE_TIMESPEC_TS_SEC */
|
||||
#endif /* set_timespec */
|
||||
|
||||
|
@ -36,7 +36,7 @@ extern void list_free(LIST *root,unsigned int free_data);
|
||||
extern unsigned int list_length(LIST *);
|
||||
extern int list_walk(LIST *,list_walk_action action,gptr argument);
|
||||
|
||||
#define rest(a) ((a)->next)
|
||||
#define list_rest(a) ((a)->next)
|
||||
#define list_push(a,b) (a)=list_cons((b),(a))
|
||||
#define list_pop(A) {LIST *old=(A); (A)=list_delete(old,old) ; my_free((gptr) old,MYF(MY_FAE)); }
|
||||
|
||||
|
@ -866,6 +866,11 @@ extern void add_compiled_collation(CHARSET_INFO *cs);
|
||||
extern ulong escape_string_for_mysql(CHARSET_INFO *charset_info,
|
||||
char *to, ulong to_length,
|
||||
const char *from, ulong length);
|
||||
#ifdef __WIN__
|
||||
#define BACKSLASH_MBTAIL
|
||||
/* File system character set */
|
||||
extern CHARSET_INFO *fs_character_set(void);
|
||||
#endif
|
||||
extern ulong escape_quotes_for_mysql(CHARSET_INFO *charset_info,
|
||||
char *to, ulong to_length,
|
||||
const char *from, ulong length);
|
||||
|
@ -576,15 +576,19 @@ set @arg00= 9223372036854775807 ;
|
||||
execute my_insert using @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00 ;
|
||||
--vertical_results
|
||||
--replace_result e+0 e+
|
||||
execute my_select ;
|
||||
--horizontal_results
|
||||
--replace_result e+0 e+
|
||||
execute my_delete ;
|
||||
set @arg00= '9223372036854775807' ;
|
||||
execute my_insert using @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00 ;
|
||||
--vertical_results
|
||||
--replace_result e+0 e+
|
||||
execute my_select ;
|
||||
--horizontal_results
|
||||
--replace_result e+0 e+
|
||||
execute my_delete ;
|
||||
# Use the minimum BIGINT from the manual
|
||||
#
|
||||
@ -592,15 +596,19 @@ set @arg00= -9223372036854775808 ;
|
||||
execute my_insert using @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00 ;
|
||||
--vertical_results
|
||||
--replace_result e+0 e+
|
||||
execute my_select ;
|
||||
--horizontal_results
|
||||
--replace_result e+0 e+
|
||||
execute my_delete ;
|
||||
set @arg00= '-9223372036854775808' ;
|
||||
execute my_insert using @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00 ;
|
||||
--vertical_results
|
||||
--replace_result e+0 e+
|
||||
execute my_select ;
|
||||
--horizontal_results
|
||||
--replace_result e+0 e+
|
||||
execute my_delete ;
|
||||
|
||||
# Numeric overflow of columns(c1, c2, c3, c4, c5, c12) with type not in
|
||||
@ -610,8 +618,10 @@ set @arg00= 1.11111111111111111111e+50 ;
|
||||
execute my_insert using @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00 ;
|
||||
--vertical_results
|
||||
--replace_result e+0 e+
|
||||
execute my_select ;
|
||||
--horizontal_results
|
||||
--replace_result e+0 e+
|
||||
execute my_delete ;
|
||||
# Attention: The columns(c1,c2,c3,c4,c5,c6) do not get the overflow,
|
||||
# because the string is treated as written integer and
|
||||
@ -620,15 +630,19 @@ set @arg00= '1.11111111111111111111e+50' ;
|
||||
execute my_insert using @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00 ;
|
||||
--vertical_results
|
||||
--replace_result e+0 e+
|
||||
execute my_select ;
|
||||
--horizontal_results
|
||||
--replace_result e+0 e+
|
||||
execute my_delete ;
|
||||
set @arg00= -1.11111111111111111111e+50 ;
|
||||
execute my_insert using @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00 ;
|
||||
--vertical_results
|
||||
--replace_result e+0 e+
|
||||
execute my_select ;
|
||||
--horizontal_results
|
||||
--replace_result e+0 e+
|
||||
execute my_delete ;
|
||||
# Attention: The columns(c1,c2,c3,c4,c5,c6) do not get the overflow,
|
||||
# because the string is treated as written integer and
|
||||
@ -637,8 +651,10 @@ set @arg00= '-1.11111111111111111111e+50' ;
|
||||
execute my_insert using @arg00, @arg00, @arg00, @arg00, @arg00, @arg00,
|
||||
@arg00, @arg00, @arg00, @arg00, @arg00 ;
|
||||
--vertical_results
|
||||
--replace_result e+0 e+
|
||||
execute my_select ;
|
||||
--horizontal_results
|
||||
--replace_result e+0 e+
|
||||
execute my_delete ;
|
||||
|
||||
########################## test of string types ##########################
|
||||
|
@ -229,6 +229,7 @@ drop table t1;
|
||||
|
||||
#
|
||||
# Bug #9489: problem with hash indexes
|
||||
# Bug #10802: Index is not used if table using BDB engine on HP-UX
|
||||
#
|
||||
|
||||
create table t1(a int, b varchar(12), key ba(b, a));
|
||||
|
@ -518,7 +518,7 @@ CREATE TABLE proc (
|
||||
security_type enum('INVOKER','DEFINER') DEFAULT 'DEFINER' NOT NULL,
|
||||
param_list blob DEFAULT '' NOT NULL,
|
||||
returns char(64) DEFAULT '' NOT NULL,
|
||||
body blob DEFAULT '' NOT NULL,
|
||||
body longblob DEFAULT '' NOT NULL,
|
||||
definer char(77) collate utf8_bin DEFAULT '' NOT NULL,
|
||||
created timestamp,
|
||||
modified timestamp,
|
||||
|
@ -53,21 +53,20 @@ sub collect_test_cases ($) {
|
||||
else
|
||||
{
|
||||
# ----------------------------------------------------------------------
|
||||
# Skip some tests listed in disabled.def
|
||||
# Disable some tests listed in disabled.def
|
||||
# ----------------------------------------------------------------------
|
||||
my %skiplist;
|
||||
my $skipfile= "$testdir/disabled.def";
|
||||
if ( open(SKIPFILE, $skipfile) )
|
||||
my %disabled;
|
||||
if ( open(DISABLED, "$testdir/disabled.def" ) )
|
||||
{
|
||||
while ( <SKIPFILE> )
|
||||
while ( <DISABLED> )
|
||||
{
|
||||
chomp;
|
||||
if ( /^\s*(\S+)\s*:\s*(.*?)\s*$/ )
|
||||
{
|
||||
$skiplist{$1}= $2;
|
||||
$disabled{$1}= $2;
|
||||
}
|
||||
}
|
||||
close SKIPFILE;
|
||||
close DISABLED;
|
||||
}
|
||||
|
||||
foreach my $elem ( sort readdir(TESTDIR) ) {
|
||||
@ -75,7 +74,7 @@ sub collect_test_cases ($) {
|
||||
next if ! defined $tname;
|
||||
next if $::opt_do_test and ! defined mtr_match_prefix($elem,$::opt_do_test);
|
||||
|
||||
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%skiplist);
|
||||
collect_one_test_case($testdir,$resdir,$tname,$elem,$cases,\%disabled);
|
||||
}
|
||||
closedir TESTDIR;
|
||||
}
|
||||
@ -119,7 +118,7 @@ sub collect_one_test_case($$$$$$) {
|
||||
my $tname= shift;
|
||||
my $elem= shift;
|
||||
my $cases= shift;
|
||||
my $skiplist=shift;
|
||||
my $disabled=shift;
|
||||
|
||||
my $path= "$testdir/$elem";
|
||||
|
||||
@ -188,7 +187,7 @@ sub collect_one_test_case($$$$$$) {
|
||||
my $slave_mi_file= "$testdir/$tname.slave-mi";
|
||||
my $master_sh= "$testdir/$tname-master.sh";
|
||||
my $slave_sh= "$testdir/$tname-slave.sh";
|
||||
my $disabled= "$testdir/$tname.disabled";
|
||||
my $disabled_file= "$testdir/$tname.disabled";
|
||||
|
||||
$tinfo->{'master_opt'}= $::glob_win32 ? ["--default-time-zone=+3:00"] : [];
|
||||
$tinfo->{'slave_opt'}= $::glob_win32 ? ["--default-time-zone=+3:00"] : [];
|
||||
@ -292,18 +291,18 @@ sub collect_one_test_case($$$$$$) {
|
||||
}
|
||||
|
||||
# FIXME why this late?
|
||||
if ( $skiplist->{$tname} )
|
||||
if ( $disabled->{$tname} )
|
||||
{
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'disable'}= 1; # Sub type of 'skip'
|
||||
$tinfo->{'comment'}= $skiplist->{$tname} if $skiplist->{$tname};
|
||||
$tinfo->{'comment'}= $disabled->{$tname} if $disabled->{$tname};
|
||||
}
|
||||
|
||||
if ( -f $disabled )
|
||||
if ( -f $disabled_file )
|
||||
{
|
||||
$tinfo->{'skip'}= 1;
|
||||
$tinfo->{'disable'}= 1; # Sub type of 'skip'
|
||||
$tinfo->{'comment'}= mtr_fromfile($disabled);
|
||||
$tinfo->{'comment'}= mtr_fromfile($disabled_file);
|
||||
}
|
||||
|
||||
# We can't restart a running server that may be in use
|
||||
|
@ -7,6 +7,7 @@
|
||||
use strict;
|
||||
|
||||
sub mtr_full_hostname ();
|
||||
sub mtr_short_hostname ();
|
||||
sub mtr_init_args ($);
|
||||
sub mtr_add_arg ($$);
|
||||
sub mtr_path_exists(@);
|
||||
@ -21,6 +22,7 @@ sub mtr_exe_exists(@);
|
||||
|
||||
# We want the fully qualified host name and hostname() may have returned
|
||||
# only the short name. So we use the resolver to find out.
|
||||
# Note that this might fail on some platforms
|
||||
|
||||
sub mtr_full_hostname () {
|
||||
|
||||
@ -35,6 +37,13 @@ sub mtr_full_hostname () {
|
||||
return $hostname;
|
||||
}
|
||||
|
||||
sub mtr_short_hostname () {
|
||||
|
||||
my $hostname= hostname();
|
||||
$hostname =~ s/\..+$//;
|
||||
return $hostname;
|
||||
}
|
||||
|
||||
# FIXME move to own lib
|
||||
|
||||
sub mtr_init_args ($) {
|
||||
|
@ -185,10 +185,6 @@ sub spawn_parent_impl {
|
||||
|
||||
if ( $mode eq 'run' or $mode eq 'test' )
|
||||
{
|
||||
my $exit_value= -1;
|
||||
my $signal_num= 0;
|
||||
my $dumped_core= 0;
|
||||
|
||||
if ( $mode eq 'run' )
|
||||
{
|
||||
# Simple run of command, we wait for it to return
|
||||
@ -199,11 +195,7 @@ sub spawn_parent_impl {
|
||||
mtr_error("$path ($pid) got lost somehow");
|
||||
}
|
||||
|
||||
$exit_value= $? >> 8;
|
||||
$signal_num= $? & 127;
|
||||
$dumped_core= $? & 128;
|
||||
|
||||
return $exit_value;
|
||||
return mtr_process_exit_status($?);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -217,6 +209,8 @@ sub spawn_parent_impl {
|
||||
# FIXME is this as it should be? Can't mysqld terminate
|
||||
# normally from running a test case?
|
||||
|
||||
my $exit_value= -1;
|
||||
my $saved_exit_value;
|
||||
my $ret_pid; # What waitpid() returns
|
||||
|
||||
while ( ($ret_pid= waitpid(-1,0)) != -1 )
|
||||
@ -226,12 +220,28 @@ sub spawn_parent_impl {
|
||||
# but not $exit_value, this is flagged from
|
||||
#
|
||||
|
||||
my $timer_name= mtr_timer_timeout($::glob_timers, $ret_pid);
|
||||
if ( $timer_name )
|
||||
{
|
||||
if ( $timer_name eq "suite" )
|
||||
{
|
||||
# We give up here
|
||||
# FIXME we should only give up the suite, not all of the run?
|
||||
print STDERR "\n";
|
||||
mtr_error("Test suite timeout");
|
||||
}
|
||||
elsif ( $timer_name eq "testcase" )
|
||||
{
|
||||
$saved_exit_value= 63; # Mark as timeout
|
||||
kill(9, $pid); # Kill mysqltest
|
||||
next; # Go on and catch the termination
|
||||
}
|
||||
}
|
||||
|
||||
if ( $ret_pid == $pid )
|
||||
{
|
||||
# We got termination of mysqltest, we are done
|
||||
$exit_value= $? >> 8;
|
||||
$signal_num= $? & 127;
|
||||
$dumped_core= $? & 128;
|
||||
$exit_value= mtr_process_exit_status($?);
|
||||
last;
|
||||
}
|
||||
|
||||
@ -279,7 +289,7 @@ sub spawn_parent_impl {
|
||||
}
|
||||
}
|
||||
|
||||
return $exit_value;
|
||||
return $saved_exit_value || $exit_value;
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -290,6 +300,23 @@ sub spawn_parent_impl {
|
||||
}
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# We try to emulate how an Unix shell calculates the exit code
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
sub mtr_process_exit_status {
|
||||
my $raw_status= shift;
|
||||
|
||||
if ( $raw_status & 127 )
|
||||
{
|
||||
return ($raw_status & 127) + 128; # Signal num + 128
|
||||
}
|
||||
else
|
||||
{
|
||||
return $raw_status >> 8; # Exit code
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
@ -329,7 +356,7 @@ sub mtr_kill_leftovers () {
|
||||
});
|
||||
}
|
||||
|
||||
mtr_mysqladmin_shutdown(\@args);
|
||||
mtr_mysqladmin_shutdown(\@args, 20);
|
||||
|
||||
# We now have tried to terminate nice. We have waited for the listen
|
||||
# port to be free, but can't really tell if the mysqld process died
|
||||
@ -439,7 +466,8 @@ sub mtr_stop_mysqld_servers ($) {
|
||||
# First try nice normal shutdown using 'mysqladmin'
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
mtr_mysqladmin_shutdown($spec);
|
||||
# Shutdown time must be high as slave may be in reconnect
|
||||
mtr_mysqladmin_shutdown($spec, 70);
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# We loop with waitpid() nonblocking to see how many of the ones we
|
||||
@ -473,6 +501,7 @@ sub mtr_stop_mysqld_servers ($) {
|
||||
}
|
||||
else
|
||||
{
|
||||
# Server is dead, we remove the pidfile if any
|
||||
# Race, could have been removed between I tested with -f
|
||||
# and the unlink() below, so I better check again with -f
|
||||
|
||||
@ -502,10 +531,12 @@ sub mtr_stop_mysqld_servers ($) {
|
||||
# that for true Win32 processes, kill(0,$pid) will not return 1.
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
start_reap_all(); # Avoid zombies
|
||||
|
||||
SIGNAL:
|
||||
foreach my $sig (15,9)
|
||||
{
|
||||
my $retries= 10; # 10 seconds
|
||||
my $retries= 20; # FIXME 20 seconds, this is silly!
|
||||
kill($sig, keys %mysqld_pids);
|
||||
while ( $retries-- and kill(0, keys %mysqld_pids) )
|
||||
{
|
||||
@ -514,6 +545,8 @@ sub mtr_stop_mysqld_servers ($) {
|
||||
}
|
||||
}
|
||||
|
||||
stop_reap_all(); # Get into control again
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Now, we check if all we can find using kill(0,$pid) are dead,
|
||||
# and just assume the rest are. We cleanup socket and PID files.
|
||||
@ -584,8 +617,9 @@ sub mtr_stop_mysqld_servers ($) {
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
sub mtr_mysqladmin_shutdown () {
|
||||
sub mtr_mysqladmin_shutdown {
|
||||
my $spec= shift;
|
||||
my $adm_shutdown_tmo= shift;
|
||||
|
||||
my %mysql_admin_pids;
|
||||
my @to_kill_specs;
|
||||
@ -624,7 +658,7 @@ sub mtr_mysqladmin_shutdown () {
|
||||
mtr_add_arg($args, "--protocol=tcp"); # Needed if no --socket
|
||||
}
|
||||
mtr_add_arg($args, "--connect_timeout=5");
|
||||
mtr_add_arg($args, "--shutdown_timeout=20");
|
||||
mtr_add_arg($args, "--shutdown_timeout=$adm_shutdown_tmo");
|
||||
mtr_add_arg($args, "shutdown");
|
||||
# We don't wait for termination of mysqladmin
|
||||
my $pid= mtr_spawn($::exe_mysqladmin, $args,
|
||||
@ -632,7 +666,8 @@ sub mtr_mysqladmin_shutdown () {
|
||||
$mysql_admin_pids{$pid}= 1;
|
||||
}
|
||||
|
||||
# We wait blocking, we wait for the last one anyway
|
||||
# As mysqladmin is such a simple program, we trust it to terminate.
|
||||
# I.e. we wait blocking, and wait wait for them all before we go on.
|
||||
while (keys %mysql_admin_pids)
|
||||
{
|
||||
foreach my $pid (keys %mysql_admin_pids)
|
||||
@ -651,7 +686,8 @@ sub mtr_mysqladmin_shutdown () {
|
||||
|
||||
my $timeout= 20; # 20 seconds max
|
||||
my $res= 1; # If we just fall through, we are done
|
||||
|
||||
# in the sense that the servers don't
|
||||
# listen to their ports any longer
|
||||
TIME:
|
||||
while ( $timeout-- )
|
||||
{
|
||||
@ -669,6 +705,8 @@ sub mtr_mysqladmin_shutdown () {
|
||||
last; # If we got here, we are done
|
||||
}
|
||||
|
||||
$timeout or mtr_debug("At least one server is still listening to its port");
|
||||
|
||||
sleep(5) if $::glob_win32; # FIXME next startup fails if no sleep
|
||||
|
||||
return $res;
|
||||
@ -752,6 +790,7 @@ sub mtr_ping_mysqld_server () {
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# FIXME check that the pidfile contains the expected pid!
|
||||
|
||||
sub sleep_until_file_created ($$$) {
|
||||
my $pidfile= shift;
|
||||
@ -762,7 +801,7 @@ sub sleep_until_file_created ($$$) {
|
||||
{
|
||||
if ( -r $pidfile )
|
||||
{
|
||||
return 1;
|
||||
return $pid;
|
||||
}
|
||||
|
||||
# Check if it died after the fork() was successful
|
||||
@ -793,10 +832,18 @@ sub sleep_until_file_created ($$$) {
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# FIXME something is wrong, we sometimes terminate with "Hangup" written
|
||||
# to tty, and no STDERR output telling us why.
|
||||
|
||||
# FIXME for some readon, setting HUP to 'IGNORE' will cause exit() to
|
||||
# write out "Hangup", and maybe loose some output. We insert a sleep...
|
||||
|
||||
sub mtr_exit ($) {
|
||||
my $code= shift;
|
||||
# cluck("Called mtr_exit()");
|
||||
local $SIG{HUP} = 'IGNORE';
|
||||
kill('HUP', -$$);
|
||||
sleep 2;
|
||||
exit($code);
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,6 @@ sub mtr_report_test_name($);
|
||||
sub mtr_report_test_passed($);
|
||||
sub mtr_report_test_failed($);
|
||||
sub mtr_report_test_skipped($);
|
||||
sub mtr_report_test_disabled($);
|
||||
|
||||
sub mtr_show_failed_diff ($);
|
||||
sub mtr_report_stats ($);
|
||||
@ -110,7 +109,14 @@ sub mtr_report_test_failed ($) {
|
||||
my $tinfo= shift;
|
||||
|
||||
$tinfo->{'result'}= 'MTR_RES_FAILED';
|
||||
print "[ fail ]\n";
|
||||
if ( $tinfo->{'timeout'} )
|
||||
{
|
||||
print "[ fail ] timeout\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
print "[ fail ]\n";
|
||||
}
|
||||
|
||||
# FIXME Instead of this test, and meaningless error message in 'else'
|
||||
# we should write out into $::path_timefile when the error occurs.
|
||||
|
127
mysql-test/lib/mtr_timer.pl
Normal file
127
mysql-test/lib/mtr_timer.pl
Normal file
@ -0,0 +1,127 @@
|
||||
# -*- cperl -*-
|
||||
|
||||
# This is a library file used by the Perl version of mysql-test-run,
|
||||
# and is part of the translation of the Bourne shell script with the
|
||||
# same name.
|
||||
|
||||
use Carp qw(cluck);
|
||||
use Socket;
|
||||
use Errno;
|
||||
use strict;
|
||||
|
||||
#use POSIX ":sys_wait_h";
|
||||
use POSIX 'WNOHANG';
|
||||
|
||||
sub mtr_init_timers ();
|
||||
sub mtr_timer_start($$$);
|
||||
sub mtr_timer_stop($$);
|
||||
sub mtr_timer_waitpid($$$);
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Initiate a structure shared by all timers
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
sub mtr_init_timers () {
|
||||
my $timers = { timers => {}, pids => {}};
|
||||
return $timers;
|
||||
}
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Start, stop and poll a timer
|
||||
#
|
||||
# As alarm() isn't portable to Windows, we use separate processes to
|
||||
# implement timers. That is why there is a mtr_timer_waitpid(), as this
|
||||
# is where we catch a timeout.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
sub mtr_timer_start($$$) {
|
||||
my ($timers,$name,$duration)= @_;
|
||||
|
||||
if ( exists $timers->{'timers'}->{$name} )
|
||||
{
|
||||
# We have an old running timer, kill it
|
||||
mtr_timer_stop($timers,$name);
|
||||
}
|
||||
|
||||
FORK:
|
||||
{
|
||||
my $tpid= fork();
|
||||
|
||||
if ( ! defined $tpid )
|
||||
{
|
||||
if ( $! == $!{EAGAIN} ) # See "perldoc Errno"
|
||||
{
|
||||
mtr_debug("Got EAGAIN from fork(), sleep 1 second and redo");
|
||||
sleep(1);
|
||||
redo FORK;
|
||||
}
|
||||
else
|
||||
{
|
||||
mtr_error("can't fork");
|
||||
}
|
||||
}
|
||||
|
||||
if ( $tpid )
|
||||
{
|
||||
# Parent, record the information
|
||||
$timers->{'timers'}->{$name}->{'pid'}= $tpid;
|
||||
$timers->{'timers'}->{$name}->{'duration'}= $duration;
|
||||
$timers->{'pids'}->{$tpid}= $name;
|
||||
}
|
||||
else
|
||||
{
|
||||
# Child, redirect output and exec
|
||||
# FIXME do we need to redirect streams?
|
||||
$0= "mtr_timer(timers,$name,$duration)";
|
||||
sleep($duration);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub mtr_timer_stop ($$) {
|
||||
my ($timers,$name)= @_;
|
||||
|
||||
if ( exists $timers->{'timers'}->{$name} )
|
||||
{
|
||||
my $tpid= $timers->{'timers'}->{$name}->{'pid'};
|
||||
|
||||
# FIXME as Cygwin reuses pids fast, maybe check that is
|
||||
# the expected process somehow?!
|
||||
kill(9, $tpid);
|
||||
|
||||
# As the timers are so simple programs, we trust them to terminate,
|
||||
# and use blocking wait for it. We wait just to avoid a zombie.
|
||||
waitpid($tpid,0);
|
||||
|
||||
delete $timers->{'timers'}->{$name}; # Remove the timer information
|
||||
delete $timers->{'pids'}->{$tpid}; # and PID reference
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
mtr_debug("Asked to stop timer \"$name\" not started");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub mtr_timer_timeout ($$) {
|
||||
my ($timers,$pid)= @_;
|
||||
|
||||
return "" unless exists $timers->{'pids'}->{$pid};
|
||||
|
||||
# We got a timeout
|
||||
my $name= $timers->{'pids'}->{$pid};
|
||||
mtr_timer_stop($timers, $timers->{'timers'}->{$name});
|
||||
return $name;
|
||||
}
|
||||
|
||||
1;
|
@ -90,6 +90,7 @@ use strict;
|
||||
|
||||
require "lib/mtr_cases.pl";
|
||||
require "lib/mtr_process.pl";
|
||||
require "lib/mtr_timer.pl";
|
||||
require "lib/mtr_io.pl";
|
||||
require "lib/mtr_gcov.pl";
|
||||
require "lib/mtr_gprof.pl";
|
||||
@ -137,6 +138,7 @@ our $glob_mysql_test_dir= undef;
|
||||
our $glob_mysql_bench_dir= undef;
|
||||
our $glob_hostname= undef;
|
||||
our $glob_scriptname= undef;
|
||||
our $glob_timers= undef;
|
||||
our $glob_use_running_server= 0;
|
||||
our $glob_use_running_ndbcluster= 0;
|
||||
our $glob_use_embedded_server= 0;
|
||||
@ -232,8 +234,10 @@ our $opt_skip_test;
|
||||
our $opt_sleep;
|
||||
our $opt_ps_protocol;
|
||||
|
||||
our $opt_sleep_time_after_restart= 1;
|
||||
our $opt_sleep_time_after_restart= 1;
|
||||
our $opt_sleep_time_for_delete= 10;
|
||||
our $opt_testcase_timeout= 5; # 5 min max
|
||||
our $opt_suite_timeout= 120; # 2 hours max
|
||||
|
||||
our $opt_socket;
|
||||
|
||||
@ -341,7 +345,6 @@ sub main () {
|
||||
|
||||
if ( ! $glob_use_running_server )
|
||||
{
|
||||
|
||||
if ( $opt_start_dirty )
|
||||
{
|
||||
kill_running_server();
|
||||
@ -356,7 +359,7 @@ sub main () {
|
||||
}
|
||||
}
|
||||
|
||||
if ( $opt_start_and_exit or $opt_start_dirty )
|
||||
if ( $opt_start_dirty )
|
||||
{
|
||||
if ( ndbcluster_start() )
|
||||
{
|
||||
@ -371,16 +374,13 @@ sub main () {
|
||||
mtr_error("Can't start the mysqld server");
|
||||
}
|
||||
}
|
||||
elsif ( $opt_bench )
|
||||
{
|
||||
run_benchmarks(shift); # Shift what? Extra arguments?!
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( $opt_bench )
|
||||
{
|
||||
run_benchmarks(shift); # Shift what? Extra arguments?!
|
||||
}
|
||||
else
|
||||
{
|
||||
run_tests();
|
||||
}
|
||||
run_tests();
|
||||
}
|
||||
|
||||
mtr_exit(0);
|
||||
@ -418,7 +418,7 @@ sub initial_setup () {
|
||||
$opt_source_dist= 1;
|
||||
}
|
||||
|
||||
$glob_hostname= mtr_full_hostname();
|
||||
$glob_hostname= mtr_short_hostname();
|
||||
|
||||
# 'basedir' is always parent of "mysql-test" directory
|
||||
$glob_mysql_test_dir= cwd();
|
||||
@ -439,6 +439,8 @@ sub initial_setup () {
|
||||
|
||||
$path_my_basedir=
|
||||
$opt_source_dist ? $glob_mysql_test_dir : $glob_basedir;
|
||||
|
||||
$glob_timers= mtr_init_timers();
|
||||
}
|
||||
|
||||
|
||||
@ -534,6 +536,8 @@ sub command_line_setup () {
|
||||
'vardir=s' => \$opt_vardir,
|
||||
'verbose' => \$opt_verbose,
|
||||
'wait-timeout=i' => \$opt_wait_timeout,
|
||||
'testcase-timeout=i' => \$opt_testcase_timeout,
|
||||
'suite-timeout=i' => \$opt_suite_timeout,
|
||||
'warnings|log-warnings' => \$opt_warnings,
|
||||
'with-openssl' => \$opt_with_openssl,
|
||||
|
||||
@ -1198,6 +1202,8 @@ sub run_suite () {
|
||||
|
||||
mtr_report("Finding Tests in the '$suite' suite");
|
||||
|
||||
mtr_timer_start($glob_timers,"suite", 60 * $opt_suite_timeout);
|
||||
|
||||
my $tests= collect_test_cases($suite);
|
||||
|
||||
mtr_report("Starting Tests in the '$suite' suite");
|
||||
@ -1206,7 +1212,9 @@ sub run_suite () {
|
||||
|
||||
foreach my $tinfo ( @$tests )
|
||||
{
|
||||
mtr_timer_start($glob_timers,"testcase", 60 * $opt_testcase_timeout);
|
||||
run_testcase($tinfo);
|
||||
mtr_timer_stop($glob_timers,"testcase");
|
||||
}
|
||||
|
||||
mtr_print_line();
|
||||
@ -1227,6 +1235,8 @@ sub run_suite () {
|
||||
}
|
||||
|
||||
mtr_report_stats($tests);
|
||||
|
||||
mtr_timer_stop($glob_timers,"suite");
|
||||
}
|
||||
|
||||
|
||||
@ -1487,6 +1497,16 @@ sub run_testcase ($) {
|
||||
}
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# If --start-and-exit given, stop here to let user manually run tests
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
if ( $opt_start_and_exit )
|
||||
{
|
||||
mtr_report("\nServers started, exiting");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Run the test case
|
||||
# ----------------------------------------------------------------------
|
||||
@ -1514,6 +1534,11 @@ sub run_testcase ($) {
|
||||
# Testcase itself tell us to skip this one
|
||||
mtr_report_test_skipped($tinfo);
|
||||
}
|
||||
elsif ( $res == 63 )
|
||||
{
|
||||
$tinfo->{'timeout'}= 1; # Mark as timeout
|
||||
report_failure_and_restart($tinfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
# Test case failed, if in control mysqltest returns 1
|
||||
@ -1649,8 +1674,6 @@ sub mysqld_arguments ($$$$$) {
|
||||
my $extra_opt= shift;
|
||||
my $slave_master_info= shift;
|
||||
|
||||
# print STDERR Dumper($extra_opt);
|
||||
|
||||
my $sidx= ""; # Index as string, 0 is empty string
|
||||
if ( $idx > 0 )
|
||||
{
|
||||
@ -2020,6 +2043,7 @@ sub run_mysqltest ($) {
|
||||
my $tinfo= shift;
|
||||
|
||||
my $cmdline_mysqldump= "$exe_mysqldump --no-defaults -uroot " .
|
||||
"--port=$master->[0]->{'path_myport'} " .
|
||||
"--socket=$master->[0]->{'path_mysock'} --password=";
|
||||
if ( $opt_debug )
|
||||
{
|
||||
@ -2028,6 +2052,7 @@ sub run_mysqltest ($) {
|
||||
}
|
||||
|
||||
my $cmdline_mysqlshow= "$exe_mysqlshow -uroot " .
|
||||
"--port=$master->[0]->{'path_myport'} " .
|
||||
"--socket=$master->[0]->{'path_mysock'} --password=";
|
||||
if ( $opt_debug )
|
||||
{
|
||||
@ -2248,13 +2273,18 @@ Misc options
|
||||
script-debug Debug this script itself
|
||||
compress Use the compressed protocol between client and server
|
||||
timer Show test case execution time
|
||||
start-and-exit Only initiate and start the "mysqld" servers
|
||||
start-and-exit Only initiate and start the "mysqld" servers, use the startup
|
||||
settings for the specified test case if any
|
||||
start-dirty Only start the "mysqld" servers without initiation
|
||||
fast Don't try to cleanup from earlier runs
|
||||
reorder Reorder tests to get less server restarts
|
||||
help Get this help text
|
||||
unified-diff | udiff When presenting differences, use unified diff
|
||||
|
||||
testcase-timeout=MINUTES Max test case run time (default 5)
|
||||
suite-timeout=MINUTES Max test suite run time (default 120)
|
||||
|
||||
|
||||
Options not yet described, or that I want to look into more
|
||||
|
||||
big-test
|
||||
@ -2274,4 +2304,5 @@ Options not yet described, or that I want to look into more
|
||||
|
||||
HERE
|
||||
mtr_exit(1);
|
||||
|
||||
}
|
||||
|
@ -314,7 +314,7 @@ INSERT INTO t1 VALUES ('localhost','root'),('localhost',''),('games','monty');
|
||||
SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE
|
||||
t1 0 PRIMARY 2 User A 3 NULL NULL BTREE
|
||||
t1 0 PRIMARY 2 User A 0 NULL NULL BTREE
|
||||
ALTER TABLE t1 ENABLE KEYS;
|
||||
UNLOCK TABLES;
|
||||
CHECK TABLES t1;
|
||||
@ -338,7 +338,7 @@ INSERT INTO t1 VALUES ('localhost','root'),('localhost','');
|
||||
SHOW INDEX FROM t1;
|
||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||
t1 0 PRIMARY 1 Host A NULL NULL NULL BTREE
|
||||
t1 0 PRIMARY 2 User A 2 NULL NULL BTREE
|
||||
t1 0 PRIMARY 2 User A 0 NULL NULL BTREE
|
||||
t1 1 Host 1 Host A NULL NULL NULL BTREE disabled
|
||||
ALTER TABLE t1 ENABLE KEYS;
|
||||
SHOW INDEX FROM t1;
|
||||
|
@ -737,6 +737,11 @@ a
|
||||
1
|
||||
2
|
||||
3
|
||||
select a from t1 natural join t1 as t2 where b >= @a order by a;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
update t1 set a=5 where a=1;
|
||||
select a from t1;
|
||||
a
|
||||
|
@ -17,6 +17,15 @@ select 9223372036854775808+1;
|
||||
select -(0-3),round(-(0-3)), round(9999999999999999999);
|
||||
-(0-3) round(-(0-3)) round(9999999999999999999)
|
||||
3 3 9999999999999999999
|
||||
select 1,11,101,1001,10001,100001,1000001,10000001,100000001,1000000001,10000000001,100000000001,1000000000001,10000000000001,100000000000001,1000000000000001,10000000000000001,100000000000000001,1000000000000000001,10000000000000000001;
|
||||
1 11 101 1001 10001 100001 1000001 10000001 100000001 1000000001 10000000001 100000000001 1000000000001 10000000000001 100000000000001 1000000000000001 10000000000000001 100000000000000001 1000000000000000001 10000000000000000001
|
||||
1 11 101 1001 10001 100001 1000001 10000001 100000001 1000000001 10000000001 100000000001 1000000000001 10000000000001 100000000000001 1000000000000001 10000000000000001 100000000000000001 1000000000000000001 10000000000000000001
|
||||
select -1,-11,-101,-1001,-10001,-100001,-1000001,-10000001,-100000001,-1000000001,-10000000001,-100000000001,-1000000000001,-10000000000001,-100000000000001,-1000000000000001,-10000000000000001,-100000000000000001,-1000000000000000001,-10000000000000000001;
|
||||
-1 -11 -101 -1001 -10001 -100001 -1000001 -10000001 -100000001 -1000000001 -10000000001 -100000000001 -1000000000001 -10000000000001 -100000000000001 -1000000000000001 -10000000000000001 -100000000000000001 -1000000000000000001 -10000000000000000001
|
||||
-1 -11 -101 -1001 -10001 -100001 -1000001 -10000001 -100000001 -1000000001 -10000000001 -100000000001 -1000000000001 -10000000000001 -100000000000001 -1000000000000001 -10000000000000001 -100000000000000001 -1000000000000000001 -10000000000000000001
|
||||
select conv(1,10,16),conv((1<<2)-1,10,16),conv((1<<10)-2,10,16),conv((1<<16)-3,10,16),conv((1<<25)-4,10,16),conv((1<<31)-5,10,16),conv((1<<36)-6,10,16),conv((1<<47)-7,10,16),conv((1<<48)-8,10,16),conv((1<<55)-9,10,16),conv((1<<56)-10,10,16),conv((1<<63)-11,10,16);
|
||||
conv(1,10,16) conv((1<<2)-1,10,16) conv((1<<10)-2,10,16) conv((1<<16)-3,10,16) conv((1<<25)-4,10,16) conv((1<<31)-5,10,16) conv((1<<36)-6,10,16) conv((1<<47)-7,10,16) conv((1<<48)-8,10,16) conv((1<<55)-9,10,16) conv((1<<56)-10,10,16) conv((1<<63)-11,10,16)
|
||||
1 3 3FE FFFD 1FFFFFC 7FFFFFFB FFFFFFFFA 7FFFFFFFFFF9 FFFFFFFFFFF8 7FFFFFFFFFFFF7 FFFFFFFFFFFFF6 7FFFFFFFFFFFFFF5
|
||||
create table t1 (a bigint unsigned not null, primary key(a));
|
||||
insert into t1 values (18446744073709551615), (0xFFFFFFFFFFFFFFFE), (18446744073709551613), (18446744073709551612);
|
||||
select * from t1;
|
||||
|
@ -11315,6 +11315,20 @@ DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
DROP TABLE t4;
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1(f1 blob);
|
||||
PREPARE stmt1 FROM 'INSERT INTO t1 VALUES(?)';
|
||||
SET @var1= x'8300';
|
||||
EXECUTE stmt1 USING @var1;
|
||||
SHOW BINLOG EVENTS FROM 98;
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000001 98 Query 1 185 use `test`; CREATE TABLE t1(f1 blob)
|
||||
master-bin.000001 185 User var 1 224 @`var1`=_binary 0x8300 COLLATE binary
|
||||
master-bin.000001 224 Query 1 317 use `test`; INSERT INTO t1 VALUES(@'var1')
|
||||
SELECT HEX(f1) FROM t1;
|
||||
HEX(f1)
|
||||
8300
|
||||
DROP table t1;
|
||||
SET collation_connection='cp932_japanese_ci';
|
||||
create table t1 select repeat('a',4000) a;
|
||||
delete from t1;
|
||||
|
@ -111,7 +111,7 @@ a b
|
||||
1 a
|
||||
2 b
|
||||
3 c
|
||||
explain select * from (select * from t1,t2 where t1.a=t2.a) t1;
|
||||
explain select * from (select t1.*, t2.a as t2a from t1,t2 where t1.a=t2.a) t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 1
|
||||
2 DERIVED t2 system NULL NULL NULL NULL 1
|
||||
@ -149,8 +149,8 @@ SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a) as a )) as b;
|
||||
(SELECT * FROM (SELECT 1 as a) as a )
|
||||
1
|
||||
select * from (select 1 as a) b left join (select 2 as a) c using(a);
|
||||
a a
|
||||
1 NULL
|
||||
a
|
||||
1
|
||||
SELECT * FROM (SELECT 1 UNION SELECT a) b;
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
SELECT 1 as a FROM (SELECT a UNION SELECT 1) b;
|
||||
@ -363,3 +363,8 @@ a
|
||||
3
|
||||
3
|
||||
drop table t1, t2, t3;
|
||||
create table t1 (a int);
|
||||
create table t2 (a int);
|
||||
select * from (select * from t1,t2) foo;
|
||||
ERROR 42S21: Duplicate column name 'a'
|
||||
drop table t1,t2;
|
||||
|
@ -472,3 +472,51 @@ id IFNULL(dsc, '-')
|
||||
2 line number two
|
||||
3 line number three
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
|
||||
SELECT DISTINCT a, 1 FROM t1;
|
||||
a 1
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
5 1
|
||||
SELECT DISTINCT 1, a FROM t1;
|
||||
1 a
|
||||
1 1
|
||||
1 2
|
||||
1 3
|
||||
1 4
|
||||
1 5
|
||||
CREATE TABLE t2 (a int, b int);
|
||||
INSERT INTO t2 VALUES (1,1),(2,2),(2,3),(2,4),(3,5);
|
||||
SELECT DISTINCT a, b, 2 FROM t2;
|
||||
a b 2
|
||||
1 1 2
|
||||
2 2 2
|
||||
2 3 2
|
||||
2 4 2
|
||||
3 5 2
|
||||
SELECT DISTINCT 2, a, b FROM t2;
|
||||
2 a b
|
||||
2 1 1
|
||||
2 2 2
|
||||
2 2 3
|
||||
2 2 4
|
||||
2 3 5
|
||||
SELECT DISTINCT a, 2, b FROM t2;
|
||||
a 2 b
|
||||
1 2 1
|
||||
2 2 2
|
||||
2 2 3
|
||||
2 2 4
|
||||
3 2 5
|
||||
DROP TABLE t1,t2;
|
||||
create table t1 (id int, dsc varchar(50));
|
||||
insert into t1 values (1, "line number one"), (2, "line number two"), (3, "line number three");
|
||||
select distinct id, IFNULL(dsc, '-') from t1;
|
||||
id IFNULL(dsc, '-')
|
||||
1 line number one
|
||||
2 line number two
|
||||
3 line number three
|
||||
drop table t1;
|
||||
|
@ -9,9 +9,9 @@ create table t1 (a int);
|
||||
select count(test.t1.b) from t1;
|
||||
ERROR 42S22: Unknown column 'test.t1.b' in 'field list'
|
||||
select count(not_existing_database.t1) from t1;
|
||||
ERROR 42S02: Unknown table 'not_existing_database' in field list
|
||||
ERROR 42S22: Unknown column 'not_existing_database.t1' in 'field list'
|
||||
select count(not_existing_database.t1.a) from t1;
|
||||
ERROR 42S02: Unknown table 'not_existing_database.t1' in field list
|
||||
ERROR 42S22: Unknown column 'not_existing_database.t1.a' in 'field list'
|
||||
select count(not_existing_database.t1.a) from not_existing_database.t1;
|
||||
Got one of the listed errors
|
||||
select 1 from t1 order by 2;
|
||||
@ -23,3 +23,8 @@ ERROR 42S22: Unknown column 't1.b' in 'order clause'
|
||||
select count(*),b from t1;
|
||||
ERROR 42S22: Unknown column 'b' in 'field list'
|
||||
drop table t1;
|
||||
create table t1 (a int(256));
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 255)
|
||||
set sql_mode='traditional';
|
||||
create table t1 (a varchar(66000));
|
||||
ERROR 42000: Column length too big for column 'a' (max = 65535); use BLOB or TEXT instead
|
||||
|
@ -27,3 +27,24 @@ select * from t1;
|
||||
n
|
||||
345
|
||||
drop table t1;
|
||||
create table t1 (c1 int);
|
||||
lock table t1 write;
|
||||
flush tables with read lock;
|
||||
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
||||
lock table t1 read;
|
||||
flush tables with read lock;
|
||||
lock table t1 write;
|
||||
ERROR HY000: Can't execute the query because you have a conflicting read lock
|
||||
lock table t1 read;
|
||||
lock table t1 write;
|
||||
ERROR HY000: Can't execute the query because you have a conflicting read lock
|
||||
unlock tables;
|
||||
create table t2 (c1 int);
|
||||
create table t3 (c1 int);
|
||||
lock table t1 read, t2 read, t3 write;
|
||||
flush tables with read lock;
|
||||
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
||||
lock table t1 read, t2 read, t3 read;
|
||||
flush tables with read lock;
|
||||
unlock tables;
|
||||
drop table t1, t2, t3;
|
||||
|
@ -221,14 +221,14 @@ select t1.id FROM t2 as ttxt,t1,t1 as ticket2
|
||||
WHERE ticket2.id = ttxt.ticket AND t1.id = ticket2.ticket and
|
||||
match(ttxt.inhalt) against ('foobar');
|
||||
id
|
||||
select t1.id FROM t2 as ttxt,t1 INNER JOIN t1 as ticket2 ON
|
||||
ticket2.id = ttxt.ticket
|
||||
WHERE t1.id = ticket2.ticket and match(ttxt.inhalt) against ('foobar');
|
||||
select ticket2.id FROM t2 as ttxt,t2 INNER JOIN t1 as ticket2 ON
|
||||
ticket2.id = t2.ticket
|
||||
WHERE ticket2.id = ticket2.ticket and match(ttxt.inhalt) against ('foobar');
|
||||
id
|
||||
INSERT INTO t1 VALUES (3,3);
|
||||
select t1.id FROM t2 as ttxt,t1
|
||||
INNER JOIN t1 as ticket2 ON ticket2.id = ttxt.ticket
|
||||
WHERE t1.id = ticket2.ticket and
|
||||
select ticket2.id FROM t2 as ttxt,t2
|
||||
INNER JOIN t1 as ticket2 ON ticket2.id = t2.ticket
|
||||
WHERE ticket2.id = ticket2.ticket and
|
||||
match(ttxt.inhalt) against ('foobar');
|
||||
id
|
||||
3
|
||||
@ -337,8 +337,8 @@ insert into t2 values (1, 1, 'xxfoo');
|
||||
insert into t2 values (2, 1, 'xxbar');
|
||||
insert into t2 values (3, 1, 'xxbuz');
|
||||
select * from t1 join t2 using(`t1_id`) where match (t1.name, t2.name) against('xxfoo' in boolean mode);
|
||||
t1_id name t2_id t1_id name
|
||||
1 data1 1 1 xxfoo
|
||||
t1_id name t2_id name
|
||||
1 data1 1 xxfoo
|
||||
select * from t2 where match name against ('*a*b*c*d*e*f*' in boolean mode);
|
||||
t2_id t1_id name
|
||||
drop table t1,t2;
|
||||
|
@ -1,4 +1,4 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP TABLE IF EXISTS t1,t2,t3;
|
||||
CREATE TABLE t1 (
|
||||
a INT AUTO_INCREMENT PRIMARY KEY,
|
||||
message CHAR(20),
|
||||
@ -126,7 +126,7 @@ group by
|
||||
a.text, b.id, b.betreff
|
||||
order by
|
||||
match(b.betreff) against ('+abc' in boolean mode) desc;
|
||||
ERROR 42S02: Unknown table 'b' in order clause
|
||||
ERROR 42S22: Unknown column 'b.betreff' in 'order clause'
|
||||
select a.text, b.id, b.betreff
|
||||
from
|
||||
t2 a inner join t3 b on a.id = b.forum inner join
|
||||
@ -142,7 +142,7 @@ where
|
||||
match(c.beitrag) against ('+abc' in boolean mode)
|
||||
order by
|
||||
match(b.betreff) against ('+abc' in boolean mode) desc;
|
||||
ERROR 42S02: Unknown table 'b' in order clause
|
||||
ERROR 42S22: Unknown column 'b.betreff' in 'order clause'
|
||||
select a.text, b.id, b.betreff
|
||||
from
|
||||
t2 a inner join t3 b on a.id = b.forum inner join
|
||||
@ -158,5 +158,19 @@ where
|
||||
match(c.beitrag) against ('+abc' in boolean mode)
|
||||
order by
|
||||
match(betreff) against ('+abc' in boolean mode) desc;
|
||||
ERROR HY000: The used table type doesn't support FULLTEXT indexes
|
||||
text id betreff
|
||||
(select b.id, b.betreff from t3 b) union
|
||||
(select b.id, b.betreff from t3 b)
|
||||
order by match(betreff) against ('+abc' in boolean mode) desc;
|
||||
id betreff
|
||||
(select b.id, b.betreff from t3 b) union
|
||||
(select b.id, b.betreff from t3 b)
|
||||
order by match(betreff) against ('+abc') desc;
|
||||
ERROR HY000: Can't find FULLTEXT index matching the column list
|
||||
select distinct b.id, b.betreff from t3 b
|
||||
order by match(betreff) against ('+abc' in boolean mode) desc;
|
||||
id betreff
|
||||
select b.id, b.betreff from t3 b group by b.id+1
|
||||
order by match(betreff) against ('+abc' in boolean mode) desc;
|
||||
id betreff
|
||||
drop table t1,t2,t3;
|
||||
|
@ -45,3 +45,29 @@ visitor_id mts
|
||||
465931136 2000-03-18 16:09:53
|
||||
1092858576 2000-03-19 01:34:45
|
||||
drop table t1;
|
||||
set sql_mode='traditional';
|
||||
create table t1 (d date);
|
||||
insert into t1 (d) select date_sub('2000-01-01', INTERVAL 2001 YEAR);
|
||||
ERROR 22008: Datetime function: datetime field overflow
|
||||
insert into t1 (d) select date_add('2000-01-01',interval 8000 year);
|
||||
ERROR 22008: Datetime function: datetime field overflow
|
||||
insert into t1 values (date_add(NULL, INTERVAL 1 DAY));
|
||||
insert into t1 values (date_add('2000-01-04', INTERVAL NULL DAY));
|
||||
set sql_mode='';
|
||||
insert into t1 (d) select date_sub('2000-01-01', INTERVAL 2001 YEAR);
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
insert into t1 (d) select date_add('2000-01-01',interval 8000 year);
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
insert into t1 values (date_add(NULL, INTERVAL 1 DAY));
|
||||
insert into t1 values (date_add('2000-01-04', INTERVAL NULL DAY));
|
||||
select * from t1;
|
||||
d
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
||||
drop table t1;
|
||||
|
@ -59,3 +59,38 @@ t1 CREATE TABLE `t1` (
|
||||
`length(uuid())` int(10) NOT NULL default '0'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
||||
create table t1 (a timestamp default '2005-05-05 01:01:01',
|
||||
b timestamp default '2005-05-05 01:01:01');
|
||||
insert into t1 set a = now();
|
||||
select sleep(3);
|
||||
sleep(3)
|
||||
0
|
||||
update t1 set b = now();
|
||||
select timediff(b, a) >= '00:00:03' from t1;
|
||||
timediff(b, a) >= '00:00:03'
|
||||
1
|
||||
drop table t1;
|
||||
set global query_cache_size=1355776;
|
||||
create table t1 (a int);
|
||||
insert into t1 values (1),(1),(1);
|
||||
create table t2 (a datetime default null, b datetime default null);
|
||||
insert into t2 set a = now();
|
||||
select a from t1 where sleep(1);
|
||||
a
|
||||
update t2 set b = now() where b is null;
|
||||
insert into t2 set a = now();
|
||||
select a from t1 where sleep(a);
|
||||
a
|
||||
update t2 set b = now() where b is null;
|
||||
insert into t2 set a = now();
|
||||
select a from t1 where sleep(1);
|
||||
a
|
||||
update t2 set b = now() where b is null;
|
||||
select timediff(b, a) >= '00:00:03' from t2;
|
||||
timediff(b, a) >= '00:00:03'
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t2;
|
||||
drop table t1;
|
||||
set global query_cache_size=default;
|
||||
|
@ -45,6 +45,123 @@ www. .se
|
||||
select substring_index('.tcx.se','.',-2),substring_index('.tcx.se','.tcx',-1);
|
||||
substring_index('.tcx.se','.',-2) substring_index('.tcx.se','.tcx',-1)
|
||||
tcx.se .se
|
||||
select substring_index('aaaaaaaaa1','a',1);
|
||||
substring_index('aaaaaaaaa1','a',1)
|
||||
|
||||
select substring_index('aaaaaaaaa1','aa',1);
|
||||
substring_index('aaaaaaaaa1','aa',1)
|
||||
|
||||
select substring_index('aaaaaaaaa1','aa',2);
|
||||
substring_index('aaaaaaaaa1','aa',2)
|
||||
aa
|
||||
select substring_index('aaaaaaaaa1','aa',3);
|
||||
substring_index('aaaaaaaaa1','aa',3)
|
||||
aaaa
|
||||
select substring_index('aaaaaaaaa1','aa',4);
|
||||
substring_index('aaaaaaaaa1','aa',4)
|
||||
aaaaaa
|
||||
select substring_index('aaaaaaaaa1','aa',5);
|
||||
substring_index('aaaaaaaaa1','aa',5)
|
||||
aaaaaaaaa1
|
||||
select substring_index('aaaaaaaaa1','aaa',1);
|
||||
substring_index('aaaaaaaaa1','aaa',1)
|
||||
|
||||
select substring_index('aaaaaaaaa1','aaa',2);
|
||||
substring_index('aaaaaaaaa1','aaa',2)
|
||||
aaa
|
||||
select substring_index('aaaaaaaaa1','aaa',3);
|
||||
substring_index('aaaaaaaaa1','aaa',3)
|
||||
aaaaaa
|
||||
select substring_index('aaaaaaaaa1','aaa',4);
|
||||
substring_index('aaaaaaaaa1','aaa',4)
|
||||
aaaaaaaaa1
|
||||
select substring_index('aaaaaaaaa1','aaaa',1);
|
||||
substring_index('aaaaaaaaa1','aaaa',1)
|
||||
|
||||
select substring_index('aaaaaaaaa1','aaaa',2);
|
||||
substring_index('aaaaaaaaa1','aaaa',2)
|
||||
aaaa
|
||||
select substring_index('aaaaaaaaa1','1',1);
|
||||
substring_index('aaaaaaaaa1','1',1)
|
||||
aaaaaaaaa
|
||||
select substring_index('aaaaaaaaa1','a',-1);
|
||||
substring_index('aaaaaaaaa1','a',-1)
|
||||
1
|
||||
select substring_index('aaaaaaaaa1','aa',-1);
|
||||
substring_index('aaaaaaaaa1','aa',-1)
|
||||
1
|
||||
select substring_index('aaaaaaaaa1','aa',-2);
|
||||
substring_index('aaaaaaaaa1','aa',-2)
|
||||
aa1
|
||||
select substring_index('aaaaaaaaa1','aa',-3);
|
||||
substring_index('aaaaaaaaa1','aa',-3)
|
||||
aaaa1
|
||||
select substring_index('aaaaaaaaa1','aa',-4);
|
||||
substring_index('aaaaaaaaa1','aa',-4)
|
||||
aaaaaa1
|
||||
select substring_index('aaaaaaaaa1','aa',-5);
|
||||
substring_index('aaaaaaaaa1','aa',-5)
|
||||
aaaaaaaaa1
|
||||
select substring_index('aaaaaaaaa1','aaa',-1);
|
||||
substring_index('aaaaaaaaa1','aaa',-1)
|
||||
1
|
||||
select substring_index('aaaaaaaaa1','aaa',-2);
|
||||
substring_index('aaaaaaaaa1','aaa',-2)
|
||||
aaa1
|
||||
select substring_index('aaaaaaaaa1','aaa',-3);
|
||||
substring_index('aaaaaaaaa1','aaa',-3)
|
||||
aaaaaa1
|
||||
select substring_index('aaaaaaaaa1','aaa',-4);
|
||||
substring_index('aaaaaaaaa1','aaa',-4)
|
||||
|
||||
select substring_index('the king of thethe hill','the',-2);
|
||||
substring_index('the king of thethe hill','the',-2)
|
||||
the hill
|
||||
select substring_index('the king of the the hill','the',-2);
|
||||
substring_index('the king of the the hill','the',-2)
|
||||
the hill
|
||||
select substring_index('the king of the the hill','the',-2);
|
||||
substring_index('the king of the the hill','the',-2)
|
||||
the hill
|
||||
select substring_index('the king of the the hill',' the ',-1);
|
||||
substring_index('the king of the the hill',' the ',-1)
|
||||
hill
|
||||
select substring_index('the king of the the hill',' the ',-2);
|
||||
substring_index('the king of the the hill',' the ',-2)
|
||||
the hill
|
||||
select substring_index('the king of the the hill',' ',-1);
|
||||
substring_index('the king of the the hill',' ',-1)
|
||||
hill
|
||||
select substring_index('the king of the the hill',' ',-2);
|
||||
substring_index('the king of the the hill',' ',-2)
|
||||
the hill
|
||||
select substring_index('the king of the the hill',' ',-3);
|
||||
substring_index('the king of the the hill',' ',-3)
|
||||
the hill
|
||||
select substring_index('the king of the the hill',' ',-4);
|
||||
substring_index('the king of the the hill',' ',-4)
|
||||
the the hill
|
||||
select substring_index('the king of the the hill',' ',-5);
|
||||
substring_index('the king of the the hill',' ',-5)
|
||||
of the the hill
|
||||
select substring_index('the king of the.the hill','the',-2);
|
||||
substring_index('the king of the.the hill','the',-2)
|
||||
.the hill
|
||||
select substring_index('the king of thethethe.the hill','the',-3);
|
||||
substring_index('the king of thethethe.the hill','the',-3)
|
||||
the.the hill
|
||||
select substring_index('the king of thethethe.the hill','the',-1);
|
||||
substring_index('the king of thethethe.the hill','the',-1)
|
||||
hill
|
||||
select substring_index('the king of the the hill','the',1);
|
||||
substring_index('the king of the the hill','the',1)
|
||||
|
||||
select substring_index('the king of the the hill','the',2);
|
||||
substring_index('the king of the the hill','the',2)
|
||||
the king of
|
||||
select substring_index('the king of the the hill','the',3);
|
||||
substring_index('the king of the the hill','the',3)
|
||||
the king of the
|
||||
select concat(':',ltrim(' left '),':',rtrim(' right '),':');
|
||||
concat(':',ltrim(' left '),':',rtrim(' right '),':')
|
||||
:left : right:
|
||||
|
@ -68,6 +68,21 @@ drop table t1;
|
||||
select TRUE,FALSE,NULL;
|
||||
TRUE FALSE NULL
|
||||
1 0 NULL
|
||||
create table t1 (c1 char(5)) character set=latin1;
|
||||
insert into t1 values('row 1');
|
||||
insert into t1 values('row 2');
|
||||
insert into t1 values('row 3');
|
||||
select concat(user(), '--', c1) from t1;
|
||||
concat(user(), '--', c1)
|
||||
root@localhost--row 1
|
||||
root@localhost--row 2
|
||||
root@localhost--row 3
|
||||
select concat(database(), '--', c1) from t1;
|
||||
concat(database(), '--', c1)
|
||||
test--row 1
|
||||
test--row 2
|
||||
test--row 3
|
||||
drop table t1;
|
||||
create table t1 (a char(10)) character set latin1;
|
||||
select * from t1 where a=version();
|
||||
a
|
||||
|
@ -247,9 +247,13 @@ date_add("1997-12-31 23:59:59",INTERVAL -100000 DAY)
|
||||
select date_add("1997-12-31 23:59:59",INTERVAL 100000 MONTH);
|
||||
date_add("1997-12-31 23:59:59",INTERVAL 100000 MONTH)
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
select date_add("1997-12-31 23:59:59",INTERVAL -100000 YEAR);
|
||||
date_add("1997-12-31 23:59:59",INTERVAL -100000 YEAR)
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
select date_add("1997-12-31 23:59:59",INTERVAL "10000:1" MINUTE_SECOND);
|
||||
date_add("1997-12-31 23:59:59",INTERVAL "10000:1" MINUTE_SECOND)
|
||||
1998-01-07 22:40:00
|
||||
@ -301,6 +305,8 @@ NULL
|
||||
select date_add("9999-12-31 23:59:59",INTERVAL 1 SECOND);
|
||||
date_add("9999-12-31 23:59:59",INTERVAL 1 SECOND)
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
select date_sub("0000-00-00 00:00:00",INTERVAL 1 SECOND);
|
||||
date_sub("0000-00-00 00:00:00",INTERVAL 1 SECOND)
|
||||
NULL
|
||||
@ -375,15 +381,23 @@ SELECT "1900-01-01 00:00:00" + INTERVAL 1<<20 HOUR;
|
||||
SELECT "1900-01-01 00:00:00" + INTERVAL 1<<38 SECOND;
|
||||
"1900-01-01 00:00:00" + INTERVAL 1<<38 SECOND
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
SELECT "1900-01-01 00:00:00" + INTERVAL 1<<33 MINUTE;
|
||||
"1900-01-01 00:00:00" + INTERVAL 1<<33 MINUTE
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
SELECT "1900-01-01 00:00:00" + INTERVAL 1<<30 HOUR;
|
||||
"1900-01-01 00:00:00" + INTERVAL 1<<30 HOUR
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
SELECT "1900-01-01 00:00:00" + INTERVAL "1000000000:214748364700" MINUTE_SECOND;
|
||||
"1900-01-01 00:00:00" + INTERVAL "1000000000:214748364700" MINUTE_SECOND
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1441 Datetime function: datetime field overflow
|
||||
create table t1 (ctime varchar(20));
|
||||
insert into t1 values ('2001-01-12 12:23:40');
|
||||
select ctime, hour(ctime) from t1;
|
||||
@ -687,7 +701,7 @@ timestampdiff(SQL_TSI_FRAC_SECOND, '2001-02-01 12:59:59.120000', '2001-05-01 12:
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select timestamp_diff(WEEK,_latin1'2001-02-01',_latin1'2001-05-01') AS `a1`,timestamp_diff(SECOND_FRAC,_latin1'2001-02-01 12:59:59.120000',_latin1'2001-05-01 12:58:58.119999') AS `a2`
|
||||
Note 1003 select timestampdiff(WEEK,_latin1'2001-02-01',_latin1'2001-05-01') AS `a1`,timestampdiff(SECOND_FRAC,_latin1'2001-02-01 12:59:59.120000',_latin1'2001-05-01 12:58:58.119999') AS `a2`
|
||||
select last_day('2005-00-00');
|
||||
last_day('2005-00-00')
|
||||
NULL
|
||||
@ -706,3 +720,43 @@ Warning 1292 Truncated incorrect datetime value: '2005-01-00'
|
||||
select time_format('100:00:00', '%H %k %h %I %l');
|
||||
time_format('100:00:00', '%H %k %h %I %l')
|
||||
100 100 04 04 4
|
||||
create table t1 (a timestamp default '2005-05-05 01:01:01',
|
||||
b timestamp default '2005-05-05 01:01:01');
|
||||
create function t_slow_sysdate() returns timestamp
|
||||
begin
|
||||
do sleep(2);
|
||||
return sysdate();
|
||||
end;
|
||||
//
|
||||
insert into t1 set a = sysdate(), b = t_slow_sysdate();//
|
||||
create trigger t_before before insert on t1
|
||||
for each row begin
|
||||
set new.b = t_slow_sysdate();
|
||||
end
|
||||
//
|
||||
insert into t1 set a = sysdate();
|
||||
select a != b from t1;
|
||||
a != b
|
||||
1
|
||||
1
|
||||
drop trigger t_before;
|
||||
drop function t_slow_sysdate;
|
||||
drop table t1;
|
||||
create table t1 (a datetime, i int, b datetime);
|
||||
insert into t1 select sysdate(), sleep(1), sysdate() from dual;
|
||||
select a != b from t1;
|
||||
a != b
|
||||
1
|
||||
drop table t1;
|
||||
create procedure t_sysdate()
|
||||
begin
|
||||
select sysdate() into @a;
|
||||
do sleep(2);
|
||||
select sysdate() into @b;
|
||||
select @a != @b;
|
||||
end;
|
||||
//
|
||||
call t_sysdate();
|
||||
@a != @b
|
||||
1
|
||||
drop procedure t_sysdate;
|
||||
|
@ -591,3 +591,6 @@ insert into tables_priv values ('','test_db','mysqltest_1','test_table','test_gr
|
||||
flush privileges;
|
||||
delete from tables_priv where host = '' and user = 'mysqltest_1';
|
||||
flush privileges;
|
||||
set @user123="non-existent";
|
||||
select * from mysql.db where user=@user123;
|
||||
Host Db User Select_priv Insert_priv Update_priv Delete_priv Create_priv Drop_priv Grant_priv References_priv Index_priv Alter_priv Create_tmp_table_priv Lock_tables_priv Create_view_priv Show_view_priv Create_routine_priv Alter_routine_priv Execute_priv
|
||||
|
@ -284,5 +284,31 @@ i
|
||||
2
|
||||
3
|
||||
REVOKE ALL ON mysqltest_1.t1 FROM mysqltest_1@'127.0.0.0/255.0.0.0';
|
||||
delete from mysql.user where user like 'mysqltest\_1';
|
||||
flush privileges;
|
||||
drop table mysqltest_1.t1;
|
||||
grant all on mysqltest_1.* to mysqltest_1@'127.0.0.1';
|
||||
select current_user();
|
||||
current_user()
|
||||
mysqltest_1@127.0.0.1
|
||||
set password = password('changed');
|
||||
select host, length(password) from mysql.user where user like 'mysqltest\_1';
|
||||
host length(password)
|
||||
127.0.0.1 41
|
||||
revoke all on mysqltest_1.* from mysqltest_1@'127.0.0.1';
|
||||
delete from mysql.user where user like 'mysqltest\_1';
|
||||
flush privileges;
|
||||
grant all on mysqltest_1.* to mysqltest_1@'127.0.0.0/255.0.0.0';
|
||||
select current_user();
|
||||
current_user()
|
||||
mysqltest_1@127.0.0.0/255.0.0.0
|
||||
set password = password('changed');
|
||||
select host, length(password) from mysql.user where user like 'mysqltest\_1';
|
||||
host length(password)
|
||||
127.0.0.0/255.0.0.0 41
|
||||
revoke all on mysqltest_1.* from mysqltest_1@'127.0.0.0/255.0.0.0';
|
||||
delete from mysql.user where user like 'mysqltest\_1';
|
||||
flush privileges;
|
||||
drop database mysqltest_1;
|
||||
set password = password("changed");
|
||||
ERROR 42000: Access denied for user ''@'localhost' to database 'mysql'
|
||||
|
@ -751,6 +751,13 @@ COUNT(DISTINCT(t1.id)) comment
|
||||
1 NULL
|
||||
1 a problem
|
||||
DROP TABLE t1, t2;
|
||||
create table t1 (f1 date);
|
||||
insert into t1 values('2005-06-06');
|
||||
insert into t1 values('2005-06-06');
|
||||
select date(left(f1+0,8)) from t1 group by 1;
|
||||
date(left(f1+0,8))
|
||||
2005-06-06
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (n int);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
SELECT n+1 AS n FROM t1 GROUP BY n;
|
||||
|
@ -701,3 +701,10 @@ insert into t1 values ("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd
|
||||
insert into t1 values ("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz");
|
||||
ERROR 23000: Duplicate entry 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijkl' for key 1
|
||||
drop table t1;
|
||||
create table t1 (c char(10)) engine=memory;
|
||||
create table t2 (c varchar(10)) engine=memory;
|
||||
show table status like 't_';
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 MEMORY 10 Fixed 0 11 0 # 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
||||
t2 MEMORY 10 Fixed 0 12 0 # 0 0 NULL NULL NULL NULL latin1_swedish_ci NULL
|
||||
drop table t1, t2;
|
||||
|
@ -1,4 +1,4 @@
|
||||
DROP TABLE IF EXISTS t0,t1,t2;
|
||||
DROP TABLE IF EXISTS t0,t1,t2,t3,t5;
|
||||
show variables where variable_name like "skip_show_database";
|
||||
Variable_name Value
|
||||
skip_show_database OFF
|
||||
@ -30,6 +30,8 @@ create table mysqltest.t1(a int, b VARCHAR(30), KEY string_data (b));
|
||||
create table test.t2(a int);
|
||||
create table t3(a int, KEY a_data (a));
|
||||
create table mysqltest.t4(a int);
|
||||
create table t5 (id int auto_increment primary key);
|
||||
insert into t5 values (10);
|
||||
create view v1 (c) as select table_name from information_schema.TABLES;
|
||||
select * from v1;
|
||||
c
|
||||
@ -70,6 +72,7 @@ t1
|
||||
t4
|
||||
t2
|
||||
t3
|
||||
t5
|
||||
v1
|
||||
select c,table_name from v1
|
||||
inner join information_schema.TABLES v2 on (v1.c=v2.table_name)
|
||||
@ -89,6 +92,7 @@ t1 t1
|
||||
t4 t4
|
||||
t2 t2
|
||||
t3 t3
|
||||
t5 t5
|
||||
select c,table_name from v1
|
||||
left join information_schema.TABLES v2 on (v1.c=v2.table_name)
|
||||
where v1.c like "t%";
|
||||
@ -107,6 +111,7 @@ t1 t1
|
||||
t4 t4
|
||||
t2 t2
|
||||
t3 t3
|
||||
t5 t5
|
||||
select c, v2.table_name from v1
|
||||
right join information_schema.TABLES v2 on (v1.c=v2.table_name)
|
||||
where v1.c like "t%";
|
||||
@ -125,6 +130,7 @@ t1 t1
|
||||
t4 t4
|
||||
t2 t2
|
||||
t3 t3
|
||||
t5 t5
|
||||
select table_name from information_schema.TABLES
|
||||
where table_schema = "mysqltest" and table_name like "t%";
|
||||
table_name
|
||||
@ -140,11 +146,13 @@ show tables like 't%';
|
||||
Tables_in_test (t%)
|
||||
t2
|
||||
t3
|
||||
t5
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t2 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
t3 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
v1 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
t5 MyISAM 10 Fixed 1 7 7 # 2048 0 11 # # NULL latin1_swedish_ci NULL
|
||||
v1 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL VIEW
|
||||
show full columns from t3 like "a%";
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
a int(11) NULL YES MUL NULL select,insert,update,references
|
||||
@ -157,7 +165,7 @@ c varchar(64) utf8_general_ci NO select,insert,update,references
|
||||
select * from information_schema.COLUMNS where table_name="t1"
|
||||
and column_name= "a";
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL mysqltest t1 a 1 NULL YES int NULL NULL 10 NULL NULL NULL int(11) select,insert,update,references
|
||||
NULL mysqltest t1 a 1 NULL YES int NULL NULL 10 0 NULL NULL int(11) select,insert,update,references
|
||||
show columns from mysqltest.t1 where field like "%a%";
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) YES NULL
|
||||
@ -177,7 +185,7 @@ where table_schema = 'mysqltest' and table_name = 'v1';
|
||||
table_name column_name privileges
|
||||
v1 c select
|
||||
drop view v1, mysqltest.v1;
|
||||
drop tables mysqltest.t4, mysqltest.t1, t2, t3;
|
||||
drop tables mysqltest.t4, mysqltest.t1, t2, t3, t5;
|
||||
drop database mysqltest;
|
||||
select * from information_schema.CHARACTER_SETS
|
||||
where CHARACTER_SET_NAME like 'latin1%';
|
||||
@ -265,10 +273,10 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE # ALL NULL NULL NULL NULL 2
|
||||
1 SIMPLE # ALL NULL NULL NULL NULL 2 Using where
|
||||
select a.ROUTINE_NAME, b.name from information_schema.ROUTINES a,
|
||||
mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8);
|
||||
mysql.proc b where a.ROUTINE_NAME = convert(b.name using utf8) order by 1;
|
||||
ROUTINE_NAME name
|
||||
sub1 sub1
|
||||
sel2 sel2
|
||||
sub1 sub1
|
||||
select count(*) from information_schema.ROUTINES;
|
||||
count(*)
|
||||
2
|
||||
@ -527,7 +535,7 @@ c float(5,2) NULL NULL 5 2
|
||||
d decimal(6,4) NULL NULL 6 4
|
||||
e float NULL NULL 12 NULL
|
||||
f decimal(6,3) NULL NULL 6 3
|
||||
g int(11) NULL NULL 10 NULL
|
||||
g int(11) NULL NULL 10 0
|
||||
h double(10,3) NULL NULL 10 3
|
||||
i double NULL NULL 22 NULL
|
||||
drop table t1;
|
||||
@ -577,8 +585,8 @@ select TABLE_NAME,TABLE_TYPE,ENGINE
|
||||
from information_schema.tables
|
||||
where table_schema='information_schema' limit 2;
|
||||
TABLE_NAME TABLE_TYPE ENGINE
|
||||
CHARACTER_SETS TEMPORARY MEMORY
|
||||
COLLATIONS TEMPORARY MEMORY
|
||||
CHARACTER_SETS SYSTEM VIEW MEMORY
|
||||
COLLATIONS SYSTEM VIEW MEMORY
|
||||
show tables from information_schema like "T%";
|
||||
Tables_in_information_schema (T%)
|
||||
TABLES
|
||||
@ -590,10 +598,10 @@ ERROR HY000: Can't create database 'information_schema'; database exists
|
||||
use information_schema;
|
||||
show full tables like "T%";
|
||||
Tables_in_information_schema (T%) Table_type
|
||||
TABLES TEMPORARY
|
||||
TABLE_CONSTRAINTS TEMPORARY
|
||||
TABLE_PRIVILEGES TEMPORARY
|
||||
TRIGGERS TEMPORARY
|
||||
TABLES SYSTEM VIEW
|
||||
TABLE_CONSTRAINTS SYSTEM VIEW
|
||||
TABLE_PRIVILEGES SYSTEM VIEW
|
||||
TRIGGERS SYSTEM VIEW
|
||||
create table t1(a int);
|
||||
ERROR 42S02: Unknown table 't1' in information_schema
|
||||
use test;
|
||||
@ -933,11 +941,11 @@ select column_name, NUMERIC_PRECISION, NUMERIC_SCALE
|
||||
from information_schema.columns
|
||||
where table_name='t1';
|
||||
column_name NUMERIC_PRECISION NUMERIC_SCALE
|
||||
f1 3 NULL
|
||||
f2 5 NULL
|
||||
f3 7 NULL
|
||||
f4 10 NULL
|
||||
f5 19 NULL
|
||||
f1 3 0
|
||||
f2 5 0
|
||||
f3 7 0
|
||||
f4 10 0
|
||||
f5 19 0
|
||||
f6 1 NULL
|
||||
f7 64 NULL
|
||||
drop table t1;
|
||||
@ -950,3 +958,24 @@ trigger_schema trigger_name
|
||||
test tr1
|
||||
use test;
|
||||
drop table t1;
|
||||
create table t1 (a int not null, b int);
|
||||
use information_schema;
|
||||
select column_name, column_default from columns
|
||||
where table_schema='test' and table_name='t1';
|
||||
column_name column_default
|
||||
a NULL
|
||||
b NULL
|
||||
use test;
|
||||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
a int(11) NO
|
||||
b int(11) YES NULL
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t2 (b int);
|
||||
SHOW TABLE STATUS FROM test
|
||||
WHERE name IN ( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_SCHEMA='test' AND TABLE_TYPE='BASE TABLE');
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
t2 MyISAM 10 Fixed 0 0 0 # 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
|
@ -755,6 +755,11 @@ a
|
||||
1
|
||||
2
|
||||
3
|
||||
select a from t1 natural join t1 as t2 where b >= @a order by a;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
update t1 set a=5 where a=1;
|
||||
select a from t1;
|
||||
a
|
||||
@ -904,7 +909,7 @@ insert into mysqltest.t3 values(1);
|
||||
commit;
|
||||
drop database mysqltest;
|
||||
show tables from mysqltest;
|
||||
Got one of the listed errors
|
||||
ERROR 42000: Unknown database 'mysqltest'
|
||||
set autocommit=0;
|
||||
create table t1 (a int not null) engine= innodb;
|
||||
insert into t1 values(1),(2);
|
||||
@ -1377,7 +1382,7 @@ ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fail
|
||||
update t1,t2,t3 set t3.id=5, t2.id=6, t1.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
|
||||
ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails
|
||||
update t3 set t3.id=7 where t1.id =1 and t2.id = t1.id and t3.id = t2.id;
|
||||
ERROR 42S02: Unknown table 't1' in where clause
|
||||
ERROR 42S22: Unknown column 't1.id' in 'where clause'
|
||||
drop table t3,t2,t1;
|
||||
create table t1(
|
||||
id int primary key,
|
||||
@ -2475,3 +2480,11 @@ SELECT GRADE FROM t1 WHERE GRADE= 151;
|
||||
GRADE
|
||||
151
|
||||
DROP TABLE t1;
|
||||
create table t1 (f1 varchar(10), f2 varchar(10), primary key (f1,f2)) engine=innodb;
|
||||
create table t2 (f3 varchar(10), f4 varchar(10), key (f4)) engine=innodb;
|
||||
insert into t2 values ('aa','cc');
|
||||
insert into t1 values ('aa','bb'),('aa','cc');
|
||||
delete t1 from t1,t2 where f1=f3 and f4='cc';
|
||||
select * from t1;
|
||||
f1 f2
|
||||
drop table t1,t2;
|
||||
|
@ -664,7 +664,7 @@ insert into t1 select t2.a from t2 group by t2.a on duplicate key update a= a +
|
||||
insert into t1 select t2.a from t2 on duplicate key update a= a + t2.b;
|
||||
ERROR 23000: Column 'a' in field list is ambiguous
|
||||
insert into t1 select t2.a from t2 on duplicate key update t2.a= a + t2.b;
|
||||
ERROR 42S02: Unknown table 't2' in field list
|
||||
ERROR 42S22: Unknown column 't2.a' in 'field list'
|
||||
insert into t1 select t2.a from t2 group by t2.a on duplicate key update a= t1.a + t2.b;
|
||||
ERROR 42S02: Unknown table 't2' in field list
|
||||
ERROR 42S22: Unknown column 't2.b' in 'field list'
|
||||
drop table t1,t2,t3;
|
||||
|
@ -191,3 +191,9 @@ ERROR 23000: Column 'a' in field list is ambiguous
|
||||
insert ignore into t1 select a from t1 on duplicate key update a=t1.a+1 ;
|
||||
ERROR 23000: Column 't1.a' in field list is ambiguous
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a BIGINT(20) NOT NULL DEFAULT 0,
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 ( a ) SELECT 0 ON DUPLICATE KEY UPDATE a = a + VALUES (a) ;
|
||||
DROP TABLE t1;
|
||||
|
@ -10,21 +10,21 @@ SELECT * FROM t1 INNER JOIN t2;
|
||||
S1 S1
|
||||
1 2
|
||||
SELECT * from t1 JOIN t2 USING (S1);
|
||||
S1 S1
|
||||
S1
|
||||
SELECT * FROM t1 INNER JOIN t2 USING (S1);
|
||||
S1 S1
|
||||
S1
|
||||
SELECT * from t1 CROSS JOIN t2;
|
||||
S1 S1
|
||||
1 2
|
||||
SELECT * from t1 LEFT JOIN t2 USING(S1);
|
||||
S1 S1
|
||||
1 NULL
|
||||
S1
|
||||
1
|
||||
SELECT * from t1 LEFT JOIN t2 ON(t2.S1=2);
|
||||
S1 S1
|
||||
1 2
|
||||
SELECT * from t1 RIGHT JOIN t2 USING(S1);
|
||||
S1 S1
|
||||
NULL 2
|
||||
S1
|
||||
2
|
||||
SELECT * from t1 RIGHT JOIN t2 ON(t1.S1=1);
|
||||
S1 S1
|
||||
1 2
|
||||
@ -127,6 +127,12 @@ a
|
||||
2
|
||||
select t1.a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a) left join t1 as t32 using (a) left join t1 as t33 using (a) left join t1 as t34 using (a) left join t1 as t35 using (a) left join t1 as t36 using (a) left join t1 as t37 using (a) left join t1 as t38 using (a) left join t1 as t39 using (a) left join t1 as t40 using (a) left join t1 as t41 using (a) left join t1 as t42 using (a) left join t1 as t43 using (a) left join t1 as t44 using (a) left join t1 as t45 using (a) left join t1 as t46 using (a) left join t1 as t47 using (a) left join t1 as t48 using (a) left join t1 as t49 using (a) left join t1 as t50 using (a) left join t1 as t51 using (a) left join t1 as t52 using (a) left join t1 as t53 using (a) left join t1 as t54 using (a) left join t1 as t55 using (a) left join t1 as t56 using (a) left join t1 as t57 using (a) left join t1 as t58 using (a) left join t1 as t59 using (a) left join t1 as t60 using (a) left join t1 as t61 using (a) left join t1 as t62 using (a) left join t1 as t63 using (a) left join t1 as t64 using (a) left join t1 as t65 using (a);
|
||||
ERROR HY000: Too many tables; MySQL can only use XX tables in a join
|
||||
select a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a);
|
||||
a
|
||||
1
|
||||
2
|
||||
select a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a) left join t1 as t32 using (a) left join t1 as t33 using (a) left join t1 as t34 using (a) left join t1 as t35 using (a) left join t1 as t36 using (a) left join t1 as t37 using (a) left join t1 as t38 using (a) left join t1 as t39 using (a) left join t1 as t40 using (a) left join t1 as t41 using (a) left join t1 as t42 using (a) left join t1 as t43 using (a) left join t1 as t44 using (a) left join t1 as t45 using (a) left join t1 as t46 using (a) left join t1 as t47 using (a) left join t1 as t48 using (a) left join t1 as t49 using (a) left join t1 as t50 using (a) left join t1 as t51 using (a) left join t1 as t52 using (a) left join t1 as t53 using (a) left join t1 as t54 using (a) left join t1 as t55 using (a) left join t1 as t56 using (a) left join t1 as t57 using (a) left join t1 as t58 using (a) left join t1 as t59 using (a) left join t1 as t60 using (a) left join t1 as t61 using (a) left join t1 as t62 using (a) left join t1 as t63 using (a) left join t1 as t64 using (a) left join t1 as t65 using (a);
|
||||
ERROR HY000: Too many tables; MySQL can only use XX tables in a join
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
a int(11) NOT NULL,
|
||||
@ -146,9 +152,12 @@ CREATE TABLE t1 (d DATE NOT NULL);
|
||||
CREATE TABLE t2 (d DATE NOT NULL);
|
||||
INSERT INTO t1 (d) VALUES ('2001-08-01'),('0000-00-00');
|
||||
SELECT * FROM t1 LEFT JOIN t2 USING (d) WHERE t2.d IS NULL;
|
||||
d d
|
||||
2001-08-01 NULL
|
||||
0000-00-00 NULL
|
||||
d
|
||||
2001-08-01
|
||||
0000-00-00
|
||||
SELECT * FROM t1 LEFT JOIN t2 USING (d) WHERE d IS NULL;
|
||||
d
|
||||
0000-00-00
|
||||
SELECT * from t1 WHERE t1.d IS NULL;
|
||||
d
|
||||
0000-00-00
|
||||
@ -271,6 +280,12 @@ cust 20
|
||||
SELECT emp.rate_code, lr.base_rate FROM t1 AS emp LEFT JOIN t2 AS lr USING (siteid, rate_code) WHERE lr.siteid = 'rivercats' AND emp.emp_id = 'psmith';
|
||||
rate_code base_rate
|
||||
cust 20
|
||||
SELECT rate_code, lr.base_rate FROM t1 AS emp LEFT JOIN t2 AS lr USING (siteid, rate_code) WHERE emp.emp_id = 'psmith' AND siteid = 'rivercats';
|
||||
rate_code base_rate
|
||||
cust 20
|
||||
SELECT rate_code, lr.base_rate FROM t1 AS emp LEFT JOIN t2 AS lr USING (siteid, rate_code) WHERE siteid = 'rivercats' AND emp.emp_id = 'psmith';
|
||||
rate_code base_rate
|
||||
cust 20
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, Value1 VARCHAR(255));
|
||||
CREATE TABLE t2 (ID INTEGER NOT NULL PRIMARY KEY, Value2 VARCHAR(255));
|
||||
@ -296,43 +311,43 @@ insert into t1 values(1),(2);
|
||||
insert into t2 values(2),(3);
|
||||
insert into t3 values (2),(4);
|
||||
select * from t1 natural left join t2;
|
||||
i i
|
||||
1 NULL
|
||||
2 2
|
||||
i
|
||||
1
|
||||
2
|
||||
select * from t1 left join t2 on (t1.i=t2.i);
|
||||
i i
|
||||
1 NULL
|
||||
2 2
|
||||
select * from t1 natural left join t2 natural left join t3;
|
||||
i i i
|
||||
1 NULL NULL
|
||||
2 2 2
|
||||
i
|
||||
1
|
||||
2
|
||||
select * from t1 left join t2 on (t1.i=t2.i) left join t3 on (t2.i=t3.i);
|
||||
i i i
|
||||
1 NULL NULL
|
||||
2 2 2
|
||||
select * from t3 natural right join t2;
|
||||
i i
|
||||
2 2
|
||||
NULL 3
|
||||
i
|
||||
2
|
||||
3
|
||||
select * from t3 right join t2 on (t3.i=t2.i);
|
||||
i i
|
||||
2 2
|
||||
NULL 3
|
||||
select * from t3 natural right join t2 natural right join t1;
|
||||
i i i
|
||||
NULL NULL 1
|
||||
2 2 2
|
||||
i
|
||||
1
|
||||
2
|
||||
select * from t3 right join t2 on (t3.i=t2.i) right join t1 on (t2.i=t1.i);
|
||||
i i i
|
||||
NULL NULL 1
|
||||
2 2 2
|
||||
select * from t1,t2 natural left join t3 order by t1.i,t2.i,t3.i;
|
||||
i i i
|
||||
1 2 2
|
||||
1 3 NULL
|
||||
2 2 2
|
||||
2 3 NULL
|
||||
i i
|
||||
1 2
|
||||
1 3
|
||||
2 2
|
||||
2 3
|
||||
select * from t1,t2 left join t3 on (t2.i=t3.i) order by t1.i,t2.i,t3.i;
|
||||
i i i
|
||||
1 2 2
|
||||
@ -352,11 +367,11 @@ i i i
|
||||
2 2 2
|
||||
2 3 NULL
|
||||
select * from t1,t2 natural right join t3 order by t1.i,t2.i,t3.i;
|
||||
i i i
|
||||
1 NULL 4
|
||||
1 2 2
|
||||
2 NULL 4
|
||||
2 2 2
|
||||
i i
|
||||
1 4
|
||||
1 2
|
||||
2 4
|
||||
2 2
|
||||
select * from t1,t2 right join t3 on (t2.i=t3.i) order by t1.i,t2.i,t3.i;
|
||||
i i i
|
||||
1 NULL 4
|
||||
|
@ -75,18 +75,11 @@ t1.client_ptr as client_ptr,
|
||||
t1.comments as comments,
|
||||
sum( t3.amount_received ) + sum( t3.adjustment ) as total_budget
|
||||
from
|
||||
t1 ,
|
||||
t2 as client_period ,
|
||||
t2 as project_period
|
||||
left join
|
||||
t3
|
||||
on
|
||||
t3.project_ptr = t1.project_id
|
||||
and t3.date_received <= '2001-03-22 14:15:09'
|
||||
left join
|
||||
t4
|
||||
on
|
||||
t4.client_id = t1.client_ptr
|
||||
t2 as project_period,
|
||||
t3 left join t1 on (t3.project_ptr = t1.project_id and
|
||||
t3.date_received <= '2001-03-22 14:15:09')
|
||||
left join t4 on t4.client_id = t1.client_ptr
|
||||
where
|
||||
1
|
||||
and ( client_period.period_type = 'client_table'
|
||||
|
@ -223,8 +223,7 @@ a b
|
||||
1 2
|
||||
EXPLAIN EXTENDED
|
||||
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
|
||||
FROM t6,
|
||||
t7
|
||||
FROM (t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10;
|
||||
@ -235,8 +234,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t6`.`a` AS `a`,`test`.`t6`.`b` AS `b`,`test`.`t7`.`a` AS `a`,`test`.`t7`.`b` AS `b`,`test`.`t8`.`a` AS `a`,`test`.`t8`.`b` AS `b` from `test`.`t6` join `test`.`t7` left join `test`.`t8` on(((`test`.`t7`.`b` = `test`.`t8`.`b`) and (`test`.`t6`.`b` < 10))) where 1
|
||||
SELECT t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
|
||||
FROM t6,
|
||||
t7
|
||||
FROM (t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10;
|
||||
@ -260,8 +258,7 @@ SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
|
||||
FROM t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -279,8 +276,7 @@ SELECT t5.a,t5.b,t6.a,t6.b,t7.a,t7.b,t8.a,t8.b
|
||||
FROM t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -312,8 +308,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -357,8 +352,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -397,8 +391,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -470,8 +463,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -537,8 +529,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -575,8 +566,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -625,8 +615,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -679,8 +668,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -825,44 +813,38 @@ a b a b a b a b
|
||||
1 3 5 3 NULL NULL NULL NULL
|
||||
2 2 5 3 NULL NULL NULL NULL
|
||||
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
|
||||
FROM t1, t3, t4
|
||||
FROM t1, (t3, t4)
|
||||
RIGHT JOIN
|
||||
t2
|
||||
ON t3.a=1 AND t2.b=t4.b
|
||||
WHERE t1.a <= 2;
|
||||
a b a b a b a b
|
||||
1 3 3 3 1 2 NULL NULL
|
||||
1 3 3 3 2 2 NULL NULL
|
||||
2 2 3 3 1 2 NULL NULL
|
||||
2 2 3 3 2 2 NULL NULL
|
||||
1 3 3 3 NULL NULL NULL NULL
|
||||
2 2 3 3 NULL NULL NULL NULL
|
||||
1 3 4 2 1 2 3 2
|
||||
1 3 4 2 1 2 4 2
|
||||
1 3 4 2 2 2 NULL NULL
|
||||
2 2 4 2 1 2 3 2
|
||||
2 2 4 2 1 2 4 2
|
||||
2 2 4 2 2 2 NULL NULL
|
||||
1 3 5 3 1 2 NULL NULL
|
||||
1 3 5 3 2 2 NULL NULL
|
||||
2 2 5 3 1 2 NULL NULL
|
||||
2 2 5 3 2 2 NULL NULL
|
||||
1 3 5 3 NULL NULL NULL NULL
|
||||
2 2 5 3 NULL NULL NULL NULL
|
||||
EXPLAIN EXTENDED
|
||||
SELECT t1.a,t1.b,t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
|
||||
FROM t1, t3, t4
|
||||
FROM t1, (t3, t4)
|
||||
RIGHT JOIN
|
||||
t2
|
||||
ON t3.a=1 AND t2.b=t4.b
|
||||
WHERE t1.a <= 2;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 3
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 2
|
||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 2
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t3` join `test`.`t2` left join `test`.`t4` on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) where (`test`.`t1`.`a` <= 2)
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t1` join `test`.`t2` left join (`test`.`t3` join `test`.`t4`) on(((`test`.`t4`.`b` = `test`.`t2`.`b`) and (`test`.`t3`.`a` = 1))) where (`test`.`t1`.`a` <= 2)
|
||||
CREATE INDEX idx_b ON t2(b);
|
||||
EXPLAIN EXTENDED
|
||||
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
|
||||
FROM t3,t4
|
||||
FROM (t3,t4)
|
||||
LEFT JOIN
|
||||
(t1,t2)
|
||||
ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
|
||||
@ -874,7 +856,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b`,`test`.`t4`.`a` AS `a`,`test`.`t4`.`b` AS `b` from `test`.`t3` join `test`.`t4` left join (`test`.`t1` join `test`.`t2`) on(((`test`.`t3`.`a` = 1) and (`test`.`t3`.`b` = `test`.`t2`.`b`) and (`test`.`t2`.`b` = `test`.`t4`.`b`))) where 1
|
||||
SELECT t2.a,t2.b,t3.a,t3.b,t4.a,t4.b
|
||||
FROM t3,t4
|
||||
FROM (t3,t4)
|
||||
LEFT JOIN
|
||||
(t1,t2)
|
||||
ON t3.a=1 AND t3.b=t2.b AND t2.b=t4.b;
|
||||
@ -900,8 +882,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -951,8 +932,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -1001,8 +981,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -1052,8 +1031,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -1100,8 +1078,7 @@ ON t3.a=1 AND t2.b=t4.b,
|
||||
t5
|
||||
LEFT JOIN
|
||||
(
|
||||
t6,
|
||||
t7
|
||||
(t6, t7)
|
||||
LEFT JOIN
|
||||
t8
|
||||
ON t7.b=t8.b AND t6.b < 10
|
||||
@ -1343,3 +1320,58 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 0
|
||||
1 SIMPLE t3 ALL NULL NULL NULL NULL 0
|
||||
DROP TABLE t1,t2,t3;
|
||||
CREATE TABLE t1 (goods int(12) NOT NULL, price varchar(128) NOT NULL);
|
||||
INSERT INTO t1 VALUES (23, 2340), (26, 9900);
|
||||
CREATE TABLE t2 (goods int(12), name varchar(50), shop char(2));
|
||||
INSERT INTO t2 VALUES (23, 'as300', 'fr'), (26, 'as600', 'fr');
|
||||
create table t3 (groupid int(12) NOT NULL, goodsid int(12) NOT NULL);
|
||||
INSERT INTO t3 VALUES (3,23), (6,26);
|
||||
CREATE TABLE t4 (groupid int(12));
|
||||
INSERT INTO t4 VALUES (1), (2), (3), (4), (5), (6);
|
||||
SELECT * FROM
|
||||
(SELECT DISTINCT gl.groupid, gp.price
|
||||
FROM t4 gl
|
||||
LEFT JOIN
|
||||
(t3 g INNER JOIN t2 p ON g.goodsid = p.goods
|
||||
INNER JOIN t1 gp ON p.goods = gp.goods)
|
||||
ON gl.groupid = g.groupid and p.shop = 'fr') t;
|
||||
groupid price
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 2340
|
||||
4 NULL
|
||||
5 NULL
|
||||
6 9900
|
||||
CREATE VIEW v1 AS
|
||||
SELECT g.groupid groupid, p.goods goods,
|
||||
p.name name, p.shop shop,
|
||||
gp.price price
|
||||
FROM t3 g INNER JOIN t2 p ON g.goodsid = p.goods
|
||||
INNER JOIN t1 gp on p.goods = gp.goods;
|
||||
CREATE VIEW v2 AS
|
||||
SELECT DISTINCT g.groupid, fr.price
|
||||
FROM t4 g
|
||||
LEFT JOIN
|
||||
v1 fr on g.groupid = fr.groupid and fr.shop = 'fr';
|
||||
SELECT * FROM v2;
|
||||
groupid price
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 2340
|
||||
4 NULL
|
||||
5 NULL
|
||||
6 9900
|
||||
SELECT * FROM
|
||||
(SELECT DISTINCT g.groupid, fr.price
|
||||
FROM t4 g
|
||||
LEFT JOIN
|
||||
v1 fr on g.groupid = fr.groupid and fr.shop = 'fr') t;
|
||||
groupid price
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 2340
|
||||
4 NULL
|
||||
5 NULL
|
||||
6 9900
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
|
@ -106,11 +106,11 @@ grp a c id a c d a
|
||||
3 6 D 3 6 C 6 6
|
||||
NULL NULL NULL NULL NULL NULL NULL
|
||||
explain select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
||||
ERROR 42000: Cross dependency found in OUTER JOIN; examine your ON conditions
|
||||
ERROR 42S22: Unknown column 't3.a' in 'on clause'
|
||||
select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
|
||||
ERROR 42000: Cross dependency found in OUTER JOIN; examine your ON conditions
|
||||
ERROR 42S22: Unknown column 't3.a' in 'on clause'
|
||||
select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
|
||||
ERROR 42000: Cross dependency found in OUTER JOIN; examine your ON conditions
|
||||
ERROR 42S22: Unknown column 't3.a' in 'on clause'
|
||||
select t1.*,t2.* from t1 inner join t2 using (a);
|
||||
grp a c id a c d
|
||||
1 1 a 1 1 a 1
|
||||
@ -124,8 +124,8 @@ grp a c id a c d
|
||||
3 5 C 3 5 B 5
|
||||
3 6 D 3 6 C 6
|
||||
select t1.*,t2.* from t1 natural join t2;
|
||||
grp a c id d
|
||||
1 1 a 1 1
|
||||
grp a c id a c d
|
||||
1 1 a 1 1 a 1
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1 (
|
||||
usr_id INT unsigned NOT NULL,
|
||||
@ -400,7 +400,7 @@ insert into t3 values (1);
|
||||
insert into t4 values (1,1);
|
||||
insert into t5 values (1,1);
|
||||
explain select * from t3 left join t4 on t4.seq_1_id = t2.t2_id left join t1 on t1.t1_id = t4.seq_0_id left join t5 on t5.seq_0_id = t1.t1_id left join t2 on t2.t2_id = t5.seq_1_id where t3.t3_id = 23;
|
||||
ERROR 42000: Cross dependency found in OUTER JOIN; examine your ON conditions
|
||||
ERROR 42S22: Unknown column 't2.t2_id' in 'on clause'
|
||||
drop table t1,t2,t3,t4,t5;
|
||||
create table t1 (n int, m int, o int, key(n));
|
||||
create table t2 (n int not null, m int, o int, primary key(n));
|
||||
@ -461,10 +461,10 @@ count color
|
||||
15 white
|
||||
7 green
|
||||
select * from t2 natural join t1;
|
||||
count color name
|
||||
10 green lime
|
||||
7 green lime
|
||||
5 black grape
|
||||
color count name
|
||||
green 10 lime
|
||||
green 7 lime
|
||||
black 5 grape
|
||||
select t2.count, t1.name from t2 natural join t1;
|
||||
count name
|
||||
10 lime
|
||||
@ -647,16 +647,22 @@ insert into t1 values(1),(2);
|
||||
insert into t2 values(2),(3);
|
||||
insert into t3 values(2),(4);
|
||||
select * from t1 natural left join t2 natural left join t3;
|
||||
i i i
|
||||
1 NULL NULL
|
||||
2 2 2
|
||||
i
|
||||
1
|
||||
2
|
||||
select * from t1 natural left join t2 where (t2.i is not null)=0;
|
||||
i i
|
||||
1 NULL
|
||||
i
|
||||
1
|
||||
select * from t1 natural left join t2 where (t2.i is not null) is not null;
|
||||
i i
|
||||
1 NULL
|
||||
2 2
|
||||
i
|
||||
1
|
||||
2
|
||||
select * from t1 natural left join t2 where (i is not null)=0;
|
||||
i
|
||||
select * from t1 natural left join t2 where (i is not null) is not null;
|
||||
i
|
||||
1
|
||||
2
|
||||
drop table t1,t2,t3;
|
||||
create table t1 (f1 integer,f2 integer,f3 integer);
|
||||
create table t2 (f2 integer,f4 integer);
|
||||
@ -664,7 +670,7 @@ create table t3 (f3 integer,f5 integer);
|
||||
select * from t1
|
||||
left outer join t2 using (f2)
|
||||
left outer join t3 using (f3);
|
||||
ERROR 42S22: Unknown column 'test.t2.f3' in 'on clause'
|
||||
f3 f2 f1 f4 f5
|
||||
drop table t1,t2,t3;
|
||||
create table t1 (a1 int, a2 int);
|
||||
create table t2 (b1 int not null, b2 int);
|
||||
@ -941,6 +947,18 @@ aaaaa
|
||||
bbbbb
|
||||
Warnings:
|
||||
Warning 1260 2 line(s) were cut by GROUP_CONCAT()
|
||||
select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by a;
|
||||
group_concat(t1.b,t2.c)
|
||||
aaaaa
|
||||
bbbbb
|
||||
Warnings:
|
||||
Warning 1260 2 line(s) were cut by GROUP_CONCAT()
|
||||
select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by a;
|
||||
group_concat(t1.b,t2.c)
|
||||
aaaaa
|
||||
bbbbb
|
||||
Warnings:
|
||||
Warning 1260 2 line(s) were cut by GROUP_CONCAT()
|
||||
drop table t1, t2;
|
||||
set group_concat_max_len=default;
|
||||
create table t1 (gid smallint(5) unsigned not null, x int(11) not null, y int(11) not null, art int(11) not null, primary key (gid,x,y));
|
||||
|
@ -289,3 +289,9 @@ check table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
drop table t1;
|
||||
set @@global.key_buffer_size=0;
|
||||
Warnings:
|
||||
Warning 1438 Cannot drop default keycache
|
||||
select @@global.key_buffer_size;
|
||||
@@global.key_buffer_size
|
||||
2097152
|
||||
|
@ -85,3 +85,14 @@ def aaa 1 1 8 20 1 N 32769 0 63
|
||||
1
|
||||
1
|
||||
drop table t1;
|
||||
create table t1 (i int);
|
||||
insert into t1 values (1),(2),(3);
|
||||
select * from t1 where i = 2;
|
||||
drop table t1;//
|
||||
affected rows: 0
|
||||
affected rows: 3
|
||||
info: Records: 3 Duplicates: 0 Warnings: 0
|
||||
i
|
||||
2
|
||||
affected rows: 1
|
||||
affected rows: 0
|
||||
|
@ -135,16 +135,16 @@ create table t1 (n numeric(10));
|
||||
create table t2 (n numeric(10));
|
||||
insert into t2 values (1),(2),(4),(8),(16),(32);
|
||||
select * from t2 left outer join t1 using (n);
|
||||
n n
|
||||
1 NULL
|
||||
2 NULL
|
||||
4 NULL
|
||||
8 NULL
|
||||
16 NULL
|
||||
32 NULL
|
||||
n
|
||||
1
|
||||
2
|
||||
4
|
||||
8
|
||||
16
|
||||
32
|
||||
delete t1,t2 from t2 left outer join t1 using (n);
|
||||
select * from t2 left outer join t1 using (n);
|
||||
n n
|
||||
n
|
||||
drop table t1,t2 ;
|
||||
create table t1 (n int(10) not null primary key, d int(10));
|
||||
create table t2 (n int(10) not null primary key, d int(10));
|
||||
|
@ -179,8 +179,24 @@ a b c
|
||||
2 two two
|
||||
alter table t1 drop index c;
|
||||
select * from t1 where b = 'two';
|
||||
ERROR HY000: Table definition has changed, please retry transaction
|
||||
a b c
|
||||
2 two two
|
||||
select * from t1 where b = 'two';
|
||||
a b c
|
||||
2 two two
|
||||
drop table t1;
|
||||
create table t3 (a int primary key) engine=ndbcluster;
|
||||
begin;
|
||||
insert into t3 values (1);
|
||||
alter table t3 rename t4;
|
||||
delete from t3;
|
||||
insert into t3 values (1);
|
||||
commit;
|
||||
select * from t3;
|
||||
ERROR HY000: Can't lock file (errno: 155)
|
||||
select * from t4;
|
||||
a
|
||||
1
|
||||
drop table t4;
|
||||
show tables;
|
||||
Tables_in_test
|
||||
|
@ -189,6 +189,15 @@ a b if(b = 1,i,if(b = 2,v,''))
|
||||
4 2 453 Boardwalk
|
||||
SELECT a,b,if(b = 1,i,if(b = 2,v,''))
|
||||
FROM t1
|
||||
LEFT JOIN t2 ON t1.c = t2.c
|
||||
LEFT JOIN t3 ON t3.c = t1.c;
|
||||
a b if(b = 1,i,if(b = 2,v,''))
|
||||
1 1 50
|
||||
2 1 25
|
||||
3 2 123 Park Place
|
||||
4 2 453 Boardwalk
|
||||
SELECT a,b,if(b = 1,i,if(b = 2,v,''))
|
||||
FROM t1
|
||||
LEFT JOIN t2 USING(c)
|
||||
LEFT JOIN t3 ON t3.c = t1.c
|
||||
ORDER BY a;
|
||||
@ -197,6 +206,16 @@ a b if(b = 1,i,if(b = 2,v,''))
|
||||
2 1 25
|
||||
3 2 123 Park Place
|
||||
4 2 453 Boardwalk
|
||||
SELECT a,b,if(b = 1,i,if(b = 2,v,''))
|
||||
FROM t1
|
||||
LEFT JOIN t2 ON t1.c = t2.c
|
||||
LEFT JOIN t3 ON t3.c = t1.c
|
||||
ORDER BY a;
|
||||
a b if(b = 1,i,if(b = 2,v,''))
|
||||
1 1 50
|
||||
2 1 25
|
||||
3 2 123 Park Place
|
||||
4 2 453 Boardwalk
|
||||
drop table t1,t2,t3;
|
||||
create table t1 (ID int not null primary key, TransactionID int not null);
|
||||
insert into t1 (ID, TransactionID) values (1, 87), (2, 89), (3, 92), (4, 94), (5, 486), (6, 490), (7, 753), (9, 828), (10, 832), (11, 834), (12, 840);
|
||||
@ -526,9 +545,15 @@ INSERT INTO t2 (numeropost,pseudo) VALUES (1,'joce'),(1,'bug');
|
||||
SELECT titre,t1.numeropost,auteur,icone,nbrep,0,date,vue,ouvert,lastauteur,dest FROM t2 LEFT JOIN t1 USING(numeropost) WHERE t2.pseudo='joce' ORDER BY date DESC LIMIT 0,30;
|
||||
titre numeropost auteur icone nbrep 0 date vue ouvert lastauteur dest
|
||||
test 1 joce 0 0 0 0000-00-00 00:00:00 0 1 bug
|
||||
SELECT titre,numeropost,auteur,icone,nbrep,0,date,vue,ouvert,lastauteur,dest FROM t2 LEFT JOIN t1 USING(numeropost) WHERE t2.pseudo='joce' ORDER BY date DESC LIMIT 0,30;
|
||||
titre numeropost auteur icone nbrep 0 date vue ouvert lastauteur dest
|
||||
test 1 joce 0 0 0 0000-00-00 00:00:00 0 1 bug
|
||||
SELECT titre,t1.numeropost,auteur,icone,nbrep,'0',date,vue,ouvert,lastauteur,dest FROM t2 LEFT JOIN t1 USING(numeropost) WHERE t2.pseudo='joce' ORDER BY date DESC LIMIT 0,30;
|
||||
titre numeropost auteur icone nbrep 0 date vue ouvert lastauteur dest
|
||||
test 1 joce 0 0 0 0000-00-00 00:00:00 0 1 bug
|
||||
SELECT titre,numeropost,auteur,icone,nbrep,'0',date,vue,ouvert,lastauteur,dest FROM t2 LEFT JOIN t1 USING(numeropost) WHERE t2.pseudo='joce' ORDER BY date DESC LIMIT 0,30;
|
||||
titre numeropost auteur icone nbrep 0 date vue ouvert lastauteur dest
|
||||
test 1 joce 0 0 0 0000-00-00 00:00:00 0 1 bug
|
||||
drop table t1,t2;
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 VALUES (1, 2);
|
||||
|
@ -531,44 +531,44 @@ the join statement is:
|
||||
SELECT * FROM t2 right join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query9 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural right join t1 order by t2.a
|
||||
prepare stmt1 from @query8 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 right join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query7 ;
|
||||
@ -594,44 +594,44 @@ the join statement is:
|
||||
SELECT * FROM t2 left join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query6 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural left join t1 order by t2.a
|
||||
prepare stmt1 from @query5 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 left join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query4 ;
|
||||
@ -657,23 +657,23 @@ the join statement is:
|
||||
SELECT * FROM t2 join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query3 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural join t1 order by t2.a
|
||||
prepare stmt1 from @query2 ;
|
||||
|
@ -531,44 +531,44 @@ the join statement is:
|
||||
SELECT * FROM t2 right join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query9 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural right join t1 order by t2.a
|
||||
prepare stmt1 from @query8 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 right join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query7 ;
|
||||
@ -594,44 +594,44 @@ the join statement is:
|
||||
SELECT * FROM t2 left join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query6 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural left join t1 order by t2.a
|
||||
prepare stmt1 from @query5 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 left join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query4 ;
|
||||
@ -657,23 +657,23 @@ the join statement is:
|
||||
SELECT * FROM t2 join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query3 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural join t1 order by t2.a
|
||||
prepare stmt1 from @query2 ;
|
||||
|
@ -532,44 +532,44 @@ the join statement is:
|
||||
SELECT * FROM t2 right join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query9 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural right join t1 order by t2.a
|
||||
prepare stmt1 from @query8 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 right join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query7 ;
|
||||
@ -595,44 +595,44 @@ the join statement is:
|
||||
SELECT * FROM t2 left join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query6 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural left join t1 order by t2.a
|
||||
prepare stmt1 from @query5 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 left join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query4 ;
|
||||
@ -658,23 +658,23 @@ the join statement is:
|
||||
SELECT * FROM t2 join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query3 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural join t1 order by t2.a
|
||||
prepare stmt1 from @query2 ;
|
||||
|
@ -574,44 +574,44 @@ the join statement is:
|
||||
SELECT * FROM t2 right join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query9 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural right join t1 order by t2.a
|
||||
prepare stmt1 from @query8 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 right join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query7 ;
|
||||
@ -637,44 +637,44 @@ the join statement is:
|
||||
SELECT * FROM t2 left join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query6 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural left join t1 order by t2.a
|
||||
prepare stmt1 from @query5 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 left join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query4 ;
|
||||
@ -700,23 +700,23 @@ the join statement is:
|
||||
SELECT * FROM t2 join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query3 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural join t1 order by t2.a
|
||||
prepare stmt1 from @query2 ;
|
||||
@ -3586,44 +3586,44 @@ the join statement is:
|
||||
SELECT * FROM t2 right join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query9 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural right join t1 order by t2.a
|
||||
prepare stmt1 from @query8 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 right join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query7 ;
|
||||
@ -3649,44 +3649,44 @@ the join statement is:
|
||||
SELECT * FROM t2 left join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query6 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural left join t1 order by t2.a
|
||||
prepare stmt1 from @query5 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 left join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query4 ;
|
||||
@ -3712,23 +3712,23 @@ the join statement is:
|
||||
SELECT * FROM t2 join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query3 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural join t1 order by t2.a
|
||||
prepare stmt1 from @query2 ;
|
||||
|
@ -531,44 +531,44 @@ the join statement is:
|
||||
SELECT * FROM t2 right join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query9 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural right join t1 order by t2.a
|
||||
prepare stmt1 from @query8 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 right join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query7 ;
|
||||
@ -594,44 +594,44 @@ the join statement is:
|
||||
SELECT * FROM t2 left join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query6 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural left join t1 order by t2.a
|
||||
prepare stmt1 from @query5 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 left join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query4 ;
|
||||
@ -657,23 +657,23 @@ the join statement is:
|
||||
SELECT * FROM t2 join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query3 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural join t1 order by t2.a
|
||||
prepare stmt1 from @query2 ;
|
||||
|
@ -531,44 +531,44 @@ the join statement is:
|
||||
SELECT * FROM t2 right join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query9 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural right join t1 order by t2.a
|
||||
prepare stmt1 from @query8 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 right join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query7 ;
|
||||
@ -594,44 +594,44 @@ the join statement is:
|
||||
SELECT * FROM t2 left join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query6 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural left join t1 order by t2.a
|
||||
prepare stmt1 from @query5 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b
|
||||
1 one
|
||||
2 two
|
||||
3 three
|
||||
4 four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 left join t1 on(t1.a=t2.a) order by t2.a
|
||||
prepare stmt1 from @query4 ;
|
||||
@ -657,23 +657,23 @@ the join statement is:
|
||||
SELECT * FROM t2 join t1 using(a) order by t2.a
|
||||
prepare stmt1 from @query3 ;
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
execute stmt1 ;
|
||||
a b a b
|
||||
1 one 1 one
|
||||
2 two 2 two
|
||||
3 three 3 three
|
||||
4 four 4 four
|
||||
a b b
|
||||
1 one one
|
||||
2 two two
|
||||
3 three three
|
||||
4 four four
|
||||
the join statement is:
|
||||
SELECT * FROM t2 natural join t1 order by t2.a
|
||||
prepare stmt1 from @query2 ;
|
||||
|
@ -947,24 +947,18 @@ COUNT(*)
|
||||
Warnings:
|
||||
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
|
||||
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
|
||||
Warning 1292 Truncated incorrect INTEGER value: '20050327 invalid'
|
||||
Warning 1292 Truncated incorrect INTEGER value: '20050327 invalid'
|
||||
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050328 invalid';
|
||||
COUNT(*)
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1
|
||||
Warning 1292 Incorrect datetime value: '20050328 invalid' for column 'date' at row 1
|
||||
Warning 1292 Truncated incorrect INTEGER value: '20050328 invalid'
|
||||
Warning 1292 Truncated incorrect INTEGER value: '20050328 invalid'
|
||||
SELECT COUNT(*) FROM t1 WHERE date BETWEEN '20050326' AND '20050327 invalid';
|
||||
COUNT(*)
|
||||
0
|
||||
Warnings:
|
||||
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
|
||||
Warning 1292 Incorrect datetime value: '20050327 invalid' for column 'date' at row 1
|
||||
Warning 1292 Truncated incorrect INTEGER value: '20050327 invalid'
|
||||
Warning 1292 Truncated incorrect INTEGER value: '20050327 invalid'
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 0
|
||||
|
@ -80,4 +80,18 @@ show status like "Qcache_free_blocks";
|
||||
Variable_name Value
|
||||
Qcache_free_blocks 1
|
||||
drop table t1, t2, t3, t11, t21;
|
||||
CREATE TABLE t1 ( a INT NOT NULL PRIMARY KEY AUTO_INCREMENT ) ENGINE =
|
||||
MyISAM;
|
||||
LOCK TABLE t1 READ LOCAL;
|
||||
INSERT INTO t1 VALUES (), (), ();
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
drop table t1;
|
||||
set GLOBAL query_cache_size=0;
|
||||
|
@ -58,7 +58,7 @@ SELECT (1,2,3)=(1,NULL,3);
|
||||
NULL
|
||||
SELECT (1,2,3)=(1,NULL,0);
|
||||
(1,2,3)=(1,NULL,0)
|
||||
NULL
|
||||
0
|
||||
SELECT ROW(1,2,3)=ROW(1,2,3);
|
||||
ROW(1,2,3)=ROW(1,2,3)
|
||||
1
|
||||
@ -175,3 +175,9 @@ ROW(2,10) <=> ROW(3,4)
|
||||
SELECT ROW(NULL,10) <=> ROW(3,NULL);
|
||||
ROW(NULL,10) <=> ROW(3,NULL)
|
||||
0
|
||||
SELECT ROW(1,1,1) = ROW(1,1,1) as `1`, ROW(1,1,1) = ROW(1,2,1) as `0`, ROW(1,NULL,1) = ROW(2,2,1) as `0`, ROW(1,NULL,1) = ROW(1,2,2) as `0`, ROW(1,NULL,1) = ROW(1,2,1) as `null` ;
|
||||
1 0 0 0 null
|
||||
1 0 0 0 NULL
|
||||
select row(NULL,1)=(2,0);
|
||||
row(NULL,1)=(2,0)
|
||||
0
|
||||
|
@ -9,7 +9,7 @@ drop database if exists mysqltest;
|
||||
Warnings:
|
||||
Note 1008 Can't drop database 'mysqltest'; database doesn't exist
|
||||
show tables from mysqltest;
|
||||
ERROR HY000: Can't read dir of './mysqltest/' (Errcode: X)
|
||||
ERROR 42000: Unknown database 'mysqltest'
|
||||
create table t1 (a int);
|
||||
drop table if exists t1;
|
||||
Warnings:
|
||||
|
35
mysql-test/r/rpl_drop_db.result
Normal file
35
mysql-test/r/rpl_drop_db.result
Normal file
@ -0,0 +1,35 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
drop database if exists mysqltest;
|
||||
create database mysqltest;
|
||||
create table mysqltest.t1 (n int);
|
||||
insert into mysqltest.t1 values (1);
|
||||
select * from mysqltest.t1 into outfile 'mysqltest/f1.txt';
|
||||
create table mysqltest.t2 (n int);
|
||||
create table mysqltest.t3 (n int);
|
||||
drop database mysqltest;
|
||||
ERROR HY000: Error dropping database (can't rmdir './mysqltest/', errno: 17)
|
||||
use mysqltest;
|
||||
show tables;
|
||||
Tables_in_mysqltest
|
||||
drop database mysqltest;
|
||||
ERROR HY000: Error dropping database (can't rmdir './mysqltest/', errno: 17)
|
||||
use mysqltest;
|
||||
show tables;
|
||||
Tables_in_mysqltest
|
||||
use test;
|
||||
create table t1 (n int);
|
||||
insert into t1 values (1234);
|
||||
use mysqltest;
|
||||
show tables;
|
||||
Tables_in_mysqltest
|
||||
use test;
|
||||
select * from t1;
|
||||
n
|
||||
1234
|
||||
drop table t1;
|
||||
stop slave;
|
17
mysql-test/r/rpl_insert_select.result
Normal file
17
mysql-test/r/rpl_insert_select.result
Normal file
@ -0,0 +1,17 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
create table t1 (n int not null primary key);
|
||||
insert into t1 values (1);
|
||||
create table t2 (n int);
|
||||
insert into t2 values (1);
|
||||
insert ignore into t1 select * from t2;
|
||||
insert into t1 values (2);
|
||||
select * from t1;
|
||||
n
|
||||
1
|
||||
2
|
||||
drop table t1,t2;
|
@ -4,7 +4,7 @@ reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
grant replication slave on *.* to replssl@'%' require ssl;
|
||||
grant replication slave on *.* to replssl@localhost require ssl;
|
||||
create table t1 (t int);
|
||||
stop slave;
|
||||
change master to master_user='replssl',master_password='';
|
||||
@ -20,11 +20,11 @@ t
|
||||
1
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 replssl MASTER_MYPORT 1 master-bin.000001 392 # # master-bin.000001 Yes Yes 0 0 392 # None 0 Yes MYSQL_TEST_DIR/std_data/cacert.pem MYSQL_TEST_DIR/std_data/client-cert.pem MYSQL_TEST_DIR/std_data/client-key.pem #
|
||||
# 127.0.0.1 replssl MASTER_MYPORT 1 master-bin.000001 398 # # master-bin.000001 Yes Yes 0 0 398 # None 0 Yes MYSQL_TEST_DIR/std_data/cacert.pem MYSQL_TEST_DIR/std_data/client-cert.pem MYSQL_TEST_DIR/std_data/client-key.pem #
|
||||
stop slave;
|
||||
change master to master_user='root',master_password='', master_ssl=0;
|
||||
start slave;
|
||||
drop table t1;
|
||||
show slave status;
|
||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 468 # # master-bin.000001 Yes Yes 0 0 468 # None 0 No MYSQL_TEST_DIR/std_data/cacert.pem MYSQL_TEST_DIR/std_data/client-cert.pem MYSQL_TEST_DIR/std_data/client-key.pem #
|
||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 474 # # master-bin.000001 Yes Yes 0 0 474 # None 0 No MYSQL_TEST_DIR/std_data/cacert.pem MYSQL_TEST_DIR/std_data/client-cert.pem MYSQL_TEST_DIR/std_data/client-key.pem #
|
||||
|
@ -109,6 +109,7 @@ call foo4();
|
||||
Got one of the listed errors
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1142 INSERT command denied to user 'zedjzlcsjhd'@'localhost' for table 't1'
|
||||
Warning 1417 A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes
|
||||
call foo3();
|
||||
show warnings;
|
||||
@ -117,6 +118,7 @@ call foo4();
|
||||
Got one of the listed errors
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1142 INSERT command denied to user 'zedjzlcsjhd'@'localhost' for table 't1'
|
||||
Warning 1417 A routine failed and has neither NO SQL nor READS SQL DATA in its declaration and binary logging is enabled; if non-transactional tables were updated, the binary log will miss their changes
|
||||
alter procedure foo4 sql security invoker;
|
||||
call foo4();
|
||||
|
108
mysql-test/r/rpl_trigger.result
Normal file
108
mysql-test/r/rpl_trigger.result
Normal file
@ -0,0 +1,108 @@
|
||||
stop slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
reset master;
|
||||
reset slave;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
||||
start slave;
|
||||
create table t1 (a int auto_increment, primary key (a), b int, rand_value double not null);
|
||||
create table t2 (a int auto_increment, primary key (a), b int);
|
||||
create table t3 (a int auto_increment, primary key (a), name varchar(64) not null, old_a int, old_b int, rand_value double not null);
|
||||
create trigger t1 before insert on t1 for each row
|
||||
begin
|
||||
insert into t3 values (NULL, "t1", new.a, new.b, rand());
|
||||
end|
|
||||
create trigger t2 after insert on t2 for each row
|
||||
begin
|
||||
insert into t3 values (NULL, "t2", new.a, new.b, rand());
|
||||
end|
|
||||
insert into t3 values(100,"log",0,0,0);
|
||||
SET @@RAND_SEED1=658490765, @@RAND_SEED2=635893186;
|
||||
insert into t1 values(1,1,rand()),(NULL,2,rand());
|
||||
insert into t2 (b) values(last_insert_id());
|
||||
insert into t2 values(3,0),(NULL,0);
|
||||
insert into t2 values(NULL,0),(500,0);
|
||||
select a,b, truncate(rand_value,4) from t1;
|
||||
a b truncate(rand_value,4)
|
||||
1 1 0.4320
|
||||
2 2 0.3055
|
||||
select * from t2;
|
||||
a b
|
||||
1 2
|
||||
3 0
|
||||
4 0
|
||||
5 0
|
||||
500 0
|
||||
select a,name, old_a, old_b, truncate(rand_value,4) from t3;
|
||||
a name old_a old_b truncate(rand_value,4)
|
||||
100 log 0 0 0.0000
|
||||
101 t1 1 1 0.3203
|
||||
102 t1 0 2 0.5666
|
||||
103 t2 1 2 0.9164
|
||||
104 t2 3 0 0.8826
|
||||
105 t2 4 0 0.6635
|
||||
106 t2 5 0 0.6699
|
||||
107 t2 500 0 0.3593
|
||||
|
||||
--- On slave --
|
||||
select a,b, truncate(rand_value,4) from t1;
|
||||
a b truncate(rand_value,4)
|
||||
1 1 0.4320
|
||||
2 2 0.3055
|
||||
select * from t2;
|
||||
a b
|
||||
1 2
|
||||
3 0
|
||||
4 0
|
||||
5 0
|
||||
500 0
|
||||
select a,name, old_a, old_b, truncate(rand_value,4) from t3;
|
||||
a name old_a old_b truncate(rand_value,4)
|
||||
100 log 0 0 0.0000
|
||||
101 t1 1 1 0.3203
|
||||
102 t1 0 2 0.5666
|
||||
103 t2 1 2 0.9164
|
||||
104 t2 3 0 0.8826
|
||||
105 t2 4 0 0.6635
|
||||
106 t2 5 0 0.6699
|
||||
107 t2 500 0 0.3593
|
||||
drop table t1,t2,t3;
|
||||
select get_lock("bug12480",2);
|
||||
get_lock("bug12480",2)
|
||||
1
|
||||
create table t1 (a datetime,b datetime, c datetime);
|
||||
drop function if exists bug12480;
|
||||
Warnings:
|
||||
Note 1305 FUNCTION bug12480 does not exist
|
||||
create function bug12480() returns datetime
|
||||
begin
|
||||
set @a=get_lock("bug12480",2);
|
||||
return now();
|
||||
end|
|
||||
create trigger t1_first before insert on t1
|
||||
for each row begin
|
||||
set @a=get_lock("bug12480",2);
|
||||
set new.b= now();
|
||||
set new.c= bug12480();
|
||||
end
|
||||
|
|
||||
insert into t1 set a = now();
|
||||
select a=b && a=c from t1;
|
||||
a=b && a=c
|
||||
1
|
||||
|
||||
--- On slave --
|
||||
select a=b && a=c from t1;
|
||||
a=b && a=c
|
||||
1
|
||||
test
|
||||
1
|
||||
truncate table t1;
|
||||
drop trigger t1_first;
|
||||
insert into t1 values ("2003-03-03","2003-03-03","2003-03-03"),(bug12480(),bug12480(),bug12480()),(now(),now(),now());
|
||||
select a=b && a=c from t1;
|
||||
a=b && a=c
|
||||
1
|
||||
1
|
||||
1
|
||||
drop function bug12480;
|
||||
drop table t1;
|
@ -1364,6 +1364,17 @@ explain select t2.companynr,companyname from t4 left join t2 using (companynr) w
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1200 Using where; Not exists
|
||||
select companynr,companyname from t2 left join t4 using (companynr) where companynr is null;
|
||||
companynr companyname
|
||||
select count(*) from t2 left join t4 using (companynr) where companynr is not null;
|
||||
count(*)
|
||||
1200
|
||||
explain select companynr,companyname from t2 left join t4 using (companynr) where companynr is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
delete from t2 where fld1=999999;
|
||||
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
@ -1377,6 +1388,18 @@ explain select t2.companynr,companyname from t4 left join t2 using (companynr) w
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
|
||||
1 SIMPLE t4 eq_ref PRIMARY PRIMARY 1 test.t2.companynr 1
|
||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
|
||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
|
||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 and companynr > 0;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
|
||||
explain select t2.companynr,companyname from t4 left join t2 using (companynr) where t2.companynr > 0 or t2.companynr is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
||||
@ -1389,6 +1412,18 @@ explain select t2.companynr,companyname from t4 left join t2 using (companynr) w
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 12
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199 Using where
|
||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr is null;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
|
||||
explain select companynr,companyname from t4 left join t2 using (companynr) where companynr > 0 or companynr < 0 or companynr > 0;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 12 Using where
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
|
||||
explain select companynr,companyname from t4 left join t2 using (companynr) where ifnull(companynr,1)>0;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t4 ALL NULL NULL NULL NULL 12 Using where
|
||||
1 SIMPLE t2 ALL NULL NULL NULL NULL 1199
|
||||
select distinct t2.companynr,t4.companynr from t2,t4 where t2.companynr=t4.companynr+1;
|
||||
companynr companynr
|
||||
37 36
|
||||
@ -2115,159 +2150,159 @@ insert into t1 values ();
|
||||
insert into t1 values ();
|
||||
insert into t1 values ();
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)), t1;
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 1
|
||||
3 3 1
|
||||
1 1 2
|
||||
2 2 2
|
||||
3 3 2
|
||||
1 1 3
|
||||
2 2 3
|
||||
3 3 3
|
||||
a a
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
1 2
|
||||
2 2
|
||||
3 2
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
select * from t1, (t1 as t2 left join t1 as t3 using (a));
|
||||
a a a
|
||||
1 1 1
|
||||
2 1 1
|
||||
3 1 1
|
||||
1 2 2
|
||||
2 2 2
|
||||
3 2 2
|
||||
1 3 3
|
||||
2 3 3
|
||||
3 3 3
|
||||
a a
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
1 2
|
||||
2 2
|
||||
3 2
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) straight_join t1;
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 1
|
||||
3 3 1
|
||||
1 1 2
|
||||
2 2 2
|
||||
3 3 2
|
||||
1 1 3
|
||||
2 2 3
|
||||
3 3 3
|
||||
a a
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
1 2
|
||||
2 2
|
||||
3 2
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
select * from t1 straight_join (t1 as t2 left join t1 as t3 using (a));
|
||||
a a a
|
||||
1 1 1
|
||||
2 1 1
|
||||
3 1 1
|
||||
1 2 2
|
||||
2 2 2
|
||||
3 2 2
|
||||
1 3 3
|
||||
2 3 3
|
||||
3 3 3
|
||||
a a
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
1 2
|
||||
2 2
|
||||
3 2
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) inner join t1 on t1.a>1;
|
||||
a a a
|
||||
1 1 2
|
||||
2 2 2
|
||||
3 3 2
|
||||
1 1 3
|
||||
2 2 3
|
||||
3 3 3
|
||||
a a
|
||||
1 2
|
||||
2 2
|
||||
3 2
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
select * from t1 inner join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
|
||||
a a a
|
||||
2 1 1
|
||||
3 1 1
|
||||
2 2 2
|
||||
3 2 2
|
||||
2 3 3
|
||||
3 3 3
|
||||
a a
|
||||
2 1
|
||||
3 1
|
||||
2 2
|
||||
3 2
|
||||
2 3
|
||||
3 3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) inner join t1 using ( a );
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from t1 inner join (t1 as t2 left join t1 as t3 using (a)) using ( a );
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) left outer join t1 on t1.a>1;
|
||||
a a a
|
||||
1 1 2
|
||||
1 1 3
|
||||
2 2 2
|
||||
2 2 3
|
||||
3 3 2
|
||||
3 3 3
|
||||
a a
|
||||
1 2
|
||||
1 3
|
||||
2 2
|
||||
2 3
|
||||
3 2
|
||||
3 3
|
||||
select * from t1 left outer join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
|
||||
a a a
|
||||
1 NULL NULL
|
||||
2 1 1
|
||||
2 2 2
|
||||
2 3 3
|
||||
3 1 1
|
||||
3 2 2
|
||||
3 3 3
|
||||
a a
|
||||
1 NULL
|
||||
2 1
|
||||
2 2
|
||||
2 3
|
||||
3 1
|
||||
3 2
|
||||
3 3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) left join t1 using ( a );
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from t1 left join (t1 as t2 left join t1 as t3 using (a)) using ( a );
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) natural left join t1;
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from t1 natural left join (t1 as t2 left join t1 as t3 using (a));
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) right join t1 on t1.a>1;
|
||||
a a a
|
||||
NULL NULL 1
|
||||
1 1 2
|
||||
2 2 2
|
||||
3 3 2
|
||||
1 1 3
|
||||
2 2 3
|
||||
3 3 3
|
||||
a a
|
||||
NULL 1
|
||||
1 2
|
||||
2 2
|
||||
3 2
|
||||
1 3
|
||||
2 3
|
||||
3 3
|
||||
select * from t1 right join (t1 as t2 left join t1 as t3 using (a)) on t1.a>1;
|
||||
a a a
|
||||
2 1 1
|
||||
3 1 1
|
||||
2 2 2
|
||||
3 2 2
|
||||
2 3 3
|
||||
3 3 3
|
||||
a a
|
||||
2 1
|
||||
3 1
|
||||
2 2
|
||||
3 2
|
||||
2 3
|
||||
3 3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) right outer join t1 using ( a );
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from t1 right outer join (t1 as t2 left join t1 as t3 using (a)) using ( a );
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) natural right join t1;
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from t1 natural right join (t1 as t2 left join t1 as t3 using (a));
|
||||
a a a
|
||||
1 1 1
|
||||
2 2 2
|
||||
3 3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from t1 natural join (t1 as t2 left join t1 as t3 using (a));
|
||||
a a
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
select * from (t1 as t2 left join t1 as t3 using (a)) natural join t1;
|
||||
a a
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
drop table t1;
|
||||
CREATE TABLE t1 ( aa char(2), id int(11) NOT NULL auto_increment, t2_id int(11) NOT NULL default '0', PRIMARY KEY (id), KEY replace_id (t2_id)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES ("1",8264,2506),("2",8299,2517),("3",8301,2518),("4",8302,2519),("5",8303,2520),("6",8304,2521),("7",8305,2522);
|
||||
@ -2759,3 +2794,96 @@ DROP TABLE t1,t2;
|
||||
select x'10' + 0, X'10' + 0, b'10' + 0, B'10' + 0;
|
||||
x'10' + 0 X'10' + 0 b'10' + 0 B'10' + 0
|
||||
16 16 2 2
|
||||
create table t1 (f1 varchar(6) default NULL, f2 int(6) primary key not null);
|
||||
create table t2 (f3 varchar(5) not null, f4 varchar(5) not null, UNIQUE KEY UKEY (f3,f4));
|
||||
insert into t1 values (" 2", 2);
|
||||
insert into t2 values (" 2", " one "),(" 2", " two ");
|
||||
select * from t1 left join t2 on f1 = f3;
|
||||
f1 f2 f3 f4
|
||||
2 2 2 one
|
||||
2 2 2 two
|
||||
drop table t1,t2;
|
||||
create table t1 (empnum smallint, grp int);
|
||||
create table t2 (empnum int, name char(5));
|
||||
insert into t1 values(1,1);
|
||||
insert into t2 values(1,'bob');
|
||||
create view v1 as select * from t2 inner join t1 using (empnum);
|
||||
select * from v1;
|
||||
empnum name grp
|
||||
1 bob 1
|
||||
drop table t1,t2;
|
||||
drop view v1;
|
||||
create table t1 (pk int primary key, b int);
|
||||
create table t2 (pk int primary key, c int);
|
||||
select pk from t1 inner join t2 using (pk);
|
||||
pk
|
||||
drop table t1,t2;
|
||||
create table t1 (s1 int, s2 char(5), s3 decimal(10));
|
||||
create view v1 as select s1, s2, 'x' as s3 from t1;
|
||||
select * from t1 natural join v1;
|
||||
s1 s2 s3
|
||||
insert into t1 values (1,'x',5);
|
||||
select * from t1 natural join v1;
|
||||
s1 s2 s3
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect DOUBLE value: 'x'
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
create table t1(a1 int);
|
||||
create table t2(a2 int);
|
||||
insert into t1 values(1),(2);
|
||||
insert into t2 values(1),(2);
|
||||
create view v2 (c) as select a1 from t1;
|
||||
select * from t1 natural left join t2;
|
||||
a1 a2
|
||||
1 1
|
||||
1 2
|
||||
2 1
|
||||
2 2
|
||||
select * from t1 natural right join t2;
|
||||
a2 a1
|
||||
1 1
|
||||
1 2
|
||||
2 1
|
||||
2 2
|
||||
select * from v2 natural left join t2;
|
||||
c a2
|
||||
1 1
|
||||
1 2
|
||||
2 1
|
||||
2 2
|
||||
select * from v2 natural right join t2;
|
||||
a2 c
|
||||
1 1
|
||||
1 2
|
||||
2 1
|
||||
2 2
|
||||
drop table t1, t2;
|
||||
drop view v2;
|
||||
create table t1 (a int(10), t1_val int(10));
|
||||
create table t2 (b int(10), t2_val int(10));
|
||||
create table t3 (a int(10), b int(10));
|
||||
insert into t1 values (1,1),(2,2);
|
||||
insert into t2 values (1,1),(2,2),(3,3);
|
||||
insert into t3 values (1,1),(2,1),(3,1),(4,1);
|
||||
select * from t1 natural join t2 natural join t3;
|
||||
a b t1_val t2_val
|
||||
1 1 1 1
|
||||
2 1 2 1
|
||||
select * from t1 natural join t3 natural join t2;
|
||||
b a t1_val t2_val
|
||||
1 1 1 1
|
||||
1 2 2 1
|
||||
drop table t1, t2, t3;
|
||||
create table t1 (a char(1));
|
||||
create table t2 (a char(1));
|
||||
insert into t1 values ('a'),('b'),('c');
|
||||
insert into t2 values ('b'),('c'),('d');
|
||||
select a from t1 natural join t2;
|
||||
a
|
||||
b
|
||||
c
|
||||
select * from t1 natural join t2 where a = 'b';
|
||||
a
|
||||
b
|
||||
drop table t1, t2;
|
||||
|
@ -84,7 +84,7 @@ set local max_join_size=8;
|
||||
select * from (select * from t1) x;
|
||||
ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
|
||||
set local max_join_size=1;
|
||||
select * from (select * from t1 a, t1 b) x;
|
||||
select * from (select a.a as aa, b.a as ba from t1 a, t1 b) x;
|
||||
ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
|
||||
set local max_join_size=1;
|
||||
select * from (select 1 union select 2 union select 3) x;
|
||||
|
@ -512,3 +512,48 @@ t1 CREATE TABLE `t1` (
|
||||
KEY `c2` USING BTREE (`c2`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE txt1(a int);
|
||||
CREATE TABLE tyt2(a int);
|
||||
CREATE TABLE urkunde(a int);
|
||||
FLUSH TABLES;
|
||||
SELECT 1 FROM mysql.db, mysql.proc, mysql.user, mysql.time_zone, mysql.time_zone_name, txt1, tyt2, urkunde LIMIT 0;
|
||||
1
|
||||
SHOW OPEN TABLES;
|
||||
Database Table In_use Name_locked
|
||||
mysql db 0 0
|
||||
test urkunde 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql user 0 0
|
||||
test txt1 0 0
|
||||
mysql proc 0 0
|
||||
test tyt2 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES FROM mysql;
|
||||
Database Table In_use Name_locked
|
||||
mysql db 0 0
|
||||
mysql time_zone 0 0
|
||||
mysql user 0 0
|
||||
mysql proc 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES FROM mysql LIKE 'u%';
|
||||
Database Table In_use Name_locked
|
||||
mysql user 0 0
|
||||
SHOW OPEN TABLES LIKE 't%';
|
||||
Database Table In_use Name_locked
|
||||
mysql time_zone 0 0
|
||||
test txt1 0 0
|
||||
test tyt2 0 0
|
||||
mysql time_zone_name 0 0
|
||||
SHOW OPEN TABLES LIKE '%o%';
|
||||
Database Table In_use Name_locked
|
||||
mysql time_zone 0 0
|
||||
mysql proc 0 0
|
||||
mysql time_zone_name 0 0
|
||||
FLUSH TABLES;
|
||||
SHOW OPEN TABLES;
|
||||
Database Table In_use Name_locked
|
||||
DROP TABLE txt1;
|
||||
DROP TABLE tyt2;
|
||||
DROP TABLE urkunde;
|
||||
SHOW TABLES FROM non_existing_database;
|
||||
ERROR 42000: Unknown database 'non_existing_database'
|
||||
|
@ -247,7 +247,7 @@ end|
|
||||
ERROR 42000: Duplicate cursor: c
|
||||
create procedure u()
|
||||
use sptmp|
|
||||
ERROR 42000: USE is not allowed in a stored procedure
|
||||
ERROR 0A000: USE is not allowed in stored procedures
|
||||
create procedure p()
|
||||
begin
|
||||
declare c cursor for select * from t1;
|
||||
@ -299,6 +299,36 @@ lock tables t1 read, mysql.proc read|
|
||||
unlock tables|
|
||||
lock tables mysql.proc write|
|
||||
unlock tables|
|
||||
drop function if exists f1|
|
||||
create function f1(i int) returns int
|
||||
begin
|
||||
insert into t1 (val) values (i);
|
||||
return 0;
|
||||
end|
|
||||
select val, f1(val) from t1|
|
||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select val, f1(val) from t1 as tab|
|
||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select * from t1|
|
||||
val x
|
||||
42 3.1
|
||||
19 1.2
|
||||
update t1 set val= f1(val)|
|
||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select * from t1|
|
||||
val x
|
||||
42 3.1
|
||||
19 1.2
|
||||
select f1(17)|
|
||||
f1(17)
|
||||
0
|
||||
select * from t1|
|
||||
val x
|
||||
42 3.1
|
||||
19 1.2
|
||||
17 NULL
|
||||
delete from t1 where val= 17|
|
||||
drop function f1|
|
||||
create procedure bug1965()
|
||||
begin
|
||||
declare c cursor for select val from t1 order by valname;
|
||||
@ -616,7 +646,7 @@ begin
|
||||
flush tables;
|
||||
return 5;
|
||||
end|
|
||||
ERROR 0A000: FLUSH is not allowed in stored procedures
|
||||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||||
create procedure bug9529_90123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123()
|
||||
begin
|
||||
end|
|
||||
|
@ -236,3 +236,18 @@ drop procedure bug7291_2;
|
||||
drop procedure bug7291_0;
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM user1@localhost;
|
||||
drop user user1@localhost;
|
||||
drop database if exists mysqltest_1;
|
||||
create database mysqltest_1;
|
||||
create procedure mysqltest_1.p1()
|
||||
begin
|
||||
select 1 from dual;
|
||||
end//
|
||||
grant usage on *.* to mysqltest_1@localhost;
|
||||
call mysqltest_1.p1();
|
||||
ERROR 42000: execute command denied to user 'mysqltest_1'@'localhost' for routine 'mysqltest_1.p1'
|
||||
call mysqltest_1.p1();
|
||||
ERROR 42000: execute command denied to user 'mysqltest_1'@'localhost' for routine 'mysqltest_1.p1'
|
||||
drop procedure mysqltest_1.p1;
|
||||
drop database mysqltest_1;
|
||||
revoke usage on *.* from mysqltest_1@localhost;
|
||||
drop user mysqltest_1@localhost;
|
||||
|
@ -37,6 +37,7 @@ Id User Host db Command Time State Info
|
||||
# root localhost test Sleep # NULL
|
||||
# root localhost test Query # Locked update t1, t2 set val= 1 where id1=id2
|
||||
# root localhost test Query # NULL show processlist
|
||||
# root localhost test Sleep # NULL
|
||||
unlock tables;
|
||||
drop procedure bug9486;
|
||||
drop table t1, t2;
|
||||
@ -64,3 +65,27 @@ insert into t1 (select f from v1);
|
||||
drop function bug11554;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
drop procedure if exists p1;
|
||||
drop procedure if exists p2;
|
||||
create table t1 (s1 int)|
|
||||
create procedure p1() select * from t1|
|
||||
create procedure p2()
|
||||
begin
|
||||
insert into t1 values (1);
|
||||
call p1();
|
||||
select * from t1;
|
||||
end|
|
||||
use test;
|
||||
lock table t1 write;
|
||||
call p2();
|
||||
use test;
|
||||
drop procedure p1;
|
||||
create procedure p1() select * from t1;
|
||||
unlock tables;
|
||||
s1
|
||||
1
|
||||
s1
|
||||
1
|
||||
drop procedure p1;
|
||||
drop procedure p2;
|
||||
drop table t1;
|
||||
|
@ -3076,4 +3076,95 @@ v1 v2 v3 v4 v5 v6 v7
|
||||
NULL
|
||||
drop procedure bug8692|
|
||||
drop table t3|
|
||||
drop function if exists bug10055|
|
||||
create function bug10055(v char(255)) returns char(255) return lower(v)|
|
||||
select t.column_name, bug10055(t.column_name)
|
||||
from information_schema.columns as t
|
||||
where t.table_schema = 'test' and t.table_name = 't1'|
|
||||
column_name bug10055(t.column_name)
|
||||
id id
|
||||
data data
|
||||
drop function bug10055|
|
||||
drop function if exists f_bug11247|
|
||||
drop procedure if exists p_bug11247|
|
||||
create function f_bug11247(param int)
|
||||
returns int
|
||||
return param + 1|
|
||||
create procedure p_bug11247(lim int)
|
||||
begin
|
||||
declare v int default 0;
|
||||
while v < lim do
|
||||
set v= f_bug11247(v);
|
||||
end while;
|
||||
end|
|
||||
call p_bug11247(10)|
|
||||
drop function f_bug11247|
|
||||
drop procedure p_bug11247|
|
||||
drop procedure if exists bug12168|
|
||||
drop table if exists t3, t4|
|
||||
create table t3 (a int)|
|
||||
insert into t3 values (1),(2),(3),(4)|
|
||||
create table t4 (a int)|
|
||||
create procedure bug12168(arg1 char(1))
|
||||
begin
|
||||
declare b, c integer;
|
||||
if arg1 = 'a' then
|
||||
begin
|
||||
declare c1 cursor for select a from t3 where a % 2;
|
||||
declare continue handler for not found set b = 1;
|
||||
set b = 0;
|
||||
open c1;
|
||||
c1_repeat: repeat
|
||||
fetch c1 into c;
|
||||
if (b = 1) then
|
||||
leave c1_repeat;
|
||||
end if;
|
||||
insert into t4 values (c);
|
||||
until b = 1
|
||||
end repeat;
|
||||
end;
|
||||
end if;
|
||||
if arg1 = 'b' then
|
||||
begin
|
||||
declare c2 cursor for select a from t3 where not a % 2;
|
||||
declare continue handler for not found set b = 1;
|
||||
set b = 0;
|
||||
open c2;
|
||||
c2_repeat: repeat
|
||||
fetch c2 into c;
|
||||
if (b = 1) then
|
||||
leave c2_repeat;
|
||||
end if;
|
||||
insert into t4 values (c);
|
||||
until b = 1
|
||||
end repeat;
|
||||
end;
|
||||
end if;
|
||||
end|
|
||||
call bug12168('a')|
|
||||
select * from t4|
|
||||
a
|
||||
1
|
||||
3
|
||||
truncate t4|
|
||||
call bug12168('b')|
|
||||
select * from t4|
|
||||
a
|
||||
2
|
||||
4
|
||||
truncate t4|
|
||||
call bug12168('a')|
|
||||
select * from t4|
|
||||
a
|
||||
1
|
||||
3
|
||||
truncate t4|
|
||||
call bug12168('b')|
|
||||
select * from t4|
|
||||
a
|
||||
2
|
||||
4
|
||||
truncate t4|
|
||||
drop table t3, t4|
|
||||
drop procedure if exists bug12168|
|
||||
drop table t1,t2;
|
||||
|
@ -923,7 +923,7 @@ select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,2,'a'),(select c from t
|
||||
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,2,'a') (select c from t1 where a=t2.a)
|
||||
1 1 a
|
||||
2 0 b
|
||||
NULL NULL NULL
|
||||
NULL 0 NULL
|
||||
select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b'),(select c from t1 where a=t2.a) from t2;
|
||||
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b') (select c from t1 where a=t2.a)
|
||||
1 0 a
|
||||
@ -933,7 +933,7 @@ select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,4,'c'),(select c from t
|
||||
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,4,'c') (select c from t1 where a=t2.a)
|
||||
1 0 a
|
||||
2 0 b
|
||||
NULL NULL NULL
|
||||
NULL 0 NULL
|
||||
drop table t1,t2;
|
||||
create table t1 (a int, b real, c varchar(10));
|
||||
insert into t1 values (1, 1, 'a'), (2,2,'b'), (NULL, 2, 'b');
|
||||
@ -942,7 +942,7 @@ ROW(1, 1, 'a') IN (select a,b,c from t1)
|
||||
1
|
||||
select ROW(1, 2, 'a') IN (select a,b,c from t1);
|
||||
ROW(1, 2, 'a') IN (select a,b,c from t1)
|
||||
NULL
|
||||
0
|
||||
select ROW(1, 1, 'a') IN (select b,a,c from t1);
|
||||
ROW(1, 1, 'a') IN (select b,a,c from t1)
|
||||
1
|
||||
@ -960,7 +960,7 @@ ROW(1, 1, 'a') IN (select a,b,c from t1 where c='b' or c='a')
|
||||
1
|
||||
select ROW(1, 2, 'a') IN (select a,b,c from t1 where c='b' or c='a');
|
||||
ROW(1, 2, 'a') IN (select a,b,c from t1 where c='b' or c='a')
|
||||
NULL
|
||||
0
|
||||
select ROW(1, 1, 'a') IN (select b,a,c from t1 where c='b' or c='a');
|
||||
ROW(1, 1, 'a') IN (select b,a,c from t1 where c='b' or c='a')
|
||||
1
|
||||
@ -1200,7 +1200,7 @@ INSERT INTO t1 VALUES (1);
|
||||
UPDATE t1 SET i=i+(SELECT MAX(i) FROM (SELECT 1) t) WHERE i=(SELECT MAX(i));
|
||||
UPDATE t1 SET i=i+1 WHERE i=(SELECT MAX(i));
|
||||
UPDATE t1 SET t.i=i+(SELECT MAX(i) FROM (SELECT 1) t);
|
||||
ERROR 42S02: Unknown table 't' in field list
|
||||
ERROR 42S22: Unknown column 't.i' in 'field list'
|
||||
select * from t1;
|
||||
i
|
||||
1
|
||||
@ -1638,7 +1638,7 @@ ERROR 42S22: Unknown column 't1.s2' in 'where clause'
|
||||
select * from t1 where (select count(*) from t2 group by t1.s2) = 1;
|
||||
ERROR 42S22: Unknown column 't1.s2' in 'group statement'
|
||||
select count(*) from t2 group by t1.s2;
|
||||
ERROR 42S02: Unknown table 't1' in group statement
|
||||
ERROR 42S22: Unknown column 't1.s2' in 'group statement'
|
||||
drop table t1, t2;
|
||||
CREATE TABLE t1(COLA FLOAT NOT NULL,COLB FLOAT NOT NULL,COLC VARCHAR(20) DEFAULT NULL,PRIMARY KEY (COLA, COLB));
|
||||
CREATE TABLE t2(COLA FLOAT NOT NULL,COLB FLOAT NOT NULL,COLC CHAR(1) NOT NULL,PRIMARY KEY (COLA));
|
||||
@ -1793,10 +1793,18 @@ SELECT t1.id, ( SELECT COUNT(t.id) FROM t2 AS t WHERE t.id = t1.id ) AS c FROM t
|
||||
id c
|
||||
1 1
|
||||
2 0
|
||||
SELECT id, ( SELECT COUNT(t.id) FROM t2 AS t WHERE t.id = t1.id ) AS c FROM t1 LEFT JOIN t2 USING (id);
|
||||
id c
|
||||
1 1
|
||||
2 0
|
||||
SELECT t1.id, ( SELECT COUNT(t.id) FROM t2 AS t WHERE t.id = t1.id ) AS c FROM t1 LEFT JOIN t2 USING (id) ORDER BY t1.id;
|
||||
id c
|
||||
1 1
|
||||
2 0
|
||||
SELECT id, ( SELECT COUNT(t.id) FROM t2 AS t WHERE t.id = t1.id ) AS c FROM t1 LEFT JOIN t2 USING (id) ORDER BY id;
|
||||
id c
|
||||
1 1
|
||||
2 0
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 ( a int, b int );
|
||||
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
|
||||
@ -2709,7 +2717,143 @@ select (1,2,3) = (select * from t1);
|
||||
ERROR 21000: Operand should contain 3 column(s)
|
||||
select (select * from t1) = (1,2,3);
|
||||
ERROR 21000: Operand should contain 2 column(s)
|
||||
drop table t1
|
||||
#;
|
||||
CREATE TABLE `t1` (
|
||||
`itemid` bigint(20) unsigned NOT NULL auto_increment,
|
||||
`sessionid` bigint(20) unsigned default NULL,
|
||||
`time` int(10) unsigned NOT NULL default '0',
|
||||
`type` set('A','D','E','F','G','I','L','N','U') collate latin1_general_ci NOT
|
||||
NULL default '',
|
||||
`data` text collate latin1_general_ci NOT NULL,
|
||||
PRIMARY KEY (`itemid`)
|
||||
) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
|
||||
INSERT INTO `t1` VALUES (1, 1, 1, 'D', '');
|
||||
CREATE TABLE `t2` (
|
||||
`sessionid` bigint(20) unsigned NOT NULL auto_increment,
|
||||
`pid` int(10) unsigned NOT NULL default '0',
|
||||
`date` int(10) unsigned NOT NULL default '0',
|
||||
`ip` varchar(15) collate latin1_general_ci NOT NULL default '',
|
||||
PRIMARY KEY (`sessionid`)
|
||||
) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
|
||||
INSERT INTO `t2` VALUES (1, 1, 1, '10.10.10.1');
|
||||
SELECT s.ip, count( e.itemid ) FROM `t1` e JOIN t2 s ON s.sessionid = e.sessionid WHERE e.sessionid = ( SELECT sessionid FROM t2 ORDER BY sessionid DESC LIMIT 1 ) GROUP BY s.ip HAVING count( e.itemid ) >0 LIMIT 0 , 30;
|
||||
ip count( e.itemid )
|
||||
10.10.10.1 1
|
||||
drop tables t1,t2;
|
||||
create table t1 (fld enum('0','1'));
|
||||
insert into t1 values ('1');
|
||||
select * from (select max(fld) from t1) as foo;
|
||||
max(fld)
|
||||
1
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (one int, two int, flag char(1));
|
||||
CREATE TABLE t2 (one int, two int, flag char(1));
|
||||
INSERT INTO t1 VALUES(1,2,'Y'),(2,3,'Y'),(3,4,'Y'),(5,6,'N'),(7,8,'N');
|
||||
INSERT INTO t2 VALUES(1,2,'Y'),(2,3,'Y'),(3,4,'Y'),(5,6,'N'),(7,8,'N');
|
||||
SELECT * FROM t1
|
||||
WHERE ROW(one,two) IN (SELECT DISTINCT one,two FROM t2 WHERE flag = 'N');
|
||||
one two flag
|
||||
5 6 N
|
||||
7 8 N
|
||||
SELECT * FROM t1
|
||||
WHERE ROW(one,two) IN (SELECT DISTINCT one,two FROM t1 WHERE flag = 'N');
|
||||
one two flag
|
||||
5 6 N
|
||||
7 8 N
|
||||
insert into t2 values (null,null,'N');
|
||||
insert into t2 values (null,3,'0');
|
||||
insert into t2 values (null,5,'0');
|
||||
insert into t2 values (10,null,'0');
|
||||
insert into t1 values (10,3,'0');
|
||||
insert into t1 values (10,5,'0');
|
||||
insert into t1 values (10,10,'0');
|
||||
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N') as 'test' from t1;
|
||||
one two test
|
||||
1 2 NULL
|
||||
2 3 NULL
|
||||
3 4 NULL
|
||||
5 6 1
|
||||
7 8 1
|
||||
10 3 NULL
|
||||
10 5 NULL
|
||||
10 10 NULL
|
||||
SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
|
||||
one two
|
||||
5 6
|
||||
7 8
|
||||
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N' group by one,two) as 'test' from t1;
|
||||
one two test
|
||||
1 2 NULL
|
||||
2 3 NULL
|
||||
3 4 NULL
|
||||
5 6 1
|
||||
7 8 1
|
||||
10 3 NULL
|
||||
10 5 NULL
|
||||
10 10 NULL
|
||||
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
|
||||
one two test
|
||||
1 2 0
|
||||
2 3 NULL
|
||||
3 4 0
|
||||
5 6 0
|
||||
7 8 0
|
||||
10 3 NULL
|
||||
10 5 NULL
|
||||
10 10 NULL
|
||||
SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
|
||||
one two test
|
||||
1 2 0
|
||||
2 3 NULL
|
||||
3 4 0
|
||||
5 6 0
|
||||
7 8 0
|
||||
10 3 NULL
|
||||
10 5 NULL
|
||||
10 10 NULL
|
||||
explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one` AS `one`,`test`.`t2`.`two` AS `two` from `test`.`t2` where ((`test`.`t2`.`flag` = _latin1'0') and ((<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) or isnull(`test`.`t2`.`one`)) and ((<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`) or isnull(`test`.`t2`.`two`))) having (<is_not_null_test>(`test`.`t2`.`one`) and <is_not_null_test>(`test`.`t2`.`two`)))) AS `test` from `test`.`t1`
|
||||
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 Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 Using where
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two` from `test`.`t1` where <in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one` AS `one`,`test`.`t2`.`two` AS `two` from `test`.`t2` where ((`test`.`t2`.`flag` = _latin1'N') and (<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) and (<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`))))
|
||||
explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 ALL NULL NULL NULL NULL 8
|
||||
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 Using where; Using temporary; Using filesort
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`one` AS `one`,`test`.`t1`.`two` AS `two`,<in_optimizer>((`test`.`t1`.`one`,`test`.`t1`.`two`),<exists>(select `test`.`t2`.`one` AS `one`,`test`.`t2`.`two` AS `two` from `test`.`t2` where (`test`.`t2`.`flag` = _latin1'0') group by `test`.`t2`.`one`,`test`.`t2`.`two` having (((<cache>(`test`.`t1`.`one`) = `test`.`t2`.`one`) or isnull(`test`.`t2`.`one`)) and ((<cache>(`test`.`t1`.`two`) = `test`.`t2`.`two`) or isnull(`test`.`t2`.`two`)) and <is_not_null_test>(`test`.`t2`.`one`) and <is_not_null_test>(`test`.`t2`.`two`)))) AS `test` from `test`.`t1`
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (a char(5), b char(5));
|
||||
INSERT INTO t1 VALUES (NULL,'aaa'), ('aaa','aaa');
|
||||
SELECT * FROM t1 WHERE (a,b) IN (('aaa','aaa'), ('aaa','bbb'));
|
||||
a b
|
||||
aaa aaa
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int);
|
||||
CREATE TABLE t2 (a int, b int);
|
||||
CREATE TABLE t3 (b int NOT NULL);
|
||||
INSERT INTO t1 VALUES (1), (2), (3), (4);
|
||||
INSERT INTO t2 VALUES (1,10), (3,30);
|
||||
SELECT * FROM t2 LEFT JOIN t3 ON t2.b=t3.b
|
||||
WHERE t3.b IS NOT NULL OR t2.a > 10;
|
||||
a b b
|
||||
SELECT * FROM t1
|
||||
WHERE t1.a NOT IN (SELECT a FROM t2 LEFT JOIN t3 ON t2.b=t3.b
|
||||
WHERE t3.b IS NOT NULL OR t2.a > 10);
|
||||
a
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
DROP TABLE t1,t2,t3;
|
||||
create table t1 (df decimal(5,1));
|
||||
insert into t1 values(1.1);
|
||||
insert into t1 values(2.2);
|
||||
|
@ -120,8 +120,8 @@ DOCID DOCNAME DOCTYPEID FOLDERID AUTHOR CREATED TITLE SUBTITLE DOCABSTRACT PUBLI
|
||||
c373e9f5ad07993f3859444553544200 Last Discussion c373e9f5ad079174ff17444553544200 c373e9f5ad0796c0eca4444553544200 Goldilocks 2003-06-09 11:21:06 Title: Last Discussion NULL Setting new abstract and keeping doc checked out 2003-06-09 10:51:26 2003-06-09 10:51:26 NULL NULL NULL 03eea05112b845949f3fd03278b5fe43 2003-06-09 11:21:06 admin 0 NULL Discussion NULL NULL
|
||||
EXPLAIN SELECT t2.*, t4.DOCTYPENAME, t1.CONTENTSIZE,t1.MIMETYPE FROM t2 INNER JOIN t4 ON t2.DOCTYPEID = t4.DOCTYPEID LEFT OUTER JOIN t1 ON t2.DOCID = t1.DOCID WHERE t2.FOLDERID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID IN(SELECT t3.FOLDERID FROM t3 WHERE t3.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t3.FOLDERNAME = 'Level1') AND t3.FOLDERNAME = 'Level2') AND t3.FOLDERNAME = 'Level3') AND t3.FOLDERNAME = 'CopiedFolder') AND t3.FOLDERNAME = 'Movie Reviews') AND t2.DOCNAME = 'Last Discussion';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 system PRIMARY NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY t2 ALL DDOCTYPEID_IDX NULL NULL NULL 9 Using where
|
||||
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 34 test.t2.DOCID 1
|
||||
1 PRIMARY t4 eq_ref PRIMARY PRIMARY 34 test.t2.DOCTYPEID 1
|
||||
2 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY,FFOLDERID_IDX PRIMARY 34 func 1 Using index; Using where
|
||||
3 DEPENDENT SUBQUERY t3 unique_subquery PRIMARY,FFOLDERID_IDX PRIMARY 34 func 1 Using index; Using where
|
||||
|
@ -2,6 +2,7 @@ drop table if exists t1, t2, t3;
|
||||
drop view if exists v1;
|
||||
drop database if exists mysqltest;
|
||||
drop function if exists f1;
|
||||
drop procedure if exists p1;
|
||||
create table t1 (i int);
|
||||
create trigger trg before insert on t1 for each row set @a:=1;
|
||||
set @a:=0;
|
||||
@ -635,3 +636,105 @@ show triggers;
|
||||
Trigger Event Table Statement Timing Created sql_mode
|
||||
t1_bi INSERT t1 set new.a = '2004-01-00' BEFORE #
|
||||
drop table t1;
|
||||
create table t1 (id int);
|
||||
create trigger t1_ai after insert on t1 for each row flush tables;
|
||||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||||
create trigger t1_ai after insert on t1 for each row flush privileges;
|
||||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||||
create procedure p1() flush tables;
|
||||
create trigger t1_ai after insert on t1 for each row call p1();
|
||||
insert into t1 values (0);
|
||||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||||
drop procedure p1;
|
||||
create procedure p1() flush privileges;
|
||||
insert into t1 values (0);
|
||||
ERROR 0A000: FLUSH is not allowed in stored function or trigger
|
||||
drop procedure p1;
|
||||
drop table t1;
|
||||
create table t1 (id int, data int, username varchar(16));
|
||||
insert into t1 (id, data) values (1, 0);
|
||||
create trigger t1_whoupdated before update on t1 for each row
|
||||
begin
|
||||
declare user varchar(32);
|
||||
declare i int;
|
||||
select user() into user;
|
||||
set NEW.username = user;
|
||||
select count(*) from ((select 1) union (select 2)) as d1 into i;
|
||||
end|
|
||||
update t1 set data = 1;
|
||||
update t1 set data = 2;
|
||||
drop table t1;
|
||||
create table t1 (c1 int, c2 datetime);
|
||||
create trigger tr1 before insert on t1 for each row
|
||||
begin
|
||||
set new.c2= '2004-04-01';
|
||||
select 'hello';
|
||||
end|
|
||||
ERROR 0A000: Not allowed to return a result set from a trigger
|
||||
insert into t1 (c1) values (1),(2),(3);
|
||||
select * from t1;
|
||||
c1 c2
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 NULL
|
||||
drop procedure if exists bug11587;
|
||||
create procedure bug11587(x char(16))
|
||||
begin
|
||||
select "hello";
|
||||
select "hello again";
|
||||
end|
|
||||
create trigger tr1 before insert on t1 for each row
|
||||
begin
|
||||
call bug11587();
|
||||
set new.c2= '2004-04-02';
|
||||
end|
|
||||
insert into t1 (c1) values (4),(5),(6);
|
||||
ERROR 0A000: PROCEDURE test.bug11587 can't return a result set in the given context
|
||||
select * from t1;
|
||||
c1 c2
|
||||
1 NULL
|
||||
2 NULL
|
||||
3 NULL
|
||||
drop procedure bug11587;
|
||||
drop table t1;
|
||||
create table t1 (f1 integer);
|
||||
create table t2 (f2 integer);
|
||||
create trigger t1_ai after insert on t1
|
||||
for each row insert into t2 values (new.f1+1);
|
||||
create trigger t2_ai after insert on t2
|
||||
for each row insert into t1 values (new.f2+1);
|
||||
insert into t1 values (1);
|
||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select * from t1;
|
||||
f1
|
||||
1
|
||||
select * from t2;
|
||||
f2
|
||||
2
|
||||
drop trigger t1_ai;
|
||||
drop trigger t2_ai;
|
||||
create trigger t1_bu before update on t1
|
||||
for each row insert into t1 values (2);
|
||||
update t1 set f1= 10;
|
||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select * from t1;
|
||||
f1
|
||||
1
|
||||
drop trigger t1_bu;
|
||||
create trigger t1_bu before update on t1
|
||||
for each row delete from t1 where f1=new.f1;
|
||||
update t1 set f1= 10;
|
||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||
select * from t1;
|
||||
f1
|
||||
1
|
||||
drop trigger t1_bu;
|
||||
create trigger t1_bi before insert on t1
|
||||
for each row set new.f1=(select sum(f1) from t1);
|
||||
insert into t1 values (3);
|
||||
select * from t1;
|
||||
f1
|
||||
1
|
||||
1
|
||||
drop trigger t1_bi;
|
||||
drop tables t1, t2;
|
||||
|
@ -34,9 +34,9 @@ select 0 + b'1111111111111111';
|
||||
select 0 + b'1000000000000001';
|
||||
0 + b'1000000000000001'
|
||||
32769
|
||||
drop table if exists t1;
|
||||
drop table if exists t1,t2;
|
||||
create table t1 (a bit(65));
|
||||
ERROR 42000: Column length too big for column 'a' (max = 64); use BLOB or TEXT instead
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 64)
|
||||
create table t1 (a bit(0));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
|
@ -36,7 +36,7 @@ select 0 + b'1000000000000001';
|
||||
32769
|
||||
drop table if exists t1;
|
||||
create table t1 (a bit(65)) engine=innodb;
|
||||
ERROR 42000: Column length too big for column 'a' (max = 64); use BLOB or TEXT instead
|
||||
ERROR 42000: Display width out of range for column 'a' (max = 64)
|
||||
create table t1 (a bit(0)) engine=innodb;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
|
@ -26,6 +26,8 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
delete from t1;
|
||||
insert into t1 values("000101"),("691231"),("700101"),("991231"),("00000101"),("00010101"),("99991231"),("00101000000"),("691231000000"),("700101000000"),("991231235959"),("10000101000000"),("99991231235959"),("20030100000000"),("20030000000000");
|
||||
insert into t1 values ("2003-003-03");
|
||||
insert into t1 values ("20030102T131415"),("2001-01-01T01:01:01"), ("2001-1-1T1:01:01");
|
||||
select * from t1;
|
||||
t
|
||||
2000-01-01 00:00:00
|
||||
@ -43,6 +45,17 @@ t
|
||||
9999-12-31 23:59:59
|
||||
2003-01-00 00:00:00
|
||||
2003-00-00 00:00:00
|
||||
2003-03-03 00:00:00
|
||||
2003-01-02 13:14:15
|
||||
2001-01-01 01:01:01
|
||||
2001-01-01 01:01:01
|
||||
truncate table t1;
|
||||
insert into t1 values("2003-0303 12:13:14");
|
||||
Warnings:
|
||||
Warning 1264 Out of range value adjusted for column 't' at row 1
|
||||
select * from t1;
|
||||
t
|
||||
0000-00-00 00:00:00
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (a timestamp, b date, c time, d datetime);
|
||||
insert into t1 (b,c,d) values(now(),curtime(),now());
|
||||
@ -153,13 +166,3 @@ dt
|
||||
0000-00-00 00:00:00
|
||||
0000-00-00 00:00:00
|
||||
drop table t1;
|
||||
create table t1 (dt datetime);
|
||||
insert into t1 values ("20010101T010101");
|
||||
insert into t1 values ("2001-01-01T01:01:01");
|
||||
insert into t1 values ("2001-1-1T1:01:01");
|
||||
select * from t1;
|
||||
dt
|
||||
2001-01-01 01:01:01
|
||||
2001-01-01 01:01:01
|
||||
2001-01-01 01:01:01
|
||||
drop table t1;
|
||||
|
@ -311,16 +311,32 @@ select t1.id as id_A, t2.id as id_B from t1 left join t2 using ( id );
|
||||
id_A id_B
|
||||
1 1
|
||||
2 NULL
|
||||
select t1.id as id_A, t2.id as id_B from t1 left join t2 on (t1.id = t2.id);
|
||||
id_A id_B
|
||||
1 1
|
||||
2 NULL
|
||||
create table t3 (id_A integer unsigned not null, id_B integer unsigned null );
|
||||
insert into t3 select t1.id as id_A, t2.id as id_B from t1 left join t2 using ( id );
|
||||
select * from t3;
|
||||
id_A id_B
|
||||
1 1
|
||||
2 NULL
|
||||
delete from t3;
|
||||
insert into t3 select t1.id as id_A, t2.id as id_B from t1 left join t2 on (t1.id = t2.id);
|
||||
select * from t3;
|
||||
id_A id_B
|
||||
1 1
|
||||
2 NULL
|
||||
drop table t3;
|
||||
create table t3 select t1.id as id_A, t2.id as id_B from t1 left join t2 using ( id );
|
||||
select * from t3;
|
||||
id_A id_B
|
||||
1 1
|
||||
2 NULL
|
||||
drop table t3;
|
||||
create table t3 select t1.id as id_A, t2.id as id_B from t1 left join t2 on (t1.id = t2.id);
|
||||
select * from t3;
|
||||
id_A id_B
|
||||
1 1
|
||||
2 NULL
|
||||
drop table t1,t2,t3;
|
||||
|
@ -430,7 +430,7 @@ drop temporary table t1;
|
||||
create table t1 select a from t1 union select a from t2;
|
||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
||||
select a from t1 union select a from t2 order by t2.a;
|
||||
ERROR 42S02: Unknown table 't2' in order clause
|
||||
ERROR 42S22: Unknown column 't2.a' in 'order clause'
|
||||
drop table t1,t2;
|
||||
select length(version()) > 1 as `*` UNION select 2;
|
||||
*
|
||||
|
@ -6,7 +6,7 @@ create view v1 (c,d) as select a,b from t1;
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
create temporary table t1 (a int, b int);
|
||||
create view v1 (c) as select b+1 from t1;
|
||||
ERROR HY000: View's SELECT contains a temporary table 't1'
|
||||
ERROR HY000: View's SELECT refers to a temporary table 't1'
|
||||
drop table t1;
|
||||
create table t1 (a int, b int);
|
||||
insert into t1 values (1,2), (1,3), (2,4), (2,5), (3,10);
|
||||
@ -150,12 +150,12 @@ v6 VIEW
|
||||
show table status;
|
||||
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time Collation Checksum Create_options Comment
|
||||
t1 MyISAM 10 Fixed 5 9 45 # 1024 0 NULL # # NULL latin1_swedish_ci NULL
|
||||
v1 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
v2 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
v3 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
v4 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
v5 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
v6 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL view
|
||||
v1 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL VIEW
|
||||
v2 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL VIEW
|
||||
v3 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL VIEW
|
||||
v4 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL VIEW
|
||||
v5 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL VIEW
|
||||
v6 NULL NULL NULL NULL NULL NULL # NULL NULL NULL # # NULL NULL NULL NULL VIEW
|
||||
drop view v1,v2,v3,v4,v5,v6;
|
||||
create view v1 (c,d,e,f) as select a,b,
|
||||
a in (select a+2 from t1), a = all (select a from t1) from t1;
|
||||
@ -1880,6 +1880,8 @@ test.v5 check error View 'test.v5' references invalid table(s) or column(s) or f
|
||||
test.v6 check status OK
|
||||
drop view v1, v2, v3, v4, v5, v6;
|
||||
drop table t2;
|
||||
drop function if exists f1;
|
||||
drop function if exists f2;
|
||||
CREATE TABLE t1 (col1 time);
|
||||
CREATE TABLE t2 (col1 time);
|
||||
CREATE TABLE t3 (col1 time);
|
||||
@ -2063,3 +2065,65 @@ pid GROUP_CONCAT(CONCAT(fn,' ',ln) ORDER BY 1)
|
||||
2 c d
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1 (id int PRIMARY KEY, f varchar(255));
|
||||
CREATE VIEW v1 AS SELECT id, f FROM t1 WHERE id <= 2;
|
||||
INSERT INTO t1 VALUES (2, 'foo2');
|
||||
INSERT INTO t1 VALUES (1, 'foo1');
|
||||
SELECT * FROM v1;
|
||||
id f
|
||||
1 foo1
|
||||
2 foo2
|
||||
SELECT * FROM v1;
|
||||
id f
|
||||
1 foo1
|
||||
2 foo2
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (pk int PRIMARY KEY, b int);
|
||||
CREATE TABLE t2 (pk int PRIMARY KEY, fk int, INDEX idx(fk));
|
||||
CREATE TABLE t3 (pk int PRIMARY KEY, fk int, INDEX idx(fk));
|
||||
CREATE TABLE t4 (pk int PRIMARY KEY, fk int, INDEX idx(fk));
|
||||
CREATE TABLE t5 (pk int PRIMARY KEY, fk int, INDEX idx(fk));
|
||||
CREATE VIEW v1 AS
|
||||
SELECT t1.pk as a FROM t1,t2,t3,t4,t5
|
||||
WHERE t1.b IS NULL AND
|
||||
t1.pk=t2.fk AND t2.pk=t3.fk AND t3.pk=t4.fk AND t4.pk=t5.fk;
|
||||
SELECT a FROM v1;
|
||||
a
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2,t3,t4,t5;
|
||||
create view v1 as select timestampdiff(day,'1997-01-01 00:00:00','1997-01-02 00:00:00') as f1;
|
||||
select * from v1;
|
||||
f1
|
||||
1
|
||||
drop view v1;
|
||||
create table t1 (f1 int);
|
||||
create table t2 (f1 int);
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (2);
|
||||
create view v1 as select * from t1 union select * from t2 union all select * from t2;
|
||||
select * from v1;
|
||||
f1
|
||||
1
|
||||
2
|
||||
2
|
||||
drop view v1;
|
||||
drop table t1,t2;
|
||||
CREATE TEMPORARY TABLE t1 (a int);
|
||||
CREATE FUNCTION f1 () RETURNS int RETURN (SELECT COUNT(*) FROM t1);
|
||||
CREATE VIEW v1 AS SELECT f1();
|
||||
ERROR HY000: View's SELECT refers to a temporary table 't1'
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP VIEW IF EXISTS v1;
|
||||
CREATE TABLE t1 (f4 CHAR(5));
|
||||
CREATE VIEW v1 AS SELECT * FROM t1;
|
||||
DESCRIBE v1;
|
||||
Field Type Null Key Default Extra
|
||||
f4 char(5) YES NULL
|
||||
ALTER TABLE t1 CHANGE COLUMN f4 f4x CHAR(5);
|
||||
DESCRIBE v1;
|
||||
ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s)
|
||||
DROP TABLE t1;
|
||||
DROP VIEW v1;
|
||||
|
@ -22,6 +22,8 @@ a
|
||||
xa start 'testa','testb';
|
||||
insert t1 values (30);
|
||||
xa end 'testa','testb';
|
||||
xa start 'testa','testb';
|
||||
ERROR XAE08: XAER_DUPID: The XID already exists
|
||||
xa start 0x7465737462, 0x2030405060, 0xb;
|
||||
insert t1 values (40);
|
||||
xa end 'testb',' 0@P`',11;
|
||||
@ -35,11 +37,11 @@ formatID gtrid_length bqual_length data
|
||||
11 5 5 testb 0@P`
|
||||
1 5 5 testatestb
|
||||
xa commit 'testb',0x2030405060,11;
|
||||
ERROR XAE04: XAER_NOTA: Unknown XID
|
||||
xa rollback 'testa','testb';
|
||||
xa start 'zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz';
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
|
||||
select * from t1;
|
||||
a
|
||||
20
|
||||
40
|
||||
drop table t1;
|
||||
|
@ -401,6 +401,7 @@ set @a:=now();
|
||||
CREATE TABLE t1 (a int not null, b timestamp not null, primary key (a)) engine=bdb;
|
||||
insert into t1 (a) values(1),(2),(3);
|
||||
select t1.a from t1 natural join t1 as t2 where t1.b >= @a order by t1.a;
|
||||
select a from t1 natural join t1 as t2 where b >= @a order by a;
|
||||
update t1 set a=5 where a=1;
|
||||
select a from t1;
|
||||
drop table t1;
|
||||
|
@ -14,6 +14,9 @@ select +9999999999999999999,-9999999999999999999;
|
||||
select cast(9223372036854775808 as unsigned)+1;
|
||||
select 9223372036854775808+1;
|
||||
select -(0-3),round(-(0-3)), round(9999999999999999999);
|
||||
select 1,11,101,1001,10001,100001,1000001,10000001,100000001,1000000001,10000000001,100000000001,1000000000001,10000000000001,100000000000001,1000000000000001,10000000000000001,100000000000000001,1000000000000000001,10000000000000000001;
|
||||
select -1,-11,-101,-1001,-10001,-100001,-1000001,-10000001,-100000001,-1000000001,-10000000001,-100000000001,-1000000000001,-10000000000001,-100000000000001,-1000000000000001,-10000000000000001,-100000000000000001,-1000000000000000001,-10000000000000000001;
|
||||
select conv(1,10,16),conv((1<<2)-1,10,16),conv((1<<10)-2,10,16),conv((1<<16)-3,10,16),conv((1<<25)-4,10,16),conv((1<<31)-5,10,16),conv((1<<36)-6,10,16),conv((1<<47)-7,10,16),conv((1<<48)-8,10,16),conv((1<<55)-9,10,16),conv((1<<56)-10,10,16),conv((1<<63)-11,10,16);
|
||||
|
||||
#
|
||||
# In 3.23 we have to disable the test of column to bigint as
|
||||
|
@ -398,6 +398,27 @@ DROP TABLE t2;
|
||||
DROP TABLE t3;
|
||||
DROP TABLE t4;
|
||||
|
||||
# Test prepared statement with 0x8300 sequence in parameter while
|
||||
# running with cp932 client character set.
|
||||
RESET MASTER;
|
||||
CREATE TABLE t1(f1 blob);
|
||||
PREPARE stmt1 FROM 'INSERT INTO t1 VALUES(?)';
|
||||
SET @var1= x'8300';
|
||||
# TODO: Note that this doesn't actually test the code which was added for
|
||||
# bug#11338 because this syntax for prepared statements causes the PS to
|
||||
# be replicated differently than if we executed the PS from C or Java.
|
||||
# Using this syntax, variable names are inserted into the binlog instead
|
||||
# of values. The real goal of this test is to check the code that was
|
||||
# added to Item_param::query_val_str() in order to do hex encoding of
|
||||
# PS parameters when the client character set is cp932;
|
||||
# Bug#11338 has an example java program which can be used to verify this
|
||||
# code (and I have used it to test the fix) until there is some way to
|
||||
# exercise this code from mysql-test-run.
|
||||
EXECUTE stmt1 USING @var1;
|
||||
SHOW BINLOG EVENTS FROM 98;
|
||||
SELECT HEX(f1) FROM t1;
|
||||
DROP table t1;
|
||||
# end test for bug#11338
|
||||
|
||||
SET collation_connection='cp932_japanese_ci';
|
||||
-- source include/ctype_filesort.inc
|
||||
|
@ -42,7 +42,7 @@ CREATE TABLE t2 (a int not null);
|
||||
insert into t2 values(1);
|
||||
select * from (select * from t1 where t1.a=(select a from t2 where t2.a=t1.a)) a;
|
||||
select * from (select * from t1 where t1.a=(select t2.a from t2 where t2.a=t1.a) union select t1.a, t1.b from t1) a;
|
||||
explain select * from (select * from t1,t2 where t1.a=t2.a) t1;
|
||||
explain select * from (select t1.*, t2.a as t2a from t1,t2 where t1.a=t2.a) t1;
|
||||
drop table t1, t2;
|
||||
create table t1(a int not null, t char(8), index(a));
|
||||
disable_query_log;
|
||||
@ -249,4 +249,13 @@ select * from t1 union distinct select * from t2 union all select * from t3;
|
||||
select * from (select * from t1 union distinct select * from t2 union all select * from t3) X;
|
||||
drop table t1, t2, t3;
|
||||
|
||||
#
|
||||
# Bug #11864 non unique names are allowed in subquery
|
||||
#
|
||||
create table t1 (a int);
|
||||
create table t2 (a int);
|
||||
--error 1060
|
||||
select * from (select * from t1,t2) foo;
|
||||
drop table t1,t2;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
@ -1,344 +0,0 @@
|
||||
#
|
||||
# Bug with distinct and INSERT INTO
|
||||
# Bug with group by and not used fields
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (id int,facility char(20));
|
||||
CREATE TABLE t2 (facility char(20));
|
||||
INSERT INTO t1 VALUES (NULL,NULL);
|
||||
INSERT INTO t1 VALUES (-1,'');
|
||||
INSERT INTO t1 VALUES (0,'');
|
||||
INSERT INTO t1 VALUES (1,'/L');
|
||||
INSERT INTO t1 VALUES (2,'A01');
|
||||
INSERT INTO t1 VALUES (3,'ANC');
|
||||
INSERT INTO t1 VALUES (4,'F01');
|
||||
INSERT INTO t1 VALUES (5,'FBX');
|
||||
INSERT INTO t1 VALUES (6,'MT');
|
||||
INSERT INTO t1 VALUES (7,'P');
|
||||
INSERT INTO t1 VALUES (8,'RV');
|
||||
INSERT INTO t1 VALUES (9,'SRV');
|
||||
INSERT INTO t1 VALUES (10,'VMT');
|
||||
INSERT INTO t2 SELECT DISTINCT FACILITY FROM t1;
|
||||
|
||||
select id from t1 group by id;
|
||||
select * from t1 order by id;
|
||||
select id-5,facility from t1 order by "id-5";
|
||||
select id,concat(facility) from t1 group by id ;
|
||||
select id+0 as a,max(id),concat(facility) as b from t1 group by a order by b desc,a;
|
||||
select id >= 0 and id <= 5 as grp,count(*) from t1 group by grp;
|
||||
|
||||
SELECT DISTINCT FACILITY FROM t1;
|
||||
SELECT FACILITY FROM t2;
|
||||
SELECT count(*) from t1,t2 where t1.facility=t2.facility;
|
||||
select count(facility) from t1;
|
||||
select count(*) from t1;
|
||||
select count(*) from t1 where facility IS NULL;
|
||||
select count(*) from t1 where facility = NULL;
|
||||
select count(*) from t1 where facility IS NOT NULL;
|
||||
select count(*) from t1 where id IS NULL;
|
||||
select count(*) from t1 where id IS NOT NULL;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Problem with distinct without results
|
||||
#
|
||||
CREATE TABLE t1 (UserId int(11) DEFAULT '0' NOT NULL);
|
||||
INSERT INTO t1 VALUES (20);
|
||||
INSERT INTO t1 VALUES (27);
|
||||
|
||||
SELECT UserId FROM t1 WHERE Userid=22;
|
||||
SELECT UserId FROM t1 WHERE UserId=22 group by Userid;
|
||||
SELECT DISTINCT UserId FROM t1 WHERE UserId=22 group by Userid;
|
||||
SELECT DISTINCT UserId FROM t1 WHERE UserId=22;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test of distinct
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int(10) unsigned not null primary key,b int(10) unsigned);
|
||||
INSERT INTO t1 VALUES (1,1),(2,1),(3,1),(4,1);
|
||||
CREATE TABLE t2 (a int(10) unsigned not null, key (A));
|
||||
INSERT INTO t2 VALUES (1),(2);
|
||||
CREATE TABLE t3 (a int(10) unsigned, key(A), b text);
|
||||
INSERT INTO t3 VALUES (1,'1'),(2,'2');
|
||||
SELECT DISTINCT t3.b FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
|
||||
INSERT INTO t2 values (1),(2),(3);
|
||||
INSERT INTO t3 VALUES (1,'1'),(2,'2'),(1,'1'),(2,'2');
|
||||
explain SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
|
||||
SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
|
||||
|
||||
# Create a lot of data into t3;
|
||||
create temporary table t4 select * from t3;
|
||||
insert into t3 select * from t4;
|
||||
insert into t4 select * from t3;
|
||||
insert into t3 select * from t4;
|
||||
insert into t4 select * from t3;
|
||||
insert into t3 select * from t4;
|
||||
insert into t4 select * from t3;
|
||||
insert into t3 select * from t4;
|
||||
|
||||
explain select distinct t1.a from t1,t3 where t1.a=t3.a;
|
||||
#flush status;
|
||||
select distinct t1.a from t1,t3 where t1.a=t3.a;
|
||||
#show status like 'Handler%';
|
||||
#flush status;
|
||||
select distinct 1 from t1,t3 where t1.a=t3.a;
|
||||
#show status like 'Handler%';
|
||||
|
||||
explain SELECT distinct t1.a from t1;
|
||||
explain SELECT distinct t1.a from t1 order by a desc;
|
||||
explain SELECT t1.a from t1 group by a order by a desc;
|
||||
explain SELECT distinct t1.a from t1 order by a desc limit 1;
|
||||
explain SELECT distinct a from t3 order by a desc limit 2;
|
||||
explain SELECT distinct a,b from t3 order by a+1;
|
||||
explain SELECT distinct a,b from t3 order by a limit 10;
|
||||
explain SELECT a,b from t3 group by a,b order by a+1;
|
||||
|
||||
drop table t1,t2,t3,t4;
|
||||
|
||||
CREATE TABLE t1 (name varchar(255));
|
||||
INSERT INTO t1 VALUES ('aa'),('ab'),('ac'),('ad'),('ae');
|
||||
SELECT DISTINCT * FROM t1 LIMIT 2;
|
||||
SELECT DISTINCT name FROM t1 LIMIT 2;
|
||||
SELECT DISTINCT 1 FROM t1 LIMIT 2;
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
ID int(11) NOT NULL auto_increment,
|
||||
NAME varchar(75) DEFAULT '' NOT NULL,
|
||||
LINK_ID int(11) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
KEY NAME (NAME),
|
||||
KEY LINK_ID (LINK_ID)
|
||||
);
|
||||
|
||||
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (1,'Mike',0),(2,'Jack',0),(3,'Bill',0);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
ID int(11) NOT NULL auto_increment,
|
||||
NAME varchar(150) DEFAULT '' NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
KEY NAME (NAME)
|
||||
);
|
||||
|
||||
SELECT DISTINCT
|
||||
t2.id AS key_link_id,
|
||||
t2.name AS link
|
||||
FROM t1
|
||||
LEFT JOIN t2 ON t1.link_id=t2.id
|
||||
GROUP BY t1.id
|
||||
ORDER BY link;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Problem with table dependencies
|
||||
#
|
||||
|
||||
create table t1 (
|
||||
id int not null,
|
||||
name tinytext not null,
|
||||
unique (id)
|
||||
);
|
||||
create table t2 (
|
||||
id int not null,
|
||||
idx int not null,
|
||||
unique (id, idx)
|
||||
);
|
||||
create table t3 (
|
||||
id int not null,
|
||||
idx int not null,
|
||||
unique (id, idx)
|
||||
);
|
||||
insert into t1 values (1,'yes'), (2,'no');
|
||||
insert into t2 values (1,1);
|
||||
insert into t3 values (1,1);
|
||||
EXPLAIN
|
||||
SELECT DISTINCT
|
||||
t1.id
|
||||
from
|
||||
t1
|
||||
straight_join
|
||||
t2
|
||||
straight_join
|
||||
t3
|
||||
straight_join
|
||||
t1 as j_lj_t2 left join t2 as t2_lj
|
||||
on j_lj_t2.id=t2_lj.id
|
||||
straight_join
|
||||
t1 as j_lj_t3 left join t3 as t3_lj
|
||||
on j_lj_t3.id=t3_lj.id
|
||||
WHERE
|
||||
((t1.id=j_lj_t2.id AND t2_lj.id IS NULL) OR (t1.id=t2.id AND t2.idx=2))
|
||||
AND ((t1.id=j_lj_t3.id AND t3_lj.id IS NULL) OR (t1.id=t3.id AND t3.idx=2));
|
||||
SELECT DISTINCT
|
||||
t1.id
|
||||
from
|
||||
t1
|
||||
straight_join
|
||||
t2
|
||||
straight_join
|
||||
t3
|
||||
straight_join
|
||||
t1 as j_lj_t2 left join t2 as t2_lj
|
||||
on j_lj_t2.id=t2_lj.id
|
||||
straight_join
|
||||
t1 as j_lj_t3 left join t3 as t3_lj
|
||||
on j_lj_t3.id=t3_lj.id
|
||||
WHERE
|
||||
((t1.id=j_lj_t2.id AND t2_lj.id IS NULL) OR (t1.id=t2.id AND t2.idx=2))
|
||||
AND ((t1.id=j_lj_t3.id AND t3_lj.id IS NULL) OR (t1.id=t3.id AND t3.idx=2));
|
||||
drop table t1,t2,t3;
|
||||
|
||||
#
|
||||
# Test using DISTINCT on a function that contains a group function
|
||||
# This also test the case when one doesn't use all fields in GROUP BY.
|
||||
#
|
||||
|
||||
create table t1 (a int not null, b int not null, t time);
|
||||
insert into t1 values (1,1,"00:06:15"),(1,2,"00:06:15"),(1,2,"00:30:15"),(1,3,"00:06:15"),(1,3,"00:30:15");
|
||||
select a,sec_to_time(sum(time_to_sec(t))) from t1 group by a,b;
|
||||
select distinct a,sec_to_time(sum(time_to_sec(t))) from t1 group by a,b;
|
||||
create table t2 (a int not null primary key, b int);
|
||||
insert into t2 values (1,1),(2,2),(3,3);
|
||||
select t1.a,sec_to_time(sum(time_to_sec(t))) from t1 left join t2 on (t1.b=t2.a) group by t1.a,t2.b;
|
||||
select distinct t1.a,sec_to_time(sum(time_to_sec(t))) from t1 left join t2 on (t1.b=t2.a) group by t1.a,t2.b;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# Test problem with DISTINCT and HAVING
|
||||
#
|
||||
create table t1 (a int not null,b char(5), c text);
|
||||
insert into t1 (a) values (1),(2),(3),(4),(1),(2),(3),(4);
|
||||
select distinct a from t1 group by b,a having a > 2 order by a desc;
|
||||
select distinct a,c from t1 group by b,c,a having a > 2 order by a desc;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test problem with DISTINCT and ORDER BY DESC
|
||||
#
|
||||
|
||||
create table t1 (a char(1), key(a)) engine=myisam;
|
||||
insert into t1 values('1'),('1');
|
||||
select * from t1 where a >= '1';
|
||||
select distinct a from t1 order by a desc;
|
||||
select distinct a from t1 where a >= '1' order by a desc;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test when using a not previously used column in ORDER BY
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (email varchar(50), infoID BIGINT, dateentered DATETIME);
|
||||
CREATE TABLE t2 (infoID BIGINT, shipcode varchar(10));
|
||||
|
||||
INSERT INTO t1 (email, infoID, dateentered) VALUES
|
||||
('test1@testdomain.com', 1, '2002-07-30 22:56:38'),
|
||||
('test1@testdomain.com', 1, '2002-07-27 22:58:16'),
|
||||
('test2@testdomain.com', 1, '2002-06-19 15:22:19'),
|
||||
('test2@testdomain.com', 2, '2002-06-18 14:23:47'),
|
||||
('test3@testdomain.com', 1, '2002-05-19 22:17:32');
|
||||
|
||||
INSERT INTO t2(infoID, shipcode) VALUES
|
||||
(1, 'Z001'),
|
||||
(2, 'R002');
|
||||
|
||||
SELECT DISTINCTROW email, shipcode FROM t1, t2 WHERE t1.infoID=t2.infoID;
|
||||
SELECT DISTINCTROW email FROM t1 ORDER BY dateentered DESC;
|
||||
SELECT DISTINCTROW email, shipcode FROM t1, t2 WHERE t1.infoID=t2.infoID ORDER BY dateentered DESC;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# test with table.* in DISTINCT
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (privatemessageid int(10) unsigned NOT NULL auto_increment, folderid smallint(6) NOT NULL default '0', userid int(10) unsigned NOT NULL default '0', touserid int(10) unsigned NOT NULL default '0', fromuserid int(10) unsigned NOT NULL default '0', title varchar(250) NOT NULL default '', message mediumtext NOT NULL, dateline int(10) unsigned NOT NULL default '0', showsignature smallint(6) NOT NULL default '0', iconid smallint(5) unsigned NOT NULL default '0', messageread smallint(6) NOT NULL default '0', readtime int(10) unsigned NOT NULL default '0', receipt smallint(6) unsigned NOT NULL default '0', deleteprompt smallint(6) unsigned NOT NULL default '0', multiplerecipients smallint(6) unsigned NOT NULL default '0', PRIMARY KEY (privatemessageid), KEY userid (userid)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (128,0,33,33,8,':D','',996121863,1,0,2,996122850,2,0,0);
|
||||
CREATE TABLE t2 (userid int(10) unsigned NOT NULL auto_increment, usergroupid smallint(5) unsigned NOT NULL default '0', username varchar(50) NOT NULL default '', password varchar(50) NOT NULL default '', email varchar(50) NOT NULL default '', styleid smallint(5) unsigned NOT NULL default '0', parentemail varchar(50) NOT NULL default '', coppauser smallint(6) NOT NULL default '0', homepage varchar(100) NOT NULL default '', icq varchar(20) NOT NULL default '', aim varchar(20) NOT NULL default '', yahoo varchar(20) NOT NULL default '', signature mediumtext NOT NULL, adminemail smallint(6) NOT NULL default '0', showemail smallint(6) NOT NULL default '0', invisible smallint(6) NOT NULL default '0', usertitle varchar(250) NOT NULL default '', customtitle smallint(6) NOT NULL default '0', joindate int(10) unsigned NOT NULL default '0', cookieuser smallint(6) NOT NULL default '0', daysprune smallint(6) NOT NULL default '0', lastvisit int(10) unsigned NOT NULL default '0', lastactivity int(10) unsigned NOT NULL default '0', lastpost int(10) unsigned NOT NULL default '0', posts smallint(5) unsigned NOT NULL default '0', timezoneoffset varchar(4) NOT NULL default '', emailnotification smallint(6) NOT NULL default '0', buddylist mediumtext NOT NULL, ignorelist mediumtext NOT NULL, pmfolders mediumtext NOT NULL, receivepm smallint(6) NOT NULL default '0', emailonpm smallint(6) NOT NULL default '0', pmpopup smallint(6) NOT NULL default '0', avatarid smallint(6) NOT NULL default '0', avatarrevision int(6) unsigned NOT NULL default '0', options smallint(6) NOT NULL default '15', birthday date NOT NULL default '0000-00-00', maxposts smallint(6) NOT NULL default '-1', startofweek smallint(6) NOT NULL default '1', ipaddress varchar(20) NOT NULL default '', referrerid int(10) unsigned NOT NULL default '0', nosessionhash smallint(6) NOT NULL default '0', autorefresh smallint(6) NOT NULL default '-1', messagepopup tinyint(2) NOT NULL default '0', inforum smallint(5) unsigned NOT NULL default '0', ratenum smallint(5) unsigned NOT NULL default '0', ratetotal smallint(5) unsigned NOT NULL default '0', allowrate smallint(5) unsigned NOT NULL default '1', PRIMARY KEY (userid), KEY usergroupid (usergroupid), KEY username (username), KEY inforum (inforum)) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (33,6,'Kevin','0','kevin@stileproject.com',1,'',0,'http://www.stileproject.com','','','','',1,1,0,'Administrator',0,996120694,1,-1,1030996168,1031027028,1030599436,36,'-6',0,'','','',1,0,1,0,0,15,'0000-00-00',-1,1,'64.0.0.0',0,1,-1,0,0,4,19,1);
|
||||
SELECT DISTINCT t1.*, t2.* FROM t1 LEFT JOIN t2 ON (t2.userid = t1.touserid);
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# test with const_item in ORDER BY
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int primary key, b int, c int);
|
||||
INSERT t1 VALUES (1,2,3);
|
||||
CREATE TABLE t2 (a int primary key, b int, c int);
|
||||
INSERT t2 VALUES (3,4,5);
|
||||
SELECT DISTINCT t1.a, t2.b FROM t1, t2 WHERE t1.a=1 ORDER BY t2.c;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
#
|
||||
# Test of LEFT() with distinct
|
||||
#
|
||||
|
||||
CREATE table t1 ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL default '', PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=3 ;
|
||||
INSERT INTO t1 VALUES (1, 'aaaaa');
|
||||
INSERT INTO t1 VALUES (3, 'aaaaa');
|
||||
INSERT INTO t1 VALUES (2, 'eeeeeee');
|
||||
select distinct left(name,1) as name from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Test case from sel000100
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
ID int(11) NOT NULL auto_increment,
|
||||
NAME varchar(75) DEFAULT '' NOT NULL,
|
||||
LINK_ID int(11) DEFAULT '0' NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
KEY NAME (NAME),
|
||||
KEY LINK_ID (LINK_ID)
|
||||
);
|
||||
|
||||
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (1,'Mike',0);
|
||||
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (2,'Jack',0);
|
||||
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (3,'Bill',0);
|
||||
|
||||
CREATE TABLE t2 (
|
||||
ID int(11) NOT NULL auto_increment,
|
||||
NAME varchar(150) DEFAULT '' NOT NULL,
|
||||
PRIMARY KEY (ID),
|
||||
KEY NAME (NAME)
|
||||
);
|
||||
|
||||
SELECT DISTINCT
|
||||
t2.id AS key_link_id,
|
||||
t2.name AS link
|
||||
FROM t1
|
||||
LEFT JOIN t2 ON t1.link_id=t2.id
|
||||
GROUP BY t1.id
|
||||
ORDER BY link;
|
||||
drop table t1,t2;
|
||||
|
||||
#
|
||||
# test case for #674
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
html varchar(5) default NULL,
|
||||
rin int(11) default '0',
|
||||
rout int(11) default '0'
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
INSERT INTO t1 VALUES ('1',1,0);
|
||||
SELECT DISTINCT html,SUM(rout)/(SUM(rin)+1) as 'prod' FROM t1 GROUP BY rin;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug 9784 DISTINCT IFNULL truncates data
|
||||
#
|
||||
create table t1 (id int, dsc varchar(50));
|
||||
insert into t1 values (1, "line number one"), (2, "line number two"), (3, "line number three");
|
||||
select distinct id, IFNULL(dsc, '-') from t1;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user