mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merge of mysql-5.5 into mysql-5.5-wl1054
This commit is contained in:
@ -997,6 +997,7 @@ libmysqld/.deps/sql_cursor.Po
|
|||||||
libmysqld/.deps/sql_db.Po
|
libmysqld/.deps/sql_db.Po
|
||||||
libmysqld/.deps/sql_delete.Po
|
libmysqld/.deps/sql_delete.Po
|
||||||
libmysqld/.deps/sql_truncate.Po
|
libmysqld/.deps/sql_truncate.Po
|
||||||
|
libmysqld/.deps/sql_reload.Po
|
||||||
libmysqld/.deps/datadict.Po
|
libmysqld/.deps/datadict.Po
|
||||||
libmysqld/.deps/sql_derived.Po
|
libmysqld/.deps/sql_derived.Po
|
||||||
libmysqld/.deps/sql_do.Po
|
libmysqld/.deps/sql_do.Po
|
||||||
@ -1175,6 +1176,7 @@ libmysqld/sql_cursor.h
|
|||||||
libmysqld/sql_db.cc
|
libmysqld/sql_db.cc
|
||||||
libmysqld/sql_delete.cc
|
libmysqld/sql_delete.cc
|
||||||
libmysqld/sql_truncate.cc
|
libmysqld/sql_truncate.cc
|
||||||
|
libmysqld/sql_reload.cc
|
||||||
libmysqld/datadict.cc
|
libmysqld/datadict.cc
|
||||||
libmysqld/sql_derived.cc
|
libmysqld/sql_derived.cc
|
||||||
libmysqld/sql_do.cc
|
libmysqld/sql_do.cc
|
||||||
@ -2067,6 +2069,7 @@ sql/.deps/sql_cursor.Po
|
|||||||
sql/.deps/sql_db.Po
|
sql/.deps/sql_db.Po
|
||||||
sql/.deps/sql_delete.Po
|
sql/.deps/sql_delete.Po
|
||||||
sql/.deps/sql_truncate.Po
|
sql/.deps/sql_truncate.Po
|
||||||
|
sql/.deps/sql_reload.Po
|
||||||
sql/.deps/datadict.Po
|
sql/.deps/datadict.Po
|
||||||
sql/.deps/sql_derived.Po
|
sql/.deps/sql_derived.Po
|
||||||
sql/.deps/sql_do.Po
|
sql/.deps/sql_do.Po
|
||||||
|
@ -264,7 +264,8 @@ test-full-qa:
|
|||||||
# Headers which need to be checked for abi/api compatibility.
|
# Headers which need to be checked for abi/api compatibility.
|
||||||
#
|
#
|
||||||
|
|
||||||
API_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin.h \
|
API_PREPROCESSOR_HEADER = $(top_srcdir)/include/mysql/plugin_audit.h \
|
||||||
|
$(top_srcdir)/include/mysql/plugin_ftparser.h \
|
||||||
$(top_srcdir)/include/mysql.h \
|
$(top_srcdir)/include/mysql.h \
|
||||||
$(top_srcdir)/include/mysql/psi/psi_abi_v1.h \
|
$(top_srcdir)/include/mysql/psi/psi_abi_v1.h \
|
||||||
$(top_srcdir)/include/mysql/psi/psi_abi_v2.h \
|
$(top_srcdir)/include/mysql/psi/psi_abi_v2.h \
|
||||||
|
2
README
2
README
@ -1,4 +1,4 @@
|
|||||||
This is a release of MySQL, a dual-license SQL database server.
|
This is a release of MySQL, a dual-license SQL DBMS.
|
||||||
MySQL is brought to you by the MySQL team at Oracle Corporation.
|
MySQL is brought to you by the MySQL team at Oracle Corporation.
|
||||||
|
|
||||||
************************************************************
|
************************************************************
|
||||||
|
@ -64,7 +64,10 @@ MYSQL_ADD_EXECUTABLE(mysqlslap mysqlslap.c)
|
|||||||
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||||
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient)
|
TARGET_LINK_LIBRARIES(mysqlslap mysqlclient)
|
||||||
|
|
||||||
ADD_EXECUTABLE(echo echo.c)
|
# "WIN32" also covers 64 bit. "echo" is used in some files below "mysql-test/".
|
||||||
|
IF(WIN32)
|
||||||
|
MYSQL_ADD_EXECUTABLE(echo echo.c)
|
||||||
|
ENDIF(WIN32)
|
||||||
|
|
||||||
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap
|
SET_TARGET_PROPERTIES (mysqlcheck mysqldump mysqlimport mysql_upgrade mysqlshow mysqlslap
|
||||||
PROPERTIES HAS_CXX TRUE)
|
PROPERTIES HAS_CXX TRUE)
|
||||||
|
@ -93,6 +93,7 @@ extern "C" {
|
|||||||
#else
|
#else
|
||||||
#include <readline/readline.h>
|
#include <readline/readline.h>
|
||||||
#define HAVE_READLINE
|
#define HAVE_READLINE
|
||||||
|
#define USE_POPEN
|
||||||
#endif
|
#endif
|
||||||
//int vidattr(long unsigned int attrs); // Was missing in sun curses
|
//int vidattr(long unsigned int attrs); // Was missing in sun curses
|
||||||
}
|
}
|
||||||
@ -108,10 +109,6 @@ extern "C" {
|
|||||||
#define cmp_database(cs,A,B) strcmp((A),(B))
|
#define cmp_database(cs,A,B) strcmp((A),(B))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(__WIN__) && !defined(THREAD)
|
|
||||||
#define USE_POPEN
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "completion_hash.h"
|
#include "completion_hash.h"
|
||||||
|
|
||||||
#define PROMPT_CHAR '\\'
|
#define PROMPT_CHAR '\\'
|
||||||
|
@ -6244,8 +6244,10 @@ get_one_option(int optid, const struct my_option *opt, char *argument)
|
|||||||
print_version();
|
print_version();
|
||||||
exit(0);
|
exit(0);
|
||||||
case OPT_MYSQL_PROTOCOL:
|
case OPT_MYSQL_PROTOCOL:
|
||||||
|
#ifndef EMBEDDED_LIBRARY
|
||||||
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
opt->name);
|
opt->name);
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
usage();
|
usage();
|
||||||
|
@ -31,9 +31,12 @@
|
|||||||
** String functions
|
** String functions
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
bool String::real_alloc(uint32 arg_length)
|
bool String::real_alloc(uint32 length)
|
||||||
{
|
{
|
||||||
arg_length=ALIGN_SIZE(arg_length+1);
|
uint32 arg_length= ALIGN_SIZE(length + 1);
|
||||||
|
DBUG_ASSERT(arg_length > length);
|
||||||
|
if (arg_length <= length)
|
||||||
|
return TRUE; /* Overflow */
|
||||||
str_length=0;
|
str_length=0;
|
||||||
if (Alloced_length < arg_length)
|
if (Alloced_length < arg_length)
|
||||||
{
|
{
|
||||||
@ -56,6 +59,9 @@ bool String::real_alloc(uint32 arg_length)
|
|||||||
bool String::realloc(uint32 alloc_length)
|
bool String::realloc(uint32 alloc_length)
|
||||||
{
|
{
|
||||||
uint32 len=ALIGN_SIZE(alloc_length+1);
|
uint32 len=ALIGN_SIZE(alloc_length+1);
|
||||||
|
DBUG_ASSERT(len > alloc_length);
|
||||||
|
if (len <= alloc_length)
|
||||||
|
return TRUE; /* Overflow */
|
||||||
if (Alloced_length < len)
|
if (Alloced_length < len)
|
||||||
{
|
{
|
||||||
char *new_ptr;
|
char *new_ptr;
|
||||||
|
@ -15,7 +15,8 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
# Headers which need to be checked for abi/api compatibility are in
|
# Headers which need to be checked for abi/api compatibility are in
|
||||||
# API_PREPROCESSOR_HEADER.
|
# API_PREPROCESSOR_HEADER. plugin.h is tested implicitly via
|
||||||
|
# plugin_audit.h and plugin_ftparser.h.
|
||||||
#
|
#
|
||||||
# We use gcc specific preprocessing command and sed/diff, so it will
|
# We use gcc specific preprocessing command and sed/diff, so it will
|
||||||
# only be run on Unix and only if gcc is used.
|
# only be run on Unix and only if gcc is used.
|
||||||
@ -27,7 +28,8 @@ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|||||||
SET(COMPILER ${CMAKE_C_COMPILER})
|
SET(COMPILER ${CMAKE_C_COMPILER})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
SET(API_PREPROCESSOR_HEADER
|
SET(API_PREPROCESSOR_HEADER
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql/plugin.h
|
${CMAKE_SOURCE_DIR}/include/mysql/plugin_audit.h
|
||||||
|
${CMAKE_SOURCE_DIR}/include/mysql/plugin_ftparser.h
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql.h
|
${CMAKE_SOURCE_DIR}/include/mysql.h
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v1.h
|
${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v1.h
|
||||||
${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v2.h
|
${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v2.h
|
||||||
@ -38,18 +40,18 @@ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|||||||
-DCOMPILER=${COMPILER}
|
-DCOMPILER=${COMPILER}
|
||||||
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
||||||
-DBINARY_DIR=${CMAKE_BINARY_DIR}
|
-DBINARY_DIR=${CMAKE_BINARY_DIR}
|
||||||
"-DDMYSQL_ABI_CHECK -DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
"-DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
||||||
-P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
|
-P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_CUSTOM_TARGET(abi_check_all
|
ADD_CUSTOM_TARGET(abi_check_all
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
-DCMAKE_C_COMPILER=${COMPILER}
|
-DCOMPILER=${COMPILER}
|
||||||
-DCMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR}
|
-DSOURCE_DIR=${CMAKE_SOURCE_DIR}
|
||||||
-DCMAKE_BINARY_DIR=${CMAKE_BINARY_DIR}
|
-DBINARY_DIR=${CMAKE_BINARY_DIR}
|
||||||
"-DMYSQL_ABI_CHECK -DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
"-DABI_HEADERS=${API_PREPROCESSOR_HEADER}"
|
||||||
-P ${CMAKE_SOURCE_DIR}/cmake/scripts/do_abi_check.cmake
|
-P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake
|
||||||
VERBATIM
|
VERBATIM
|
||||||
)
|
)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
@ -56,8 +56,9 @@ FOREACH(file ${ABI_HEADERS})
|
|||||||
SET(tmpfile ${file}.pp.tmp)
|
SET(tmpfile ${file}.pp.tmp)
|
||||||
EXECUTE_PROCESS(
|
EXECUTE_PROCESS(
|
||||||
COMMAND ${COMPILER}
|
COMMAND ${COMPILER}
|
||||||
-E -nostdinc -dI -I${SOURCE_DIR}/include -I${BINARY_DIR}/include
|
-E -nostdinc -dI -DMYSQL_ABI_CHECK -I${SOURCE_DIR}/include
|
||||||
-I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql ${file}
|
-I${BINARY_DIR}/include -I${SOURCE_DIR}/include/mysql -I${SOURCE_DIR}/sql
|
||||||
|
${file}
|
||||||
ERROR_QUIET OUTPUT_FILE ${tmpfile})
|
ERROR_QUIET OUTPUT_FILE ${tmpfile})
|
||||||
EXECUTE_PROCESS(
|
EXECUTE_PROCESS(
|
||||||
COMMAND sed -e
|
COMMAND sed -e
|
||||||
|
@ -782,7 +782,7 @@ dnl Emits shell script for checking configure arguments
|
|||||||
dnl Arguments to this macro is default value for selected plugins
|
dnl Arguments to this macro is default value for selected plugins
|
||||||
|
|
||||||
AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARGS],[
|
AC_DEFUN([_MYSQL_CHECK_PLUGIN_ARGS],[
|
||||||
__MYSQL_CHECK_PLUGIN_ARGS(m4_default([$1], [none]))
|
__MYSQL_CHECK_PLUGIN_ARGS(m4_default([$1], [default]))
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN([__MYSQL_CHECK_PLUGIN_ARGS],[
|
AC_DEFUN([__MYSQL_CHECK_PLUGIN_ARGS],[
|
||||||
|
@ -27,7 +27,7 @@ dnl
|
|||||||
dnl When changing the major version number please also check the switch
|
dnl When changing the major version number please also check the switch
|
||||||
dnl statement in mysqlbinlog::check_master_version(). You may also need
|
dnl statement in mysqlbinlog::check_master_version(). You may also need
|
||||||
dnl to update version.c in ndb.
|
dnl to update version.c in ndb.
|
||||||
AC_INIT([MySQL Server], [5.5.6-m3], [], [mysql])
|
AC_INIT([MySQL Server], [5.5.7-rc], [], [mysql])
|
||||||
|
|
||||||
AC_CONFIG_SRCDIR([sql/mysqld.cc])
|
AC_CONFIG_SRCDIR([sql/mysqld.cc])
|
||||||
AC_CANONICAL_SYSTEM
|
AC_CANONICAL_SYSTEM
|
||||||
@ -2605,7 +2605,7 @@ MYSQL_STORAGE_ENGINE(partition, partition, [Partition Support],
|
|||||||
|
|
||||||
dnl -- ndbcluster requires partition to be enabled
|
dnl -- ndbcluster requires partition to be enabled
|
||||||
|
|
||||||
MYSQL_CONFIGURE_PLUGINS([none])
|
MYSQL_CONFIGURE_PLUGINS([default])
|
||||||
|
|
||||||
# Only build client code?
|
# Only build client code?
|
||||||
AC_ARG_WITH(server,
|
AC_ARG_WITH(server,
|
||||||
|
@ -185,7 +185,7 @@ void Base64Decoder::Decode()
|
|||||||
{
|
{
|
||||||
word32 bytes = coded_.size();
|
word32 bytes = coded_.size();
|
||||||
word32 plainSz = bytes - ((bytes + (pemLineSz - 1)) / pemLineSz);
|
word32 plainSz = bytes - ((bytes + (pemLineSz - 1)) / pemLineSz);
|
||||||
plainSz = (plainSz * 3 + 3) / 4;
|
plainSz = ((plainSz * 3) / 4) + 3;
|
||||||
decoded_.New(plainSz);
|
decoded_.New(plainSz);
|
||||||
|
|
||||||
word32 i = 0;
|
word32 i = 0;
|
||||||
|
@ -54,6 +54,7 @@ SET(HEADERS
|
|||||||
keycache.h
|
keycache.h
|
||||||
m_ctype.h
|
m_ctype.h
|
||||||
my_attribute.h
|
my_attribute.h
|
||||||
|
my_compiler.h
|
||||||
${HEADERS_GEN_CONFIGURE}
|
${HEADERS_GEN_CONFIGURE}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,12 +28,15 @@ pkginclude_HEADERS = $(HEADERS_ABI) my_dbug.h m_string.h my_sys.h \
|
|||||||
mysql/client_plugin.h mysql/plugin_auth_common.h \
|
mysql/client_plugin.h mysql/plugin_auth_common.h \
|
||||||
mysql/services.h \
|
mysql/services.h \
|
||||||
mysql/service_my_snprintf.h mysql/service_thd_alloc.h \
|
mysql/service_my_snprintf.h mysql/service_thd_alloc.h \
|
||||||
|
mysql/service_thread_scheduler.h \
|
||||||
|
mysql/service_thd_wait.h \
|
||||||
my_pthread.h my_no_pthread.h \
|
my_pthread.h my_no_pthread.h \
|
||||||
decimal.h errmsg.h my_global.h my_net.h \
|
decimal.h errmsg.h my_global.h my_net.h \
|
||||||
my_getopt.h sslopt-longopts.h my_dir.h \
|
my_getopt.h sslopt-longopts.h my_dir.h \
|
||||||
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
|
sslopt-vars.h sslopt-case.h sql_common.h keycache.h \
|
||||||
m_ctype.h my_attribute.h $(HEADERS_GEN_CONFIGURE) \
|
m_ctype.h my_attribute.h my_compiler.h \
|
||||||
$(HEADERS_GEN_MAKE) probes_mysql.h probes_mysql_nodtrace.h
|
$(HEADERS_GEN_CONFIGURE) $(HEADERS_GEN_MAKE) \
|
||||||
|
probes_mysql.h probes_mysql_nodtrace.h
|
||||||
|
|
||||||
noinst_HEADERS = lf.h my_bit.h \
|
noinst_HEADERS = lf.h my_bit.h \
|
||||||
heap.h my_bitmap.h my_uctype.h password.h \
|
heap.h my_bitmap.h my_uctype.h password.h \
|
||||||
@ -47,7 +50,7 @@ noinst_HEADERS = lf.h my_bit.h \
|
|||||||
my_user.h my_atomic.h atomic/nolock.h \
|
my_user.h my_atomic.h atomic/nolock.h \
|
||||||
atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \
|
atomic/rwlock.h atomic/x86-gcc.h atomic/generic-msvc.h \
|
||||||
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
|
atomic/gcc_builtins.h my_libwrap.h my_stacktrace.h \
|
||||||
atomic/solaris.h mysql/innodb_priv.h my_compiler.h
|
atomic/solaris.h mysql/innodb_priv.h
|
||||||
|
|
||||||
pkgpsiinclude_HEADERS = mysql/psi/psi.h mysql/psi/mysql_thread.h \
|
pkgpsiinclude_HEADERS = mysql/psi/psi.h mysql/psi/mysql_thread.h \
|
||||||
mysql/psi/mysql_file.h
|
mysql/psi/mysql_file.h
|
||||||
|
@ -111,9 +111,9 @@
|
|||||||
On some platforms (e.g. Mac OS X and Solaris) the ebx register
|
On some platforms (e.g. Mac OS X and Solaris) the ebx register
|
||||||
is held as a pointer to the global offset table. Thus we're not
|
is held as a pointer to the global offset table. Thus we're not
|
||||||
allowed to use the b-register on those platforms when compiling
|
allowed to use the b-register on those platforms when compiling
|
||||||
PIC code, to avoid this we push ebx and pop ebx and add a movl
|
PIC code, to avoid this we push ebx and pop ebx. The new value
|
||||||
instruction to avoid having ebx in the interface of the assembler
|
is copied directly from memory to avoid problems with a implicit
|
||||||
instruction.
|
manipulation of the stack pointer by the push.
|
||||||
|
|
||||||
cmpxchg8b works on both 32-bit platforms and 64-bit platforms but
|
cmpxchg8b works on both 32-bit platforms and 64-bit platforms but
|
||||||
the code here is only used on 32-bit platforms, on 64-bit
|
the code here is only used on 32-bit platforms, on 64-bit
|
||||||
@ -121,11 +121,13 @@
|
|||||||
fine.
|
fine.
|
||||||
*/
|
*/
|
||||||
#define make_atomic_cas_body64 \
|
#define make_atomic_cas_body64 \
|
||||||
int32 ebx=(set & 0xFFFFFFFF), ecx=(set >> 32); \
|
asm volatile ("push %%ebx;" \
|
||||||
asm volatile ("push %%ebx; movl %3, %%ebx;" \
|
"movl (%%ecx), %%ebx;" \
|
||||||
LOCK_prefix "; cmpxchg8b %0; setz %2; pop %%ebx" \
|
"movl 4(%%ecx), %%ecx;" \
|
||||||
: "=m" (*a), "+A" (*cmp), "=c" (ret) \
|
LOCK_prefix "; cmpxchg8b %0;" \
|
||||||
: "m" (ebx), "c" (ecx), "m" (*a) \
|
"setz %2; pop %%ebx" \
|
||||||
|
: "=m" (*a), "+A" (*cmp), "=c" (ret) \
|
||||||
|
: "c" (&set), "m" (*a) \
|
||||||
: "memory", "esp")
|
: "memory", "esp")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -539,6 +539,11 @@ size_t my_strnxfrm_unicode(CHARSET_INFO *,
|
|||||||
uchar *dst, size_t dstlen,
|
uchar *dst, size_t dstlen,
|
||||||
const uchar *src, size_t srclen);
|
const uchar *src, size_t srclen);
|
||||||
|
|
||||||
|
size_t my_strnxfrm_unicode_full_bin(CHARSET_INFO *,
|
||||||
|
uchar *dst, size_t dstlen,
|
||||||
|
const uchar *src, size_t srclen);
|
||||||
|
size_t my_strnxfrmlen_unicode_full_bin(CHARSET_INFO *, size_t);
|
||||||
|
|
||||||
int my_wildcmp_unicode(CHARSET_INFO *cs,
|
int my_wildcmp_unicode(CHARSET_INFO *cs,
|
||||||
const char *str, const char *str_end,
|
const char *str, const char *str_end,
|
||||||
const char *wildstr, const char *wildend,
|
const char *wildstr, const char *wildend,
|
||||||
|
@ -601,6 +601,8 @@ int my_pthread_fastmutex_lock(my_pthread_fastmutex_t *mp);
|
|||||||
#define rw_trywrlock(A) my_rw_trywrlock((A))
|
#define rw_trywrlock(A) my_rw_trywrlock((A))
|
||||||
#define rw_unlock(A) my_rw_unlock((A))
|
#define rw_unlock(A) my_rw_unlock((A))
|
||||||
#define rwlock_destroy(A) my_rw_destroy((A))
|
#define rwlock_destroy(A) my_rw_destroy((A))
|
||||||
|
#define rw_lock_assert_write_owner(A) my_rw_lock_assert_write_owner((A))
|
||||||
|
#define rw_lock_assert_not_write_owner(A) my_rw_lock_assert_not_write_owner((A))
|
||||||
#endif /* USE_MUTEX_INSTEAD_OF_RW_LOCKS */
|
#endif /* USE_MUTEX_INSTEAD_OF_RW_LOCKS */
|
||||||
|
|
||||||
|
|
||||||
@ -624,6 +626,8 @@ extern int rw_pr_init(rw_pr_lock_t *);
|
|||||||
#define rw_pr_trywrlock(A) pthread_rwlock_trywrlock(A)
|
#define rw_pr_trywrlock(A) pthread_rwlock_trywrlock(A)
|
||||||
#define rw_pr_unlock(A) pthread_rwlock_unlock(A)
|
#define rw_pr_unlock(A) pthread_rwlock_unlock(A)
|
||||||
#define rw_pr_destroy(A) pthread_rwlock_destroy(A)
|
#define rw_pr_destroy(A) pthread_rwlock_destroy(A)
|
||||||
|
#define rw_pr_lock_assert_write_owner(A)
|
||||||
|
#define rw_pr_lock_assert_not_write_owner(A)
|
||||||
#else
|
#else
|
||||||
/* Otherwise we have to use our own implementation of read/write locks. */
|
/* Otherwise we have to use our own implementation of read/write locks. */
|
||||||
#define NEED_MY_RW_LOCK 1
|
#define NEED_MY_RW_LOCK 1
|
||||||
@ -636,6 +640,8 @@ extern int rw_pr_init(struct st_my_rw_lock_t *);
|
|||||||
#define rw_pr_trywrlock(A) my_rw_trywrlock((A))
|
#define rw_pr_trywrlock(A) my_rw_trywrlock((A))
|
||||||
#define rw_pr_unlock(A) my_rw_unlock((A))
|
#define rw_pr_unlock(A) my_rw_unlock((A))
|
||||||
#define rw_pr_destroy(A) my_rw_destroy((A))
|
#define rw_pr_destroy(A) my_rw_destroy((A))
|
||||||
|
#define rw_pr_lock_assert_write_owner(A) my_rw_lock_assert_write_owner((A))
|
||||||
|
#define rw_pr_lock_assert_not_write_owner(A) my_rw_lock_assert_not_write_owner((A))
|
||||||
#endif /* defined(HAVE_PTHREAD_RWLOCK_RDLOCK) && defined(HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP) */
|
#endif /* defined(HAVE_PTHREAD_RWLOCK_RDLOCK) && defined(HAVE_PTHREAD_RWLOCKATTR_SETKIND_NP) */
|
||||||
|
|
||||||
|
|
||||||
@ -651,6 +657,9 @@ typedef struct st_my_rw_lock_t {
|
|||||||
int state; /* -1:writer,0:free,>0:readers */
|
int state; /* -1:writer,0:free,>0:readers */
|
||||||
int waiters; /* number of waiting writers */
|
int waiters; /* number of waiting writers */
|
||||||
my_bool prefer_readers;
|
my_bool prefer_readers;
|
||||||
|
#ifdef SAFE_MUTEX
|
||||||
|
pthread_t write_thread;
|
||||||
|
#endif
|
||||||
} my_rw_lock_t;
|
} my_rw_lock_t;
|
||||||
|
|
||||||
extern int my_rw_init(my_rw_lock_t *, my_bool *);
|
extern int my_rw_init(my_rw_lock_t *, my_bool *);
|
||||||
@ -660,6 +669,17 @@ extern int my_rw_wrlock(my_rw_lock_t *);
|
|||||||
extern int my_rw_unlock(my_rw_lock_t *);
|
extern int my_rw_unlock(my_rw_lock_t *);
|
||||||
extern int my_rw_tryrdlock(my_rw_lock_t *);
|
extern int my_rw_tryrdlock(my_rw_lock_t *);
|
||||||
extern int my_rw_trywrlock(my_rw_lock_t *);
|
extern int my_rw_trywrlock(my_rw_lock_t *);
|
||||||
|
#ifdef SAFE_MUTEX
|
||||||
|
#define my_rw_lock_assert_write_owner(A) \
|
||||||
|
DBUG_ASSERT((A)->state == -1 && pthread_equal(pthread_self(), \
|
||||||
|
(A)->write_thread))
|
||||||
|
#define my_rw_lock_assert_not_write_owner(A) \
|
||||||
|
DBUG_ASSERT((A)->state >= 0 || ! pthread_equal(pthread_self(), \
|
||||||
|
(A)->write_thread))
|
||||||
|
#else
|
||||||
|
#define my_rw_lock_assert_write_owner(A)
|
||||||
|
#define my_rw_lock_assert_not_write_owner(A)
|
||||||
|
#endif
|
||||||
#endif /* NEED_MY_RW_LOCK */
|
#endif /* NEED_MY_RW_LOCK */
|
||||||
|
|
||||||
|
|
||||||
|
@ -249,7 +249,7 @@ typedef struct st_columndef /* column information */
|
|||||||
|
|
||||||
extern char * myisam_log_filename; /* Name of logfile */
|
extern char * myisam_log_filename; /* Name of logfile */
|
||||||
extern ulong myisam_block_size;
|
extern ulong myisam_block_size;
|
||||||
extern uint myisam_concurrent_insert;
|
extern ulong myisam_concurrent_insert;
|
||||||
extern my_bool myisam_flush,myisam_delay_key_write,myisam_single_user;
|
extern my_bool myisam_flush,myisam_delay_key_write,myisam_single_user;
|
||||||
extern my_off_t myisam_max_temp_length;
|
extern my_off_t myisam_max_temp_length;
|
||||||
extern ulong myisam_data_pointer_size;
|
extern ulong myisam_data_pointer_size;
|
||||||
|
@ -71,7 +71,7 @@ typedef struct st_mysql_xid MYSQL_XID;
|
|||||||
Plugin API. Common for all plugin types.
|
Plugin API. Common for all plugin types.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define MYSQL_PLUGIN_INTERFACE_VERSION 0x0101
|
#define MYSQL_PLUGIN_INTERFACE_VERSION 0x0102
|
||||||
|
|
||||||
/*
|
/*
|
||||||
The allowable types of plugins
|
The allowable types of plugins
|
||||||
@ -529,6 +529,7 @@ long long thd_test_options(const MYSQL_THD thd, long long test_options);
|
|||||||
int thd_sql_command(const MYSQL_THD thd);
|
int thd_sql_command(const MYSQL_THD thd);
|
||||||
const char *thd_proc_info(MYSQL_THD thd, const char *info);
|
const char *thd_proc_info(MYSQL_THD thd, const char *info);
|
||||||
void **thd_ha_data(const MYSQL_THD thd, const struct handlerton *hton);
|
void **thd_ha_data(const MYSQL_THD thd, const struct handlerton *hton);
|
||||||
|
void thd_storage_lock_wait(MYSQL_THD thd, long long value);
|
||||||
int thd_tx_isolation(const MYSQL_THD thd);
|
int thd_tx_isolation(const MYSQL_THD thd);
|
||||||
char *thd_security_context(MYSQL_THD thd, char *buffer, unsigned int length,
|
char *thd_security_context(MYSQL_THD thd, char *buffer, unsigned int length,
|
||||||
unsigned int max_query_len);
|
unsigned int max_query_len);
|
||||||
|
217
include/mysql/plugin_audit.h.pp
Normal file
217
include/mysql/plugin_audit.h.pp
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
#include "plugin.h"
|
||||||
|
#include <mysql/services.h>
|
||||||
|
#include <mysql/service_my_snprintf.h>
|
||||||
|
extern struct my_snprintf_service_st {
|
||||||
|
size_t (*my_snprintf_type)(char*, size_t, const char*, ...);
|
||||||
|
size_t (*my_vsnprintf_type)(char *, size_t, const char*, va_list);
|
||||||
|
} *my_snprintf_service;
|
||||||
|
size_t my_snprintf(char* to, size_t n, const char* fmt, ...);
|
||||||
|
size_t my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap);
|
||||||
|
#include <mysql/service_thd_alloc.h>
|
||||||
|
struct st_mysql_lex_string
|
||||||
|
{
|
||||||
|
char *str;
|
||||||
|
size_t length;
|
||||||
|
};
|
||||||
|
typedef struct st_mysql_lex_string MYSQL_LEX_STRING;
|
||||||
|
extern struct thd_alloc_service_st {
|
||||||
|
void *(*thd_alloc_func)(void*, unsigned int);
|
||||||
|
void *(*thd_calloc_func)(void*, unsigned int);
|
||||||
|
char *(*thd_strdup_func)(void*, const char *);
|
||||||
|
char *(*thd_strmake_func)(void*, const char *, unsigned int);
|
||||||
|
void *(*thd_memdup_func)(void*, const void*, unsigned int);
|
||||||
|
MYSQL_LEX_STRING *(*thd_make_lex_string_func)(void*, MYSQL_LEX_STRING *,
|
||||||
|
const char *, unsigned int, int);
|
||||||
|
} *thd_alloc_service;
|
||||||
|
void *thd_alloc(void* thd, unsigned int size);
|
||||||
|
void *thd_calloc(void* thd, unsigned int size);
|
||||||
|
char *thd_strdup(void* thd, const char *str);
|
||||||
|
char *thd_strmake(void* thd, const char *str, unsigned int size);
|
||||||
|
void *thd_memdup(void* thd, const void* str, unsigned int size);
|
||||||
|
MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
|
||||||
|
const char *str, unsigned int size,
|
||||||
|
int allocate_lex_string);
|
||||||
|
#include <mysql/service_thd_wait.h>
|
||||||
|
typedef enum _thd_wait_type_e {
|
||||||
|
THD_WAIT_MUTEX= 1,
|
||||||
|
THD_WAIT_DISKIO= 2,
|
||||||
|
THD_WAIT_ROW_TABLE_LOCK= 3,
|
||||||
|
THD_WAIT_GLOBAL_LOCK= 4
|
||||||
|
} thd_wait_type;
|
||||||
|
extern struct thd_wait_service_st {
|
||||||
|
void (*thd_wait_begin_func)(void*, thd_wait_type);
|
||||||
|
void (*thd_wait_end_func)(void*);
|
||||||
|
} *thd_wait_service;
|
||||||
|
void thd_wait_begin(void* thd, thd_wait_type wait_type);
|
||||||
|
void thd_wait_end(void* thd);
|
||||||
|
#include <mysql/service_thread_scheduler.h>
|
||||||
|
struct scheduler_functions;
|
||||||
|
extern struct my_thread_scheduler_service {
|
||||||
|
int (*set)(struct scheduler_functions *scheduler);
|
||||||
|
int (*reset)();
|
||||||
|
} *my_thread_scheduler_service;
|
||||||
|
int my_thread_scheduler_set(struct scheduler_functions *scheduler);
|
||||||
|
int my_thread_scheduler_reset();
|
||||||
|
struct st_mysql_xid {
|
||||||
|
long formatID;
|
||||||
|
long gtrid_length;
|
||||||
|
long bqual_length;
|
||||||
|
char data[128];
|
||||||
|
};
|
||||||
|
typedef struct st_mysql_xid MYSQL_XID;
|
||||||
|
enum enum_mysql_show_type
|
||||||
|
{
|
||||||
|
SHOW_UNDEF, SHOW_BOOL, SHOW_INT, SHOW_LONG,
|
||||||
|
SHOW_LONGLONG, SHOW_CHAR, SHOW_CHAR_PTR,
|
||||||
|
SHOW_ARRAY, SHOW_FUNC, SHOW_DOUBLE,
|
||||||
|
SHOW_always_last
|
||||||
|
};
|
||||||
|
struct st_mysql_show_var {
|
||||||
|
const char *name;
|
||||||
|
char *value;
|
||||||
|
enum enum_mysql_show_type type;
|
||||||
|
};
|
||||||
|
typedef int (*mysql_show_var_func)(void*, struct st_mysql_show_var*, char *);
|
||||||
|
struct st_mysql_sys_var;
|
||||||
|
struct st_mysql_value;
|
||||||
|
typedef int (*mysql_var_check_func)(void* thd,
|
||||||
|
struct st_mysql_sys_var *var,
|
||||||
|
void *save, struct st_mysql_value *value);
|
||||||
|
typedef void (*mysql_var_update_func)(void* thd,
|
||||||
|
struct st_mysql_sys_var *var,
|
||||||
|
void *var_ptr, const void *save);
|
||||||
|
struct st_mysql_plugin
|
||||||
|
{
|
||||||
|
int type;
|
||||||
|
void *info;
|
||||||
|
const char *name;
|
||||||
|
const char *author;
|
||||||
|
const char *descr;
|
||||||
|
int license;
|
||||||
|
int (*init)(void *);
|
||||||
|
int (*deinit)(void *);
|
||||||
|
unsigned int version;
|
||||||
|
struct st_mysql_show_var *status_vars;
|
||||||
|
struct st_mysql_sys_var **system_vars;
|
||||||
|
void * __reserved1;
|
||||||
|
};
|
||||||
|
#include "plugin_ftparser.h"
|
||||||
|
#include "plugin.h"
|
||||||
|
enum enum_ftparser_mode
|
||||||
|
{
|
||||||
|
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
||||||
|
MYSQL_FTPARSER_WITH_STOPWORDS= 1,
|
||||||
|
MYSQL_FTPARSER_FULL_BOOLEAN_INFO= 2
|
||||||
|
};
|
||||||
|
enum enum_ft_token_type
|
||||||
|
{
|
||||||
|
FT_TOKEN_EOF= 0,
|
||||||
|
FT_TOKEN_WORD= 1,
|
||||||
|
FT_TOKEN_LEFT_PAREN= 2,
|
||||||
|
FT_TOKEN_RIGHT_PAREN= 3,
|
||||||
|
FT_TOKEN_STOPWORD= 4
|
||||||
|
};
|
||||||
|
typedef struct st_mysql_ftparser_boolean_info
|
||||||
|
{
|
||||||
|
enum enum_ft_token_type type;
|
||||||
|
int yesno;
|
||||||
|
int weight_adjust;
|
||||||
|
char wasign;
|
||||||
|
char trunc;
|
||||||
|
char prev;
|
||||||
|
char *quot;
|
||||||
|
} MYSQL_FTPARSER_BOOLEAN_INFO;
|
||||||
|
typedef struct st_mysql_ftparser_param
|
||||||
|
{
|
||||||
|
int (*mysql_parse)(struct st_mysql_ftparser_param *,
|
||||||
|
char *doc, int doc_len);
|
||||||
|
int (*mysql_add_word)(struct st_mysql_ftparser_param *,
|
||||||
|
char *word, int word_len,
|
||||||
|
MYSQL_FTPARSER_BOOLEAN_INFO *boolean_info);
|
||||||
|
void *ftparser_state;
|
||||||
|
void *mysql_ftparam;
|
||||||
|
struct charset_info_st *cs;
|
||||||
|
char *doc;
|
||||||
|
int length;
|
||||||
|
int flags;
|
||||||
|
enum enum_ftparser_mode mode;
|
||||||
|
} MYSQL_FTPARSER_PARAM;
|
||||||
|
struct st_mysql_ftparser
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
int (*parse)(MYSQL_FTPARSER_PARAM *param);
|
||||||
|
int (*init)(MYSQL_FTPARSER_PARAM *param);
|
||||||
|
int (*deinit)(MYSQL_FTPARSER_PARAM *param);
|
||||||
|
};
|
||||||
|
struct st_mysql_daemon
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_information_schema
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_storage_engine
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct handlerton;
|
||||||
|
struct Mysql_replication {
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_value
|
||||||
|
{
|
||||||
|
int (*value_type)(struct st_mysql_value *);
|
||||||
|
const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
|
||||||
|
int (*val_real)(struct st_mysql_value *, double *realbuf);
|
||||||
|
int (*val_int)(struct st_mysql_value *, long long *intbuf);
|
||||||
|
int (*is_unsigned)(struct st_mysql_value *);
|
||||||
|
};
|
||||||
|
int thd_in_lock_tables(const void* thd);
|
||||||
|
int thd_tablespace_op(const void* thd);
|
||||||
|
long long thd_test_options(const void* thd, long long test_options);
|
||||||
|
int thd_sql_command(const void* thd);
|
||||||
|
const char *thd_proc_info(void* thd, const char *info);
|
||||||
|
void **thd_ha_data(const void* thd, const struct handlerton *hton);
|
||||||
|
void thd_storage_lock_wait(void* thd, long long value);
|
||||||
|
int thd_tx_isolation(const void* thd);
|
||||||
|
char *thd_security_context(void* thd, char *buffer, unsigned int length,
|
||||||
|
unsigned int max_query_len);
|
||||||
|
void thd_inc_row_count(void* thd);
|
||||||
|
int mysql_tmpfile(const char *prefix);
|
||||||
|
int thd_killed(const void* thd);
|
||||||
|
unsigned long thd_get_thread_id(const void* thd);
|
||||||
|
void thd_get_xid(const void* thd, MYSQL_XID *xid);
|
||||||
|
void mysql_query_cache_invalidate4(void* thd,
|
||||||
|
const char *key, unsigned int key_length,
|
||||||
|
int using_trx);
|
||||||
|
void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
|
||||||
|
void thd_set_ha_data(void* thd, const struct handlerton *hton,
|
||||||
|
const void *ha_data);
|
||||||
|
struct mysql_event
|
||||||
|
{
|
||||||
|
unsigned int event_class;
|
||||||
|
};
|
||||||
|
struct mysql_event_general
|
||||||
|
{
|
||||||
|
unsigned int event_class;
|
||||||
|
unsigned int event_subclass;
|
||||||
|
int general_error_code;
|
||||||
|
unsigned long general_thread_id;
|
||||||
|
const char *general_user;
|
||||||
|
unsigned int general_user_length;
|
||||||
|
const char *general_command;
|
||||||
|
unsigned int general_command_length;
|
||||||
|
const char *general_query;
|
||||||
|
unsigned int general_query_length;
|
||||||
|
struct charset_info_st *general_charset;
|
||||||
|
unsigned long long general_time;
|
||||||
|
unsigned long long general_rows;
|
||||||
|
};
|
||||||
|
struct st_mysql_audit
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
void (*release_thd)(void*);
|
||||||
|
void (*event_notify)(void*, const struct mysql_event *);
|
||||||
|
unsigned long class_mask[1];
|
||||||
|
};
|
@ -1,3 +1,4 @@
|
|||||||
|
#include "plugin.h"
|
||||||
#include <mysql/services.h>
|
#include <mysql/services.h>
|
||||||
#include <mysql/service_my_snprintf.h>
|
#include <mysql/service_my_snprintf.h>
|
||||||
extern struct my_snprintf_service_st {
|
extern struct my_snprintf_service_st {
|
||||||
@ -30,6 +31,27 @@ void *thd_memdup(void* thd, const void* str, unsigned int size);
|
|||||||
MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
|
MYSQL_LEX_STRING *thd_make_lex_string(void* thd, MYSQL_LEX_STRING *lex_str,
|
||||||
const char *str, unsigned int size,
|
const char *str, unsigned int size,
|
||||||
int allocate_lex_string);
|
int allocate_lex_string);
|
||||||
|
#include <mysql/service_thd_wait.h>
|
||||||
|
typedef enum _thd_wait_type_e {
|
||||||
|
THD_WAIT_MUTEX= 1,
|
||||||
|
THD_WAIT_DISKIO= 2,
|
||||||
|
THD_WAIT_ROW_TABLE_LOCK= 3,
|
||||||
|
THD_WAIT_GLOBAL_LOCK= 4
|
||||||
|
} thd_wait_type;
|
||||||
|
extern struct thd_wait_service_st {
|
||||||
|
void (*thd_wait_begin_func)(void*, thd_wait_type);
|
||||||
|
void (*thd_wait_end_func)(void*);
|
||||||
|
} *thd_wait_service;
|
||||||
|
void thd_wait_begin(void* thd, thd_wait_type wait_type);
|
||||||
|
void thd_wait_end(void* thd);
|
||||||
|
#include <mysql/service_thread_scheduler.h>
|
||||||
|
struct scheduler_functions;
|
||||||
|
extern struct my_thread_scheduler_service {
|
||||||
|
int (*set)(struct scheduler_functions *scheduler);
|
||||||
|
int (*reset)();
|
||||||
|
} *my_thread_scheduler_service;
|
||||||
|
int my_thread_scheduler_set(struct scheduler_functions *scheduler);
|
||||||
|
int my_thread_scheduler_reset();
|
||||||
struct st_mysql_xid {
|
struct st_mysql_xid {
|
||||||
long formatID;
|
long formatID;
|
||||||
long gtrid_length;
|
long gtrid_length;
|
||||||
@ -74,7 +96,51 @@ struct st_mysql_plugin
|
|||||||
void * __reserved1;
|
void * __reserved1;
|
||||||
};
|
};
|
||||||
#include "plugin_ftparser.h"
|
#include "plugin_ftparser.h"
|
||||||
#include "plugin.h"
|
struct st_mysql_daemon
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_information_schema
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_storage_engine
|
||||||
|
{
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct handlerton;
|
||||||
|
struct Mysql_replication {
|
||||||
|
int interface_version;
|
||||||
|
};
|
||||||
|
struct st_mysql_value
|
||||||
|
{
|
||||||
|
int (*value_type)(struct st_mysql_value *);
|
||||||
|
const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
|
||||||
|
int (*val_real)(struct st_mysql_value *, double *realbuf);
|
||||||
|
int (*val_int)(struct st_mysql_value *, long long *intbuf);
|
||||||
|
int (*is_unsigned)(struct st_mysql_value *);
|
||||||
|
};
|
||||||
|
int thd_in_lock_tables(const void* thd);
|
||||||
|
int thd_tablespace_op(const void* thd);
|
||||||
|
long long thd_test_options(const void* thd, long long test_options);
|
||||||
|
int thd_sql_command(const void* thd);
|
||||||
|
const char *thd_proc_info(void* thd, const char *info);
|
||||||
|
void **thd_ha_data(const void* thd, const struct handlerton *hton);
|
||||||
|
void thd_storage_lock_wait(void* thd, long long value);
|
||||||
|
int thd_tx_isolation(const void* thd);
|
||||||
|
char *thd_security_context(void* thd, char *buffer, unsigned int length,
|
||||||
|
unsigned int max_query_len);
|
||||||
|
void thd_inc_row_count(void* thd);
|
||||||
|
int mysql_tmpfile(const char *prefix);
|
||||||
|
int thd_killed(const void* thd);
|
||||||
|
unsigned long thd_get_thread_id(const void* thd);
|
||||||
|
void thd_get_xid(const void* thd, MYSQL_XID *xid);
|
||||||
|
void mysql_query_cache_invalidate4(void* thd,
|
||||||
|
const char *key, unsigned int key_length,
|
||||||
|
int using_trx);
|
||||||
|
void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
|
||||||
|
void thd_set_ha_data(void* thd, const struct handlerton *hton,
|
||||||
|
const void *ha_data);
|
||||||
enum enum_ftparser_mode
|
enum enum_ftparser_mode
|
||||||
{
|
{
|
||||||
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
MYSQL_FTPARSER_SIMPLE_MODE= 0,
|
||||||
@ -121,47 +187,3 @@ struct st_mysql_ftparser
|
|||||||
int (*init)(MYSQL_FTPARSER_PARAM *param);
|
int (*init)(MYSQL_FTPARSER_PARAM *param);
|
||||||
int (*deinit)(MYSQL_FTPARSER_PARAM *param);
|
int (*deinit)(MYSQL_FTPARSER_PARAM *param);
|
||||||
};
|
};
|
||||||
struct st_mysql_daemon
|
|
||||||
{
|
|
||||||
int interface_version;
|
|
||||||
};
|
|
||||||
struct st_mysql_information_schema
|
|
||||||
{
|
|
||||||
int interface_version;
|
|
||||||
};
|
|
||||||
struct st_mysql_storage_engine
|
|
||||||
{
|
|
||||||
int interface_version;
|
|
||||||
};
|
|
||||||
struct handlerton;
|
|
||||||
struct Mysql_replication {
|
|
||||||
int interface_version;
|
|
||||||
};
|
|
||||||
struct st_mysql_value
|
|
||||||
{
|
|
||||||
int (*value_type)(struct st_mysql_value *);
|
|
||||||
const char *(*val_str)(struct st_mysql_value *, char *buffer, int *length);
|
|
||||||
int (*val_real)(struct st_mysql_value *, double *realbuf);
|
|
||||||
int (*val_int)(struct st_mysql_value *, long long *intbuf);
|
|
||||||
int (*is_unsigned)(struct st_mysql_value *);
|
|
||||||
};
|
|
||||||
int thd_in_lock_tables(const void* thd);
|
|
||||||
int thd_tablespace_op(const void* thd);
|
|
||||||
long long thd_test_options(const void* thd, long long test_options);
|
|
||||||
int thd_sql_command(const void* thd);
|
|
||||||
const char *thd_proc_info(void* thd, const char *info);
|
|
||||||
void **thd_ha_data(const void* thd, const struct handlerton *hton);
|
|
||||||
int thd_tx_isolation(const void* thd);
|
|
||||||
char *thd_security_context(void* thd, char *buffer, unsigned int length,
|
|
||||||
unsigned int max_query_len);
|
|
||||||
void thd_inc_row_count(void* thd);
|
|
||||||
int mysql_tmpfile(const char *prefix);
|
|
||||||
int thd_killed(const void* thd);
|
|
||||||
unsigned long thd_get_thread_id(const void* thd);
|
|
||||||
void thd_get_xid(const void* thd, MYSQL_XID *xid);
|
|
||||||
void mysql_query_cache_invalidate4(void* thd,
|
|
||||||
const char *key, unsigned int key_length,
|
|
||||||
int using_trx);
|
|
||||||
void *thd_get_ha_data(const void* thd, const struct handlerton *hton);
|
|
||||||
void thd_set_ha_data(void* thd, const struct handlerton *hton,
|
|
||||||
const void *ha_data);
|
|
@ -215,6 +215,14 @@ typedef struct st_mysql_cond mysql_cond_t;
|
|||||||
#define mysql_mutex_assert_not_owner(M) \
|
#define mysql_mutex_assert_not_owner(M) \
|
||||||
safe_mutex_assert_not_owner(&(M)->m_mutex)
|
safe_mutex_assert_not_owner(&(M)->m_mutex)
|
||||||
|
|
||||||
|
/** Wrappers for instrumented prlock objects. */
|
||||||
|
|
||||||
|
#define mysql_prlock_assert_write_owner(M) \
|
||||||
|
rw_pr_lock_assert_write_owner(&(M)->m_prlock)
|
||||||
|
|
||||||
|
#define mysql_prlock_assert_not_write_owner(M) \
|
||||||
|
rw_pr_lock_assert_not_write_owner(&(M)->m_prlock)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@def mysql_mutex_init(K, M, A)
|
@def mysql_mutex_init(K, M, A)
|
||||||
Instrumented mutex_init.
|
Instrumented mutex_init.
|
||||||
|
83
include/mysql/service_thd_wait.h
Normal file
83
include/mysql/service_thd_wait.h
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
/* Copyright (C) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; version 2 of the License.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||||
|
|
||||||
|
#ifndef MYSQL_SERVICE_THD_WAIT_INCLUDED
|
||||||
|
#define MYSQL_SERVICE_THD_WAIT_INCLUDED
|
||||||
|
|
||||||
|
/**
|
||||||
|
@file include/mysql/service_thd_wait.h
|
||||||
|
This service provides functions for plugins and storage engines to report
|
||||||
|
when they are going to sleep/stall.
|
||||||
|
|
||||||
|
SYNOPSIS
|
||||||
|
thd_wait_begin() - call just before a wait begins
|
||||||
|
thd Thread object
|
||||||
|
Use NULL if the thd is NOT known.
|
||||||
|
wait_type Type of wait
|
||||||
|
1 -- short wait (e.g. for mutex)
|
||||||
|
2 -- medium wait (e.g. for disk io)
|
||||||
|
3 -- large wait (e.g. for locked row/table)
|
||||||
|
NOTES
|
||||||
|
This is used by the threadpool to have better knowledge of which
|
||||||
|
threads that currently are actively running on CPUs. When a thread
|
||||||
|
reports that it's going to sleep/stall, the threadpool scheduler is
|
||||||
|
free to start another thread in the pool most likely. The expected wait
|
||||||
|
time is simply an indication of how long the wait is expected to
|
||||||
|
become, the real wait time could be very different.
|
||||||
|
|
||||||
|
thd_wait_end() called immediately after the wait is complete
|
||||||
|
|
||||||
|
thd_wait_end() MUST be called if thd_wait_begin() was called.
|
||||||
|
|
||||||
|
Using thd_wait_...() service is optional but recommended. Using it will
|
||||||
|
improve performance as the thread pool will be more active at managing the
|
||||||
|
thread workload.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
typedef enum _thd_wait_type_e {
|
||||||
|
THD_WAIT_MUTEX= 1,
|
||||||
|
THD_WAIT_DISKIO= 2,
|
||||||
|
THD_WAIT_ROW_TABLE_LOCK= 3,
|
||||||
|
THD_WAIT_GLOBAL_LOCK= 4
|
||||||
|
} thd_wait_type;
|
||||||
|
|
||||||
|
extern struct thd_wait_service_st {
|
||||||
|
void (*thd_wait_begin_func)(MYSQL_THD, thd_wait_type);
|
||||||
|
void (*thd_wait_end_func)(MYSQL_THD);
|
||||||
|
} *thd_wait_service;
|
||||||
|
|
||||||
|
#ifdef MYSQL_DYNAMIC_PLUGIN
|
||||||
|
|
||||||
|
#define thd_wait_begin(_THD, _WAIT_TYPE) \
|
||||||
|
thd_wait_service->thd_wait_begin_func(_THD, _WAIT_TYPE)
|
||||||
|
#define thd_wait_end(_THD) thd_wait_service->thd_wait_end_func(_THD)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
void thd_wait_begin(MYSQL_THD thd, thd_wait_type wait_type);
|
||||||
|
void thd_wait_end(MYSQL_THD thd);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
65
include/mysql/service_thread_scheduler.h
Normal file
65
include/mysql/service_thread_scheduler.h
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; version 2 of the License.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SERVICE_THREAD_SCHEDULER_INCLUDED
|
||||||
|
#define SERVICE_THREAD_SCHEDULER_INCLUDED
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct scheduler_functions;
|
||||||
|
|
||||||
|
extern struct my_thread_scheduler_service {
|
||||||
|
int (*set)(struct scheduler_functions *scheduler);
|
||||||
|
int (*reset)();
|
||||||
|
} *my_thread_scheduler_service;
|
||||||
|
|
||||||
|
#ifdef MYSQL_DYNAMIC_PLUGIN
|
||||||
|
|
||||||
|
#define my_thread_scheduler_set(F) my_thread_scheduler_service->set((F))
|
||||||
|
#define my_thread_scheduler_reset() my_thread_scheduler_service->reset()
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/**
|
||||||
|
Set the thread scheduler to use for the server.
|
||||||
|
|
||||||
|
@param scheduler Pointer to scheduler callbacks to use.
|
||||||
|
@retval 0 Scheduler installed correctly.
|
||||||
|
@retval 1 Invalid value (NULL) used for scheduler.
|
||||||
|
*/
|
||||||
|
int my_thread_scheduler_set(struct scheduler_functions *scheduler);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Restore the previous thread scheduler.
|
||||||
|
|
||||||
|
@note If no thread scheduler was installed previously with
|
||||||
|
thd_set_thread_scheduler, this function will report an error.
|
||||||
|
|
||||||
|
@retval 0 Scheduler installed correctly.
|
||||||
|
@retval 1 No scheduler installed.
|
||||||
|
*/
|
||||||
|
int my_thread_scheduler_reset();
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* SERVICE_THREAD_SCHEDULER_INCLUDED */
|
@ -20,6 +20,8 @@ extern "C" {
|
|||||||
|
|
||||||
#include <mysql/service_my_snprintf.h>
|
#include <mysql/service_my_snprintf.h>
|
||||||
#include <mysql/service_thd_alloc.h>
|
#include <mysql/service_thd_alloc.h>
|
||||||
|
#include <mysql/service_thd_wait.h>
|
||||||
|
#include <mysql/service_thread_scheduler.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -21,4 +21,5 @@
|
|||||||
|
|
||||||
#define VERSION_my_snprintf 0x0100
|
#define VERSION_my_snprintf 0x0100
|
||||||
#define VERSION_thd_alloc 0x0100
|
#define VERSION_thd_alloc 0x0100
|
||||||
|
#define VERSION_thd_wait 0x0100
|
||||||
|
#define VERSION_my_thread_scheduler 0x0100
|
||||||
|
@ -155,6 +155,8 @@ void thr_downgrade_write_lock(THR_LOCK_DATA *data,
|
|||||||
enum thr_lock_type new_lock_type);
|
enum thr_lock_type new_lock_type);
|
||||||
my_bool thr_reschedule_write_lock(THR_LOCK_DATA *data,
|
my_bool thr_reschedule_write_lock(THR_LOCK_DATA *data,
|
||||||
ulong lock_wait_timeout);
|
ulong lock_wait_timeout);
|
||||||
|
void thr_set_lock_wait_callback(void (*before_wait)(void),
|
||||||
|
void (*after_wait)(void));
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -217,6 +217,7 @@ struct st_vio
|
|||||||
void (*timeout)(Vio*, unsigned int which, unsigned int timeout);
|
void (*timeout)(Vio*, unsigned int which, unsigned int timeout);
|
||||||
my_bool (*poll_read)(Vio *vio, uint timeout);
|
my_bool (*poll_read)(Vio *vio, uint timeout);
|
||||||
my_bool (*is_connected)(Vio*);
|
my_bool (*is_connected)(Vio*);
|
||||||
|
my_bool (*has_data) (Vio*);
|
||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
void *ssl_arg;
|
void *ssl_arg;
|
||||||
#endif
|
#endif
|
||||||
|
@ -65,7 +65,7 @@ SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
|||||||
../sql/sql_db.cc ../sql/sql_delete.cc ../sql/sql_derived.cc
|
../sql/sql_db.cc ../sql/sql_delete.cc ../sql/sql_derived.cc
|
||||||
../sql/sql_do.cc ../sql/sql_error.cc ../sql/sql_handler.cc
|
../sql/sql_do.cc ../sql/sql_error.cc ../sql/sql_handler.cc
|
||||||
../sql/sql_help.cc ../sql/sql_insert.cc ../sql/datadict.cc
|
../sql/sql_help.cc ../sql/sql_insert.cc ../sql/datadict.cc
|
||||||
../sql/sql_truncate.cc
|
../sql/sql_admin.cc ../sql/sql_truncate.cc ../sql/sql_reload.cc
|
||||||
../sql/sql_lex.cc ../sql/keycaches.cc
|
../sql/sql_lex.cc ../sql/keycaches.cc
|
||||||
../sql/sql_list.cc ../sql/sql_load.cc ../sql/sql_locale.cc
|
../sql/sql_list.cc ../sql/sql_load.cc ../sql/sql_locale.cc
|
||||||
../sql/sql_binlog.cc ../sql/sql_manager.cc
|
../sql/sql_binlog.cc ../sql/sql_manager.cc
|
||||||
@ -81,6 +81,7 @@ SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc
|
|||||||
../sql/sql_time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc
|
../sql/sql_time.cc ../sql/tztime.cc ../sql/uniques.cc ../sql/unireg.cc
|
||||||
../sql/partition_info.cc ../sql/sql_connect.cc
|
../sql/partition_info.cc ../sql/sql_connect.cc
|
||||||
../sql/scheduler.cc ../sql/sql_audit.cc
|
../sql/scheduler.cc ../sql/sql_audit.cc
|
||||||
|
../sql/sql_alter.cc ../sql/sql_partition_admin.cc
|
||||||
../sql/event_parse_data.cc
|
../sql/event_parse_data.cc
|
||||||
../sql/sql_signal.cc ../sql/rpl_handler.cc
|
../sql/sql_signal.cc ../sql/rpl_handler.cc
|
||||||
../sql/rpl_utility.cc
|
../sql/rpl_utility.cc
|
||||||
|
@ -63,7 +63,8 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
|
|||||||
protocol.cc net_serv.cc opt_range.cc \
|
protocol.cc net_serv.cc opt_range.cc \
|
||||||
opt_sum.cc procedure.cc records.cc sql_acl.cc \
|
opt_sum.cc procedure.cc records.cc sql_acl.cc \
|
||||||
sql_load.cc discover.cc sql_locale.cc \
|
sql_load.cc discover.cc sql_locale.cc \
|
||||||
sql_profile.cc sql_truncate.cc datadict.cc \
|
sql_profile.cc sql_admin.cc sql_truncate.cc datadict.cc \
|
||||||
|
sql_reload.cc \
|
||||||
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
|
sql_analyse.cc sql_base.cc sql_cache.cc sql_class.cc \
|
||||||
sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
|
sql_crypt.cc sql_db.cc sql_delete.cc sql_error.cc sql_insert.cc \
|
||||||
sql_lex.cc sql_list.cc sql_manager.cc \
|
sql_lex.cc sql_list.cc sql_manager.cc \
|
||||||
@ -78,9 +79,10 @@ sqlsources = derror.cc field.cc field_conv.cc strfunc.cc filesort.cc \
|
|||||||
parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \
|
parse_file.cc sql_view.cc sql_trigger.cc my_decimal.cc \
|
||||||
rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \
|
rpl_filter.cc sql_partition.cc sql_builtin.cc sql_plugin.cc \
|
||||||
debug_sync.cc sql_tablespace.cc transaction.cc \
|
debug_sync.cc sql_tablespace.cc transaction.cc \
|
||||||
rpl_injector.cc my_user.c partition_info.cc \
|
rpl_injector.cc my_user.c partition_info.cc sql_alter.cc \
|
||||||
sql_servers.cc event_parse_data.cc sql_signal.cc \
|
sql_servers.cc event_parse_data.cc sql_signal.cc \
|
||||||
rpl_handler.cc mdl.cc keycaches.cc sql_audit.cc
|
rpl_handler.cc mdl.cc keycaches.cc sql_audit.cc \
|
||||||
|
sql_partition_admin.cc
|
||||||
|
|
||||||
libmysqld_int_a_SOURCES= $(libmysqld_sources)
|
libmysqld_int_a_SOURCES= $(libmysqld_sources)
|
||||||
nodist_libmysqld_int_a_SOURCES= $(libmysqlsources) $(sqlsources)
|
nodist_libmysqld_int_a_SOURCES= $(libmysqlsources) $(sqlsources)
|
||||||
|
@ -15,7 +15,11 @@
|
|||||||
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
|
||||||
|
|
||||||
SET(MYSQLSERVICES_SOURCES my_snprintf_service.c thd_alloc_service.c)
|
SET(MYSQLSERVICES_SOURCES
|
||||||
|
my_snprintf_service.c
|
||||||
|
thd_alloc_service.c
|
||||||
|
thd_wait_service.c
|
||||||
|
my_thread_scheduler_service.c)
|
||||||
|
|
||||||
ADD_LIBRARY(mysqlservices ${MYSQLSERVICES_SOURCES})
|
ADD_LIBRARY(mysqlservices ${MYSQLSERVICES_SOURCES})
|
||||||
INSTALL(TARGETS mysqlservices DESTINATION ${INSTALL_LIBDIR})
|
INSTALL(TARGETS mysqlservices DESTINATION ${INSTALL_LIBDIR})
|
||||||
|
@ -15,5 +15,7 @@
|
|||||||
|
|
||||||
AM_CPPFLAGS = -I$(top_srcdir)/include
|
AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||||
pkglib_LIBRARIES = libmysqlservices.a
|
pkglib_LIBRARIES = libmysqlservices.a
|
||||||
libmysqlservices_a_SOURCES = my_snprintf_service.c thd_alloc_service.c
|
libmysqlservices_a_SOURCES = my_snprintf_service.c thd_alloc_service.c \
|
||||||
|
thd_wait_service.c \
|
||||||
|
my_thread_scheduler_service.c
|
||||||
EXTRA_DIST = CMakeLists.txt
|
EXTRA_DIST = CMakeLists.txt
|
||||||
|
21
libservices/my_thread_scheduler_service.c
Normal file
21
libservices/my_thread_scheduler_service.c
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; version 2 of the License.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
|
USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <service_versions.h>
|
||||||
|
SERVICE_VERSION my_thread_scheduler_service=
|
||||||
|
(void*)VERSION_my_thread_scheduler;
|
19
libservices/thd_wait_service.c
Normal file
19
libservices/thd_wait_service.c
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; version 2 of the License.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful, but
|
||||||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <service_versions.h>
|
||||||
|
SERVICE_VERSION *thd_wait_service= (void*)VERSION_thd_wait;
|
@ -16,6 +16,7 @@
|
|||||||
INSTALL(
|
INSTALL(
|
||||||
DIRECTORY .
|
DIRECTORY .
|
||||||
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
DESTINATION ${INSTALL_MYSQLTESTDIR}
|
||||||
|
USE_SOURCE_PERMISSIONS
|
||||||
COMPONENT Test
|
COMPONENT Test
|
||||||
PATTERN "var/" EXCLUDE
|
PATTERN "var/" EXCLUDE
|
||||||
PATTERN "lib/My/SafeProcess" EXCLUDE
|
PATTERN "lib/My/SafeProcess" EXCLUDE
|
||||||
|
@ -19,7 +19,6 @@ main.mysqlbinlog_row @solaris # Bug#52202 2010-03-22 alik mysqlbinlog
|
|||||||
main.mysqlbinlog_row_innodb @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
|
main.mysqlbinlog_row_innodb @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
|
||||||
main.mysqlbinlog_row_myisam @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
|
main.mysqlbinlog_row_myisam @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
|
||||||
main.outfile_loaddata @solaris # Bug#46895 2010-01-20 alik Test "outfile_loaddata" fails (reproducible)
|
main.outfile_loaddata @solaris # Bug#46895 2010-01-20 alik Test "outfile_loaddata" fails (reproducible)
|
||||||
main.plugin* @solaris # Bug#47146 Linking problem with example plugin when dtrace enabled
|
|
||||||
main.signal_demo3 @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
main.signal_demo3 @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
||||||
main.sp @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
main.sp @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
||||||
main.type_float @freebsd # Bug#38965 2010-05-04 alik test cases gis-rtree, type_float, type_newdecimal fail in embedded server
|
main.type_float @freebsd # Bug#38965 2010-05-04 alik test cases gis-rtree, type_float, type_newdecimal fail in embedded server
|
||||||
@ -32,7 +31,6 @@ rpl.rpl_heartbeat_2slaves # BUG#43828 2009-10-22 luis fails spora
|
|||||||
rpl.rpl_innodb_bug28430* # Bug#46029
|
rpl.rpl_innodb_bug28430* # Bug#46029
|
||||||
rpl.rpl_innodb_bug30888* @solaris # Bug#47646 2009-09-25 alik rpl.rpl_innodb_bug30888 fails sporadically on Solaris
|
rpl.rpl_innodb_bug30888* @solaris # Bug#47646 2009-09-25 alik rpl.rpl_innodb_bug30888 fails sporadically on Solaris
|
||||||
rpl.rpl_killed_ddl @windows # Bug#47638 2010-01-20 alik The rpl_killed_ddl test fails on Windows
|
rpl.rpl_killed_ddl @windows # Bug#47638 2010-01-20 alik The rpl_killed_ddl test fails on Windows
|
||||||
rpl.rpl_plugin_load* @solaris # Bug#47146
|
|
||||||
rpl.rpl_row_sp011* @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
rpl.rpl_row_sp011* @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
||||||
|
|
||||||
sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
sys_vars.max_sp_recursion_depth_func @solaris # Bug#47791 2010-01-20 alik Several test cases fail on Solaris with error Thread stack overrun
|
||||||
|
@ -262,7 +262,6 @@ DROP TABLE IF EXISTS t2;
|
|||||||
|
|
||||||
CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb;
|
CREATE TABLE t2 (a int, b int, primary key (a)) engine=innodb;
|
||||||
INSERT INTO t1 VALUES (4,4);
|
INSERT INTO t1 VALUES (4,4);
|
||||||
--error ER_DUP_ENTRY
|
|
||||||
CREATE TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
CREATE TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
||||||
SELECT * from t2;
|
SELECT * from t2;
|
||||||
TRUNCATE table t2;
|
TRUNCATE table t2;
|
||||||
@ -277,11 +276,9 @@ CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a)) engine=innodb ;
|
|||||||
INSERT INTO t1 values (7,7);
|
INSERT INTO t1 values (7,7);
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
INSERT INTO t1 values (8,8);
|
INSERT INTO t1 values (8,8);
|
||||||
--error ER_DUP_ENTRY
|
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
INSERT INTO t1 values (9,9);
|
INSERT INTO t1 values (9,9);
|
||||||
--error ER_DUP_ENTRY
|
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SELECT * from t2;
|
SELECT * from t2;
|
||||||
@ -291,11 +288,9 @@ INSERT INTO t1 values (10,10);
|
|||||||
INSERT INTO t2 select * from t1;
|
INSERT INTO t2 select * from t1;
|
||||||
SELECT * from t1;
|
SELECT * from t1;
|
||||||
INSERT INTO t2 values (100,100);
|
INSERT INTO t2 values (100,100);
|
||||||
--error ER_DUP_ENTRY
|
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
INSERT INTO t2 values (101,101);
|
INSERT INTO t2 values (101,101);
|
||||||
--error ER_DUP_ENTRY
|
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) engine=innodb select * from t1;
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
SELECT * from t2;
|
SELECT * from t2;
|
||||||
@ -377,7 +372,8 @@ reset master;
|
|||||||
|
|
||||||
begin;
|
begin;
|
||||||
insert into ti values (1);
|
insert into ti values (1);
|
||||||
insert into ti values (2) ;
|
insert into ti values (2) ;
|
||||||
|
# This is SAFE because --binlog-direct-non-transactional-updates=FALSE
|
||||||
insert into tt select * from ti;
|
insert into tt select * from ti;
|
||||||
rollback;
|
rollback;
|
||||||
|
|
||||||
|
@ -24,6 +24,7 @@ reset master;
|
|||||||
begin;
|
begin;
|
||||||
insert into ti values (1);
|
insert into ti values (1);
|
||||||
insert into ti values (2) ;
|
insert into ti values (2) ;
|
||||||
|
# This is SAFE because --binlog-direct-non-transactional-updates=FALSE
|
||||||
insert into tt select * from ti;
|
insert into tt select * from ti;
|
||||||
rollback;
|
rollback;
|
||||||
|
|
||||||
|
@ -725,7 +725,7 @@ while (`SELECT HEX(@commands) != HEX('')`)
|
|||||||
--eval SET @check_temp='$available_n_temp'
|
--eval SET @check_temp='$available_n_temp'
|
||||||
--eval SET @table_temp='$table_n'
|
--eval SET @table_temp='$table_n'
|
||||||
SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
|
SET @check_temp= LTRIM(SUBSTRING(@check_temp, LENGTH(@table_temp) + 2));
|
||||||
--let $available_t_temp= `SELECT @check_temp`
|
--let $available_n_temp= `SELECT @check_temp`
|
||||||
|
|
||||||
--enable_query_log
|
--enable_query_log
|
||||||
--eval DROP TEMPORARY TABLE $table_t, $table_n
|
--eval DROP TEMPORARY TABLE $table_t, $table_n
|
||||||
|
@ -378,9 +378,12 @@ sync_slave_with_master;
|
|||||||
|
|
||||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||||
|
|
||||||
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLD_DATADIR/test-temporary-master.sql
|
if (`select @@session.binlog_format != 'STATEMENT'`)
|
||||||
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLD_DATADIR/test-temporary-slave.sql
|
{
|
||||||
--diff_files $MYSQLD_DATADIR/test-temporary-master.sql $MYSQLD_DATADIR/test-temporary-slave.sql
|
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLD_DATADIR/test-temporary-master.sql
|
||||||
|
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLD_DATADIR/test-temporary-slave.sql
|
||||||
|
--diff_files $MYSQLD_DATADIR/test-temporary-master.sql $MYSQLD_DATADIR/test-temporary-slave.sql
|
||||||
|
}
|
||||||
|
|
||||||
--echo #########################################################################
|
--echo #########################################################################
|
||||||
--echo # CLEAN
|
--echo # CLEAN
|
||||||
|
@ -153,7 +153,7 @@ connection master;
|
|||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
||||||
WHERE info = "RENAME TABLE t1 TO t3, t2 TO t1" and
|
WHERE info = "RENAME TABLE t1 TO t3, t2 TO t1" and
|
||||||
state = "Waiting for table";
|
state = "Waiting for table metadata lock";
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
@ -43,7 +43,8 @@ connection default;
|
|||||||
# of our statement.
|
# of our statement.
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
select count(*) = 1 from information_schema.processlist
|
select count(*) = 1 from information_schema.processlist
|
||||||
where state = "Table lock" and info = "insert into $table (i) values (0)";
|
where state = "Waiting for table level lock" and
|
||||||
|
info = "insert into $table (i) values (0)";
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--disable_result_log
|
--disable_result_log
|
||||||
|
@ -723,7 +723,7 @@ call p_verify_status_increment(4, 4, 4, 4);
|
|||||||
--echo # Sic: no table is created.
|
--echo # Sic: no table is created.
|
||||||
create table if not exists t2 (a int) select 6 union select 7;
|
create table if not exists t2 (a int) select 6 union select 7;
|
||||||
--echo # Sic: first commits the statement, and then the transaction.
|
--echo # Sic: first commits the statement, and then the transaction.
|
||||||
call p_verify_status_increment(2, 0, 4, 4);
|
call p_verify_status_increment(2, 0, 2, 0);
|
||||||
create table t3 select a from t2;
|
create table t3 select a from t2;
|
||||||
call p_verify_status_increment(2, 0, 4, 4);
|
call p_verify_status_increment(2, 0, 4, 4);
|
||||||
alter table t3 add column (b int);
|
alter table t3 add column (b int);
|
||||||
|
16
mysql-test/include/ctype_filesort2.inc
Normal file
16
mysql-test/include/ctype_filesort2.inc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#
|
||||||
|
# Testing filesort for full Unicode character sets
|
||||||
|
# with supplementary characters.
|
||||||
|
#
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#55980 Character sets: supplementary character _bin ordering is wrong
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84);
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
ALTER TABLE t1 ADD KEY(a);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
DROP TABLE IF EXISTS t1;
|
@ -1625,6 +1625,108 @@ SET @x=aswkt(point(1,2));
|
|||||||
SELECT charset(@x), collation(@x);
|
SELECT charset(@x), collation(@x);
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#54916 GROUP_CONCAT + IFNULL truncates output
|
||||||
|
--echo #
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
# ENGINE=MYISAM is very important to make sure "SYSTEM" join type
|
||||||
|
# is in use, which will create instances of Item_copy.
|
||||||
|
CREATE TABLE t1 (a MEDIUMINT NULL) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (1234567);
|
||||||
|
SELECT GROUP_CONCAT(IFNULL(a,'')) FROM t1;
|
||||||
|
SELECT GROUP_CONCAT(IF(a,a,'')) FROM t1;
|
||||||
|
if (`SELECT @@character_set_connection != 'ucs2'`)
|
||||||
|
{
|
||||||
|
# Temporarily disable for ucs2
|
||||||
|
# For details, see Bug#55744 GROUP_CONCAT + CASE + ucs return garbage
|
||||||
|
SELECT GROUP_CONCAT(CASE WHEN a THEN a ELSE '' END) FROM t1;
|
||||||
|
}
|
||||||
|
--enable_metadata
|
||||||
|
SELECT COALESCE(a,'') FROM t1 GROUP BY 1;
|
||||||
|
--disable_metadata
|
||||||
|
--echo # All columns must be VARCHAR(9) with the same length:
|
||||||
|
--disable_warnings
|
||||||
|
CREATE TABLE t2 AS
|
||||||
|
SELECT
|
||||||
|
CONCAT(a),
|
||||||
|
IFNULL(a,''),
|
||||||
|
IF(a,a,''),
|
||||||
|
CASE WHEN a THEN a ELSE '' END,
|
||||||
|
COALESCE(a,'')
|
||||||
|
FROM t1;
|
||||||
|
--enable_warnings
|
||||||
|
# The above query is expected to send a warning
|
||||||
|
# in case of ucs2 character set, until Bug#55744 is fixed.
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT CONCAT_WS(1,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT INSERT(1133,3,0,22) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT LCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT UCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT REPEAT(1,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT LEFT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT RIGHT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT LTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT RTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT ELT(1,111,222,333) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT REPLACE(111,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT SUBSTRING_INDEX(111,111,1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT MAKE_SET(111,222,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT SOUNDEX(1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
CREATE TABLE t2 AS SELECT EXPORT_SET(1,'Y','N','',8);
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of Bug#54916
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#52159 returning time type from function and empty left join causes debug assertion
|
--echo # Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -159,7 +159,7 @@ drop table if exists A;
|
|||||||
|
|
||||||
create table A (c int);
|
create table A (c int);
|
||||||
insert into A (c) values (0);
|
insert into A (c) values (0);
|
||||||
--error 0,ER_LOCK_DEADLOCK,ER_UPDATE_TABLE_USED
|
--error 0,ER_LOCK_DEADLOCK,ER_TABLE_EXISTS_ERROR
|
||||||
create table a as select * from A;
|
create table a as select * from A;
|
||||||
drop table A;
|
drop table A;
|
||||||
|
|
||||||
|
@ -523,7 +523,7 @@ connection waiter;
|
|||||||
--echo connection: waiter
|
--echo connection: waiter
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
select count(*) = 1 from information_schema.processlist
|
select count(*) = 1 from information_schema.processlist
|
||||||
where state = "Flushing tables";
|
where state = "Waiting for table flush";
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
connection default;
|
connection default;
|
||||||
--echo connection: default
|
--echo connection: default
|
||||||
@ -557,7 +557,8 @@ connection waiter;
|
|||||||
--echo connection: waiter
|
--echo connection: waiter
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
select count(*) = 1 from information_schema.processlist
|
select count(*) = 1 from information_schema.processlist
|
||||||
where state = "Waiting for table" and info = "rename table t1 to t0";
|
where state = "Waiting for table metadata lock" and
|
||||||
|
info = "rename table t1 to t0";
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
connection default;
|
connection default;
|
||||||
--echo connection: default
|
--echo connection: default
|
||||||
@ -743,7 +744,8 @@ send alter table t1 engine=memory;
|
|||||||
connection con2;
|
connection con2;
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
select count(*) = 1 from information_schema.processlist
|
select count(*) = 1 from information_schema.processlist
|
||||||
where state = "Waiting for table" and info = "alter table t1 engine=memory";
|
where state = "Waiting for table metadata lock" and
|
||||||
|
info = "alter table t1 engine=memory";
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
connection default;
|
connection default;
|
||||||
--error ER_ILLEGAL_HA
|
--error ER_ILLEGAL_HA
|
||||||
@ -764,7 +766,8 @@ send alter table t1 engine=memory;
|
|||||||
connection con2;
|
connection con2;
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
select count(*) = 1 from information_schema.processlist
|
select count(*) = 1 from information_schema.processlist
|
||||||
where state = "Waiting for table" and info = "alter table t1 engine=memory";
|
where state = "Waiting for table metadata lock" and
|
||||||
|
info = "alter table t1 engine=memory";
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
connection default;
|
connection default;
|
||||||
--echo # Since S metadata lock was already acquired at HANDLER OPEN time
|
--echo # Since S metadata lock was already acquired at HANDLER OPEN time
|
||||||
@ -1024,7 +1027,9 @@ connection con1;
|
|||||||
--echo # --> connection con2
|
--echo # --> connection con2
|
||||||
connection con2;
|
connection con2;
|
||||||
--echo # Waitng for 'drop table t1' to get blocked...
|
--echo # Waitng for 'drop table t1' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t1';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # --> connection default
|
--echo # --> connection default
|
||||||
connection default;
|
connection default;
|
||||||
@ -1055,7 +1060,9 @@ connection con1;
|
|||||||
--echo # --> connection con2
|
--echo # --> connection con2
|
||||||
connection con2;
|
connection con2;
|
||||||
--echo # Waiting for 'drop table t1' to get blocked...
|
--echo # Waiting for 'drop table t1' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t1';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # --> connection default
|
--echo # --> connection default
|
||||||
connection default;
|
connection default;
|
||||||
@ -1097,7 +1104,8 @@ send rename table t0 to t3, t1 to t0, t3 to t1;
|
|||||||
connection con1;
|
connection con1;
|
||||||
--echo # Waiting for 'rename table ...' to get blocked...
|
--echo # Waiting for 'rename table ...' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
where state='Waiting for table' and info='rename table t0 to t3, t1 to t0, t3 to t1';
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='rename table t0 to t3, t1 to t0, t3 to t1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # --> connection default
|
--echo # --> connection default
|
||||||
connection default;
|
connection default;
|
||||||
@ -1137,7 +1145,9 @@ connection con2;
|
|||||||
--echo # --> connection con1
|
--echo # --> connection con1
|
||||||
connection con1;
|
connection con1;
|
||||||
--echo # Waiting for 'drop table t2' to get blocked...
|
--echo # Waiting for 'drop table t2' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t2';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t2';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # --> connection default
|
--echo # --> connection default
|
||||||
connection default;
|
connection default;
|
||||||
@ -1146,7 +1156,9 @@ send select * from t2;
|
|||||||
--echo # --> connection con1
|
--echo # --> connection con1
|
||||||
connection con1;
|
connection con1;
|
||||||
--echo # Waiting for 'select * from t2' to get blocked...
|
--echo # Waiting for 'select * from t2' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='select * from t2';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='select * from t2';
|
||||||
unlock tables;
|
unlock tables;
|
||||||
--echo # --> connection con2
|
--echo # --> connection con2
|
||||||
connection con2;
|
connection con2;
|
||||||
@ -1190,10 +1202,14 @@ connection default;
|
|||||||
--echo # --> connection con3
|
--echo # --> connection con3
|
||||||
connection con3;
|
connection con3;
|
||||||
--echo # Waiting for 'drop table t1' to get blocked...
|
--echo # Waiting for 'drop table t1' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t1';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # Waiting for 'drop table t2' to get blocked...
|
--echo # Waiting for 'drop table t2' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t2';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t2';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # Demonstrate that t2 lock was released and t2 was dropped
|
--echo # Demonstrate that t2 lock was released and t2 was dropped
|
||||||
--echo # after ROLLBACK TO SAVEPOINT
|
--echo # after ROLLBACK TO SAVEPOINT
|
||||||
@ -1255,10 +1271,14 @@ connection default;
|
|||||||
--echo # --> connection con3
|
--echo # --> connection con3
|
||||||
connection con3;
|
connection con3;
|
||||||
--echo # Waiting for 'drop table t1' to get blocked...
|
--echo # Waiting for 'drop table t1' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t1';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # Waiting for 'drop table t2' to get blocked...
|
--echo # Waiting for 'drop table t2' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t2';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t2';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # Demonstrate that t2 lock was released and t2 was dropped
|
--echo # Demonstrate that t2 lock was released and t2 was dropped
|
||||||
--echo # after ROLLBACK TO SAVEPOINT
|
--echo # after ROLLBACK TO SAVEPOINT
|
||||||
@ -1314,7 +1334,9 @@ drop table t1, t2;
|
|||||||
--echo # --> connection con2
|
--echo # --> connection con2
|
||||||
connection con2;
|
connection con2;
|
||||||
--echo # Waiting for 'drop table t3' to get blocked...
|
--echo # Waiting for 'drop table t3' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t3';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t3';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # Demonstrate that ROLLBACK TO SAVEPOINT didn't release the handler
|
--echo # Demonstrate that ROLLBACK TO SAVEPOINT didn't release the handler
|
||||||
--echo # lock.
|
--echo # lock.
|
||||||
@ -1348,7 +1370,9 @@ send drop table t2;
|
|||||||
--echo # --> connection con2
|
--echo # --> connection con2
|
||||||
connection con2;
|
connection con2;
|
||||||
--echo # Waiting for 'drop table t2' to get blocked...
|
--echo # Waiting for 'drop table t2' to get blocked...
|
||||||
let $wait_condition=select count(*)=1 from information_schema.processlist where state='Waiting for table' and info='drop table t2';
|
let $wait_condition=select count(*)=1 from information_schema.processlist
|
||||||
|
where state='Waiting for table metadata lock' and
|
||||||
|
info='drop table t2';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
--echo # --> connection con1
|
--echo # --> connection con1
|
||||||
connection con1;
|
connection con1;
|
||||||
@ -1400,7 +1424,8 @@ connection con2;
|
|||||||
--echo # has read from the table commits.
|
--echo # has read from the table commits.
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
select count(*) = 1 from information_schema.processlist
|
select count(*) = 1 from information_schema.processlist
|
||||||
where state = "Waiting for table" and info = "lock tables t1 write";
|
where state = "Waiting for table metadata lock" and
|
||||||
|
info = "lock tables t1 write";
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--echo # --> connection default
|
--echo # --> connection default
|
||||||
@ -1427,7 +1452,8 @@ connection con1;
|
|||||||
--echo # Waiting for 'handler t1 read a next' to get blocked...
|
--echo # Waiting for 'handler t1 read a next' to get blocked...
|
||||||
let $wait_condition=
|
let $wait_condition=
|
||||||
select count(*) = 1 from information_schema.processlist
|
select count(*) = 1 from information_schema.processlist
|
||||||
where state = "Table lock" and info = "handler t1 read a next";
|
where state = "Waiting for table level lock" and
|
||||||
|
info = "handler t1 read a next";
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
|
|
||||||
--echo # The below 'drop table t1' should be able to proceed without
|
--echo # The below 'drop table t1' should be able to proceed without
|
||||||
|
@ -1,10 +0,0 @@
|
|||||||
disable_query_log;
|
|
||||||
disable_result_log;
|
|
||||||
set @have_thread_concurrency=0;
|
|
||||||
select @have_thread_concurrency:=1 from information_schema.global_variables where variable_name='thread_concurrency';
|
|
||||||
if (`select @have_thread_concurrency = 0`)
|
|
||||||
{
|
|
||||||
skip Need @@thread_concurrency;
|
|
||||||
}
|
|
||||||
enable_result_log;
|
|
||||||
enable_query_log;
|
|
@ -742,7 +742,6 @@ drop table if exists t2;
|
|||||||
CREATE TABLE t2 (a int, b int, primary key (a));
|
CREATE TABLE t2 (a int, b int, primary key (a));
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 values(100,100);
|
INSERT INTO t2 values(100,100);
|
||||||
--error ER_DUP_ENTRY
|
|
||||||
CREATE TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
|
CREATE TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
|
||||||
SELECT * from t2;
|
SELECT * from t2;
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
@ -756,13 +755,11 @@ drop table t2;
|
|||||||
CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a));
|
CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a));
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 values(100,100);
|
INSERT INTO t2 values(100,100);
|
||||||
--error ER_DUP_ENTRY
|
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
|
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
|
||||||
SELECT * from t2;
|
SELECT * from t2;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
BEGIN;
|
BEGIN;
|
||||||
INSERT INTO t2 values(101,101);
|
INSERT INTO t2 values(101,101);
|
||||||
--error ER_DUP_ENTRY
|
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
|
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
|
||||||
SELECT * from t2;
|
SELECT * from t2;
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
@ -1583,7 +1580,7 @@ connect (con1, localhost, root,,);
|
|||||||
--echo # Connection default
|
--echo # Connection default
|
||||||
connection default;
|
connection default;
|
||||||
let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist
|
let $wait_condition= SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||||
WHERE state='Waiting for table' AND info='TRUNCATE TABLE t1';
|
WHERE state='Waiting for table metadata lock' AND info='TRUNCATE TABLE t1';
|
||||||
--source include/wait_condition.inc
|
--source include/wait_condition.inc
|
||||||
SELECT * FROM t1 ORDER BY a;
|
SELECT * FROM t1 ORDER BY a;
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
--source include/not_windows.inc
|
--source include/not_windows.inc
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
if ($MYSQLHOTCOPY)
|
if (!$MYSQLHOTCOPY)
|
||||||
{
|
{
|
||||||
die due to missing mysqlhotcopy tool;
|
die due to missing mysqlhotcopy tool;
|
||||||
}
|
}
|
||||||
|
5
mysql-test/include/not_blackhole.inc
Normal file
5
mysql-test/include/not_blackhole.inc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
if (`SELECT count(*) FROM information_schema.engines WHERE
|
||||||
|
(support = 'YES' OR support = 'DEFAULT') AND
|
||||||
|
engine = 'blackhole'`){
|
||||||
|
skip Blackhole engine enabled;
|
||||||
|
}
|
@ -2192,10 +2192,12 @@ sub environment_setup {
|
|||||||
# mysqlhotcopy
|
# mysqlhotcopy
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
my $mysqlhotcopy=
|
my $mysqlhotcopy=
|
||||||
mtr_pl_maybe_exists("$bindir/scripts/mysqlhotcopy");
|
mtr_pl_maybe_exists("$bindir/scripts/mysqlhotcopy") ||
|
||||||
# Since mysqltest interprets the real path as "false" in an if,
|
mtr_pl_maybe_exists("$path_client_bindir/mysqlhotcopy");
|
||||||
# use 1 ("true") to indicate "not exists" so it can be tested for
|
if ($mysqlhotcopy)
|
||||||
$ENV{'MYSQLHOTCOPY'}= $mysqlhotcopy || 1;
|
{
|
||||||
|
$ENV{'MYSQLHOTCOPY'}= $mysqlhotcopy;
|
||||||
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------
|
# ----------------------------------------------------
|
||||||
# perror
|
# perror
|
||||||
|
@ -469,7 +469,7 @@ drop table t1;
|
|||||||
CREATE TABLE t1 ( a INT );
|
CREATE TABLE t1 ( a INT );
|
||||||
INSERT INTO t1 VALUES (1), (1);
|
INSERT INTO t1 VALUES (1), (1);
|
||||||
CREATE TABLE t2 ( a INT AUTO_INCREMENT KEY );
|
CREATE TABLE t2 ( a INT AUTO_INCREMENT KEY );
|
||||||
CREATE TABLE IF NOT EXISTS t2 AS SELECT a FROM t1;
|
INSERT INTO t2 SELECT a FROM t1;
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
UPDATE t2 SET a = 2;
|
UPDATE t2 SET a = 2;
|
||||||
SELECT a FROM t2;
|
SELECT a FROM t2;
|
||||||
|
@ -160,6 +160,8 @@ t1 CREATE TABLE `t1` (
|
|||||||
`COALESCE('a' COLLATE latin1_bin,'b')` varchar(1) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT ''
|
`COALESCE('a' COLLATE latin1_bin,'b')` varchar(1) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT ''
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 SELECT IFNULL('a' COLLATE latin1_swedish_ci, 'b' COLLATE latin1_bin);
|
||||||
|
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,EXPLICIT) and (latin1_bin,EXPLICIT) for operation 'ifnull'
|
||||||
SELECT 'case+union+test'
|
SELECT 'case+union+test'
|
||||||
UNION
|
UNION
|
||||||
SELECT CASE LOWER('1') WHEN LOWER('2') THEN 'BUG' ELSE 'nobug' END;
|
SELECT CASE LOWER('1') WHEN LOWER('2') THEN 'BUG' ELSE 'nobug' END;
|
||||||
|
@ -830,7 +830,7 @@ create table if not exists t2 (a int) select 6 union select 7;
|
|||||||
Warnings:
|
Warnings:
|
||||||
Note 1050 Table 't2' already exists
|
Note 1050 Table 't2' already exists
|
||||||
# Sic: first commits the statement, and then the transaction.
|
# Sic: first commits the statement, and then the transaction.
|
||||||
call p_verify_status_increment(2, 0, 4, 4);
|
call p_verify_status_increment(2, 0, 2, 0);
|
||||||
SUCCESS
|
SUCCESS
|
||||||
|
|
||||||
create table t3 select a from t2;
|
create table t3 select a from t2;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
drop table if exists t1,t2,t3,t4,t5;
|
drop table if exists t1,t2,t3,t4,t5;
|
||||||
drop database if exists mysqltest;
|
drop database if exists mysqltest;
|
||||||
|
drop view if exists v1;
|
||||||
create table t1 (b char(0));
|
create table t1 (b char(0));
|
||||||
insert into t1 values (""),(null);
|
insert into t1 values (""),(null);
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -264,15 +265,14 @@ create table if not exists t1 select 1,2;
|
|||||||
Warnings:
|
Warnings:
|
||||||
Note 1050 Table 't1' already exists
|
Note 1050 Table 't1' already exists
|
||||||
create table if not exists t1 select 1,2,3,4;
|
create table if not exists t1 select 1,2,3,4;
|
||||||
ERROR 21S01: Column count doesn't match value count at row 1
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
create table if not exists t1 select 1;
|
create table if not exists t1 select 1;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1050 Table 't1' already exists
|
Note 1050 Table 't1' already exists
|
||||||
select * from t1;
|
select * from t1;
|
||||||
1 2 3
|
1 2 3
|
||||||
1 2 3
|
1 2 3
|
||||||
0 1 2
|
|
||||||
0 0 1
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
flush status;
|
flush status;
|
||||||
create table t1 (a int not null, b int, primary key (a));
|
create table t1 (a int not null, b int, primary key (a));
|
||||||
@ -280,28 +280,21 @@ insert into t1 values (1,1);
|
|||||||
create table if not exists t1 select 2;
|
create table if not exists t1 select 2;
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1050 Table 't1' already exists
|
Note 1050 Table 't1' already exists
|
||||||
Warning 1364 Field 'a' doesn't have a default value
|
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a b
|
a b
|
||||||
1 1
|
1 1
|
||||||
0 2
|
|
||||||
create table if not exists t1 select 3 as 'a',4 as 'b';
|
create table if not exists t1 select 3 as 'a',4 as 'b';
|
||||||
Warnings:
|
Warnings:
|
||||||
Note 1050 Table 't1' already exists
|
Note 1050 Table 't1' already exists
|
||||||
create table if not exists t1 select 3 as 'a',3 as 'b';
|
|
||||||
ERROR 23000: Duplicate entry '3' for key 'PRIMARY'
|
|
||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Note 1050 Table 't1' already exists
|
Note 1050 Table 't1' already exists
|
||||||
Error 1062 Duplicate entry '3' for key 'PRIMARY'
|
|
||||||
show status like "Opened_tables";
|
show status like "Opened_tables";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Opened_tables 2
|
Opened_tables 2
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a b
|
a b
|
||||||
1 1
|
1 1
|
||||||
0 2
|
|
||||||
3 4
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table `t1 `(a int);
|
create table `t1 `(a int);
|
||||||
ERROR 42000: Incorrect table name 't1 '
|
ERROR 42000: Incorrect table name 't1 '
|
||||||
@ -611,7 +604,7 @@ b
|
|||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
create table t1 select * from t1;
|
create table t1 select * from t1;
|
||||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
ERROR 42S01: Table 't1' already exists
|
||||||
create table t2 union = (t1) select * from t1;
|
create table t2 union = (t1) select * from t1;
|
||||||
ERROR HY000: 'test.t2' is not BASE TABLE
|
ERROR HY000: 'test.t2' is not BASE TABLE
|
||||||
flush tables with read lock;
|
flush tables with read lock;
|
||||||
@ -811,7 +804,8 @@ create table t1 (primary key(a)) select "b" as b;
|
|||||||
ERROR 42000: Key column 'a' doesn't exist in table
|
ERROR 42000: Key column 'a' doesn't exist in table
|
||||||
create table t1 (a int);
|
create table t1 (a int);
|
||||||
create table if not exists t1 select 1 as a, 2 as b;
|
create table if not exists t1 select 1 as a, 2 as b;
|
||||||
ERROR 21S01: Column count doesn't match value count at row 1
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (primary key (a)) (select 1 as a) union all (select 1 as a);
|
create table t1 (primary key (a)) (select 1 as a) union all (select 1 as a);
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
@ -823,25 +817,14 @@ Warnings:
|
|||||||
Note 1050 Table 't1' already exists
|
Note 1050 Table 't1' already exists
|
||||||
select * from t1;
|
select * from t1;
|
||||||
i
|
i
|
||||||
1
|
|
||||||
create table if not exists t1 select * from t1;
|
create table if not exists t1 select * from t1;
|
||||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
select * from t1;
|
select * from t1;
|
||||||
i
|
i
|
||||||
1
|
drop table t1;
|
||||||
create table t1 select coalesce('a' collate latin1_swedish_ci,'b' collate latin1_bin);
|
create table t1 select coalesce('a' collate latin1_swedish_ci,'b' collate latin1_bin);
|
||||||
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,EXPLICIT) and (latin1_bin,EXPLICIT) for operation 'coalesce'
|
ERROR HY000: Illegal mix of collations (latin1_swedish_ci,EXPLICIT) and (latin1_bin,EXPLICIT) for operation 'coalesce'
|
||||||
select * from t1;
|
|
||||||
i
|
|
||||||
1
|
|
||||||
alter table t1 add primary key (i);
|
|
||||||
create table if not exists t1 (select 2 as i) union all (select 2 as i);
|
|
||||||
ERROR 23000: Duplicate entry '2' for key 'PRIMARY'
|
|
||||||
select * from t1;
|
|
||||||
i
|
|
||||||
1
|
|
||||||
2
|
|
||||||
drop table t1;
|
|
||||||
create temporary table t1 (j int);
|
create temporary table t1 (j int);
|
||||||
create table if not exists t1 select 1;
|
create table if not exists t1 select 1;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
@ -893,8 +876,6 @@ select * from t2;
|
|||||||
i
|
i
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
1
|
|
||||||
2
|
|
||||||
unlock tables;
|
unlock tables;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
create table t1 (upgrade int);
|
create table t1 (upgrade int);
|
||||||
@ -1561,6 +1542,7 @@ show status like 'handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -1586,11 +1568,9 @@ CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
|
|||||||
INSERT IGNORE INTO t1 (b) VALUES (5);
|
INSERT IGNORE INTO t1 (b) VALUES (5);
|
||||||
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
||||||
SELECT a FROM t1;
|
SELECT a FROM t1;
|
||||||
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
INSERT INTO t2 SELECT a FROM t1;
|
||||||
SELECT a FROM t1;
|
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
INSERT INTO t2 SELECT a FROM t1;
|
||||||
SELECT a FROM t1;
|
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
@ -1620,7 +1600,7 @@ drop table if exists t2;
|
|||||||
Warnings:
|
Warnings:
|
||||||
Note 1051 Unknown table 't2'
|
Note 1051 Unknown table 't2'
|
||||||
CREATE TABLE t2 (a int, b int, primary key (a));
|
CREATE TABLE t2 (a int, b int, primary key (a));
|
||||||
CREATE TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
|
INSERT INTO t2 select * from t1;
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
SELECT * from t2;
|
SELECT * from t2;
|
||||||
a b
|
a b
|
||||||
@ -1633,13 +1613,7 @@ a b
|
|||||||
1 1
|
1 1
|
||||||
drop table t2;
|
drop table t2;
|
||||||
CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a));
|
CREATE TEMPORARY TABLE t2 (a int, b int, primary key (a));
|
||||||
CREATE TEMPORARY TABLE IF NOT EXISTS t2 (primary key (a)) select * from t1;
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
|
||||||
SELECT * from t2;
|
|
||||||
a b
|
|
||||||
1 1
|
|
||||||
TRUNCATE table t2;
|
|
||||||
INSERT INTO t2 select * from t1;
|
|
||||||
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
|
||||||
SELECT * from t2;
|
SELECT * from t2;
|
||||||
a b
|
a b
|
||||||
@ -1964,11 +1938,7 @@ CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW
|
|||||||
BEGIN
|
BEGIN
|
||||||
INSERT INTO t1 ( `int` ) VALUES (4 ),( 8 ),( 2 ) ;
|
INSERT INTO t1 ( `int` ) VALUES (4 ),( 8 ),( 2 ) ;
|
||||||
END ; |
|
END ; |
|
||||||
CREATE TABLE IF NOT EXISTS t1 (
|
INSERT INTO t1 (pk, int_key) SELECT `pk` , `int_key` FROM B ;
|
||||||
`pk` INTEGER NOT NULL AUTO_INCREMENT ,
|
|
||||||
`int` INTEGER ,
|
|
||||||
PRIMARY KEY ( `pk` )
|
|
||||||
) SELECT `pk` , `int_key` FROM B ;
|
|
||||||
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
ERROR HY000: Can't update table 't1' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
|
||||||
CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW
|
CREATE TRIGGER f BEFORE INSERT ON t1 FOR EACH ROW
|
||||||
BEGIN
|
BEGIN
|
||||||
@ -2088,3 +2058,347 @@ t2 CREATE TABLE `t2` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
set @@sql_mode= @old_mode;
|
set @@sql_mode= @old_mode;
|
||||||
drop tables t1, t2;
|
drop tables t1, t2;
|
||||||
|
CREATE TABLE t1 (id int);
|
||||||
|
CREATE TABLE t2 (id int);
|
||||||
|
INSERT INTO t1 VALUES (1), (1);
|
||||||
|
INSERT INTO t2 VALUES (2), (2);
|
||||||
|
CREATE VIEW v1 AS SELECT id FROM t2;
|
||||||
|
CREATE TABLE IF NOT EXISTS v1(a int, b int) SELECT id, id FROM t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 'v1' already exists
|
||||||
|
SHOW CREATE TABLE v1;
|
||||||
|
View Create View character_set_client collation_connection
|
||||||
|
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select `t2`.`id` AS `id` from `t2` latin1 latin1_swedish_ci
|
||||||
|
SELECT * FROM t2;
|
||||||
|
id
|
||||||
|
2
|
||||||
|
2
|
||||||
|
SELECT * FROM v1;
|
||||||
|
id
|
||||||
|
2
|
||||||
|
2
|
||||||
|
DROP VIEW v1;
|
||||||
|
CREATE TEMPORARY TABLE tt1 AS SELECT id FROM t2;
|
||||||
|
CREATE TEMPORARY TABLE IF NOT EXISTS tt1(a int, b int) SELECT id, id FROM t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 'tt1' already exists
|
||||||
|
SELECT * FROM t2;
|
||||||
|
id
|
||||||
|
2
|
||||||
|
2
|
||||||
|
SELECT * FROM tt1;
|
||||||
|
id
|
||||||
|
2
|
||||||
|
2
|
||||||
|
DROP TEMPORARY TABLE tt1;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
#
|
||||||
|
# WL#5370 "Changing 'CREATE TABLE IF NOT EXISTS ... SELECT'
|
||||||
|
# behaviour.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# 1. Basic case: a base table.
|
||||||
|
#
|
||||||
|
create table if not exists t1 (a int) select 1 as a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
create table t1 (a int) select 2 as a;
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
# Produces an essential warning ER_TABLE_EXISTS.
|
||||||
|
create table if not exists t1 (a int) select 2 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
# No new data in t1.
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
|
# 2. A temporary table.
|
||||||
|
#
|
||||||
|
create temporary table if not exists t1 (a int) select 1 as a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
create temporary table t1 (a int) select 2 as a;
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
# An essential warning.
|
||||||
|
create temporary table if not exists t1 (a int) select 2 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
# No new data in t1.
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop temporary table t1;
|
||||||
|
#
|
||||||
|
# 3. Creating a base table in presence of a temporary table.
|
||||||
|
#
|
||||||
|
create table t1 (a int);
|
||||||
|
# Create a view for convenience of querying t1 shadowed by a temp.
|
||||||
|
create view v1 as select a from t1;
|
||||||
|
drop table t1;
|
||||||
|
create temporary table t1 (a int) select 1 as a;
|
||||||
|
create table if not exists t1 (a int) select 2 as a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
select * from v1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
# Note: an essential warning.
|
||||||
|
create table if not exists t1 (a int) select 3 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
select * from v1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
drop temporary table t1;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
drop view v1;
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
|
# 4. Creating a temporary table in presence of a base table.
|
||||||
|
#
|
||||||
|
create table t1 (a int) select 1 as a;
|
||||||
|
create temporary table if not exists t1 select 2 as a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
# Note: an essential warning.
|
||||||
|
create temporary table if not exists t1 select 3 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
drop temporary table t1;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
|
# 5. Creating a base table in presence of an updatable view.
|
||||||
|
#
|
||||||
|
create table t2 (a int unique);
|
||||||
|
create view t1 as select a from t2;
|
||||||
|
insert into t1 (a) values (1);
|
||||||
|
create table t1 (a int);
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
# Note: an essential warning.
|
||||||
|
create table if not exists t1 (a int);
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
create table t1 (a int) select 2 as a;
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
# Note: an essential warning.
|
||||||
|
create table if not exists t1 (a int) select 2 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
create temporary table if not exists t1 (a int) select 3 as a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
# Note: an essential warning.
|
||||||
|
create temporary table if not exists t1 (a int) select 4 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop temporary table t1;
|
||||||
|
#
|
||||||
|
# Repeating the test with a non-updatable view.
|
||||||
|
#
|
||||||
|
drop view t1;
|
||||||
|
create view t1 as select a + 5 as a from t2;
|
||||||
|
insert into t1 (a) values (1);
|
||||||
|
ERROR HY000: The target table t1 of the INSERT is not insertable-into
|
||||||
|
update t1 set a=3 where a=2;
|
||||||
|
ERROR HY000: Column 'a' is not updatable
|
||||||
|
create table t1 (a int);
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
# Note: an essential warning.
|
||||||
|
create table if not exists t1 (a int);
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
create table t1 (a int) select 2 as a;
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
6
|
||||||
|
# Note: an essential warning.
|
||||||
|
create table if not exists t1 (a int) select 2 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
6
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
create temporary table if not exists t1 (a int) select 3 as a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
# Note: an essential warning.
|
||||||
|
create temporary table if not exists t1 (a int) select 4 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
select * from t2;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop temporary table t1;
|
||||||
|
drop view t1;
|
||||||
|
drop table t2;
|
||||||
|
#
|
||||||
|
# Repeating the test with a view select a constant number
|
||||||
|
#
|
||||||
|
create view t1 as select 1 as a;
|
||||||
|
insert into t1 (a) values (1);
|
||||||
|
ERROR HY000: The target table t1 of the INSERT is not insertable-into
|
||||||
|
update t1 set a=3 where a=2;
|
||||||
|
ERROR HY000: The target table t1 of the UPDATE is not updatable
|
||||||
|
create table t1 (a int);
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
# Note: an essential warning.
|
||||||
|
create table if not exists t1 (a int);
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
create table t1 (a int) select 2 as a;
|
||||||
|
ERROR 42S01: Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
# Note: an essential warning.
|
||||||
|
create table if not exists t1 (a int) select 2 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
create temporary table if not exists t1 (a int) select 3 as a;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
# Note: an essential warning.
|
||||||
|
create temporary table if not exists t1 (a int) select 4 as a;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
drop temporary table t1;
|
||||||
|
drop view t1;
|
||||||
|
#
|
||||||
|
# 6. Test of unique_table().
|
||||||
|
#
|
||||||
|
create table t1 (a int) select 1 as a;
|
||||||
|
create temporary table if not exists t1 (a int) select * from t1;
|
||||||
|
create temporary table if not exists t1 (a int) select * from t1;
|
||||||
|
ERROR HY000: Can't reopen table: 't1'
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop temporary table t1;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
create temporary table t1 (a int) select 1 as a;
|
||||||
|
create table if not exists t1 (a int) select * from t1;
|
||||||
|
create table if not exists t1 (a int) select * from t1;
|
||||||
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop temporary table t1;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
drop table t1;
|
||||||
|
create table if not exists t1 (a int) select * from t1;
|
||||||
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
|
#
|
||||||
|
# 7. Test of non-matching columns, REPLACE and IGNORE.
|
||||||
|
#
|
||||||
|
create table t1 (a int) select 1 as b, 2 as c;
|
||||||
|
select * from t1;
|
||||||
|
a b c
|
||||||
|
NULL 1 2
|
||||||
|
drop table t1;
|
||||||
|
create table if not exists t1 (a int, b date, c date) select 1 as b, 2 as c;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'b' at row 1
|
||||||
|
Warning 1264 Out of range value for column 'c' at row 1
|
||||||
|
select * from t1;
|
||||||
|
a b c
|
||||||
|
NULL 0000-00-00 0000-00-00
|
||||||
|
drop table t1;
|
||||||
|
set @@session.sql_mode='STRICT_ALL_TABLES';
|
||||||
|
create table if not exists t1 (a int, b date, c date) select 1 as b, 2 as c;
|
||||||
|
ERROR 22007: Incorrect date value: '1' for column 'b' at row 1
|
||||||
|
select * from t1;
|
||||||
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
|
create table if not exists t1 (a int, b date, c date)
|
||||||
|
replace select 1 as b, 2 as c;
|
||||||
|
ERROR 22007: Incorrect date value: '1' for column 'b' at row 1
|
||||||
|
select * from t1;
|
||||||
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
|
create table if not exists t1 (a int, b date, c date)
|
||||||
|
ignore select 1 as b, 2 as c;
|
||||||
|
Warnings:
|
||||||
|
Warning 1264 Out of range value for column 'b' at row 1
|
||||||
|
Warning 1264 Out of range value for column 'c' at row 1
|
||||||
|
select * from t1;
|
||||||
|
a b c
|
||||||
|
NULL 0000-00-00 0000-00-00
|
||||||
|
set @@session.sql_mode=default;
|
||||||
|
drop table t1;
|
||||||
|
create table if not exists t1 (a int unique, b int)
|
||||||
|
replace select 1 as a, 1 as b union select 1 as a, 2 as b;
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 2
|
||||||
|
drop table t1;
|
||||||
|
create table if not exists t1 (a int unique, b int)
|
||||||
|
ignore select 1 as a, 1 as b union select 1 as a, 2 as b;
|
||||||
|
select * from t1;
|
||||||
|
a b
|
||||||
|
1 1
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
|
@ -2598,6 +2598,156 @@ SELECT charset(@x), collation(@x);
|
|||||||
charset(@x) collation(@x)
|
charset(@x) collation(@x)
|
||||||
binary binary
|
binary binary
|
||||||
#
|
#
|
||||||
|
# Bug#54916 GROUP_CONCAT + IFNULL truncates output
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
binary
|
||||||
|
CREATE TABLE t1 (a MEDIUMINT NULL) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (1234567);
|
||||||
|
SELECT GROUP_CONCAT(IFNULL(a,'')) FROM t1;
|
||||||
|
GROUP_CONCAT(IFNULL(a,''))
|
||||||
|
1234567
|
||||||
|
SELECT GROUP_CONCAT(IF(a,a,'')) FROM t1;
|
||||||
|
GROUP_CONCAT(IF(a,a,''))
|
||||||
|
1234567
|
||||||
|
SELECT GROUP_CONCAT(CASE WHEN a THEN a ELSE '' END) FROM t1;
|
||||||
|
GROUP_CONCAT(CASE WHEN a THEN a ELSE '' END)
|
||||||
|
1234567
|
||||||
|
SELECT COALESCE(a,'') FROM t1 GROUP BY 1;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def COALESCE(a,'') 253 9 7 Y 128 31 63
|
||||||
|
COALESCE(a,'')
|
||||||
|
1234567
|
||||||
|
# All columns must be VARCHAR(9) with the same length:
|
||||||
|
CREATE TABLE t2 AS
|
||||||
|
SELECT
|
||||||
|
CONCAT(a),
|
||||||
|
IFNULL(a,''),
|
||||||
|
IF(a,a,''),
|
||||||
|
CASE WHEN a THEN a ELSE '' END,
|
||||||
|
COALESCE(a,'')
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`CONCAT(a)` varbinary(9) DEFAULT NULL,
|
||||||
|
`IFNULL(a,'')` varbinary(9) NOT NULL DEFAULT '',
|
||||||
|
`IF(a,a,'')` varbinary(9) DEFAULT NULL,
|
||||||
|
`CASE WHEN a THEN a ELSE '' END` varbinary(9) DEFAULT NULL,
|
||||||
|
`COALESCE(a,'')` varbinary(9) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT CONCAT_WS(1,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`CONCAT_WS(1,2,3)` varbinary(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT INSERT(1133,3,0,22) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`INSERT(1133,3,0,22)` varbinary(6) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LCASE(a)` varbinary(9) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT UCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`UCASE(a)` varbinary(9) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT REPEAT(1,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`REPEAT(1,2)` varbinary(2) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LEFT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LEFT(123,2)` varbinary(2) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT RIGHT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`RIGHT(123,2)` varbinary(2) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LTRIM(123)` varbinary(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT RTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`RTRIM(123)` varbinary(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT ELT(1,111,222,333) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`ELT(1,111,222,333)` varbinary(3) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT REPLACE(111,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`REPLACE(111,2,3)` varbinary(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT SUBSTRING_INDEX(111,111,1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`SUBSTRING_INDEX(111,111,1)` varbinary(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT MAKE_SET(111,222,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`MAKE_SET(111,222,3)` varbinary(5) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT SOUNDEX(1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`SOUNDEX(1)` varbinary(4) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT EXPORT_SET(1,'Y','N','',8);
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`EXPORT_SET(1,'Y','N','',8)` varbinary(64) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of Bug#54916
|
||||||
|
#
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
|
@ -2680,6 +2680,156 @@ SELECT charset(@x), collation(@x);
|
|||||||
charset(@x) collation(@x)
|
charset(@x) collation(@x)
|
||||||
cp1251 cp1251_general_ci
|
cp1251 cp1251_general_ci
|
||||||
#
|
#
|
||||||
|
# Bug#54916 GROUP_CONCAT + IFNULL truncates output
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
cp1251_general_ci
|
||||||
|
CREATE TABLE t1 (a MEDIUMINT NULL) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (1234567);
|
||||||
|
SELECT GROUP_CONCAT(IFNULL(a,'')) FROM t1;
|
||||||
|
GROUP_CONCAT(IFNULL(a,''))
|
||||||
|
1234567
|
||||||
|
SELECT GROUP_CONCAT(IF(a,a,'')) FROM t1;
|
||||||
|
GROUP_CONCAT(IF(a,a,''))
|
||||||
|
1234567
|
||||||
|
SELECT GROUP_CONCAT(CASE WHEN a THEN a ELSE '' END) FROM t1;
|
||||||
|
GROUP_CONCAT(CASE WHEN a THEN a ELSE '' END)
|
||||||
|
1234567
|
||||||
|
SELECT COALESCE(a,'') FROM t1 GROUP BY 1;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def COALESCE(a,'') 253 9 7 Y 0 31 51
|
||||||
|
COALESCE(a,'')
|
||||||
|
1234567
|
||||||
|
# All columns must be VARCHAR(9) with the same length:
|
||||||
|
CREATE TABLE t2 AS
|
||||||
|
SELECT
|
||||||
|
CONCAT(a),
|
||||||
|
IFNULL(a,''),
|
||||||
|
IF(a,a,''),
|
||||||
|
CASE WHEN a THEN a ELSE '' END,
|
||||||
|
COALESCE(a,'')
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`CONCAT(a)` varchar(9) CHARACTER SET cp1251 DEFAULT NULL,
|
||||||
|
`IFNULL(a,'')` varchar(9) CHARACTER SET cp1251 NOT NULL DEFAULT '',
|
||||||
|
`IF(a,a,'')` varchar(9) CHARACTER SET cp1251 DEFAULT NULL,
|
||||||
|
`CASE WHEN a THEN a ELSE '' END` varchar(9) CHARACTER SET cp1251 DEFAULT NULL,
|
||||||
|
`COALESCE(a,'')` varchar(9) CHARACTER SET cp1251 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT CONCAT_WS(1,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`CONCAT_WS(1,2,3)` varchar(3) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT INSERT(1133,3,0,22) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`INSERT(1133,3,0,22)` varchar(6) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LCASE(a)` varchar(9) CHARACTER SET cp1251 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT UCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`UCASE(a)` varchar(9) CHARACTER SET cp1251 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT REPEAT(1,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`REPEAT(1,2)` varchar(2) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LEFT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LEFT(123,2)` varchar(2) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT RIGHT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`RIGHT(123,2)` varchar(2) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LTRIM(123)` varchar(3) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT RTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`RTRIM(123)` varchar(3) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT ELT(1,111,222,333) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`ELT(1,111,222,333)` varchar(3) CHARACTER SET cp1251 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT REPLACE(111,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`REPLACE(111,2,3)` varchar(3) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT SUBSTRING_INDEX(111,111,1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`SUBSTRING_INDEX(111,111,1)` varchar(3) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT MAKE_SET(111,222,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`MAKE_SET(111,222,3)` varchar(5) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT SOUNDEX(1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`SOUNDEX(1)` varchar(4) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT EXPORT_SET(1,'Y','N','',8);
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`EXPORT_SET(1,'Y','N','',8)` varchar(64) CHARACTER SET cp1251 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of Bug#54916
|
||||||
|
#
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
|
@ -47,7 +47,7 @@ master-bin.000001 # Query # # BEGIN
|
|||||||
master-bin.000001 # Query # # use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93))
|
master-bin.000001 # Query # # use `test`; INSERT INTO t4 VALUES ( NAME_CONST('ins1',_latin1 0x466F6F2773206120426172 COLLATE 'latin1_swedish_ci'), NAME_CONST('ins2',_cp932 0xED40ED41ED42 COLLATE 'cp932_japanese_ci'), NAME_CONST('ind',47.93))
|
||||||
master-bin.000001 # Query # # COMMIT
|
master-bin.000001 # Query # # COMMIT
|
||||||
master-bin.000001 # Query # # use `test`; DROP PROCEDURE bug18293
|
master-bin.000001 # Query # # use `test`; DROP PROCEDURE bug18293
|
||||||
master-bin.000001 # Query # # use `test`; DROP TABLE t4
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t4` /* generated by server */
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
SHOW BINLOG EVENTS FROM 490;
|
SHOW BINLOG EVENTS FROM 490;
|
||||||
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
|
ERROR HY000: Error when executing command SHOW BINLOG EVENTS: Wrong offset or I/O error
|
||||||
|
@ -3008,6 +3008,156 @@ SELECT charset(@x), collation(@x);
|
|||||||
charset(@x) collation(@x)
|
charset(@x) collation(@x)
|
||||||
latin1 latin1_swedish_ci
|
latin1 latin1_swedish_ci
|
||||||
#
|
#
|
||||||
|
# Bug#54916 GROUP_CONCAT + IFNULL truncates output
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
latin1_swedish_ci
|
||||||
|
CREATE TABLE t1 (a MEDIUMINT NULL) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (1234567);
|
||||||
|
SELECT GROUP_CONCAT(IFNULL(a,'')) FROM t1;
|
||||||
|
GROUP_CONCAT(IFNULL(a,''))
|
||||||
|
1234567
|
||||||
|
SELECT GROUP_CONCAT(IF(a,a,'')) FROM t1;
|
||||||
|
GROUP_CONCAT(IF(a,a,''))
|
||||||
|
1234567
|
||||||
|
SELECT GROUP_CONCAT(CASE WHEN a THEN a ELSE '' END) FROM t1;
|
||||||
|
GROUP_CONCAT(CASE WHEN a THEN a ELSE '' END)
|
||||||
|
1234567
|
||||||
|
SELECT COALESCE(a,'') FROM t1 GROUP BY 1;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def COALESCE(a,'') 253 9 7 Y 0 31 8
|
||||||
|
COALESCE(a,'')
|
||||||
|
1234567
|
||||||
|
# All columns must be VARCHAR(9) with the same length:
|
||||||
|
CREATE TABLE t2 AS
|
||||||
|
SELECT
|
||||||
|
CONCAT(a),
|
||||||
|
IFNULL(a,''),
|
||||||
|
IF(a,a,''),
|
||||||
|
CASE WHEN a THEN a ELSE '' END,
|
||||||
|
COALESCE(a,'')
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`CONCAT(a)` varchar(9) DEFAULT NULL,
|
||||||
|
`IFNULL(a,'')` varchar(9) NOT NULL DEFAULT '',
|
||||||
|
`IF(a,a,'')` varchar(9) DEFAULT NULL,
|
||||||
|
`CASE WHEN a THEN a ELSE '' END` varchar(9) DEFAULT NULL,
|
||||||
|
`COALESCE(a,'')` varchar(9) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT CONCAT_WS(1,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`CONCAT_WS(1,2,3)` varchar(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT INSERT(1133,3,0,22) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`INSERT(1133,3,0,22)` varchar(6) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LCASE(a)` varchar(9) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT UCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`UCASE(a)` varchar(9) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT REPEAT(1,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`REPEAT(1,2)` varchar(2) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LEFT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LEFT(123,2)` varchar(2) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT RIGHT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`RIGHT(123,2)` varchar(2) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LTRIM(123)` varchar(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT RTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`RTRIM(123)` varchar(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT ELT(1,111,222,333) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`ELT(1,111,222,333)` varchar(3) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT REPLACE(111,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`REPLACE(111,2,3)` varchar(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT SUBSTRING_INDEX(111,111,1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`SUBSTRING_INDEX(111,111,1)` varchar(3) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT MAKE_SET(111,222,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`MAKE_SET(111,222,3)` varchar(5) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT SOUNDEX(1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`SOUNDEX(1)` varchar(4) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT EXPORT_SET(1,'Y','N','',8);
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`EXPORT_SET(1,'Y','N','',8)` varchar(64) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of Bug#54916
|
||||||
|
#
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
|
@ -3840,6 +3840,153 @@ SELECT charset(@x), collation(@x);
|
|||||||
charset(@x) collation(@x)
|
charset(@x) collation(@x)
|
||||||
ucs2 ucs2_general_ci
|
ucs2 ucs2_general_ci
|
||||||
#
|
#
|
||||||
|
# Bug#54916 GROUP_CONCAT + IFNULL truncates output
|
||||||
|
#
|
||||||
|
SELECT @@collation_connection;
|
||||||
|
@@collation_connection
|
||||||
|
ucs2_general_ci
|
||||||
|
CREATE TABLE t1 (a MEDIUMINT NULL) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES (1234567);
|
||||||
|
SELECT GROUP_CONCAT(IFNULL(a,'')) FROM t1;
|
||||||
|
GROUP_CONCAT(IFNULL(a,''))
|
||||||
|
1234567
|
||||||
|
SELECT GROUP_CONCAT(IF(a,a,'')) FROM t1;
|
||||||
|
GROUP_CONCAT(IF(a,a,''))
|
||||||
|
1234567
|
||||||
|
SELECT COALESCE(a,'') FROM t1 GROUP BY 1;
|
||||||
|
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||||
|
def COALESCE(a,'') 253 9 7 Y 0 31 8
|
||||||
|
COALESCE(a,'')
|
||||||
|
1234567
|
||||||
|
# All columns must be VARCHAR(9) with the same length:
|
||||||
|
CREATE TABLE t2 AS
|
||||||
|
SELECT
|
||||||
|
CONCAT(a),
|
||||||
|
IFNULL(a,''),
|
||||||
|
IF(a,a,''),
|
||||||
|
CASE WHEN a THEN a ELSE '' END,
|
||||||
|
COALESCE(a,'')
|
||||||
|
FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`CONCAT(a)` varchar(9) CHARACTER SET ucs2 DEFAULT NULL,
|
||||||
|
`IFNULL(a,'')` varchar(9) CHARACTER SET ucs2 NOT NULL DEFAULT '',
|
||||||
|
`IF(a,a,'')` varchar(9) CHARACTER SET ucs2 DEFAULT NULL,
|
||||||
|
`CASE WHEN a THEN a ELSE '' END` varchar(9) CHARACTER SET ucs2 DEFAULT NULL,
|
||||||
|
`COALESCE(a,'')` varchar(9) CHARACTER SET ucs2 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT CONCAT_WS(1,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`CONCAT_WS(1,2,3)` varchar(3) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT INSERT(1133,3,0,22) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`INSERT(1133,3,0,22)` varchar(6) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LCASE(a)` varchar(9) CHARACTER SET ucs2 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT UCASE(a) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`UCASE(a)` varchar(9) CHARACTER SET ucs2 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT REPEAT(1,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`REPEAT(1,2)` varchar(2) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LEFT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LEFT(123,2)` varchar(2) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT RIGHT(123,2) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`RIGHT(123,2)` varchar(2) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT LTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`LTRIM(123)` varchar(3) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT RTRIM(123) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`RTRIM(123)` varchar(3) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT ELT(1,111,222,333) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`ELT(1,111,222,333)` varchar(3) CHARACTER SET ucs2 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT REPLACE(111,2,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`REPLACE(111,2,3)` varchar(3) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT SUBSTRING_INDEX(111,111,1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`SUBSTRING_INDEX(111,111,1)` varchar(3) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT MAKE_SET(111,222,3) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`MAKE_SET(111,222,3)` varchar(5) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT SOUNDEX(1) FROM t1;
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`SOUNDEX(1)` varchar(4) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
CREATE TABLE t2 AS SELECT EXPORT_SET(1,'Y','N','',8);
|
||||||
|
SHOW CREATE TABLE t2;
|
||||||
|
Table Create Table
|
||||||
|
t2 CREATE TABLE `t2` (
|
||||||
|
`EXPORT_SET(1,'Y','N','',8)` varchar(64) CHARACTER SET ucs2 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of Bug#54916
|
||||||
|
#
|
||||||
|
#
|
||||||
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
# Bug#52159 returning time type from function and empty left join causes debug assertion
|
||||||
#
|
#
|
||||||
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
CREATE FUNCTION f1() RETURNS TIME RETURN 1;
|
||||||
|
@ -611,6 +611,31 @@ utf16_bin 00610009
|
|||||||
utf16_bin 0061
|
utf16_bin 0061
|
||||||
utf16_bin 00610020
|
utf16_bin 00610020
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#55980 Character sets: supplementary character _bin ordering is wrong
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` varchar(1) CHARACTER SET utf16 COLLATE utf16_bin NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84);
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
0385 CE85
|
||||||
|
D800DF84 F0908E84
|
||||||
|
DBC0DC00 F4808080
|
||||||
|
FF9D EFBE9D
|
||||||
|
ALTER TABLE t1 ADD KEY(a);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
0385 CE85
|
||||||
|
D800DF84 F0908E84
|
||||||
|
DBC0DC00 F4808080
|
||||||
|
FF9D EFBE9D
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
select @@collation_connection;
|
select @@collation_connection;
|
||||||
@@collation_connection
|
@@collation_connection
|
||||||
utf16_bin
|
utf16_bin
|
||||||
|
9
mysql-test/r/ctype_utf16_def.result
Normal file
9
mysql-test/r/ctype_utf16_def.result
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
SHOW VARIABLES LIKE 'collation_server';
|
||||||
|
Variable_name Value
|
||||||
|
collation_server utf16_general_ci
|
||||||
|
SHOW VARIABLES LIKE 'character_set_server';
|
||||||
|
Variable_name Value
|
||||||
|
character_set_server utf16
|
||||||
|
SHOW VARIABLES LIKE 'ft_stopword_file';
|
||||||
|
Variable_name Value
|
||||||
|
ft_stopword_file (built-in)
|
@ -610,6 +610,31 @@ utf32_bin 0000006100000009
|
|||||||
utf32_bin 00000061
|
utf32_bin 00000061
|
||||||
utf32_bin 0000006100000020
|
utf32_bin 0000006100000020
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#55980 Character sets: supplementary character _bin ordering is wrong
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` varchar(1) CHARACTER SET utf32 COLLATE utf32_bin NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84);
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
00000385 CE85
|
||||||
|
0000FF9D EFBE9D
|
||||||
|
00010384 F0908E84
|
||||||
|
00100000 F4808080
|
||||||
|
ALTER TABLE t1 ADD KEY(a);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
00000385 CE85
|
||||||
|
0000FF9D EFBE9D
|
||||||
|
00010384 F0908E84
|
||||||
|
00100000 F4808080
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
select @@collation_connection;
|
select @@collation_connection;
|
||||||
@@collation_connection
|
@@collation_connection
|
||||||
utf32_bin
|
utf32_bin
|
||||||
@ -1091,5 +1116,41 @@ t2 CREATE TABLE `t2` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
|
# Bug#45263 utf32_general_ci, bad effects around CREATE TABLE AS SELECT
|
||||||
|
#
|
||||||
|
SET collation_connection=utf32_general_ci;
|
||||||
|
CREATE TABLE t1 AS SELECT HEX(0x00) AS my_col;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
my_col
|
||||||
|
00
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#55912 FORMAT with locale set fails for numbers < 1000
|
||||||
|
#
|
||||||
|
SET collation_connection=utf32_general_ci;
|
||||||
|
CREATE TABLE t1 AS SELECT format(123,2,'no_NO');
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`format(123,2,'no_NO')` varchar(37) CHARACTER SET utf32 NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
format(123,2,'no_NO')
|
||||||
|
123,00
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#42511 mysqld: ctype-ucs2.c:2044: my_strnncollsp_utf32: Assertion (tlen % 4) == 0' faied
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
b char(250) CHARACTER SET utf32,
|
||||||
|
key (b)
|
||||||
|
) ENGINE=MYISAM;
|
||||||
|
INSERT INTO t1 VALUES ('d'),('f');
|
||||||
|
SELECT * FROM t1 WHERE b BETWEEN 'a' AND 'z';
|
||||||
|
b
|
||||||
|
d
|
||||||
|
f
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -987,6 +987,31 @@ utf8mb4_bin 6109
|
|||||||
utf8mb4_bin 61
|
utf8mb4_bin 61
|
||||||
utf8mb4_bin 6120
|
utf8mb4_bin 6120
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#55980 Character sets: supplementary character _bin ordering is wrong
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`a` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84);
|
||||||
|
INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
CE85 CE85
|
||||||
|
EFBE9D EFBE9D
|
||||||
|
F0908E84 F0908E84
|
||||||
|
F4808080 F4808080
|
||||||
|
ALTER TABLE t1 ADD KEY(a);
|
||||||
|
SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a;
|
||||||
|
HEX(a) HEX(CONVERT(a USING utf8mb4))
|
||||||
|
CE85 CE85
|
||||||
|
EFBE9D EFBE9D
|
||||||
|
F0908E84 F0908E84
|
||||||
|
F4808080 F4808080
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
select @@collation_connection;
|
select @@collation_connection;
|
||||||
@@collation_connection
|
@@collation_connection
|
||||||
utf8mb4_bin
|
utf8mb4_bin
|
||||||
|
@ -345,3 +345,80 @@ CREATE TABLE t1 LIKE t2;
|
|||||||
ERROR 42S01: Table 't1' already exists
|
ERROR 42S01: Table 't1' already exists
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#54332 Deadlock with two connections doing LOCK TABLE+INSERT DELAYED
|
||||||
|
#
|
||||||
|
# This test is not supposed to work under --ps-protocol since
|
||||||
|
# INSERT DELAYED doesn't work under LOCK TABLES with this protocol.
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
CREATE TABLE t3 (a INT);
|
||||||
|
# Test 1: Using LOCK TABLE
|
||||||
|
# Connection con1
|
||||||
|
LOCK TABLE t1 WRITE;
|
||||||
|
# Connection default
|
||||||
|
LOCK TABLE t2 WRITE;
|
||||||
|
# Sending:
|
||||||
|
INSERT DELAYED INTO t1 VALUES (1);
|
||||||
|
# Connection con1
|
||||||
|
# Wait until INSERT DELAYED is blocked on table 't1'.
|
||||||
|
INSERT DELAYED INTO t2 VALUES (1);
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
UNLOCK TABLES;
|
||||||
|
# Connection default
|
||||||
|
# Reaping: INSERT DELAYED INTO t1 VALUES (1)
|
||||||
|
UNLOCK TABLES;
|
||||||
|
# Test 2: Using ALTER TABLE
|
||||||
|
START TRANSACTION;
|
||||||
|
SELECT * FROM t1 WHERE a=0;
|
||||||
|
a
|
||||||
|
# Connection con1
|
||||||
|
# Sending:
|
||||||
|
ALTER TABLE t1 COMMENT 'test';
|
||||||
|
# Connection default
|
||||||
|
# Wait until ALTER TABLE is blocked on table 't1'.
|
||||||
|
INSERT DELAYED INTO t1 VALUES (3);
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
COMMIT;
|
||||||
|
# Connection con1
|
||||||
|
# Reaping: ALTER TABLE t1 COMMENT 'test'
|
||||||
|
# Test 3: Using RENAME TABLE
|
||||||
|
# Connection default
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
# Connection con1
|
||||||
|
# Sending:
|
||||||
|
RENAME TABLE t1 to t5, t2 to t4;
|
||||||
|
# Connection default
|
||||||
|
# Wait until RENAME TABLE is blocked on table 't1'.
|
||||||
|
INSERT DELAYED INTO t1 VALUES (4);
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
COMMIT;
|
||||||
|
# Connection con1
|
||||||
|
# Reaping: RENAME TABLE t1 to t5, t2 to t4
|
||||||
|
# Connection default
|
||||||
|
# Reverting the renames
|
||||||
|
RENAME TABLE t5 to t1, t4 to t2;
|
||||||
|
# Test 4: Two INSERT DELAYED on the same table
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t2 VALUES (1);
|
||||||
|
# Connection con2
|
||||||
|
LOCK TABLE t1 WRITE, t2 WRITE;
|
||||||
|
# Connection con1
|
||||||
|
# Wait until LOCK TABLE is blocked on table 't2'.
|
||||||
|
INSERT DELAYED INTO t1 VALUES (5);
|
||||||
|
# Connection default
|
||||||
|
# Wait until INSERT DELAYED is blocked on table 't1'.
|
||||||
|
INSERT DELAYED INTO t1 VALUES (6);
|
||||||
|
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
|
||||||
|
COMMIT;
|
||||||
|
# Connection con2
|
||||||
|
# Reaping: LOCK TABLE t1 WRITE, t2 WRITE
|
||||||
|
UNLOCK TABLES;
|
||||||
|
# Connection con1
|
||||||
|
# Reaping: INSERT DELAYED INTO t1 VALUES (5)
|
||||||
|
# Connection con2
|
||||||
|
# Connection con1
|
||||||
|
# Connection default
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
@ -499,4 +499,13 @@ INDEX(a), INDEX(b), INDEX(c));
|
|||||||
INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9);
|
INSERT INTO t1 VALUES (1,2,3), (4,5,6), (7,8,9);
|
||||||
DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1;
|
DELETE FROM t1 WHERE a = 10 OR b = 20 ORDER BY c LIMIT 1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug #53034: Multiple-table DELETE statements not accepting
|
||||||
|
# "Access compatibility" syntax
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (id INT);
|
||||||
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
CREATE TABLE t3 LIKE t1;
|
||||||
|
DELETE FROM t1.*, test.t2.*, a.* USING t1, t2, t3 AS a;
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -54,8 +54,8 @@ text1 like 'teststring_%' ORDER BY text1;
|
|||||||
text1
|
text1
|
||||||
teststring
|
teststring
|
||||||
teststring
|
teststring
|
||||||
select concat('|', text1, '|') from t1 where text1='teststring' or text1 like 'teststring_%';
|
select concat('|', text1, '|') as c from t1 where text1='teststring' or text1 like 'teststring_%' order by c;
|
||||||
concat('|', text1, '|')
|
c
|
||||||
|teststring |
|
|teststring |
|
||||||
|teststring|
|
|teststring|
|
||||||
select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t';
|
select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t';
|
||||||
@ -105,11 +105,11 @@ select concat('|', text1, '|') from t1 where text1 like 'teststring_%';
|
|||||||
concat('|', text1, '|')
|
concat('|', text1, '|')
|
||||||
|teststring |
|
|teststring |
|
||||||
|teststring |
|
|teststring |
|
||||||
select concat('|', text1, '|') from t1 where text1='teststring' or text1 like 'teststring_%';
|
select concat('|', text1, '|') as c from t1 where text1='teststring' or text1 like 'teststring_%' order by c;
|
||||||
concat('|', text1, '|')
|
c
|
||||||
|teststring |
|
|teststring |
|
||||||
|teststring|
|
|
||||||
|teststring |
|
|teststring |
|
||||||
|
|teststring|
|
||||||
select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t';
|
select concat('|', text1, '|') from t1 where text1='teststring' or text1 > 'teststring\t';
|
||||||
concat('|', text1, '|')
|
concat('|', text1, '|')
|
||||||
|teststring|
|
|teststring|
|
||||||
@ -123,8 +123,8 @@ concat('|', text1, '|')
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)) pack_keys=0;
|
create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)) pack_keys=0;
|
||||||
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
||||||
select concat('|', text1, '|') from t1 where text1='teststring' or text1 like 'teststring_%';
|
select concat('|', text1, '|') as c from t1 where text1='teststring' or text1 like 'teststring_%' order by c;
|
||||||
concat('|', text1, '|')
|
c
|
||||||
|teststring |
|
|teststring |
|
||||||
|teststring|
|
|teststring|
|
||||||
select concat('|', text1, '|') from t1 where text1='teststring' or text1 >= 'teststring\t';
|
select concat('|', text1, '|') from t1 where text1='teststring' or text1 >= 'teststring\t';
|
||||||
@ -203,13 +203,13 @@ teststring
|
|||||||
teststring
|
teststring
|
||||||
select text1, length(text1) from t1 where text1='teststring' or text1 like 'teststring_%';
|
select text1, length(text1) from t1 where text1='teststring' or text1 like 'teststring_%';
|
||||||
text1 length(text1)
|
text1 length(text1)
|
||||||
teststring 11
|
|
||||||
teststring 10
|
teststring 10
|
||||||
|
teststring 11
|
||||||
teststring 11
|
teststring 11
|
||||||
select text1, length(text1) from t1 where text1='teststring' or text1 >= 'teststring\t';
|
select text1, length(text1) from t1 where text1='teststring' or text1 >= 'teststring\t';
|
||||||
text1 length(text1)
|
text1 length(text1)
|
||||||
teststring 11
|
|
||||||
teststring 10
|
teststring 10
|
||||||
|
teststring 11
|
||||||
teststring 11
|
teststring 11
|
||||||
select concat('|', text1, '|') from t1 order by text1;
|
select concat('|', text1, '|') from t1 order by text1;
|
||||||
concat('|', text1, '|')
|
concat('|', text1, '|')
|
||||||
|
@ -116,3 +116,22 @@ OK: create event: database does not exist
|
|||||||
delete from t1;
|
delete from t1;
|
||||||
commit work;
|
commit work;
|
||||||
drop database events_test;
|
drop database events_test;
|
||||||
|
#
|
||||||
|
# Bug#54105 assert in MDL_context::release_locks_stored_before
|
||||||
|
#
|
||||||
|
USE test;
|
||||||
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
|
DROP EVENT IF EXISTS e1;
|
||||||
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
CREATE EVENT e1 ON SCHEDULE EVERY 1 DAY DO SELECT 1;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES (1);
|
||||||
|
SAVEPOINT A;
|
||||||
|
SHOW CREATE EVENT e1;
|
||||||
|
Event sql_mode time_zone Create Event character_set_client collation_connection Database Collation
|
||||||
|
e1 SYSTEM CREATE DEFINER=`root`@`localhost` EVENT `e1` ON SCHEDULE EVERY 1 DAY STARTS '#' ON COMPLETION NOT PRESERVE ENABLE DO SELECT 1 latin1 latin1_swedish_ci latin1_swedish_ci
|
||||||
|
SELECT * FROM t2;
|
||||||
|
a
|
||||||
|
ROLLBACK WORK TO SAVEPOINT A;
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
@ -205,6 +205,51 @@ a
|
|||||||
insert into t2 (a) values (3);
|
insert into t2 (a) values (3);
|
||||||
# --> connection default;
|
# --> connection default;
|
||||||
unlock tables;
|
unlock tables;
|
||||||
|
#
|
||||||
|
# Check that "FLUSH TABLES <list> WITH READ LOCK" is
|
||||||
|
# compatible with active "FLUSH TABLES WITH READ LOCK".
|
||||||
|
# Vice versa it is not true, since tables read-locked by
|
||||||
|
# "FLUSH TABLES <list> WITH READ LOCK" can't be flushed.
|
||||||
|
flush tables with read lock;
|
||||||
|
# --> connection con1;
|
||||||
|
flush table t1 with read lock;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
unlock tables;
|
||||||
|
# --> connection default;
|
||||||
|
unlock tables;
|
||||||
|
#
|
||||||
|
# Check that FLUSH TABLES t1 WITH READ LOCK
|
||||||
|
# does not conflict with an existing FLUSH TABLES t2
|
||||||
|
# WITH READ LOCK.
|
||||||
|
#
|
||||||
|
flush table t1 with read lock;
|
||||||
|
# --> connection con1
|
||||||
|
flush table t2 with read lock;
|
||||||
|
unlock tables;
|
||||||
|
# --> connection default
|
||||||
|
unlock tables;
|
||||||
|
#
|
||||||
|
# Check that FLUSH TABLES t1 WITH READ LOCK
|
||||||
|
# does not conflict with SET GLOBAL read_only=1.
|
||||||
|
#
|
||||||
|
set global read_only=1;
|
||||||
|
# connection con1
|
||||||
|
flush table t1 with read lock;
|
||||||
|
unlock tables;
|
||||||
|
# connection default
|
||||||
|
set global read_only=0;
|
||||||
|
#
|
||||||
|
# Check that it's possible to read-lock
|
||||||
|
# tables locked with FLUSH TABLE <list> WITH READ LOCK.
|
||||||
|
#
|
||||||
|
flush tables t1, t2 with read lock;
|
||||||
|
# connection con1
|
||||||
|
lock table t1 read, t2 read;
|
||||||
|
unlock tables;
|
||||||
|
# connection default
|
||||||
|
unlock tables;
|
||||||
# --> connection con1
|
# --> connection con1
|
||||||
drop table t1, t2, t3;
|
drop table t1, t2, t3;
|
||||||
#
|
#
|
||||||
@ -234,3 +279,97 @@ drop temporary table v1;
|
|||||||
unlock tables;
|
unlock tables;
|
||||||
drop view v2, v3;
|
drop view v2, v3;
|
||||||
drop table t1, v1;
|
drop table t1, v1;
|
||||||
|
#
|
||||||
|
# FLUSH TABLES <list> WITH READ LOCK and HANDLER
|
||||||
|
#
|
||||||
|
drop table if exists t1;
|
||||||
|
create table t1 (a int, key a (a));
|
||||||
|
insert into t1 (a) values (1), (2), (3);
|
||||||
|
handler t1 open;
|
||||||
|
handler t1 read a next;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
handler t1 read a next;
|
||||||
|
a
|
||||||
|
2
|
||||||
|
flush tables t1 with read lock;
|
||||||
|
handler t1 read a next;
|
||||||
|
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
||||||
|
unlock tables;
|
||||||
|
#
|
||||||
|
# Sic: lost handler position.
|
||||||
|
#
|
||||||
|
handler t1 read a next;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
handler t1 close;
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Bug#52117 Pending FLUSH TALBES <list> aborts
|
||||||
|
# transactions unnecessarily.
|
||||||
|
#
|
||||||
|
drop table if exists t1;
|
||||||
|
# --> conection default
|
||||||
|
create table t1 (a int);
|
||||||
|
begin;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
# --> connection con1
|
||||||
|
#
|
||||||
|
# Issue a LOCK TABLE t1 READ. We could use HANDLER t1 OPEN
|
||||||
|
# or a long-running select -- anything that
|
||||||
|
# prevents FLUSH TABLE t1 from immediate completion would do.
|
||||||
|
#
|
||||||
|
lock table t1 read;
|
||||||
|
# --> connection con2
|
||||||
|
#
|
||||||
|
# FLUSH TABLE expels the table definition from the cache.
|
||||||
|
# Sending 'flush table t1'...
|
||||||
|
flush table t1;
|
||||||
|
# --> connection default
|
||||||
|
# Let flush table sync in.
|
||||||
|
select * from t1;
|
||||||
|
# --> connection con1
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
unlock tables;
|
||||||
|
# --> connection con2
|
||||||
|
# Reaping 'flush table t1'...
|
||||||
|
# --> connection default
|
||||||
|
# Reaping 'select * from t1'...
|
||||||
|
a
|
||||||
|
commit;
|
||||||
|
#
|
||||||
|
# Repeat the same test but with FLUSH TABLES
|
||||||
|
#
|
||||||
|
begin;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
# --> connection con1
|
||||||
|
#
|
||||||
|
# Issue a LOCK TABLE t1 READ.
|
||||||
|
#
|
||||||
|
lock table t1 read;
|
||||||
|
# --> connection con2
|
||||||
|
#
|
||||||
|
# FLUSH TABLES expels the table definition from the cache.
|
||||||
|
# Sending 'flush tables'...
|
||||||
|
flush tables;
|
||||||
|
# --> connection default
|
||||||
|
# Let flush table sync in.
|
||||||
|
select * from t1;
|
||||||
|
# --> connection con1
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
unlock tables;
|
||||||
|
# --> connection con2
|
||||||
|
# Reaping 'flush tables'...
|
||||||
|
# --> connection default
|
||||||
|
# Reaping 'select * from t1'...
|
||||||
|
a
|
||||||
|
commit;
|
||||||
|
# Cleanup
|
||||||
|
# --> connection con1
|
||||||
|
# --> connection con2
|
||||||
|
# --> connection default
|
||||||
|
drop table t1;
|
||||||
|
@ -1003,6 +1003,7 @@ SELECT 1 FROM
|
|||||||
1
|
1
|
||||||
1
|
1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
End of 5.0 tests
|
||||||
#
|
#
|
||||||
# Bug #52397: another crash with explain extended and group_concat
|
# Bug #52397: another crash with explain extended and group_concat
|
||||||
#
|
#
|
||||||
@ -1019,6 +1020,25 @@ Warnings:
|
|||||||
Note 1003 select 1 AS `1` from dual
|
Note 1003 select 1 AS `1` from dual
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
#
|
||||||
|
# Bug #54476: crash when group_concat and 'with rollup' in prepared statements
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
PREPARE stmt FROM "SELECT GROUP_CONCAT(t1.a ORDER BY t1.a) FROM t1 JOIN t1 t2 GROUP BY t1.a WITH ROLLUP";
|
||||||
|
EXECUTE stmt;
|
||||||
|
GROUP_CONCAT(t1.a ORDER BY t1.a)
|
||||||
|
1,1
|
||||||
|
2,2
|
||||||
|
1,1,2,2
|
||||||
|
EXECUTE stmt;
|
||||||
|
GROUP_CONCAT(t1.a ORDER BY t1.a)
|
||||||
|
1,1
|
||||||
|
2,2
|
||||||
|
1,1,2,2
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1;
|
||||||
|
End of 5.1 tests
|
||||||
DROP TABLE IF EXISTS t1, t2;
|
DROP TABLE IF EXISTS t1, t2;
|
||||||
CREATE TABLE t1 (a VARCHAR(6), b INT);
|
CREATE TABLE t1 (a VARCHAR(6), b INT);
|
||||||
CREATE TABLE t2 (a VARCHAR(6), b INT);
|
CREATE TABLE t2 (a VARCHAR(6), b INT);
|
||||||
|
@ -1713,9 +1713,20 @@ f1 f2 f3 f4 f1 = f2
|
|||||||
NULL NULL NULL NULL NULL
|
NULL NULL NULL NULL NULL
|
||||||
drop table t1;
|
drop table t1;
|
||||||
#
|
#
|
||||||
|
# Bug #54465: assert: field_types == 0 || field_types[field_pos] ==
|
||||||
|
# MYSQL_TYPE_LONGLONG
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
SELECT MAX((SELECT 1 FROM t1 ORDER BY @var LIMIT 1)) m FROM t1 t2, t1
|
||||||
|
ORDER BY t1.a;
|
||||||
|
m
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Bug#55648: Server crash on MIX/MAX on maximum time value
|
# Bug#55648: Server crash on MIN/MAX on maximum time value
|
||||||
#
|
#
|
||||||
CREATE TABLE t1(c1 TIME NOT NULL);
|
CREATE TABLE t1(c1 TIME NOT NULL);
|
||||||
INSERT INTO t1 VALUES('837:59:59');
|
INSERT INTO t1 VALUES('837:59:59');
|
||||||
@ -1725,3 +1736,13 @@ MAX(c1)
|
|||||||
838:59:59
|
838:59:59
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
# End of the bug#55648
|
# End of the bug#55648
|
||||||
|
#
|
||||||
|
# Bug#56120: Failed assertion on MIN/MAX on negative time value
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(c1 TIME NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES('-00:00:01');
|
||||||
|
SELECT MAX(c1),MIN(c1) FROM t1;
|
||||||
|
MAX(c1) MIN(c1)
|
||||||
|
-00:00:01 -00:00:01
|
||||||
|
DROP TABLE t1;
|
||||||
|
# End of the bug#56120
|
||||||
|
@ -186,3 +186,13 @@ MAX(IFNULL(CAST(c AS UNSIGNED), 0))
|
|||||||
12345678901234567890
|
12345678901234567890
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
#
|
||||||
|
# Bug#55077: Assertion failed: width > 0 && to != ((void *)0), file .\dtoa.c
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a LONGBLOB, b DOUBLE);
|
||||||
|
INSERT INTO t1 VALUES (NULL, 0), (NULL, 1);
|
||||||
|
SELECT IF(b, (SELECT a FROM t1 LIMIT 1), b) c FROM t1 GROUP BY c;
|
||||||
|
c
|
||||||
|
NULL
|
||||||
|
0
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -337,6 +337,21 @@ select connection_id() > 0;
|
|||||||
connection_id() > 0
|
connection_id() > 0
|
||||||
1
|
1
|
||||||
#
|
#
|
||||||
|
# Bug #54461: crash with longblob and union or update with subquery
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b LONGBLOB);
|
||||||
|
INSERT INTO t1 VALUES (1, '2'), (2, '3'), (3, '2');
|
||||||
|
SELECT DISTINCT LEAST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
|
||||||
|
LEAST(a, (SELECT b FROM t1 LIMIT 1))
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
|
||||||
|
GREATEST(a, (SELECT b FROM t1 LIMIT 1))
|
||||||
|
2
|
||||||
|
3
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# Bug #52165: Assertion failed: file .\dtoa.c, line 465
|
# Bug #52165: Assertion failed: file .\dtoa.c, line 465
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a SET('a'), b INT);
|
CREATE TABLE t1 (a SET('a'), b INT);
|
||||||
|
@ -2734,3 +2734,28 @@ format(123, 1, 'Non-existent-locale')
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1649 Unknown locale: 'Non-existent-locale'
|
Warning 1649 Unknown locale: 'Non-existent-locale'
|
||||||
End of 5.4 tests
|
End of 5.4 tests
|
||||||
|
#
|
||||||
|
# Start of 5.5 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Bug#55912 FORMAT with locale set fails for numbers < 1000
|
||||||
|
#
|
||||||
|
SELECT FORMAT(123.33, 2, 'no_NO'), FORMAT(1123.33, 2, 'no_NO');
|
||||||
|
FORMAT(123.33, 2, 'no_NO') FORMAT(1123.33, 2, 'no_NO')
|
||||||
|
123,33 1.123,33
|
||||||
|
SELECT FORMAT(12333e-2, 2, 'no_NO'), FORMAT(112333e-2, 2, 'no_NO');
|
||||||
|
FORMAT(12333e-2, 2, 'no_NO') FORMAT(112333e-2, 2, 'no_NO')
|
||||||
|
123,33 1.123,33
|
||||||
|
CREATE TABLE t1 AS SELECT format(123,2,'no_NO');
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`format(123,2,'no_NO')` varchar(37) NOT NULL DEFAULT ''
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
SELECT * FROM t1;
|
||||||
|
format(123,2,'no_NO')
|
||||||
|
123,00
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# End of 5.5 tests
|
||||||
|
#
|
||||||
|
@ -1305,4 +1305,12 @@ date_sub("0069-01-01 00:00:01",INTERVAL 2 SECOND)
|
|||||||
select date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND);
|
select date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND);
|
||||||
date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND)
|
date_sub("0169-01-01 00:00:01",INTERVAL 2 SECOND)
|
||||||
0168-12-31 23:59:59
|
0168-12-31 23:59:59
|
||||||
|
CREATE TABLE t1(a DOUBLE NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (0),(9.216e-096);
|
||||||
|
# should not crash
|
||||||
|
SELECT 1 FROM t1 ORDER BY @x:=makedate(a,a);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -1811,6 +1811,41 @@ MAX(t2.a)
|
|||||||
2
|
2
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
#
|
#
|
||||||
|
# Bug#55188: GROUP BY, GROUP_CONCAT and TEXT - inconsistent results
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a text, b varchar(10));
|
||||||
|
INSERT INTO t1 VALUES (repeat('1', 1300),'one'), (repeat('1', 1300),'two');
|
||||||
|
EXPLAIN
|
||||||
|
SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table t1
|
||||||
|
type ALL
|
||||||
|
possible_keys NULL
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 2
|
||||||
|
Extra Using filesort
|
||||||
|
SELECT SUBSTRING(a,1,10), LENGTH(a), GROUP_CONCAT(b) FROM t1 GROUP BY a;
|
||||||
|
SUBSTRING(a,1,10) LENGTH(a) GROUP_CONCAT(b)
|
||||||
|
1111111111 1300 one,two
|
||||||
|
EXPLAIN
|
||||||
|
SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
||||||
|
id 1
|
||||||
|
select_type SIMPLE
|
||||||
|
table t1
|
||||||
|
type ALL
|
||||||
|
possible_keys NULL
|
||||||
|
key NULL
|
||||||
|
key_len NULL
|
||||||
|
ref NULL
|
||||||
|
rows 2
|
||||||
|
Extra Using temporary; Using filesort
|
||||||
|
SELECT SUBSTRING(a,1,10), LENGTH(a) FROM t1 GROUP BY a;
|
||||||
|
SUBSTRING(a,1,10) LENGTH(a)
|
||||||
|
1111111111 1300
|
||||||
|
DROP TABLE t1;
|
||||||
# End of 5.1 tests
|
# End of 5.1 tests
|
||||||
#
|
#
|
||||||
# Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00
|
# Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00
|
||||||
|
60
mysql-test/r/handler_read_last.result
Normal file
60
mysql-test/r/handler_read_last.result
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (a INT, INDEX (a));
|
||||||
|
INSERT INTO t1 VALUES (),(),(),(),(),(),(),(),(),();
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a LIMIT 1;
|
||||||
|
a
|
||||||
|
NULL
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 1
|
||||||
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
|
Handler_read_next 0
|
||||||
|
Handler_read_prev 0
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 0
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a DESC LIMIT 1;
|
||||||
|
a
|
||||||
|
NULL
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 0
|
||||||
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
|
Handler_read_next 0
|
||||||
|
Handler_read_prev 0
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 0
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a LIMIT 3;
|
||||||
|
a
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 1
|
||||||
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
|
Handler_read_next 2
|
||||||
|
Handler_read_prev 0
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 0
|
||||||
|
FLUSH STATUS;
|
||||||
|
SELECT a FROM t1 ORDER BY a DESC LIMIT 3;
|
||||||
|
a
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
NULL
|
||||||
|
SHOW STATUS LIKE 'HANDLER_READ%';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_first 0
|
||||||
|
Handler_read_key 0
|
||||||
|
Handler_read_last 1
|
||||||
|
Handler_read_next 0
|
||||||
|
Handler_read_prev 2
|
||||||
|
Handler_read_rnd 0
|
||||||
|
Handler_read_rnd_next 0
|
||||||
|
DROP TABLE t1;
|
@ -89,3 +89,15 @@ UNIQUE_CONSTRAINT_NAME
|
|||||||
NULL
|
NULL
|
||||||
drop table t2;
|
drop table t2;
|
||||||
set foreign_key_checks = 1;
|
set foreign_key_checks = 1;
|
||||||
|
#
|
||||||
|
# Bug#55973 Assertion `thd->transaction.stmt.is_empty()'
|
||||||
|
# on CREATE TABLE .. SELECT I_S.PART
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
DROP VIEW IF EXISTS v1;
|
||||||
|
CREATE VIEW v1 AS SELECT 1;
|
||||||
|
CREATE TABLE t1 engine = InnoDB AS
|
||||||
|
SELECT * FROM information_schema.partitions
|
||||||
|
WHERE table_schema= 'test' AND table_name= 'v1';
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP VIEW v1;
|
||||||
|
@ -671,3 +671,18 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
# End of 5.4 tests
|
# End of 5.4 tests
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Bug#54106 assert in Protocol::end_statement,
|
||||||
|
# INSERT IGNORE ... SELECT ... UNION SELECT ...
|
||||||
|
#
|
||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
CREATE TABLE t1 (a INT);
|
||||||
|
INSERT INTO t1 (a, a) VALUES (1, 1);
|
||||||
|
ERROR 42000: Column 'a' specified twice
|
||||||
|
INSERT IGNORE t1 (a, a) VALUES (1, 1);
|
||||||
|
ERROR 42000: Column 'a' specified twice
|
||||||
|
INSERT IGNORE t1 (a, a) SELECT 1,1;
|
||||||
|
ERROR 42000: Column 'a' specified twice
|
||||||
|
INSERT IGNORE t1 (a, a) SELECT 1,1 UNION SELECT 2,2;
|
||||||
|
ERROR 42000: Column 'a' specified twice
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -694,6 +694,7 @@ show status like 'Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 1
|
Handler_read_first 1
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -854,6 +854,7 @@ show status like 'Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 0
|
Handler_read_key 0
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -1238,6 +1238,7 @@ show status like 'Handler_read%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 5
|
Handler_read_key 5
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 0
|
Handler_read_next 0
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -44,7 +44,7 @@ a abmon mon
|
|||||||
2006-12-01 Δεκ Δεκέμβριος
|
2006-12-01 Δεκ Δεκέμβριος
|
||||||
SELECT format(123456.789, 3, 'el_GR');
|
SELECT format(123456.789, 3, 'el_GR');
|
||||||
format(123456.789, 3, 'el_GR')
|
format(123456.789, 3, 'el_GR')
|
||||||
123456.789
|
123456,789
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
# Bug#46633 Obsolete Serbian locale name
|
# Bug#46633 Obsolete Serbian locale name
|
||||||
|
@ -2034,6 +2034,155 @@ set debug_sync='now SIGNAL go2';
|
|||||||
# Switching to connection 'default'.
|
# Switching to connection 'default'.
|
||||||
# Reaping ALTER. It should succeed and not produce ER_LOCK_DEADLOCK.
|
# Reaping ALTER. It should succeed and not produce ER_LOCK_DEADLOCK.
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# Now, test for a situation in which deadlock involves waiting not
|
||||||
|
# only in MDL subsystem but also for TDC. Such deadlocks should be
|
||||||
|
# successfully detected. If possible, they should be resolved without
|
||||||
|
# resorting to ER_LOCK_DEADLOCK error.
|
||||||
|
#
|
||||||
|
create table t1(i int);
|
||||||
|
create table t2(j int);
|
||||||
|
#
|
||||||
|
# First, let us check how we handle a simple scenario involving
|
||||||
|
# waits in MDL and TDC.
|
||||||
|
#
|
||||||
|
set debug_sync= 'RESET';
|
||||||
|
# Switching to connection 'deadlock_con1'.
|
||||||
|
# Start a statement, which will acquire SR metadata lock on t1, open it
|
||||||
|
# and then stop, before trying to acquire SW lock on t2 and opening it.
|
||||||
|
set debug_sync='open_tables_after_open_and_process_table SIGNAL parked WAIT_FOR go';
|
||||||
|
# Sending:
|
||||||
|
select * from t1 where i in (select j from t2 for update);
|
||||||
|
# Switching to connection 'deadlock_con2'.
|
||||||
|
# Wait till the above SELECT stops.
|
||||||
|
set debug_sync='now WAIT_FOR parked';
|
||||||
|
# The below FLUSH TABLES WITH READ LOCK should acquire
|
||||||
|
# SNW locks on t1 and t2 and wait till SELECT closes t1.
|
||||||
|
# Sending:
|
||||||
|
flush tables t1, t2 with read lock;
|
||||||
|
# Switching to connection 'deadlock_con3'.
|
||||||
|
# Wait until FLUSH TABLES WITH t1, t2 READ LOCK starts waiting
|
||||||
|
# for SELECT to close t1.
|
||||||
|
# Resume SELECT, so it tries to acquire SW lock on t1 and blocks,
|
||||||
|
# creating a deadlock. This deadlock should be detected and resolved
|
||||||
|
# by backing-off SELECT. As a result FTWRL should be able to finish.
|
||||||
|
set debug_sync='now SIGNAL go';
|
||||||
|
# Switching to connection 'deadlock_con2'.
|
||||||
|
# Reap FLUSH TABLES WITH READ LOCK.
|
||||||
|
unlock tables;
|
||||||
|
# Switching to connection 'deadlock_con1'.
|
||||||
|
# Reap SELECT.
|
||||||
|
i
|
||||||
|
#
|
||||||
|
# The same scenario with a slightly different order of events
|
||||||
|
# which emphasizes that setting correct deadlock detector weights
|
||||||
|
# for flush waits is important.
|
||||||
|
#
|
||||||
|
set debug_sync= 'RESET';
|
||||||
|
# Switching to connection 'deadlock_con2'.
|
||||||
|
set debug_sync='flush_tables_with_read_lock_after_acquire_locks SIGNAL parked WAIT_FOR go';
|
||||||
|
# The below FLUSH TABLES WITH READ LOCK should acquire
|
||||||
|
# SNW locks on t1 and t2 and wait on debug sync point.
|
||||||
|
# Sending:
|
||||||
|
flush tables t1, t2 with read lock;
|
||||||
|
# Switching to connection 'deadlock_con1'.
|
||||||
|
# Wait till FLUSH TABLE WITH READ LOCK stops.
|
||||||
|
set debug_sync='now WAIT_FOR parked';
|
||||||
|
# Start statement which will acquire SR metadata lock on t1, open
|
||||||
|
# it and then will block while trying to acquire SW lock on t2.
|
||||||
|
# Sending:
|
||||||
|
select * from t1 where i in (select j from t2 for update);
|
||||||
|
# Switching to connection 'deadlock_con3'.
|
||||||
|
# Wait till the above SELECT blocks.
|
||||||
|
# Resume FLUSH TABLES, so it tries to flush t1, thus creating
|
||||||
|
# a deadlock. This deadlock should be detected and resolved by
|
||||||
|
# backing-off SELECT. As a result FTWRL should be able to finish.
|
||||||
|
set debug_sync='now SIGNAL go';
|
||||||
|
# Switching to connection 'deadlock_con2'.
|
||||||
|
# Reap FLUSH TABLES WITH READ LOCK.
|
||||||
|
unlock tables;
|
||||||
|
# Switching to connection 'deadlock_con1'.
|
||||||
|
# Reap SELECT.
|
||||||
|
i
|
||||||
|
#
|
||||||
|
# Now a more complex scenario involving two connections
|
||||||
|
# waiting for MDL and one for TDC.
|
||||||
|
#
|
||||||
|
set debug_sync= 'RESET';
|
||||||
|
# Switching to connection 'deadlock_con1'.
|
||||||
|
# Start a statement which will acquire SR metadata lock on t2, open it
|
||||||
|
# and then stop, before trying to acquire SR on t1 and opening it.
|
||||||
|
set debug_sync='open_tables_after_open_and_process_table SIGNAL parked WAIT_FOR go';
|
||||||
|
# Sending:
|
||||||
|
select * from t2, t1;
|
||||||
|
# Switching to connection 'deadlock_con2'.
|
||||||
|
# Wait till the above SELECT stops.
|
||||||
|
set debug_sync='now WAIT_FOR parked';
|
||||||
|
# The below FLUSH TABLES WITH READ LOCK should acquire
|
||||||
|
# SNW locks on t2 and wait till SELECT closes t2.
|
||||||
|
# Sending:
|
||||||
|
flush tables t2 with read lock;
|
||||||
|
# Switching to connection 'deadlock_con3'.
|
||||||
|
# Wait until FLUSH TABLES WITH READ LOCK starts waiting
|
||||||
|
# for SELECT to close t2.
|
||||||
|
# The below DROP TABLES should acquire X lock on t1 and start
|
||||||
|
# waiting for X lock on t2.
|
||||||
|
# Sending:
|
||||||
|
drop tables t1, t2;
|
||||||
|
# Switching to connection 'default'.
|
||||||
|
# Wait until DROP TABLES starts waiting for X lock on t2.
|
||||||
|
# Resume SELECT, so it tries to acquire SR lock on t1 and blocks,
|
||||||
|
# creating a deadlock. This deadlock should be detected and resolved
|
||||||
|
# by backing-off SELECT. As a result, FTWRL should be able to finish.
|
||||||
|
set debug_sync='now SIGNAL go';
|
||||||
|
# Switching to connection 'deadlock_con2'.
|
||||||
|
# Reap FLUSH TABLES WITH READ LOCK.
|
||||||
|
# Unblock DROP TABLES.
|
||||||
|
unlock tables;
|
||||||
|
# Switching to connection 'deadlock_con3'.
|
||||||
|
# Reap DROP TABLES.
|
||||||
|
# Switching to connection 'deadlock_con1'.
|
||||||
|
# Reap SELECT. It should emit error about missing table.
|
||||||
|
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||||
|
# Switching to connection 'default'.
|
||||||
|
set debug_sync= 'RESET';
|
||||||
|
#
|
||||||
|
# Test for a scenario in which FLUSH TABLES <list> WITH READ LOCK
|
||||||
|
# used to erroneously release metadata locks.
|
||||||
|
#
|
||||||
|
drop tables if exists t1, t2;
|
||||||
|
set debug_sync= 'RESET';
|
||||||
|
create table t1(i int);
|
||||||
|
create table t2(j int);
|
||||||
|
# Switching to connection 'con2'.
|
||||||
|
set debug_sync='open_tables_after_open_and_process_table SIGNAL parked WAIT_FOR go';
|
||||||
|
# The below FLUSH TABLES <list> WITH READ LOCK should acquire
|
||||||
|
# SNW locks on t1 and t2, open table t1 and block on the debug
|
||||||
|
# sync point.
|
||||||
|
# Sending:
|
||||||
|
flush tables t1, t2 with read lock;
|
||||||
|
# Switching to connection 'con1'.
|
||||||
|
# Wait till FLUSH TABLES <list> WITH READ LOCK stops.
|
||||||
|
set debug_sync='now WAIT_FOR parked';
|
||||||
|
# Start a statement which will flush all tables and thus
|
||||||
|
# invalidate table t1 open by FLUSH TABLES <list> WITH READ LOCK.
|
||||||
|
# Sending:
|
||||||
|
flush tables;
|
||||||
|
# Switching to connection 'default'.
|
||||||
|
# Wait till the above FLUSH TABLES blocks.
|
||||||
|
# Resume FLUSH TABLES <list> WITH READ LOCK, so it tries to open t2
|
||||||
|
# discovers that its t1 is obsolete and tries to reopen all tables.
|
||||||
|
# Such reopen should not cause releasing of SNW metadata locks
|
||||||
|
# which would result in assertion failures.
|
||||||
|
set debug_sync='now SIGNAL go';
|
||||||
|
# Switching to connection 'con2'.
|
||||||
|
# Reap FLUSH TABLES <list> WITH READ LOCK.
|
||||||
|
unlock tables;
|
||||||
|
# Switching to connection 'con1'.
|
||||||
|
# Reap FLUSH TABLES.
|
||||||
|
# Clean-up.
|
||||||
|
# Switching to connection 'default'.
|
||||||
|
drop tables t1, t2;
|
||||||
set debug_sync= 'RESET';
|
set debug_sync= 'RESET';
|
||||||
#
|
#
|
||||||
# Test for bug #46748 "Assertion in MDL_context::wait_for_locks()
|
# Test for bug #46748 "Assertion in MDL_context::wait_for_locks()
|
||||||
|
@ -933,7 +933,8 @@ DROP TABLE tm1, t1, t2;
|
|||||||
CREATE TABLE t1(c1 INT);
|
CREATE TABLE t1(c1 INT);
|
||||||
CREATE TABLE t2 (c1 INT) ENGINE=MERGE UNION=(t1) INSERT_METHOD=FIRST;
|
CREATE TABLE t2 (c1 INT) ENGINE=MERGE UNION=(t1) INSERT_METHOD=FIRST;
|
||||||
CREATE TABLE IF NOT EXISTS t1 SELECT * FROM t2;
|
CREATE TABLE IF NOT EXISTS t1 SELECT * FROM t2;
|
||||||
ERROR HY000: You can't specify target table 't1' for update in FROM clause
|
Warnings:
|
||||||
|
Note 1050 Table 't1' already exists
|
||||||
DROP TABLE t1, t2;
|
DROP TABLE t1, t2;
|
||||||
CREATE TABLE t1 (id INT NOT NULL, ref INT NOT NULL, INDEX (id)) ENGINE=MyISAM;
|
CREATE TABLE t1 (id INT NOT NULL, ref INT NOT NULL, INDEX (id)) ENGINE=MyISAM;
|
||||||
CREATE TABLE t2 LIKE t1;
|
CREATE TABLE t2 LIKE t1;
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
SET @old_general_log= @@global.general_log;
|
SET @old_general_log= @@global.general_log;
|
||||||
|
SET @old_slow_query_log= @@global.slow_query_log;
|
||||||
ok
|
ok
|
||||||
|
|
||||||
# cat MYSQL_TMP_DIR/test_wl4435.out.log
|
# cat MYSQL_TMP_DIR/test_wl4435.out.log
|
||||||
@ -120,3 +121,4 @@ mysql_stmt_next_result(): 0; field_count: 0
|
|||||||
# ------------------------------------
|
# ------------------------------------
|
||||||
|
|
||||||
SET @@global.general_log= @old_general_log;
|
SET @@global.general_log= @old_general_log;
|
||||||
|
SET @@global.slow_query_log= @old_slow_query_log;
|
||||||
|
5
mysql-test/r/mysql_not_windows.result
Normal file
5
mysql-test/r/mysql_not_windows.result
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Bug #54466 client 5.5 built from source lacks "pager" support
|
||||||
|
a
|
||||||
|
1
|
||||||
|
|
||||||
|
End of tests
|
@ -28,7 +28,7 @@ SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
|
|||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
SET @@session.lc_time_names=0/*!*/;
|
SET @@session.lc_time_names=0/*!*/;
|
||||||
SET @@session.collation_database=DEFAULT/*!*/;
|
SET @@session.collation_database=DEFAULT/*!*/;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t03,t04
|
DROP TABLE IF EXISTS `t1`,`t2`,`t3`,`t4`,`t5`,`t03`,`t04` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
create table t1 (word varchar(20))
|
create table t1 (word varchar(20))
|
||||||
@ -229,7 +229,7 @@ SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/
|
|||||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||||
SET @@session.lc_time_names=0/*!*/;
|
SET @@session.lc_time_names=0/*!*/;
|
||||||
SET @@session.collation_database=DEFAULT/*!*/;
|
SET @@session.collation_database=DEFAULT/*!*/;
|
||||||
drop table if exists t1,t2,t3,t4,t5,t03,t04
|
DROP TABLE IF EXISTS `t1`,`t2`,`t3`,`t4`,`t5`,`t03`,`t04` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
create table t1 (word varchar(20))
|
create table t1 (word varchar(20))
|
||||||
@ -628,7 +628,7 @@ SET TIMESTAMP=1000000000/*!*/;
|
|||||||
COMMIT
|
COMMIT
|
||||||
/*!*/;
|
/*!*/;
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
drop table t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
DELIMITER ;
|
DELIMITER ;
|
||||||
# End of log file
|
# End of log file
|
||||||
|
@ -385,7 +385,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -567,7 +567,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -595,7 +595,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -673,7 +673,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -759,7 +759,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -806,7 +806,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -850,7 +850,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -894,7 +894,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -960,7 +960,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1004,7 +1004,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1070,7 +1070,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1114,7 +1114,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1180,7 +1180,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1224,7 +1224,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1290,7 +1290,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1334,7 +1334,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1378,7 +1378,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1439,7 +1439,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1483,7 +1483,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1527,7 +1527,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1572,7 +1572,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1616,7 +1616,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1660,7 +1660,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1704,7 +1704,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1748,7 +1748,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1792,7 +1792,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1836,7 +1836,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1880,7 +1880,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1924,7 +1924,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -1968,7 +1968,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2032,7 +2032,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2076,7 +2076,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2120,7 +2120,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2164,7 +2164,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2230,7 +2230,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2274,7 +2274,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2318,7 +2318,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2362,7 +2362,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2406,7 +2406,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2450,7 +2450,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2494,7 +2494,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2558,7 +2558,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2622,7 +2622,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2666,7 +2666,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2710,7 +2710,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2754,7 +2754,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2798,7 +2798,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2876,7 +2876,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2920,7 +2920,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -2998,7 +2998,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3076,7 +3076,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3120,7 +3120,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3198,7 +3198,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3276,7 +3276,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3320,7 +3320,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3364,7 +3364,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3408,7 +3408,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3452,7 +3452,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3496,7 +3496,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3540,7 +3540,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3584,7 +3584,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3628,7 +3628,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3672,7 +3672,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3716,7 +3716,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3760,7 +3760,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3804,7 +3804,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3848,7 +3848,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -3994,7 +3994,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1
|
DROP TABLE `t1` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
@ -4127,7 +4127,7 @@ COMMIT
|
|||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
DROP TABLE t1,t2
|
DROP TABLE `t1`,`t2` /* generated by server */
|
||||||
/*!*/;
|
/*!*/;
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Rotate to master-bin.000002 pos: 4
|
#010909 4:46:40 server id 1 end_log_pos # Rotate to master-bin.000002 pos: 4
|
||||||
|
@ -688,7 +688,7 @@ The following options may be given as the first argument:
|
|||||||
How many threads we should keep in a cache for reuse
|
How many threads we should keep in a cache for reuse
|
||||||
--thread-handling=name
|
--thread-handling=name
|
||||||
Define threads usage for handling queries, one of
|
Define threads usage for handling queries, one of
|
||||||
one-thread-per-connection, no-threads
|
one-thread-per-connection, no-threads, loaded-dynamically
|
||||||
--thread-stack=# The stack size for each thread
|
--thread-stack=# The stack size for each thread
|
||||||
--time-format=name The TIME format (ignored)
|
--time-format=name The TIME format (ignored)
|
||||||
--timed-mutexes Specify whether to time mutexes (only InnoDB mutexes are
|
--timed-mutexes Specify whether to time mutexes (only InnoDB mutexes are
|
||||||
@ -860,9 +860,9 @@ performance-schema-max-file-classes 50
|
|||||||
performance-schema-max-file-handles 32768
|
performance-schema-max-file-handles 32768
|
||||||
performance-schema-max-file-instances 10000
|
performance-schema-max-file-instances 10000
|
||||||
performance-schema-max-mutex-classes 200
|
performance-schema-max-mutex-classes 200
|
||||||
performance-schema-max-mutex-instances 1000
|
performance-schema-max-mutex-instances 1000000
|
||||||
performance-schema-max-rwlock-classes 20
|
performance-schema-max-rwlock-classes 30
|
||||||
performance-schema-max-rwlock-instances 1000
|
performance-schema-max-rwlock-instances 1000000
|
||||||
performance-schema-max-table-handles 100000
|
performance-schema-max-table-handles 100000
|
||||||
performance-schema-max-table-instances 50000
|
performance-schema-max-table-instances 50000
|
||||||
performance-schema-max-thread-classes 50
|
performance-schema-max-thread-classes 50
|
||||||
|
@ -692,7 +692,7 @@ The following options may be given as the first argument:
|
|||||||
How many threads we should keep in a cache for reuse
|
How many threads we should keep in a cache for reuse
|
||||||
--thread-handling=name
|
--thread-handling=name
|
||||||
Define threads usage for handling queries, one of
|
Define threads usage for handling queries, one of
|
||||||
one-thread-per-connection, no-threads
|
one-thread-per-connection, no-threads, loaded-dynamically
|
||||||
--thread-stack=# The stack size for each thread
|
--thread-stack=# The stack size for each thread
|
||||||
--time-format=name The TIME format (ignored)
|
--time-format=name The TIME format (ignored)
|
||||||
--timed-mutexes Specify whether to time mutexes (only InnoDB mutexes are
|
--timed-mutexes Specify whether to time mutexes (only InnoDB mutexes are
|
||||||
@ -864,9 +864,9 @@ performance-schema-max-file-classes 50
|
|||||||
performance-schema-max-file-handles 32768
|
performance-schema-max-file-handles 32768
|
||||||
performance-schema-max-file-instances 10000
|
performance-schema-max-file-instances 10000
|
||||||
performance-schema-max-mutex-classes 200
|
performance-schema-max-mutex-classes 200
|
||||||
performance-schema-max-mutex-instances 1000
|
performance-schema-max-mutex-instances 1000000
|
||||||
performance-schema-max-rwlock-classes 20
|
performance-schema-max-rwlock-classes 30
|
||||||
performance-schema-max-rwlock-instances 1000
|
performance-schema-max-rwlock-instances 1000000
|
||||||
performance-schema-max-table-handles 100000
|
performance-schema-max-table-handles 100000
|
||||||
performance-schema-max-table-instances 50000
|
performance-schema-max-table-instances 50000
|
||||||
performance-schema-max-thread-classes 50
|
performance-schema-max-thread-classes 50
|
||||||
|
@ -21,23 +21,17 @@ Table Op Msg_type Msg_text
|
|||||||
test.t1 repair Error Unknown storage engine 'partition'
|
test.t1 repair Error Unknown storage engine 'partition'
|
||||||
test.t1 repair error Corrupt
|
test.t1 repair error Corrupt
|
||||||
ALTER TABLE t1 REPAIR PARTITION ALL;
|
ALTER TABLE t1 REPAIR PARTITION ALL;
|
||||||
Table Op Msg_type Msg_text
|
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
|
||||||
test.t1 repair Error Unknown storage engine 'partition'
|
|
||||||
test.t1 repair error Corrupt
|
|
||||||
ALTER TABLE t1 CHECK PARTITION ALL;
|
ALTER TABLE t1 CHECK PARTITION ALL;
|
||||||
Table Op Msg_type Msg_text
|
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
|
||||||
test.t1 check Error Unknown storage engine 'partition'
|
|
||||||
test.t1 check error Corrupt
|
|
||||||
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
|
ALTER TABLE t1 OPTIMIZE PARTITION ALL;
|
||||||
Table Op Msg_type Msg_text
|
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
|
||||||
test.t1 optimize Error Unknown storage engine 'partition'
|
|
||||||
test.t1 optimize error Corrupt
|
|
||||||
ALTER TABLE t1 ANALYZE PARTITION ALL;
|
ALTER TABLE t1 ANALYZE PARTITION ALL;
|
||||||
Table Op Msg_type Msg_text
|
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
|
||||||
test.t1 analyze Error Unknown storage engine 'partition'
|
|
||||||
test.t1 analyze error Corrupt
|
|
||||||
ALTER TABLE t1 REBUILD PARTITION ALL;
|
ALTER TABLE t1 REBUILD PARTITION ALL;
|
||||||
ERROR 42000: Unknown storage engine 'partition'
|
ERROR 42000: Unknown storage engine 'partition'
|
||||||
|
ALTER TABLE t1 TRUNCATE PARTITION ALL;
|
||||||
|
ERROR HY000: The 'partitioning' feature is disabled; you need MySQL built with '--with-plugin-partition' to have it working
|
||||||
ALTER TABLE t1 ENGINE Memory;
|
ALTER TABLE t1 ENGINE Memory;
|
||||||
ERROR 42000: Unknown storage engine 'partition'
|
ERROR 42000: Unknown storage engine 'partition'
|
||||||
ALTER TABLE t1 ADD (new INT);
|
ALTER TABLE t1 ADD (new INT);
|
||||||
|
@ -424,6 +424,7 @@ SHOW STATUS LIKE "handler_read%";
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 6
|
Handler_read_key 6
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -359,6 +359,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -377,6 +378,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 2
|
Handler_read_key 2
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 4
|
Handler_read_next 4
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -407,6 +409,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -423,6 +426,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -439,6 +443,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
@ -455,6 +460,7 @@ SHOW STATUS LIKE 'Handler_read_%';
|
|||||||
Variable_name Value
|
Variable_name Value
|
||||||
Handler_read_first 0
|
Handler_read_first 0
|
||||||
Handler_read_key 1
|
Handler_read_key 1
|
||||||
|
Handler_read_last 0
|
||||||
Handler_read_next 2
|
Handler_read_next 2
|
||||||
Handler_read_prev 0
|
Handler_read_prev 0
|
||||||
Handler_read_rnd 0
|
Handler_read_rnd 0
|
||||||
|
@ -3,7 +3,7 @@ FLUSH TABLES;
|
|||||||
SELECT * FROM t1;
|
SELECT * FROM t1;
|
||||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||||
TRUNCATE TABLE t1;
|
TRUNCATE TABLE t1;
|
||||||
ERROR HY000: The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||||
ANALYZE TABLE t1;
|
ANALYZE TABLE t1;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 analyze Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
test.t1 analyze Error The MySQL server is running with the --skip-partition option so it cannot execute this statement
|
||||||
|
@ -1,5 +1,103 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
#
|
#
|
||||||
|
# Bug#54747: Deadlock between REORGANIZE PARTITION and
|
||||||
|
# SELECT is not detected
|
||||||
|
#
|
||||||
|
SET @old_innodb_thread_concurrency:= @@innodb_thread_concurrency;
|
||||||
|
SET GLOBAL innodb_thread_concurrency = 1;
|
||||||
|
CREATE TABLE t1
|
||||||
|
(user_num BIGINT,
|
||||||
|
hours SMALLINT,
|
||||||
|
KEY user_num (user_num))
|
||||||
|
ENGINE = InnoDB
|
||||||
|
PARTITION BY RANGE COLUMNS (hours)
|
||||||
|
(PARTITION hour_003 VALUES LESS THAN (3),
|
||||||
|
PARTITION hour_004 VALUES LESS THAN (4),
|
||||||
|
PARTITION hour_005 VALUES LESS THAN (5),
|
||||||
|
PARTITION hour_last VALUES LESS THAN (MAXVALUE));
|
||||||
|
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
|
||||||
|
BEGIN;
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
# con1
|
||||||
|
# SEND a ALTER PARTITION which waits on the ongoing transaction.
|
||||||
|
ALTER TABLE t1
|
||||||
|
REORGANIZE PARTITION hour_003, hour_004 INTO
|
||||||
|
(PARTITION oldest VALUES LESS THAN (4));
|
||||||
|
# Connection default wait until the ALTER is in 'waiting for table...'
|
||||||
|
# state and then continue the transaction by trying a SELECT
|
||||||
|
SELECT COUNT(*) FROM t1;
|
||||||
|
COUNT(*)
|
||||||
|
5
|
||||||
|
COMMIT;
|
||||||
|
# con1, reaping ALTER.
|
||||||
|
# Disconnecting con1 and switching to default. Cleaning up.
|
||||||
|
SET GLOBAL innodb_thread_concurrency = @old_innodb_thread_concurrency;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#50418: DROP PARTITION does not interact with transactions
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT AUTO_INCREMENT NOT NULL,
|
||||||
|
name CHAR(50) NOT NULL,
|
||||||
|
myDate DATE NOT NULL,
|
||||||
|
PRIMARY KEY (id, myDate),
|
||||||
|
INDEX idx_date (myDate)
|
||||||
|
) ENGINE=InnoDB
|
||||||
|
PARTITION BY RANGE ( TO_DAYS(myDate) ) (
|
||||||
|
PARTITION p0 VALUES LESS THAN (734028),
|
||||||
|
PARTITION p1 VALUES LESS THAN (734029),
|
||||||
|
PARTITION p2 VALUES LESS THAN (734030),
|
||||||
|
PARTITION p3 VALUES LESS THAN MAXVALUE
|
||||||
|
) ;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(NULL, 'Lachlan', '2009-09-13'),
|
||||||
|
(NULL, 'Clint', '2009-09-13'),
|
||||||
|
(NULL, 'John', '2009-09-14'),
|
||||||
|
(NULL, 'Dave', '2009-09-14'),
|
||||||
|
(NULL, 'Jeremy', '2009-09-15'),
|
||||||
|
(NULL, 'Scott', '2009-09-15'),
|
||||||
|
(NULL, 'Jeff', '2009-09-16'),
|
||||||
|
(NULL, 'Joe', '2009-09-16');
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
SELECT * FROM t1 FOR UPDATE;
|
||||||
|
id name myDate
|
||||||
|
1 Lachlan 2009-09-13
|
||||||
|
2 Clint 2009-09-13
|
||||||
|
3 John 2009-09-14
|
||||||
|
4 Dave 2009-09-14
|
||||||
|
5 Jeremy 2009-09-15
|
||||||
|
6 Scott 2009-09-15
|
||||||
|
7 Jeff 2009-09-16
|
||||||
|
8 Joe 2009-09-16
|
||||||
|
UPDATE t1 SET name = 'Mattias' WHERE id = 7;
|
||||||
|
SELECT * FROM t1 WHERE id = 7;
|
||||||
|
id name myDate
|
||||||
|
7 Mattias 2009-09-16
|
||||||
|
# Connection con1
|
||||||
|
SET lock_wait_timeout = 1;
|
||||||
|
# After the patch it will wait and fail on timeout.
|
||||||
|
ALTER TABLE t1 DROP PARTITION p3;
|
||||||
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
Error 1205 Lock wait timeout exceeded; try restarting transaction
|
||||||
|
# Connection default
|
||||||
|
SELECT * FROM t1;
|
||||||
|
id name myDate
|
||||||
|
1 Lachlan 2009-09-13
|
||||||
|
2 Clint 2009-09-13
|
||||||
|
3 John 2009-09-14
|
||||||
|
4 Dave 2009-09-14
|
||||||
|
5 Jeremy 2009-09-15
|
||||||
|
6 Scott 2009-09-15
|
||||||
|
7 Mattias 2009-09-16
|
||||||
|
8 Joe 2009-09-16
|
||||||
|
# No changes.
|
||||||
|
COMMIT;
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
# Bug#51830: Incorrect partition pruning on range partition (regression)
|
# Bug#51830: Incorrect partition pruning on range partition (regression)
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a INT NOT NULL)
|
CREATE TABLE t1 (a INT NOT NULL)
|
||||||
|
16
mysql-test/r/partition_not_blackhole.result
Normal file
16
mysql-test/r/partition_not_blackhole.result
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
DROP TABLE IF EXISTS t1;
|
||||||
|
#
|
||||||
|
# Bug#46086: crash when dropping a partitioned table and
|
||||||
|
# the original engine is disabled
|
||||||
|
# Copy a .frm and .par file which was created with:
|
||||||
|
# create table `t1` (`id` int primary key) engine=blackhole
|
||||||
|
# partition by key () partitions 1;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
t1
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
ERROR HY000: Incorrect information in file: './test/t1.frm'
|
||||||
|
DROP TABLE t1;
|
||||||
|
ERROR 42S02: Unknown table 't1'
|
||||||
|
t1.frm
|
||||||
|
t1.par
|
@ -938,3 +938,47 @@ select sum(count) from t2 ch where ch.defid in (50,52) and ch.day between 200703
|
|||||||
sum(count)
|
sum(count)
|
||||||
579
|
579
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# Bug#50939: Loose Index Scan unduly relies on engine to remember range
|
||||||
|
# endpoints
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
a INT,
|
||||||
|
b INT,
|
||||||
|
KEY ( a, b )
|
||||||
|
) PARTITION BY HASH (a) PARTITIONS 1;
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
a INT,
|
||||||
|
b INT,
|
||||||
|
KEY ( a, b )
|
||||||
|
);
|
||||||
|
INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3), (4, 4), (5, 5);
|
||||||
|
INSERT INTO t1 SELECT a + 5, b + 5 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 10, b + 10 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 20, b + 20 FROM t1;
|
||||||
|
INSERT INTO t1 SELECT a + 40, b + 40 FROM t1;
|
||||||
|
INSERT INTO t2 SELECT * FROM t1;
|
||||||
|
# plans should be identical
|
||||||
|
EXPLAIN SELECT a, MAX(b) FROM t1 WHERE a IN (10,100) GROUP BY a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t1 range a a 5 NULL 1 Using where; Using index for group-by
|
||||||
|
EXPLAIN SELECT a, MAX(b) FROM t2 WHERE a IN (10,100) GROUP BY a;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE t2 range a a 5 NULL 2 Using where; Using index for group-by
|
||||||
|
FLUSH status;
|
||||||
|
SELECT a, MAX(b) FROM t1 WHERE a IN (10, 100) GROUP BY a;
|
||||||
|
a MAX(b)
|
||||||
|
10 10
|
||||||
|
# Should be no more than 4 reads.
|
||||||
|
SHOW status LIKE 'handler_read_key';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_key 4
|
||||||
|
FLUSH status;
|
||||||
|
SELECT a, MAX(b) FROM t2 WHERE a IN (10, 100) GROUP BY a;
|
||||||
|
a MAX(b)
|
||||||
|
10 10
|
||||||
|
# Should be no more than 4 reads.
|
||||||
|
SHOW status LIKE 'handler_read_key';
|
||||||
|
Variable_name Value
|
||||||
|
Handler_read_key 4
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user