mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge 10.2 into 10.3
This commit is contained in:
@ -181,6 +181,12 @@ IF(UNIX)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON)
|
OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON)
|
||||||
|
|
||||||
|
IF (WITHOUT_SERVER)
|
||||||
|
SET (SKIP_COMPONENTS "Server|IniFiles|SuportFiles|Readme")
|
||||||
|
ELSE()
|
||||||
|
SET (SKIP_COMPONENTS "N-O-N-E")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
OPTION(NOT_FOR_DISTRIBUTION "Allow linking with GPLv2-incompatible system libraries. Only set it you never plan to distribute the resulting binaries" OFF)
|
OPTION(NOT_FOR_DISTRIBUTION "Allow linking with GPLv2-incompatible system libraries. Only set it you never plan to distribute the resulting binaries" OFF)
|
||||||
|
|
||||||
INCLUDE(check_compiler_flag)
|
INCLUDE(check_compiler_flag)
|
||||||
|
@ -82,7 +82,7 @@ ulong bytes_sent = 0L, bytes_received = 0L;
|
|||||||
ulong mysqld_net_retry_count = 10L;
|
ulong mysqld_net_retry_count = 10L;
|
||||||
ulong open_files_limit;
|
ulong open_files_limit;
|
||||||
ulong opt_binlog_rows_event_max_size;
|
ulong opt_binlog_rows_event_max_size;
|
||||||
uint test_flags = 0;
|
ulonglong test_flags = 0;
|
||||||
static uint opt_protocol= 0;
|
static uint opt_protocol= 0;
|
||||||
static FILE *result_file;
|
static FILE *result_file;
|
||||||
static char *result_file_name= 0;
|
static char *result_file_name= 0;
|
||||||
|
@ -46,6 +46,10 @@ MACRO(CHECK_DTRACE)
|
|||||||
AND NOT CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
AND NOT CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||||
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
|
SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
# On GNU/Hurd, dtrace is not supported
|
||||||
|
IF(DTRACE AND CMAKE_SYSTEM_NAME MATCHES "GNU")
|
||||||
|
SET(ENABLE_DTRACE OFF CACHE BOOL "Disable dtrace")
|
||||||
|
ENDIF()
|
||||||
SET(HAVE_DTRACE ${ENABLE_DTRACE})
|
SET(HAVE_DTRACE ${ENABLE_DTRACE})
|
||||||
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
|
@ -115,7 +115,12 @@ FUNCTION(INSTALL_SCRIPT)
|
|||||||
SET(COMP)
|
SET(COMP)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
IF (COMP MATCHES ${SKIP_COMPONENTS})
|
||||||
|
RETURN()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
INSTALL(PROGRAMS ${script} DESTINATION ${ARG_DESTINATION} ${COMP})
|
INSTALL(PROGRAMS ${script} DESTINATION ${ARG_DESTINATION} ${COMP})
|
||||||
|
|
||||||
INSTALL_MANPAGE(${script})
|
INSTALL_MANPAGE(${script})
|
||||||
ENDFUNCTION()
|
ENDFUNCTION()
|
||||||
|
|
||||||
@ -132,6 +137,10 @@ FUNCTION(INSTALL_DOCUMENTATION)
|
|||||||
SET(destination ${INSTALL_DOCDIR})
|
SET(destination ${INSTALL_DOCDIR})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
IF (ARG_COMPONENT MATCHES ${SKIP_COMPONENTS})
|
||||||
|
RETURN()
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
STRING(TOUPPER ${ARG_COMPONENT} COMPUP)
|
STRING(TOUPPER ${ARG_COMPONENT} COMPUP)
|
||||||
IF(CPACK_COMPONENT_${COMPUP}_GROUP)
|
IF(CPACK_COMPONENT_${COMPUP}_GROUP)
|
||||||
SET(group ${CPACK_COMPONENT_${COMPUP}_GROUP})
|
SET(group ${CPACK_COMPONENT_${COMPUP}_GROUP})
|
||||||
|
@ -75,6 +75,9 @@ FUNCTION (MYSQL_ADD_EXECUTABLE)
|
|||||||
ELSE()
|
ELSE()
|
||||||
SET(COMP COMPONENT Client)
|
SET(COMP COMPONENT Client)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
IF (COMP MATCHES ${SKIP_COMPONENTS})
|
||||||
|
RETURN()
|
||||||
|
ENDIF()
|
||||||
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP})
|
MYSQL_INSTALL_TARGETS(${target} DESTINATION ${ARG_DESTINATION} ${COMP})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDFUNCTION()
|
ENDFUNCTION()
|
||||||
|
@ -77,6 +77,9 @@ IF(NOT VERSION)
|
|||||||
SET(DEFAULT_MACHINE "i386")
|
SET(DEFAULT_MACHINE "i386")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "GNU")
|
||||||
|
SET(DEFAULT_PLATFORM "GNU")
|
||||||
|
SET(DEFAULT_MACHINE "i386")
|
||||||
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||||
IF(CMAKE_OSX_DEPLOYMENT_TARGET)
|
IF(CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||||
SET(DEFAULT_PLATFORM "osx${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
SET(DEFAULT_PLATFORM "osx${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||||
|
@ -471,6 +471,21 @@ struct datafile_cur_t {
|
|||||||
size_t buf_size;
|
size_t buf_size;
|
||||||
size_t buf_read;
|
size_t buf_read;
|
||||||
size_t buf_offset;
|
size_t buf_offset;
|
||||||
|
|
||||||
|
explicit datafile_cur_t(const char* filename = NULL) :
|
||||||
|
file(), thread_n(0), orig_buf(NULL), buf(NULL), buf_size(0),
|
||||||
|
buf_read(0), buf_offset(0)
|
||||||
|
{
|
||||||
|
memset(rel_path, 0, sizeof rel_path);
|
||||||
|
if (filename) {
|
||||||
|
strncpy(abs_path, filename, sizeof abs_path);
|
||||||
|
abs_path[(sizeof abs_path) - 1] = 0;
|
||||||
|
} else {
|
||||||
|
abs_path[0] = '\0';
|
||||||
|
}
|
||||||
|
rel_path[0] = '\0';
|
||||||
|
memset(&statinfo, 0, sizeof statinfo);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static
|
static
|
||||||
@ -489,9 +504,7 @@ datafile_open(const char *file, datafile_cur_t *cursor, uint thread_n)
|
|||||||
{
|
{
|
||||||
bool success;
|
bool success;
|
||||||
|
|
||||||
memset(cursor, 0, sizeof(datafile_cur_t));
|
new (cursor) datafile_cur_t(file);
|
||||||
|
|
||||||
strncpy(cursor->abs_path, file, sizeof(cursor->abs_path));
|
|
||||||
|
|
||||||
/* Get the relative path for the destination tablespace name, i.e. the
|
/* Get the relative path for the destination tablespace name, i.e. the
|
||||||
one that can be appended to the backup root directory. Non-system
|
one that can be appended to the backup root directory. Non-system
|
||||||
@ -630,11 +643,14 @@ static
|
|||||||
int
|
int
|
||||||
mkdirp(const char *pathname, int Flags, myf MyFlags)
|
mkdirp(const char *pathname, int Flags, myf MyFlags)
|
||||||
{
|
{
|
||||||
char parent[PATH_MAX], *p;
|
char *parent, *p;
|
||||||
|
int len = strlen(pathname) + 1;
|
||||||
|
|
||||||
/* make a parent directory path */
|
/* make a parent directory path */
|
||||||
strncpy(parent, pathname, sizeof(parent));
|
if (!(parent= (char *)malloc(len)))
|
||||||
parent[sizeof(parent) - 1] = 0;
|
return(-1);
|
||||||
|
strncpy(parent, pathname, len);
|
||||||
|
parent[len-1]= 0;
|
||||||
|
|
||||||
for (p = parent + strlen(parent);
|
for (p = parent + strlen(parent);
|
||||||
!is_path_separator(*p) && p != parent; p--);
|
!is_path_separator(*p) && p != parent; p--);
|
||||||
@ -643,19 +659,23 @@ mkdirp(const char *pathname, int Flags, myf MyFlags)
|
|||||||
|
|
||||||
/* try to make parent directory */
|
/* try to make parent directory */
|
||||||
if (p != parent && mkdirp(parent, Flags, MyFlags) != 0) {
|
if (p != parent && mkdirp(parent, Flags, MyFlags) != 0) {
|
||||||
|
free(parent);
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* make this one if parent has been made */
|
/* make this one if parent has been made */
|
||||||
if (my_mkdir(pathname, Flags, MyFlags) == 0) {
|
if (my_mkdir(pathname, Flags, MyFlags) == 0) {
|
||||||
|
free(parent);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if it already exists that is fine */
|
/* if it already exists that is fine */
|
||||||
if (errno == EEXIST) {
|
if (errno == EEXIST) {
|
||||||
|
free(parent);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(parent);
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -665,17 +685,24 @@ bool
|
|||||||
equal_paths(const char *first, const char *second)
|
equal_paths(const char *first, const char *second)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_REALPATH
|
#ifdef HAVE_REALPATH
|
||||||
char real_first[PATH_MAX];
|
char *real_first, *real_second;
|
||||||
char real_second[PATH_MAX];
|
int result;
|
||||||
|
|
||||||
if (realpath(first, real_first) == NULL) {
|
real_first = realpath(first, 0);
|
||||||
return false;
|
if (real_first == NULL) {
|
||||||
}
|
|
||||||
if (realpath(second, real_second) == NULL) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (strcmp(real_first, real_second) == 0);
|
real_second = realpath(second, 0);
|
||||||
|
if (real_second == NULL) {
|
||||||
|
free(real_first);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = strcmp(real_first, real_second);
|
||||||
|
free(real_first);
|
||||||
|
free(real_second);
|
||||||
|
return result == 0;
|
||||||
#else
|
#else
|
||||||
return strcmp(first, second) == 0;
|
return strcmp(first, second) == 0;
|
||||||
#endif
|
#endif
|
||||||
|
@ -75,8 +75,7 @@ xb_write_galera_info(bool incremental_prepare)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&xid, 0, sizeof(xid));
|
xid.null();
|
||||||
xid.formatID = -1;
|
|
||||||
|
|
||||||
if (!trx_rseg_read_wsrep_checkpoint(xid)) {
|
if (!trx_rseg_read_wsrep_checkpoint(xid)) {
|
||||||
|
|
||||||
|
@ -1363,7 +1363,7 @@ static int prepare_export()
|
|||||||
// which is* unfortunately* still necessary to get mysqld up
|
// which is* unfortunately* still necessary to get mysqld up
|
||||||
if (strncmp(orig_argv1,"--defaults-file=",16) == 0)
|
if (strncmp(orig_argv1,"--defaults-file=",16) == 0)
|
||||||
{
|
{
|
||||||
sprintf(cmdline,
|
snprintf(cmdline, sizeof cmdline,
|
||||||
IF_WIN("\"","") "\"%s\" --mysqld \"%s\" "
|
IF_WIN("\"","") "\"%s\" --mysqld \"%s\" "
|
||||||
" --defaults-extra-file=./backup-my.cnf --defaults-group-suffix=%s --datadir=."
|
" --defaults-extra-file=./backup-my.cnf --defaults-group-suffix=%s --datadir=."
|
||||||
" --innodb --innodb-fast-shutdown=0"
|
" --innodb --innodb-fast-shutdown=0"
|
||||||
|
@ -370,7 +370,7 @@ typedef int (*my_charset_conv_mb_wc)(CHARSET_INFO *, my_wc_t *,
|
|||||||
typedef int (*my_charset_conv_wc_mb)(CHARSET_INFO *, my_wc_t,
|
typedef int (*my_charset_conv_wc_mb)(CHARSET_INFO *, my_wc_t,
|
||||||
uchar *, uchar *);
|
uchar *, uchar *);
|
||||||
typedef size_t (*my_charset_conv_case)(CHARSET_INFO *,
|
typedef size_t (*my_charset_conv_case)(CHARSET_INFO *,
|
||||||
char *, size_t, char *, size_t);
|
const char *, size_t, char *, size_t);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A structure to return the statistics of a native string copying,
|
A structure to return the statistics of a native string copying,
|
||||||
@ -725,9 +725,11 @@ size_t my_copy_fix_mb(CHARSET_INFO *cs,
|
|||||||
/* Functions for 8bit */
|
/* Functions for 8bit */
|
||||||
extern size_t my_caseup_str_8bit(CHARSET_INFO *, char *);
|
extern size_t my_caseup_str_8bit(CHARSET_INFO *, char *);
|
||||||
extern size_t my_casedn_str_8bit(CHARSET_INFO *, char *);
|
extern size_t my_casedn_str_8bit(CHARSET_INFO *, char *);
|
||||||
extern size_t my_caseup_8bit(CHARSET_INFO *, char *src, size_t srclen,
|
extern size_t my_caseup_8bit(CHARSET_INFO *,
|
||||||
|
const char *src, size_t srclen,
|
||||||
char *dst, size_t dstlen);
|
char *dst, size_t dstlen);
|
||||||
extern size_t my_casedn_8bit(CHARSET_INFO *, char *src, size_t srclen,
|
extern size_t my_casedn_8bit(CHARSET_INFO *,
|
||||||
|
const char *src, size_t srclen,
|
||||||
char *dst, size_t dstlen);
|
char *dst, size_t dstlen);
|
||||||
|
|
||||||
extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *);
|
extern int my_strcasecmp_8bit(CHARSET_INFO * cs, const char *, const char *);
|
||||||
@ -821,17 +823,17 @@ int my_charlen_8bit(CHARSET_INFO *, const uchar *str, const uchar *end);
|
|||||||
/* Functions for multibyte charsets */
|
/* Functions for multibyte charsets */
|
||||||
extern size_t my_caseup_str_mb(CHARSET_INFO *, char *);
|
extern size_t my_caseup_str_mb(CHARSET_INFO *, char *);
|
||||||
extern size_t my_casedn_str_mb(CHARSET_INFO *, char *);
|
extern size_t my_casedn_str_mb(CHARSET_INFO *, char *);
|
||||||
extern size_t my_caseup_mb(CHARSET_INFO *, char *src, size_t srclen,
|
extern size_t my_caseup_mb(CHARSET_INFO *,
|
||||||
char *dst, size_t dstlen);
|
const char *src, size_t srclen,
|
||||||
extern size_t my_casedn_mb(CHARSET_INFO *, char *src, size_t srclen,
|
char *dst, size_t dstlen);
|
||||||
char *dst, size_t dstlen);
|
extern size_t my_casedn_mb(CHARSET_INFO *,
|
||||||
extern size_t my_caseup_mb_varlen(CHARSET_INFO *, char *src, size_t srclen,
|
const char *src, size_t srclen,
|
||||||
char *dst, size_t dstlen);
|
char *dst, size_t dstlen);
|
||||||
extern size_t my_casedn_mb_varlen(CHARSET_INFO *, char *src, size_t srclen,
|
extern size_t my_caseup_ujis(CHARSET_INFO *,
|
||||||
char *dst, size_t dstlen);
|
const char *src, size_t srclen,
|
||||||
extern size_t my_caseup_ujis(CHARSET_INFO *, char *src, size_t srclen,
|
|
||||||
char *dst, size_t dstlen);
|
char *dst, size_t dstlen);
|
||||||
extern size_t my_casedn_ujis(CHARSET_INFO *, char *src, size_t srclen,
|
extern size_t my_casedn_ujis(CHARSET_INFO *,
|
||||||
|
const char *src, size_t srclen,
|
||||||
char *dst, size_t dstlen);
|
char *dst, size_t dstlen);
|
||||||
extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *);
|
extern int my_strcasecmp_mb(CHARSET_INFO * cs,const char *, const char *);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#ifndef SQL_COMMON_INCLUDED
|
#ifndef SQL_COMMON_INCLUDED
|
||||||
#define SQL_COMMON_INCLUDED
|
#define SQL_COMMON_INCLUDED
|
||||||
/* Copyright (c) 2003, 2012, Oracle and/or its affiliates.
|
/* Copyright (c) 2003, 2018, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2010, 2012, Monty Program Ab
|
Copyright (c) 2010, 2018, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
15
mysql-test/include/ctype_mdev13118.inc
Normal file
15
mysql-test/include/ctype_mdev13118.inc
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
--echo #
|
||||||
|
--echo # MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
--sorted_result
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
--sorted_result
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
@ -106,3 +106,12 @@ use test;
|
|||||||
EOF
|
EOF
|
||||||
--exec $MYSQLD_BOOTSTRAP_CMD --ignore-db-dirs='some_dir' --ignore-db-dirs='some_dir' < $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
--exec $MYSQLD_BOOTSTRAP_CMD --ignore-db-dirs='some_dir' --ignore-db-dirs='some_dir' < $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||||
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13397 MariaDB upgrade fail when using default_time_zone
|
||||||
|
#
|
||||||
|
--write_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||||
|
use test;
|
||||||
|
EOF
|
||||||
|
--exec $MYSQLD_BOOTSTRAP_CMD --default-time-zone=Europe/Moscow < $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql >> $MYSQLTEST_VARDIR/tmp/bootstrap.log 2>&1
|
||||||
|
--remove_file $MYSQLTEST_VARDIR/tmp/bootstrap_9969.sql
|
||||||
|
@ -3048,6 +3048,29 @@ DROP TABLE t1;
|
|||||||
SELECT _binary 0x7E, _binary X'7E', _binary B'01111110';
|
SELECT _binary 0x7E, _binary X'7E', _binary B'01111110';
|
||||||
_binary 0x7E _binary X'7E' _binary B'01111110'
|
_binary 0x7E _binary X'7E' _binary B'01111110'
|
||||||
~ ~ ~
|
~ ~ ~
|
||||||
|
SET NAMES utf8, character_set_connection=binary;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varbinary(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -24,6 +24,9 @@ SET NAMES binary;
|
|||||||
--echo #
|
--echo #
|
||||||
SELECT _binary 0x7E, _binary X'7E', _binary B'01111110';
|
SELECT _binary 0x7E, _binary X'7E', _binary B'01111110';
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=binary;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -33844,6 +33844,29 @@ HEX(a) CHAR_LENGTH(a)
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SELECT _eucjpms 0x8EA0;
|
SELECT _eucjpms 0x8EA0;
|
||||||
ERROR HY000: Invalid eucjpms character string: '8EA0'
|
ERROR HY000: Invalid eucjpms character string: '8EA0'
|
||||||
|
SET NAMES eucjpms;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET eucjpms DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -537,6 +537,8 @@ DROP TABLE t1;
|
|||||||
--error ER_INVALID_CHARACTER_STRING
|
--error ER_INVALID_CHARACTER_STRING
|
||||||
SELECT _eucjpms 0x8EA0;
|
SELECT _eucjpms 0x8EA0;
|
||||||
|
|
||||||
|
SET NAMES eucjpms;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
|
@ -25405,6 +25405,35 @@ A1A1A1A1A1A120202020202020202020202020202020202020
|
|||||||
# End of 5.6 tests
|
# End of 5.6 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
# Start of 10.0 tests
|
||||||
|
#
|
||||||
|
SET NAMES utf8, character_set_connection=euckr;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET euckr DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
#
|
||||||
|
# End of 10.0 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
# Start of 10.2 tests
|
# Start of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -197,6 +197,16 @@ set collation_connection=euckr_bin;
|
|||||||
--echo # End of 5.6 tests
|
--echo # End of 5.6 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.0 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=euckr;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 10.0 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Start of 10.2 tests
|
--echo # Start of 10.2 tests
|
||||||
|
@ -5077,6 +5077,29 @@ E05C5B
|
|||||||
E05B
|
E05B
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
# Start of ctype_E05C.inc
|
# Start of ctype_E05C.inc
|
||||||
|
SET NAMES utf8, character_set_connection=gbk;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET gbk DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant
|
# MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant
|
||||||
#
|
#
|
||||||
|
@ -199,6 +199,9 @@ let $ctype_unescape_combinations=selected;
|
|||||||
SET NAMES gbk;
|
SET NAMES gbk;
|
||||||
--source include/ctype_E05C.inc
|
--source include/ctype_E05C.inc
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=gbk;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant
|
--echo # MDEV-9886 Illegal mix of collations with a view comparing a field to a binary constant
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -8022,6 +8022,29 @@ a
|
|||||||
0
|
0
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
SET NAMES latin1;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -262,6 +262,9 @@ SELECT * FROM v1;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET NAMES latin1;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
|
@ -5686,6 +5686,29 @@ c2
|
|||||||
YWJjZGVmZ2hp-YWJjZGVmZ2hp
|
YWJjZGVmZ2hp-YWJjZGVmZ2hp
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
SET NAMES utf8, character_set_connection=ucs2;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET ucs2 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -992,6 +992,10 @@ DROP TABLE t1;
|
|||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=ucs2;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -26149,6 +26149,29 @@ HEX(a) CHAR_LENGTH(a)
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SELECT _ujis 0x8EA0;
|
SELECT _ujis 0x8EA0;
|
||||||
ERROR HY000: Invalid ujis character string: '8EA0'
|
ERROR HY000: Invalid ujis character string: '8EA0'
|
||||||
|
SET NAMES ujis;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET ujis DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -1368,6 +1368,10 @@ DROP TABLE t1;
|
|||||||
SELECT _ujis 0x8EA0;
|
SELECT _ujis 0x8EA0;
|
||||||
|
|
||||||
|
|
||||||
|
SET NAMES ujis;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2142,6 +2142,29 @@ EXECUTE stmt USING @arg00;
|
|||||||
CONCAT(_utf16'a' COLLATE utf16_unicode_ci, ?)
|
CONCAT(_utf16'a' COLLATE utf16_unicode_ci, ?)
|
||||||
aÿ
|
aÿ
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
|
SET NAMES utf8, character_set_connection=utf16;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET utf16 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -870,6 +870,11 @@ SET @arg00=_binary 0x00FF;
|
|||||||
EXECUTE stmt USING @arg00;
|
EXECUTE stmt USING @arg00;
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=utf16;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2326,6 +2326,35 @@ DFFFFFDFFFFF9CFFFF9DFFFF9EFFFF
|
|||||||
# End of 5.6 tests
|
# End of 5.6 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
# Start of 10.0 tests
|
||||||
|
#
|
||||||
|
SET NAMES utf8, character_set_connection=utf16le;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET utf16le DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
#
|
||||||
|
# Start of 10.0 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
# Start of 10.1 tests
|
# Start of 10.1 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -747,6 +747,19 @@ SET NAMES utf8, collation_connection=utf16le_bin;
|
|||||||
--echo # End of 5.6 tests
|
--echo # End of 5.6 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.0 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
|
||||||
|
SET NAMES utf8, character_set_connection=utf16le;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Start of 10.0 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Start of 10.1 tests
|
--echo # Start of 10.1 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2241,6 +2241,29 @@ EXECUTE stmt USING @arg00;
|
|||||||
CONCAT(_utf32'a' COLLATE utf32_unicode_ci, ?)
|
CONCAT(_utf32'a' COLLATE utf32_unicode_ci, ?)
|
||||||
aÿ
|
aÿ
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
|
SET NAMEs utf8, character_set_connection=utf32;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET utf32 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -983,6 +983,14 @@ SET @arg00=_binary 0x00FF;
|
|||||||
EXECUTE stmt USING @arg00;
|
EXECUTE stmt USING @arg00;
|
||||||
DEALLOCATE PREPARE stmt;
|
DEALLOCATE PREPARE stmt;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET NAMEs utf8, character_set_connection=utf32;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -10286,6 +10286,29 @@ SELECT * FROM v1;
|
|||||||
c
|
c
|
||||||
ß
|
ß
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
SET NAMES utf8;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET utf8 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -1890,6 +1890,13 @@ SELECT * FROM v1;
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET NAMES utf8;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -3478,6 +3478,29 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET NAMES default;
|
SET NAMES default;
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET @save_optimizer_switch=@@optimizer_switch;
|
||||||
|
SET optimizer_switch=_latin1'derived_merge=on';
|
||||||
|
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`t` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
|
INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI');
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
abcdefghi-abcdefghi
|
||||||
|
SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub;
|
||||||
|
c2
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
ABCDEFGHI-ABCDEFGHI
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
# End of 10.0 tests
|
# End of 10.0 tests
|
||||||
#
|
#
|
||||||
|
@ -1959,6 +1959,14 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
SET NAMES default;
|
SET NAMES default;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-13118 Wrong results with LOWER and UPPER and subquery
|
||||||
|
#
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
--source include/ctype_mdev13118.inc
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.0 tests
|
--echo # End of 10.0 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1053,6 +1053,7 @@ INSERT INTO t2 VALUES (NULL),(NULL);
|
|||||||
CREATE TABLE t3 (c VARCHAR(1024) CHARACTER SET utf8, d INT) ENGINE=MyISAM;
|
CREATE TABLE t3 (c VARCHAR(1024) CHARACTER SET utf8, d INT) ENGINE=MyISAM;
|
||||||
CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW v3 AS SELECT * FROM t3;
|
CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW v3 AS SELECT * FROM t3;
|
||||||
INSERT INTO t3 VALUES ('abc',NULL),('def',4);
|
INSERT INTO t3 VALUES ('abc',NULL),('def',4);
|
||||||
|
set @save_join_cache_level= @@join_cache_level;
|
||||||
SET join_cache_level= 8;
|
SET join_cache_level= 8;
|
||||||
explain
|
explain
|
||||||
SELECT * FROM v1, t2, v3 WHERE a = c AND b = d;
|
SELECT * FROM v1, t2, v3 WHERE a = c AND b = d;
|
||||||
@ -1082,6 +1083,38 @@ i
|
|||||||
drop procedure pr;
|
drop procedure pr;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set @@join_cache_level= @save_join_cache_level;
|
||||||
|
#
|
||||||
|
# MDEV-16307: Incorrect results when using BNLH join instead of BNL join with views
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (c1 text, c2 int);
|
||||||
|
INSERT INTO t1 VALUES ('a',1), ('c',3), ('g',7), ('d',4), ('c',3);
|
||||||
|
CREATE TABLE t2 (c1 text, c2 int);
|
||||||
|
INSERT INTO t2 VALUES ('b',2), ('c',3);
|
||||||
|
CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1;
|
||||||
|
explain SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||||
|
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 5 Using where; Using join buffer (flat, BNL join)
|
||||||
|
2 DERIVED t1 ALL NULL NULL NULL NULL 5
|
||||||
|
SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1;
|
||||||
|
c1 c2 c1 c2
|
||||||
|
c 3 c 3
|
||||||
|
c 3 c 3
|
||||||
|
set @save_join_cache_level= @@join_cache_level;
|
||||||
|
set @@join_cache_level=4;
|
||||||
|
explain SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||||
|
1 PRIMARY <derived2> hash_ALL NULL #hash#$hj 3 test.t2.c1 5 Using where; Using join buffer (flat, BNLH join)
|
||||||
|
2 DERIVED t1 ALL NULL NULL NULL NULL 5
|
||||||
|
SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1;
|
||||||
|
c1 c2 c1 c2
|
||||||
|
c 3 c 3
|
||||||
|
c 3 c 3
|
||||||
|
drop table t1,t2;
|
||||||
|
drop view v1;
|
||||||
|
set @@join_cache_level= @save_join_cache_level;
|
||||||
# end of 5.5
|
# end of 5.5
|
||||||
#
|
#
|
||||||
# Start of 10.1 tests
|
# Start of 10.1 tests
|
||||||
|
@ -913,6 +913,7 @@ CREATE TABLE t3 (c VARCHAR(1024) CHARACTER SET utf8, d INT) ENGINE=MyISAM;
|
|||||||
CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW v3 AS SELECT * FROM t3;
|
CREATE OR REPLACE ALGORITHM=TEMPTABLE VIEW v3 AS SELECT * FROM t3;
|
||||||
INSERT INTO t3 VALUES ('abc',NULL),('def',4);
|
INSERT INTO t3 VALUES ('abc',NULL),('def',4);
|
||||||
|
|
||||||
|
set @save_join_cache_level= @@join_cache_level;
|
||||||
SET join_cache_level= 8;
|
SET join_cache_level= 8;
|
||||||
explain
|
explain
|
||||||
SELECT * FROM v1, t2, v3 WHERE a = c AND b = d;
|
SELECT * FROM v1, t2, v3 WHERE a = c AND b = d;
|
||||||
@ -935,7 +936,27 @@ call pr(2);
|
|||||||
drop procedure pr;
|
drop procedure pr;
|
||||||
drop view v1;
|
drop view v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
set @@join_cache_level= @save_join_cache_level;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16307: Incorrect results when using BNLH join instead of BNL join with views
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (c1 text, c2 int);
|
||||||
|
INSERT INTO t1 VALUES ('a',1), ('c',3), ('g',7), ('d',4), ('c',3);
|
||||||
|
CREATE TABLE t2 (c1 text, c2 int);
|
||||||
|
INSERT INTO t2 VALUES ('b',2), ('c',3);
|
||||||
|
CREATE ALGORITHM=TEMPTABLE VIEW v1 AS SELECT * FROM t1;
|
||||||
|
|
||||||
|
explain SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1;
|
||||||
|
SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1;
|
||||||
|
set @save_join_cache_level= @@join_cache_level;
|
||||||
|
set @@join_cache_level=4;
|
||||||
|
explain SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1;
|
||||||
|
SELECT v1.c1, v1.c2, t2.c1, t2.c2 FROM v1, t2 WHERE v1.c1=t2.c1;
|
||||||
|
drop table t1,t2;
|
||||||
|
drop view v1;
|
||||||
|
set @@join_cache_level= @save_join_cache_level;
|
||||||
--echo # end of 5.5
|
--echo # end of 5.5
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -15960,3 +15960,69 @@ f c
|
|||||||
9 1
|
9 1
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-15087: error from inexpensive subquery before check
|
||||||
|
# for condition pushdown into derived
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (i1 int, v1 varchar(1));
|
||||||
|
INSERT INTO t1 VALUES (7,'x');
|
||||||
|
CREATE TABLE t2 (i1 int);
|
||||||
|
INSERT INTO t2 VALUES (8);
|
||||||
|
CREATE TABLE t3 (i1 int ,v1 varchar(1), v2 varchar(1));
|
||||||
|
INSERT INTO t3 VALUES (4, 'v','v'),(62,'v','k'),(7, 'n', NULL);
|
||||||
|
SELECT 1
|
||||||
|
FROM (t1 AS a1
|
||||||
|
JOIN (((SELECT DISTINCT t3.*
|
||||||
|
FROM t3) AS a2
|
||||||
|
JOIN t1 ON (t1.v1 = a2.v2))) ON (t1.v1 = a2.v1))
|
||||||
|
WHERE (SELECT BIT_COUNT(t2.i1)
|
||||||
|
FROM (t2 JOIN t3)) IS NULL;
|
||||||
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
#
|
||||||
|
# MDEV-16614 signal 7 after calling stored procedure, that uses regexp
|
||||||
|
#
|
||||||
|
CREATE PROCEDURE p1(m1 varchar(5), m2 varchar(5))
|
||||||
|
BEGIN
|
||||||
|
SELECT a FROM
|
||||||
|
(SELECT "aa" a) t
|
||||||
|
JOIN (SELECT "aa" b) t1 on t.a=t1.b
|
||||||
|
WHERE t.a regexp m1 and t1.b regexp m2
|
||||||
|
GROUP BY a;
|
||||||
|
END$$
|
||||||
|
CALL p1('a','a');
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
CREATE PROCEDURE p1(m1 varchar(5))
|
||||||
|
BEGIN
|
||||||
|
SELECT a FROM (SELECT "aa" a) t WHERE t.a regexp m1;
|
||||||
|
END$$
|
||||||
|
CALL p1('a');
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
SELECT a FROM (SELECT "aa" a) t WHERE REGEXP_INSTR(t.a, (SELECT MAX('aa') FROM DUAL LIMIT 1));
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
CREATE OR REPLACE FUNCTION f1(a VARCHAR(10), b VARCHAR(10)) RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
RETURN 1;
|
||||||
|
END;$$
|
||||||
|
CREATE OR REPLACE PROCEDURE p1(m1 varchar(5))
|
||||||
|
BEGIN
|
||||||
|
SELECT a FROM (SELECT "aa" a) t WHERE f1(t.a, m1);
|
||||||
|
END$$
|
||||||
|
CALL p1('a');
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
CREATE OR REPLACE FUNCTION f1(a VARCHAR(10), b VARCHAR(10)) RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
RETURN 1;
|
||||||
|
END;$$
|
||||||
|
SELECT a FROM (SELECT "aa" a) t WHERE f1(t.a, (SELECT MAX('aa') FROM DUAL LIMIT 1));
|
||||||
|
a
|
||||||
|
aa
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
@ -2906,3 +2906,83 @@ SELECT * FROM ( SELECT STRAIGHT_JOIN f, COUNT(*) as c FROM v1 GROUP BY f ) AS s;
|
|||||||
|
|
||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-15087: error from inexpensive subquery before check
|
||||||
|
--echo # for condition pushdown into derived
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (i1 int, v1 varchar(1));
|
||||||
|
INSERT INTO t1 VALUES (7,'x');
|
||||||
|
|
||||||
|
CREATE TABLE t2 (i1 int);
|
||||||
|
INSERT INTO t2 VALUES (8);
|
||||||
|
|
||||||
|
CREATE TABLE t3 (i1 int ,v1 varchar(1), v2 varchar(1));
|
||||||
|
INSERT INTO t3 VALUES (4, 'v','v'),(62,'v','k'),(7, 'n', NULL);
|
||||||
|
|
||||||
|
--error ER_SUBQUERY_NO_1_ROW
|
||||||
|
SELECT 1
|
||||||
|
FROM (t1 AS a1
|
||||||
|
JOIN (((SELECT DISTINCT t3.*
|
||||||
|
FROM t3) AS a2
|
||||||
|
JOIN t1 ON (t1.v1 = a2.v2))) ON (t1.v1 = a2.v1))
|
||||||
|
WHERE (SELECT BIT_COUNT(t2.i1)
|
||||||
|
FROM (t2 JOIN t3)) IS NULL;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2, t3;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16614 signal 7 after calling stored procedure, that uses regexp
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
DELIMITER $$;
|
||||||
|
CREATE PROCEDURE p1(m1 varchar(5), m2 varchar(5))
|
||||||
|
BEGIN
|
||||||
|
SELECT a FROM
|
||||||
|
(SELECT "aa" a) t
|
||||||
|
JOIN (SELECT "aa" b) t1 on t.a=t1.b
|
||||||
|
WHERE t.a regexp m1 and t1.b regexp m2
|
||||||
|
GROUP BY a;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;$$
|
||||||
|
CALL p1('a','a');
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
|
||||||
|
|
||||||
|
DELIMITER $$;
|
||||||
|
CREATE PROCEDURE p1(m1 varchar(5))
|
||||||
|
BEGIN
|
||||||
|
SELECT a FROM (SELECT "aa" a) t WHERE t.a regexp m1;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;$$
|
||||||
|
CALL p1('a');
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
|
||||||
|
|
||||||
|
SELECT a FROM (SELECT "aa" a) t WHERE REGEXP_INSTR(t.a, (SELECT MAX('aa') FROM DUAL LIMIT 1));
|
||||||
|
|
||||||
|
|
||||||
|
DELIMITER $$;
|
||||||
|
CREATE OR REPLACE FUNCTION f1(a VARCHAR(10), b VARCHAR(10)) RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
RETURN 1;
|
||||||
|
END;$$
|
||||||
|
CREATE OR REPLACE PROCEDURE p1(m1 varchar(5))
|
||||||
|
BEGIN
|
||||||
|
SELECT a FROM (SELECT "aa" a) t WHERE f1(t.a, m1);
|
||||||
|
END$$
|
||||||
|
DELIMITER ;$$
|
||||||
|
CALL p1('a');
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
|
||||||
|
|
||||||
|
DELIMITER $$;
|
||||||
|
CREATE OR REPLACE FUNCTION f1(a VARCHAR(10), b VARCHAR(10)) RETURNS INT
|
||||||
|
BEGIN
|
||||||
|
RETURN 1;
|
||||||
|
END;$$
|
||||||
|
DELIMITER ;$$
|
||||||
|
SELECT a FROM (SELECT "aa" a) t WHERE f1(t.a, (SELECT MAX('aa') FROM DUAL LIMIT 1));
|
||||||
|
DROP FUNCTION f1;
|
||||||
|
@ -761,6 +761,12 @@ t1 CREATE TABLE `t1` (
|
|||||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-16054 simple json functions flatline cpu on garbage input.
|
||||||
|
#
|
||||||
|
select json_array(1,uuid(),compress(5.140264e+307));
|
||||||
|
json_array(1,uuid(),compress(5.140264e+307))
|
||||||
|
NULL
|
||||||
|
#
|
||||||
# End of 10.2 tests
|
# End of 10.2 tests
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -422,6 +422,12 @@ CREATE TABLE t1 AS SELECT
|
|||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16054 simple json functions flatline cpu on garbage input.
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
select json_array(1,uuid(),compress(5.140264e+307));
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.2 tests
|
--echo # End of 10.2 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1757,6 +1757,7 @@ drop user mysqltest@localhost;
|
|||||||
disconnect user1;
|
disconnect user1;
|
||||||
drop database mysqltest;
|
drop database mysqltest;
|
||||||
use test;
|
use test;
|
||||||
|
call mtr.add_suppression("Can't open and lock privilege tables");
|
||||||
FLUSH PRIVILEGES without procs_priv table.
|
FLUSH PRIVILEGES without procs_priv table.
|
||||||
RENAME TABLE mysql.procs_priv TO mysql.procs_gone;
|
RENAME TABLE mysql.procs_priv TO mysql.procs_gone;
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
@ -1850,8 +1851,6 @@ BEGIN
|
|||||||
SET @x = 0;
|
SET @x = 0;
|
||||||
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
|
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
|
||||||
END ;||
|
END ;||
|
||||||
Warnings:
|
|
||||||
Warning 1404 Failed to grant EXECUTE and ALTER ROUTINE privileges
|
|
||||||
connection default;
|
connection default;
|
||||||
SHOW GRANTS FOR 'user1'@'localhost';
|
SHOW GRANTS FOR 'user1'@'localhost';
|
||||||
Grants for user1@localhost
|
Grants for user1@localhost
|
||||||
@ -1862,6 +1861,7 @@ SHOW GRANTS FOR 'user2';
|
|||||||
Grants for user2@%
|
Grants for user2@%
|
||||||
GRANT USAGE ON *.* TO 'user2'@'%'
|
GRANT USAGE ON *.* TO 'user2'@'%'
|
||||||
GRANT CREATE, CREATE ROUTINE ON `db1`.* TO 'user2'@'%'
|
GRANT CREATE, CREATE ROUTINE ON `db1`.* TO 'user2'@'%'
|
||||||
|
GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE `db1`.`proc2` TO 'user2'@'%'
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
disconnect con2;
|
disconnect con2;
|
||||||
DROP PROCEDURE db1.proc1;
|
DROP PROCEDURE db1.proc1;
|
||||||
|
@ -1598,6 +1598,9 @@ use test;
|
|||||||
#
|
#
|
||||||
# Bug#16470 crash on grant if old grant tables
|
# Bug#16470 crash on grant if old grant tables
|
||||||
#
|
#
|
||||||
|
|
||||||
|
call mtr.add_suppression("Can't open and lock privilege tables");
|
||||||
|
|
||||||
--echo FLUSH PRIVILEGES without procs_priv table.
|
--echo FLUSH PRIVILEGES without procs_priv table.
|
||||||
RENAME TABLE mysql.procs_priv TO mysql.procs_gone;
|
RENAME TABLE mysql.procs_priv TO mysql.procs_gone;
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
@ -1506,6 +1506,46 @@ DROP VIEW v2;
|
|||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
#
|
#
|
||||||
|
# MDEV-16512
|
||||||
|
# Server crashes in find_field_in_table_ref on 2nd execution of SP referring to
|
||||||
|
# non-existing field
|
||||||
|
#
|
||||||
|
CREATE TABLE t (i INT);
|
||||||
|
CREATE PROCEDURE p() SELECT t1.f FROM t AS t1 JOIN t AS t2 USING (f);
|
||||||
|
CALL p;
|
||||||
|
ERROR 42S22: Unknown column 'f' in 'from clause'
|
||||||
|
CALL p;
|
||||||
|
ERROR 42S22: Unknown column 'f' in 'from clause'
|
||||||
|
FLUSH TABLES;
|
||||||
|
CALL p;
|
||||||
|
ERROR 42S22: Unknown column 'f' in 'from clause'
|
||||||
|
DROP TABLE t;
|
||||||
|
CREATE TABLE t (f INT);
|
||||||
|
CALL p;
|
||||||
|
ERROR 42S22: Unknown column 'f' in 'from clause'
|
||||||
|
DROP TABLE t;
|
||||||
|
CREATE TABLE t (i INT);
|
||||||
|
CALL p;
|
||||||
|
ERROR 42S22: Unknown column 'f' in 'from clause'
|
||||||
|
DROP PROCEDURE p;
|
||||||
|
DROP TABLE t;
|
||||||
|
CREATE TABLE t1 (a INT, b INT);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
CREATE TABLE t3 (a INT, c INT);
|
||||||
|
CREATE TABLE t4 (a INT, c INT);
|
||||||
|
CREATE TABLE t5 (a INT, c INT);
|
||||||
|
CREATE PROCEDURE p1() SELECT c FROM t1 JOIN (t2 LEFT JOIN t3 USING (a) LEFT JOIN t4 USING (a)
|
||||||
|
LEFT JOIN t5 USING (a)) USING (a);
|
||||||
|
CALL p1;
|
||||||
|
ERROR 23000: Column 'c' in field list is ambiguous
|
||||||
|
CALL p1;
|
||||||
|
ERROR 23000: Column 'c' in field list is ambiguous
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP TABLE t1,t2,t3,t4,t5;
|
||||||
|
#
|
||||||
|
# End of MariaDB 5.5 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
# Bug #35268: Parser can't handle STRAIGHT_JOIN with USING
|
# Bug #35268: Parser can't handle STRAIGHT_JOIN with USING
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (a int);
|
CREATE TABLE t1 (a int);
|
||||||
|
@ -1160,6 +1160,59 @@ DROP TABLE t1,t2;
|
|||||||
|
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16512
|
||||||
|
--echo # Server crashes in find_field_in_table_ref on 2nd execution of SP referring to
|
||||||
|
--echo # non-existing field
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t (i INT);
|
||||||
|
CREATE PROCEDURE p() SELECT t1.f FROM t AS t1 JOIN t AS t2 USING (f);
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
CALL p;
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
CALL p;
|
||||||
|
FLUSH TABLES;
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
CALL p;
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Fix the table definition to match the using
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t (f INT);
|
||||||
|
#
|
||||||
|
# The following shouldn't fail as the table is now matching the using
|
||||||
|
#
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
CALL p;
|
||||||
|
DROP TABLE t;
|
||||||
|
CREATE TABLE t (i INT);
|
||||||
|
--error ER_BAD_FIELD_ERROR
|
||||||
|
CALL p;
|
||||||
|
DROP PROCEDURE p;
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a INT, b INT);
|
||||||
|
CREATE TABLE t2 (a INT);
|
||||||
|
CREATE TABLE t3 (a INT, c INT);
|
||||||
|
CREATE TABLE t4 (a INT, c INT);
|
||||||
|
CREATE TABLE t5 (a INT, c INT);
|
||||||
|
CREATE PROCEDURE p1() SELECT c FROM t1 JOIN (t2 LEFT JOIN t3 USING (a) LEFT JOIN t4 USING (a)
|
||||||
|
LEFT JOIN t5 USING (a)) USING (a);
|
||||||
|
--error ER_NON_UNIQ_ERROR
|
||||||
|
CALL p1;
|
||||||
|
--error ER_NON_UNIQ_ERROR
|
||||||
|
CALL p1;
|
||||||
|
DROP PROCEDURE p1;
|
||||||
|
DROP TABLE t1,t2,t3,t4,t5;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of MariaDB 5.5 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug #35268: Parser can't handle STRAIGHT_JOIN with USING
|
--echo # Bug #35268: Parser can't handle STRAIGHT_JOIN with USING
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -5925,6 +5925,39 @@ SET join_buffer_space_limit= default;
|
|||||||
set optimizer_switch=@save_optimizer_switch;
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
DROP TABLE t1,t4,t5,t2;
|
DROP TABLE t1,t4,t5,t2;
|
||||||
#
|
#
|
||||||
|
# MDEV-16603: BNLH for query with materialized semi-join
|
||||||
|
#
|
||||||
|
set join_cache_level=4;
|
||||||
|
CREATE TABLE t1 ( i1 int, v1 varchar(1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (7,'x');
|
||||||
|
CREATE TABLE t2 (i1 int, v1 varchar(1), KEY v1 (v1,i1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(NULL,'x'),(1,'x'),(3,'x'),(5,'x'),(8,'x'),(48,'x'),
|
||||||
|
(228,'x'),(3,'y'),(1,'z'),(9,'z');
|
||||||
|
CREATE TABLE temp
|
||||||
|
SELECT t1.i1 AS f1, t1.v1 AS f2 FROM (t2 JOIN t1 ON (t1.v1 = t2.v1));
|
||||||
|
SELECT * FROM temp
|
||||||
|
WHERE (f1,f2) IN (SELECT t1.i1, t1.v1 FROM (t2 JOIN t1 ON (t1.v1 = t2.v1)));
|
||||||
|
f1 f2
|
||||||
|
7 x
|
||||||
|
7 x
|
||||||
|
7 x
|
||||||
|
7 x
|
||||||
|
7 x
|
||||||
|
7 x
|
||||||
|
7 x
|
||||||
|
EXPLAIN EXTENDED SELECT * FROM temp
|
||||||
|
WHERE (f1,f2) IN (SELECT t1.i1, t1.v1 FROM (t2 JOIN t1 ON (t1.v1 = t2.v1)));
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 1 100.00
|
||||||
|
1 PRIMARY temp hash_ALL NULL #hash#$hj 9 test.t1.i1,test.t1.v1 7 100.00 Using where; Using join buffer (flat, BNLH join)
|
||||||
|
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 1 100.00 Using where
|
||||||
|
2 MATERIALIZED t2 hash_index v1 #hash#v1:v1 4:9 test.t1.v1 10 10.00 Using index; Using join buffer (flat, BNLH join)
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select `test`.`temp`.`f1` AS `f1`,`test`.`temp`.`f2` AS `f2` from `test`.`temp` semi join (`test`.`t2` join `test`.`t1`) where `test`.`temp`.`f1` = `test`.`t1`.`i1` and `test`.`t2`.`v1` = `test`.`t1`.`v1` and `test`.`temp`.`f2` = `test`.`t1`.`v1`
|
||||||
|
DROP TABLE t1,t2,temp;
|
||||||
|
SET join_cache_level = default;
|
||||||
|
#
|
||||||
# MDEV-5123 Remove duplicated conditions pushed both to join_tab->select_cond and join_tab->cache_select->cond for blocked joins.
|
# MDEV-5123 Remove duplicated conditions pushed both to join_tab->select_cond and join_tab->cache_select->cond for blocked joins.
|
||||||
#
|
#
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
|
@ -3869,6 +3869,37 @@ set optimizer_switch=@save_optimizer_switch;
|
|||||||
|
|
||||||
DROP TABLE t1,t4,t5,t2;
|
DROP TABLE t1,t4,t5,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16603: BNLH for query with materialized semi-join
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
set join_cache_level=4;
|
||||||
|
|
||||||
|
CREATE TABLE t1 ( i1 int, v1 varchar(1)) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES (7,'x');
|
||||||
|
|
||||||
|
CREATE TABLE t2 (i1 int, v1 varchar(1), KEY v1 (v1,i1)) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
INSERT INTO t2 VALUES
|
||||||
|
(NULL,'x'),(1,'x'),(3,'x'),(5,'x'),(8,'x'),(48,'x'),
|
||||||
|
(228,'x'),(3,'y'),(1,'z'),(9,'z');
|
||||||
|
|
||||||
|
CREATE TABLE temp
|
||||||
|
SELECT t1.i1 AS f1, t1.v1 AS f2 FROM (t2 JOIN t1 ON (t1.v1 = t2.v1));
|
||||||
|
|
||||||
|
let $q =
|
||||||
|
SELECT * FROM temp
|
||||||
|
WHERE (f1,f2) IN (SELECT t1.i1, t1.v1 FROM (t2 JOIN t1 ON (t1.v1 = t2.v1)));
|
||||||
|
|
||||||
|
eval $q;
|
||||||
|
eval EXPLAIN EXTENDED $q;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2,temp;
|
||||||
|
|
||||||
|
SET join_cache_level = default;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-5123 Remove duplicated conditions pushed both to join_tab->select_cond and join_tab->cache_select->cond for blocked joins.
|
--echo # MDEV-5123 Remove duplicated conditions pushed both to join_tab->select_cond and join_tab->cache_select->cond for blocked joins.
|
||||||
--echo #
|
--echo #
|
||||||
@ -3958,5 +3989,4 @@ drop table t1, t2;
|
|||||||
set join_buffer_size = default;
|
set join_buffer_size = default;
|
||||||
|
|
||||||
# The following command must be the last one the file
|
# The following command must be the last one the file
|
||||||
# this must be the last command in the file
|
|
||||||
set @@optimizer_switch=@save_optimizer_switch;
|
set @@optimizer_switch=@save_optimizer_switch;
|
||||||
|
@ -2460,5 +2460,55 @@ id sid id
|
|||||||
1 NULL NULL
|
1 NULL NULL
|
||||||
2 NULL NULL
|
2 NULL NULL
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-16726: SELECT with STRAGHT JOIN containing NESTED RIGHT JOIN
|
||||||
|
# converted to INNER JOIN with first constant inner table
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1), KEY v1 (v1,i1)
|
||||||
|
) engine=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(8,3,'c','c'),(9,4,'z','z'),(10,3,'i','i'),(11,186,'x','x'),
|
||||||
|
(14,226,'m','m'),(15,133,'p','p');
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1)
|
||||||
|
) engine=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (10,6,'p','p');
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT STRAIGHT_JOIN t2.v2
|
||||||
|
FROM
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
RIGHT JOIN
|
||||||
|
(t2,t1)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select straight_join 'p' AS `v2` from `test`.`t1` join `test`.`t1` `tb1` left join `test`.`t1` `tb2` on(multiple equal(NULL, NULL)) where 0 order by NULL
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT STRAIGHT_JOIN t2.v2
|
||||||
|
FROM
|
||||||
|
(t2,t1)
|
||||||
|
LEFT JOIN
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select straight_join 'p' AS `v2` from `test`.`t1` join `test`.`t1` `tb1` left join `test`.`t1` `tb2` on(multiple equal(NULL, NULL)) where 0 order by NULL
|
||||||
|
SELECT STRAIGHT_JOIN DISTINCT t2.v2
|
||||||
|
FROM
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
RIGHT JOIN
|
||||||
|
(t2,t1)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
v2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# end of 5.5 tests
|
# end of 5.5 tests
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
@ -1992,6 +1992,54 @@ select * from t1 t
|
|||||||
on t.id=r.id ;
|
on t.id=r.id ;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16726: SELECT with STRAGHT JOIN containing NESTED RIGHT JOIN
|
||||||
|
--echo # converted to INNER JOIN with first constant inner table
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1), KEY v1 (v1,i1)
|
||||||
|
) engine=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(8,3,'c','c'),(9,4,'z','z'),(10,3,'i','i'),(11,186,'x','x'),
|
||||||
|
(14,226,'m','m'),(15,133,'p','p');
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1)
|
||||||
|
) engine=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (10,6,'p','p');
|
||||||
|
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT STRAIGHT_JOIN t2.v2
|
||||||
|
FROM
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
RIGHT JOIN
|
||||||
|
(t2,t1)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT STRAIGHT_JOIN t2.v2
|
||||||
|
FROM
|
||||||
|
(t2,t1)
|
||||||
|
LEFT JOIN
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
|
||||||
|
SELECT STRAIGHT_JOIN DISTINCT t2.v2
|
||||||
|
FROM
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
RIGHT JOIN
|
||||||
|
(t2,t1)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
|
||||||
--echo # end of 5.5 tests
|
--echo # end of 5.5 tests
|
||||||
|
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
|
@ -2471,6 +2471,56 @@ id sid id
|
|||||||
1 NULL NULL
|
1 NULL NULL
|
||||||
2 NULL NULL
|
2 NULL NULL
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
#
|
||||||
|
# MDEV-16726: SELECT with STRAGHT JOIN containing NESTED RIGHT JOIN
|
||||||
|
# converted to INNER JOIN with first constant inner table
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1), KEY v1 (v1,i1)
|
||||||
|
) engine=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(8,3,'c','c'),(9,4,'z','z'),(10,3,'i','i'),(11,186,'x','x'),
|
||||||
|
(14,226,'m','m'),(15,133,'p','p');
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
pk int PRIMARY KEY, i1 int, v1 varchar(1), v2 varchar(1)
|
||||||
|
) engine=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (10,6,'p','p');
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT STRAIGHT_JOIN t2.v2
|
||||||
|
FROM
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
RIGHT JOIN
|
||||||
|
(t2,t1)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select straight_join 'p' AS `v2` from `test`.`t1` join `test`.`t1` `tb1` left join `test`.`t1` `tb2` on(multiple equal(NULL, NULL)) where 0 order by NULL
|
||||||
|
EXPLAIN EXTENDED
|
||||||
|
SELECT STRAIGHT_JOIN t2.v2
|
||||||
|
FROM
|
||||||
|
(t2,t1)
|
||||||
|
LEFT JOIN
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||||
|
Warnings:
|
||||||
|
Note 1003 select straight_join 'p' AS `v2` from `test`.`t1` join `test`.`t1` `tb1` left join `test`.`t1` `tb2` on(multiple equal(NULL, NULL)) where 0 order by NULL
|
||||||
|
SELECT STRAIGHT_JOIN DISTINCT t2.v2
|
||||||
|
FROM
|
||||||
|
(t1 as tb1 LEFT JOIN t1 AS tb2 ON tb2.v1 = tb1.v2)
|
||||||
|
RIGHT JOIN
|
||||||
|
(t2,t1)
|
||||||
|
ON t1.pk = t2.pk AND t2.v2 = tb1.v1
|
||||||
|
WHERE tb1.pk = 40
|
||||||
|
ORDER BY tb1.i1;
|
||||||
|
v2
|
||||||
|
DROP TABLE t1,t2;
|
||||||
# end of 5.5 tests
|
# end of 5.5 tests
|
||||||
SET optimizer_switch=@save_optimizer_switch;
|
SET optimizer_switch=@save_optimizer_switch;
|
||||||
set join_cache_level=default;
|
set join_cache_level=default;
|
||||||
|
@ -144,3 +144,7 @@ select * from t2;
|
|||||||
a
|
a
|
||||||
1
|
1
|
||||||
drop table tmp,t2;
|
drop table tmp,t2;
|
||||||
|
create table t1 (a int) engine=memory;
|
||||||
|
rename table t1 to non_existent.t2;
|
||||||
|
ERROR 42000: Unknown database 'non_existent'
|
||||||
|
drop table t1;
|
||||||
|
@ -141,3 +141,10 @@ select * from tmp;
|
|||||||
select * from t2;
|
select * from t2;
|
||||||
drop table tmp,t2;
|
drop table tmp,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-11741 handler::ha_reset(): Assertion `bitmap_is_set_all(&table->s->all_set)' failed or server crash in mi_reset or buffer overrun or unexpected ER_CANT_REMOVE_ALL_FIELDS
|
||||||
|
#
|
||||||
|
create table t1 (a int) engine=memory;
|
||||||
|
--error ER_BAD_DB_ERROR
|
||||||
|
rename table t1 to non_existent.t2;
|
||||||
|
drop table t1;
|
||||||
|
@ -228,8 +228,6 @@ FLUSH PRIVILEGES;
|
|||||||
connect con1, localhost, mysqltest_1,,;
|
connect con1, localhost, mysqltest_1,,;
|
||||||
connection con1;
|
connection con1;
|
||||||
CREATE PROCEDURE p1(i INT) BEGIN END;
|
CREATE PROCEDURE p1(i INT) BEGIN END;
|
||||||
Warnings:
|
|
||||||
Warning 1404 Failed to grant EXECUTE and ALTER ROUTINE privileges
|
|
||||||
disconnect con1;
|
disconnect con1;
|
||||||
connection default;
|
connection default;
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
|
@ -516,4 +516,133 @@ use test;
|
|||||||
drop database db1;
|
drop database db1;
|
||||||
drop database db2;
|
drop database db2;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-16552: [10.0] ASAN global-buffer-overflow in is_stat_table / statistics_for_tables_is_needed
|
||||||
|
#
|
||||||
|
SET use_stat_tables = PREFERABLY;
|
||||||
|
SELECT CONVERT_TZ( '1991-09-20 10:11:02', '+00:00', 'GMT' );
|
||||||
|
CONVERT_TZ( '1991-09-20 10:11:02', '+00:00', 'GMT' )
|
||||||
|
NULL
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16757: manual addition of min/max statistics for BLOB
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze Warning Engine-independent statistics are not collected for column 't'
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
DELETE FROM mysql.column_stats
|
||||||
|
WHERE db_name='test' AND table_name='t1' AND column_name='t';
|
||||||
|
INSERT INTO mysql.column_stats VALUES
|
||||||
|
('test','t1','t','bar','foo', 0.0, 3.0, 1.0, 0, NULL, NULL);
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
test t1 t bar foo 0.0000 3.0000 1.0000 0 NULL NULL
|
||||||
|
SELECT pk FROM t1;
|
||||||
|
pk
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16760: CREATE OR REPLACE TABLE after ANALYZE TABLE
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk int PRIMARY KEY, c varchar(32));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk c
|
||||||
|
1 foo
|
||||||
|
2 bar
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
test t1 c bar foo 0.0000 3.0000 1.0000 0 NULL NULL
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk int PRIMARY KEY, a char(7));
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk a
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
DROP TABLE t1;
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16757: manual addition of min/max statistics for BLOB
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze Warning Engine-independent statistics are not collected for column 't'
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
DELETE FROM mysql.column_stats
|
||||||
|
WHERE db_name='test' AND table_name='t1' AND column_name='t';
|
||||||
|
INSERT INTO mysql.column_stats VALUES
|
||||||
|
('test','t1','t','bar','foo', 0.0, 3.0, 1.0, 0, NULL, NULL);
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
test t1 t bar foo 0.0000 3.0000 1.0000 0 NULL NULL
|
||||||
|
SELECT pk FROM t1;
|
||||||
|
pk
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16760: CREATE OR REPLACE TABLE after ANALYZE TABLE
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk int PRIMARY KEY, c varchar(32));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk c
|
||||||
|
1 foo
|
||||||
|
2 bar
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
test t1 c bar foo 0.0000 3.0000 1.0000 0 NULL NULL
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk int PRIMARY KEY, a char(7));
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk a
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
DROP TABLE t1;
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16711:CREATE OR REPLACE TABLE introducing BLOB column
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t CHAR(60));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze status OK
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
SELECT MAX(pk) FROM t1;
|
||||||
|
MAX(pk)
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1;
|
||||||
set use_stat_tables=@save_use_stat_tables;
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
@ -305,4 +305,116 @@ drop database db1;
|
|||||||
drop database db2;
|
drop database db2;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16552: [10.0] ASAN global-buffer-overflow in is_stat_table / statistics_for_tables_is_needed
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET use_stat_tables = PREFERABLY;
|
||||||
|
SELECT CONVERT_TZ( '1991-09-20 10:11:02', '+00:00', 'GMT' );
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16757: manual addition of min/max statistics for BLOB
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
DELETE FROM mysql.column_stats
|
||||||
|
WHERE db_name='test' AND table_name='t1' AND column_name='t';
|
||||||
|
INSERT INTO mysql.column_stats VALUES
|
||||||
|
('test','t1','t','bar','foo', 0.0, 3.0, 1.0, 0, NULL, NULL);
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
|
||||||
|
SELECT pk FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16760: CREATE OR REPLACE TABLE after ANALYZE TABLE
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk int PRIMARY KEY, c varchar(32));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk int PRIMARY KEY, a char(7));
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16757: manual addition of min/max statistics for BLOB
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
DELETE FROM mysql.column_stats
|
||||||
|
WHERE db_name='test' AND table_name='t1' AND column_name='t';
|
||||||
|
INSERT INTO mysql.column_stats VALUES
|
||||||
|
('test','t1','t','bar','foo', 0.0, 3.0, 1.0, 0, NULL, NULL);
|
||||||
|
--sorted_result
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
|
||||||
|
SELECT pk FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16760: CREATE OR REPLACE TABLE after ANALYZE TABLE
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk int PRIMARY KEY, c varchar(32));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk int PRIMARY KEY, a char(7));
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16711:CREATE OR REPLACE TABLE introducing BLOB column
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t CHAR(60));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
|
||||||
|
SELECT MAX(pk) FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
set use_stat_tables=@save_use_stat_tables;
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
@ -543,6 +543,135 @@ use test;
|
|||||||
drop database db1;
|
drop database db1;
|
||||||
drop database db2;
|
drop database db2;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-16552: [10.0] ASAN global-buffer-overflow in is_stat_table / statistics_for_tables_is_needed
|
||||||
|
#
|
||||||
|
SET use_stat_tables = PREFERABLY;
|
||||||
|
SELECT CONVERT_TZ( '1991-09-20 10:11:02', '+00:00', 'GMT' );
|
||||||
|
CONVERT_TZ( '1991-09-20 10:11:02', '+00:00', 'GMT' )
|
||||||
|
NULL
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16757: manual addition of min/max statistics for BLOB
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze Warning Engine-independent statistics are not collected for column 't'
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
DELETE FROM mysql.column_stats
|
||||||
|
WHERE db_name='test' AND table_name='t1' AND column_name='t';
|
||||||
|
INSERT INTO mysql.column_stats VALUES
|
||||||
|
('test','t1','t','bar','foo', 0.0, 3.0, 1.0, 0, NULL, NULL);
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
test t1 t bar foo 0.0000 3.0000 1.0000 0 NULL NULL
|
||||||
|
SELECT pk FROM t1;
|
||||||
|
pk
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16760: CREATE OR REPLACE TABLE after ANALYZE TABLE
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk int PRIMARY KEY, c varchar(32));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk c
|
||||||
|
1 foo
|
||||||
|
2 bar
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
test t1 c bar foo 0.0000 3.0000 1.0000 0 NULL NULL
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk int PRIMARY KEY, a char(7));
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk a
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
DROP TABLE t1;
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16757: manual addition of min/max statistics for BLOB
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze Warning Engine-independent statistics are not collected for column 't'
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
DELETE FROM mysql.column_stats
|
||||||
|
WHERE db_name='test' AND table_name='t1' AND column_name='t';
|
||||||
|
INSERT INTO mysql.column_stats VALUES
|
||||||
|
('test','t1','t','bar','foo', 0.0, 3.0, 1.0, 0, NULL, NULL);
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
test t1 t bar foo 0.0000 3.0000 1.0000 0 NULL NULL
|
||||||
|
SELECT pk FROM t1;
|
||||||
|
pk
|
||||||
|
1
|
||||||
|
2
|
||||||
|
DROP TABLE t1;
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16760: CREATE OR REPLACE TABLE after ANALYZE TABLE
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk int PRIMARY KEY, c varchar(32));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze status OK
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk c
|
||||||
|
1 foo
|
||||||
|
2 bar
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
test t1 pk 1 2 0.0000 4.0000 1.0000 0 NULL NULL
|
||||||
|
test t1 c bar foo 0.0000 3.0000 1.0000 0 NULL NULL
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk int PRIMARY KEY, a char(7));
|
||||||
|
SELECT * FROM t1;
|
||||||
|
pk a
|
||||||
|
SELECT * FROM mysql.column_stats;
|
||||||
|
db_name table_name column_name min_value max_value nulls_ratio avg_length avg_frequency hist_size hist_type histogram
|
||||||
|
DROP TABLE t1;
|
||||||
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
|
#
|
||||||
|
# MDEV-16711:CREATE OR REPLACE TABLE introducing BLOB column
|
||||||
|
#
|
||||||
|
SET use_stat_tables= PREFERABLY;
|
||||||
|
CREATE TABLE t1 (pk INT PRIMARY KEY, t CHAR(60));
|
||||||
|
INSERT INTO t1 VALUES (1,'foo'),(2,'bar');
|
||||||
|
ANALYZE TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 analyze status Engine-independent statistics collected
|
||||||
|
test.t1 analyze status OK
|
||||||
|
CREATE OR REPLACE TABLE t1 (pk INT PRIMARY KEY, t TEXT);
|
||||||
|
SELECT MAX(pk) FROM t1;
|
||||||
|
MAX(pk)
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1;
|
||||||
set use_stat_tables=@save_use_stat_tables;
|
set use_stat_tables=@save_use_stat_tables;
|
||||||
set optimizer_switch=@save_optimizer_switch_for_stat_tables_test;
|
set optimizer_switch=@save_optimizer_switch_for_stat_tables_test;
|
||||||
SET SESSION STORAGE_ENGINE=DEFAULT;
|
SET SESSION STORAGE_ENGINE=DEFAULT;
|
||||||
|
@ -2391,6 +2391,99 @@ ec70316637232000158bbfc8bcbe5d60
|
|||||||
ebb4620037332000158bbfc8bcbe5d89
|
ebb4620037332000158bbfc8bcbe5d89
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
#
|
||||||
|
# MDEV-16751: Server crashes in st_join_table::cleanup or
|
||||||
|
# TABLE_LIST::is_with_table_recursive_reference with join_cache_level>2
|
||||||
|
#
|
||||||
|
set @save_join_cache_level= @@join_cache_level;
|
||||||
|
set join_cache_level=4;
|
||||||
|
CREATE TABLE t1 ( id int NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||||
|
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL) ;
|
||||||
|
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||||
|
explain
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||||
|
1 PRIMARY t1 hash_ALL NULL #hash#$hj 4 test.t2.i1 9 Using where; Using join buffer (flat, BNLH join)
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set @@join_cache_level= @save_join_cache_level;
|
||||||
|
alter table t1 add key(id);
|
||||||
|
explain
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||||
|
1 PRIMARY t1 ref id id 4 test.t2.i1 2 Using index
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# MDEV-15454: Nested SELECT IN returns wrong results
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a int NOT NULL PRIMARY KEY);
|
||||||
|
CREATE TABLE t2 ( a int, b int );
|
||||||
|
INSERT INTO t2 VALUES (7878, 96),(3465, 96),(1403, 96),(4189, 96),(8732, 96), (5,96);
|
||||||
|
CREATE TABLE t3 (c int unsigned NOT NULL, b int unsigned NOT NULL, PRIMARY KEY (c,b));
|
||||||
|
INSERT INTO t3 (c, b) VALUES (27, 96);
|
||||||
|
CREATE PROCEDURE prepare_data()
|
||||||
|
BEGIN
|
||||||
|
DECLARE i INT DEFAULT 1;
|
||||||
|
WHILE i < 1000 DO
|
||||||
|
INSERT INTO t1 (a) VALUES (i);
|
||||||
|
INSERT INTO t2 (a,b) VALUES (i,56);
|
||||||
|
INSERT INTO t3 (c,b) VALUES (i,i);
|
||||||
|
SET i = i + 1;
|
||||||
|
END WHILE;
|
||||||
|
END$$
|
||||||
|
CALL prepare_data();
|
||||||
|
SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27);
|
||||||
|
a
|
||||||
|
7878
|
||||||
|
3465
|
||||||
|
1403
|
||||||
|
4189
|
||||||
|
8732
|
||||||
|
5
|
||||||
|
set @save_optimizer_switch= @@optimizer_switch;
|
||||||
|
SET optimizer_switch='materialization=off';
|
||||||
|
SELECT t1.a FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||||
|
a
|
||||||
|
5
|
||||||
|
SET optimizer_switch='materialization=on';
|
||||||
|
SELECT t1.a FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||||
|
a
|
||||||
|
5
|
||||||
|
drop procedure prepare_data;
|
||||||
|
set @@optimizer_switch= @save_optimizer_switch;
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
CREATE TABLE t1 ( id int NOT NULL, key(id));
|
||||||
|
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||||
|
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL);
|
||||||
|
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||||
|
CREATE VIEW v1 AS SELECT t2.i1 FROM t2 where t2.i1 = t2.i2;
|
||||||
|
explain SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||||
|
1 PRIMARY t1 ref id id 4 test.t2.i1 2 Using index
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop table t1,t2;
|
||||||
|
drop view v1;
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
# MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
# MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
||||||
|
@ -442,7 +442,7 @@ SELECT i2 FROM t2 RIGHT JOIN t3 ON (c3 = c2) WHERE pk3 = i1
|
|||||||
id select_type table type possible_keys key key_len ref rows Extra
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||||
2 DEPENDENT SUBQUERY t3 const PRIMARY PRIMARY 4 const 1
|
2 DEPENDENT SUBQUERY t3 const PRIMARY PRIMARY 4 const 1
|
||||||
2 DEPENDENT SUBQUERY t2 index NULL i2 11 NULL 2 Using where; Using index
|
2 DEPENDENT SUBQUERY t2 index i2 i2 11 NULL 2 Using where; Using index
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
#
|
#
|
||||||
# MDEV-7599: in-to-exists chosen after min/max optimization
|
# MDEV-7599: in-to-exists chosen after min/max optimization
|
||||||
|
@ -1728,6 +1728,57 @@ id
|
|||||||
13
|
13
|
||||||
drop table t1;
|
drop table t1;
|
||||||
#
|
#
|
||||||
|
# MDEV-15982: Incorrect results when subquery is materialized
|
||||||
|
#
|
||||||
|
CREATE TABLE `t1` (`id` int(32) NOT NULL primary key);
|
||||||
|
INSERT INTO `t1` VALUES
|
||||||
|
(45), (46), (47), (48), (49), (50), (51), (52), (53), (54), (55), (56), (57), (58), (59), (60), (61), (62),
|
||||||
|
(63), (64), (65), (66), (67), (68), (69), (70), (71), (72), (73), (74), (75), (76), (77), (78), (79), (80),
|
||||||
|
(81), (82), (83), (84), (85), (86), (87), (88), (89), (90), (91), (92),(93),(94),(95),(96), (97), (98),
|
||||||
|
(99), (100), (101), (102), (103), (104), (105), (106), (107), (108), (109), (110), (111), (112), (113),
|
||||||
|
(114), (115), (116), (117), (118), (119), (120), (121), (122), (123), (124), (125), (126), (127), (128),
|
||||||
|
(129), (130), (131), (132), (133), (134), (135), (136), (137), (138), (139), (140), (141), (142), (143), (144), (145), (146),
|
||||||
|
(147), (148), (149), (150), (151), (152), (153), (154), (155), (156), (157), (158), (159), (160), (161),
|
||||||
|
(162), (163), (164), (165), (166), (167), (168), (169), (170), (171), (172), (173),
|
||||||
|
(174), (175), (176), (177), (178), (179), (180), (181), (182), (183), (2), (3), (4), (5), (6), (19), (35),
|
||||||
|
(7), (20), (8), (36), (219), (22), (10), (23), (37), (11), (24);
|
||||||
|
CREATE TABLE `t2` (`type` int , `id` int(32) NOT NULL primary key);
|
||||||
|
INSERT INTO `t2` VALUES
|
||||||
|
(2,2),(2,3),(1,4),(2,5),(1,6),(1,19),(5,7),(1,20),(1,8),(1,21),(1,9),
|
||||||
|
(1,22),(2,10),(1,23),(2,11),(1,24),(1,12),(1,25),(2,13),(2,26),(2,14),
|
||||||
|
(2,27),(1,15),(1,28),(3,16),(1,29),(2,17),(1,30),(5,18),(2,1);
|
||||||
|
CREATE TABLE `t3` (`ref_id` int(32) unsigned ,`type` varchar(80),`id` int(32) NOT NULL );
|
||||||
|
INSERT INTO `t3` VALUES
|
||||||
|
(1,'incident',31),(2,'faux pas',32),
|
||||||
|
(5,'oopsies',33),(3,'deniable',34),
|
||||||
|
(11,'wasntme',35),(10,'wasntme',36),
|
||||||
|
(17,'faux pas',37),(13,'unlikely',38),
|
||||||
|
(13,'improbable',39),(14,'incident',40),
|
||||||
|
(26,'problem',41),(14,'problem',42),
|
||||||
|
(26,'incident',43),(27,'incident',44);
|
||||||
|
explain
|
||||||
|
SELECT t2.id FROM t2,t1
|
||||||
|
WHERE t2.id IN (SELECT t3.ref_id FROM t3,t1 where t3.id = t1.id) and t2.id = t1.id;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t2 index PRIMARY PRIMARY 4 NULL 30 Using index
|
||||||
|
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1 Using where
|
||||||
|
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 test.t2.id 1 Using index
|
||||||
|
2 MATERIALIZED t3 ALL NULL NULL NULL NULL 14
|
||||||
|
2 MATERIALIZED t1 eq_ref PRIMARY PRIMARY 4 test.t3.id 1 Using index
|
||||||
|
SELECT t2.id FROM t2,t1
|
||||||
|
WHERE t2.id IN (SELECT t3.ref_id FROM t3,t1 where t3.id = t1.id) and t2.id = t1.id;
|
||||||
|
id
|
||||||
|
10
|
||||||
|
11
|
||||||
|
set optimizer_switch='materialization=off';
|
||||||
|
SELECT t2.id FROM t2,t1
|
||||||
|
WHERE t2.id IN (SELECT t3.ref_id FROM t3,t1 where t3.id = t1.id) and t2.id = t1.id;
|
||||||
|
id
|
||||||
|
11
|
||||||
|
10
|
||||||
|
set optimizer_switch='materialization=on';
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
#
|
||||||
# MDEV-15247: Crash when SET NAMES 'utf8' is set
|
# MDEV-15247: Crash when SET NAMES 'utf8' is set
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
|
@ -346,6 +346,55 @@ WHERE (
|
|||||||
);
|
);
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-15982: Incorrect results when subquery is materialized
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE `t1` (`id` int(32) NOT NULL primary key);
|
||||||
|
INSERT INTO `t1` VALUES
|
||||||
|
(45), (46), (47), (48), (49), (50), (51), (52), (53), (54), (55), (56), (57), (58), (59), (60), (61), (62),
|
||||||
|
(63), (64), (65), (66), (67), (68), (69), (70), (71), (72), (73), (74), (75), (76), (77), (78), (79), (80),
|
||||||
|
(81), (82), (83), (84), (85), (86), (87), (88), (89), (90), (91), (92),(93),(94),(95),(96), (97), (98),
|
||||||
|
(99), (100), (101), (102), (103), (104), (105), (106), (107), (108), (109), (110), (111), (112), (113),
|
||||||
|
(114), (115), (116), (117), (118), (119), (120), (121), (122), (123), (124), (125), (126), (127), (128),
|
||||||
|
(129), (130), (131), (132), (133), (134), (135), (136), (137), (138), (139), (140), (141), (142), (143), (144), (145), (146),
|
||||||
|
(147), (148), (149), (150), (151), (152), (153), (154), (155), (156), (157), (158), (159), (160), (161),
|
||||||
|
(162), (163), (164), (165), (166), (167), (168), (169), (170), (171), (172), (173),
|
||||||
|
(174), (175), (176), (177), (178), (179), (180), (181), (182), (183), (2), (3), (4), (5), (6), (19), (35),
|
||||||
|
(7), (20), (8), (36), (219), (22), (10), (23), (37), (11), (24);
|
||||||
|
|
||||||
|
CREATE TABLE `t2` (`type` int , `id` int(32) NOT NULL primary key);
|
||||||
|
INSERT INTO `t2` VALUES
|
||||||
|
(2,2),(2,3),(1,4),(2,5),(1,6),(1,19),(5,7),(1,20),(1,8),(1,21),(1,9),
|
||||||
|
(1,22),(2,10),(1,23),(2,11),(1,24),(1,12),(1,25),(2,13),(2,26),(2,14),
|
||||||
|
(2,27),(1,15),(1,28),(3,16),(1,29),(2,17),(1,30),(5,18),(2,1);
|
||||||
|
|
||||||
|
CREATE TABLE `t3` (`ref_id` int(32) unsigned ,`type` varchar(80),`id` int(32) NOT NULL );
|
||||||
|
INSERT INTO `t3` VALUES
|
||||||
|
(1,'incident',31),(2,'faux pas',32),
|
||||||
|
(5,'oopsies',33),(3,'deniable',34),
|
||||||
|
(11,'wasntme',35),(10,'wasntme',36),
|
||||||
|
(17,'faux pas',37),(13,'unlikely',38),
|
||||||
|
(13,'improbable',39),(14,'incident',40),
|
||||||
|
(26,'problem',41),(14,'problem',42),
|
||||||
|
(26,'incident',43),(27,'incident',44);
|
||||||
|
|
||||||
|
explain
|
||||||
|
SELECT t2.id FROM t2,t1
|
||||||
|
WHERE t2.id IN (SELECT t3.ref_id FROM t3,t1 where t3.id = t1.id) and t2.id = t1.id;
|
||||||
|
|
||||||
|
SELECT t2.id FROM t2,t1
|
||||||
|
WHERE t2.id IN (SELECT t3.ref_id FROM t3,t1 where t3.id = t1.id) and t2.id = t1.id;
|
||||||
|
|
||||||
|
set optimizer_switch='materialization=off';
|
||||||
|
|
||||||
|
SELECT t2.id FROM t2,t1
|
||||||
|
WHERE t2.id IN (SELECT t3.ref_id FROM t3,t1 where t3.id = t1.id) and t2.id = t1.id;
|
||||||
|
set optimizer_switch='materialization=on';
|
||||||
|
|
||||||
|
DROP TABLE t1,t2,t3;
|
||||||
|
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-15247: Crash when SET NAMES 'utf8' is set
|
--echo # MDEV-15247: Crash when SET NAMES 'utf8' is set
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -2431,6 +2431,99 @@ ec70316637232000158bbfc8bcbe5d60
|
|||||||
ebb4620037332000158bbfc8bcbe5d89
|
ebb4620037332000158bbfc8bcbe5d89
|
||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
#
|
||||||
|
# MDEV-16751: Server crashes in st_join_table::cleanup or
|
||||||
|
# TABLE_LIST::is_with_table_recursive_reference with join_cache_level>2
|
||||||
|
#
|
||||||
|
set @save_join_cache_level= @@join_cache_level;
|
||||||
|
set join_cache_level=4;
|
||||||
|
CREATE TABLE t1 ( id int NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||||
|
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL) ;
|
||||||
|
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||||
|
explain
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||||
|
1 PRIMARY t1 hash_ALL NULL #hash#$hj 4 test.t2.i1 9 Using where; Using join buffer (flat, BNLH join)
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
set @@join_cache_level= @save_join_cache_level;
|
||||||
|
alter table t1 add key(id);
|
||||||
|
explain
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||||
|
1 PRIMARY t1 ref id id 4 test.t2.i1 2 Using index
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop table t1,t2;
|
||||||
|
#
|
||||||
|
# MDEV-15454: Nested SELECT IN returns wrong results
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 ( a int NOT NULL PRIMARY KEY);
|
||||||
|
CREATE TABLE t2 ( a int, b int );
|
||||||
|
INSERT INTO t2 VALUES (7878, 96),(3465, 96),(1403, 96),(4189, 96),(8732, 96), (5,96);
|
||||||
|
CREATE TABLE t3 (c int unsigned NOT NULL, b int unsigned NOT NULL, PRIMARY KEY (c,b));
|
||||||
|
INSERT INTO t3 (c, b) VALUES (27, 96);
|
||||||
|
CREATE PROCEDURE prepare_data()
|
||||||
|
BEGIN
|
||||||
|
DECLARE i INT DEFAULT 1;
|
||||||
|
WHILE i < 1000 DO
|
||||||
|
INSERT INTO t1 (a) VALUES (i);
|
||||||
|
INSERT INTO t2 (a,b) VALUES (i,56);
|
||||||
|
INSERT INTO t3 (c,b) VALUES (i,i);
|
||||||
|
SET i = i + 1;
|
||||||
|
END WHILE;
|
||||||
|
END$$
|
||||||
|
CALL prepare_data();
|
||||||
|
SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27);
|
||||||
|
a
|
||||||
|
7878
|
||||||
|
3465
|
||||||
|
1403
|
||||||
|
4189
|
||||||
|
8732
|
||||||
|
5
|
||||||
|
set @save_optimizer_switch= @@optimizer_switch;
|
||||||
|
SET optimizer_switch='materialization=off';
|
||||||
|
SELECT t1.a FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||||
|
a
|
||||||
|
5
|
||||||
|
SET optimizer_switch='materialization=on';
|
||||||
|
SELECT t1.a FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||||
|
a
|
||||||
|
5
|
||||||
|
drop procedure prepare_data;
|
||||||
|
set @@optimizer_switch= @save_optimizer_switch;
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
CREATE TABLE t1 ( id int NOT NULL, key(id));
|
||||||
|
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||||
|
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL);
|
||||||
|
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||||
|
CREATE VIEW v1 AS SELECT t2.i1 FROM t2 where t2.i1 = t2.i2;
|
||||||
|
explain SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||||
|
1 PRIMARY t1 ref id id 4 test.t2.i1 2 Using index
|
||||||
|
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
drop table t1,t2;
|
||||||
|
drop view v1;
|
||||||
# End of 5.5 tests
|
# End of 5.5 tests
|
||||||
#
|
#
|
||||||
# MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
# MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
||||||
|
@ -2157,6 +2157,85 @@ eval $q;
|
|||||||
DROP TABLE t1,t2,t3;
|
DROP TABLE t1,t2,t3;
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-16751: Server crashes in st_join_table::cleanup or
|
||||||
|
--echo # TABLE_LIST::is_with_table_recursive_reference with join_cache_level>2
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
set @save_join_cache_level= @@join_cache_level;
|
||||||
|
set join_cache_level=4;
|
||||||
|
CREATE TABLE t1 ( id int NOT NULL);
|
||||||
|
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL) ;
|
||||||
|
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||||
|
|
||||||
|
explain
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
|
||||||
|
set @@join_cache_level= @save_join_cache_level;
|
||||||
|
alter table t1 add key(id);
|
||||||
|
|
||||||
|
explain
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||||
|
|
||||||
|
drop table t1,t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-15454: Nested SELECT IN returns wrong results
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 ( a int NOT NULL PRIMARY KEY);
|
||||||
|
|
||||||
|
CREATE TABLE t2 ( a int, b int );
|
||||||
|
INSERT INTO t2 VALUES (7878, 96),(3465, 96),(1403, 96),(4189, 96),(8732, 96), (5,96);
|
||||||
|
|
||||||
|
CREATE TABLE t3 (c int unsigned NOT NULL, b int unsigned NOT NULL, PRIMARY KEY (c,b));
|
||||||
|
INSERT INTO t3 (c, b) VALUES (27, 96);
|
||||||
|
|
||||||
|
DELIMITER $$;
|
||||||
|
CREATE PROCEDURE prepare_data()
|
||||||
|
BEGIN
|
||||||
|
DECLARE i INT DEFAULT 1;
|
||||||
|
WHILE i < 1000 DO
|
||||||
|
INSERT INTO t1 (a) VALUES (i);
|
||||||
|
INSERT INTO t2 (a,b) VALUES (i,56);
|
||||||
|
INSERT INTO t3 (c,b) VALUES (i,i);
|
||||||
|
SET i = i + 1;
|
||||||
|
END WHILE;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;$$
|
||||||
|
|
||||||
|
CALL prepare_data();
|
||||||
|
|
||||||
|
SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27);
|
||||||
|
|
||||||
|
set @save_optimizer_switch= @@optimizer_switch;
|
||||||
|
SET optimizer_switch='materialization=off';
|
||||||
|
|
||||||
|
SELECT t1.a FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||||
|
|
||||||
|
SET optimizer_switch='materialization=on';
|
||||||
|
|
||||||
|
SELECT t1.a FROM t1
|
||||||
|
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||||
|
|
||||||
|
drop procedure prepare_data;
|
||||||
|
set @@optimizer_switch= @save_optimizer_switch;
|
||||||
|
drop table t1,t2,t3;
|
||||||
|
|
||||||
|
CREATE TABLE t1 ( id int NOT NULL, key(id));
|
||||||
|
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||||
|
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL);
|
||||||
|
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||||
|
CREATE VIEW v1 AS SELECT t2.i1 FROM t2 where t2.i1 = t2.i2;
|
||||||
|
explain SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||||
|
SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||||
|
drop table t1,t2;
|
||||||
|
drop view v1;
|
||||||
--echo # End of 5.5 tests
|
--echo # End of 5.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
--echo # MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
--echo # MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
||||||
|
@ -2134,6 +2134,22 @@ DROP VIEW v1;
|
|||||||
UNION
|
UNION
|
||||||
(SELECT 2, 2);
|
(SELECT 2, 2);
|
||||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||||
|
#
|
||||||
|
# Bug#27197235 USER VARIABLE + UINON + DECIMAL COLUMN RETURNS
|
||||||
|
# WRONG VALUES
|
||||||
|
#
|
||||||
|
SET NAMES utf8;
|
||||||
|
SET @advertAcctId = 1000003;
|
||||||
|
select @advertAcctId as a from dual union all select 1.0 from dual;
|
||||||
|
a
|
||||||
|
1000003.0
|
||||||
|
1.0
|
||||||
|
SET NAMES latin1;
|
||||||
|
SET @advertAcctId = 1000003;
|
||||||
|
select @advertAcctId as a from dual union all select 1.0 from dual;
|
||||||
|
a
|
||||||
|
1000003.0
|
||||||
|
1.0
|
||||||
End of 5.5 tests
|
End of 5.5 tests
|
||||||
#
|
#
|
||||||
# WL#1763 Avoid creating temporary table in UNION ALL
|
# WL#1763 Avoid creating temporary table in UNION ALL
|
||||||
|
@ -1470,6 +1470,21 @@ DROP VIEW v1;
|
|||||||
UNION
|
UNION
|
||||||
(SELECT 2, 2);
|
(SELECT 2, 2);
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#27197235 USER VARIABLE + UINON + DECIMAL COLUMN RETURNS
|
||||||
|
--echo # WRONG VALUES
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
let $old_charset= `SELECT @@character_set_client`;
|
||||||
|
|
||||||
|
SET NAMES utf8;
|
||||||
|
SET @advertAcctId = 1000003;
|
||||||
|
select @advertAcctId as a from dual union all select 1.0 from dual;
|
||||||
|
|
||||||
|
eval SET NAMES $old_charset;
|
||||||
|
SET @advertAcctId = 1000003;
|
||||||
|
select @advertAcctId as a from dual union all select 1.0 from dual;
|
||||||
|
|
||||||
--echo End of 5.5 tests
|
--echo End of 5.5 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
31
mysql-test/suite/binlog/include/check_binlog_size.inc
Normal file
31
mysql-test/suite/binlog/include/check_binlog_size.inc
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# This file runs the query and checks
|
||||||
|
# whether the size of binlog is increased or not
|
||||||
|
# If size is changed it issue die command
|
||||||
|
# Parameters
|
||||||
|
# $sql_query = query to run
|
||||||
|
|
||||||
|
#Only last row of show binlog events matter
|
||||||
|
--let $tmp= 0
|
||||||
|
--let $counter= 1
|
||||||
|
while ($tmp != "No such row")
|
||||||
|
{
|
||||||
|
--let $initial_binlog_size= $tmp
|
||||||
|
--let $tmp= query_get_value(show binary logs, File_size, $counter)
|
||||||
|
--inc $counter
|
||||||
|
}
|
||||||
|
|
||||||
|
--eval $sql_query
|
||||||
|
|
||||||
|
--let $tmp= 0
|
||||||
|
--let $counter= 1
|
||||||
|
while ($tmp != "No such row")
|
||||||
|
{
|
||||||
|
--let $current_binlog_size= $tmp
|
||||||
|
--let $tmp= query_get_value(show binary logs, File_size, $counter)
|
||||||
|
--inc $counter
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($initial_binlog_size != $current_binlog_size)
|
||||||
|
{
|
||||||
|
die "Binlog size changed";
|
||||||
|
}
|
7
mysql-test/suite/binlog/r/binlog_tmp_table_row.result
Normal file
7
mysql-test/suite/binlog/r/binlog_tmp_table_row.result
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
RESET MASTER;
|
||||||
|
#Create table test
|
||||||
|
create temporary table t1(a int, b int);
|
||||||
|
#Add index test
|
||||||
|
create index index_a on t1(a);
|
||||||
|
#drop index test
|
||||||
|
drop index index_a on t1;
|
30
mysql-test/suite/binlog/t/binlog_tmp_table_row.test
Normal file
30
mysql-test/suite/binlog/t/binlog_tmp_table_row.test
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# ==== Purpose ====
|
||||||
|
#
|
||||||
|
# Test if statements used temporary tables are not binlogged in the case of
|
||||||
|
# binlog_format=row
|
||||||
|
#
|
||||||
|
# ==== Method ====
|
||||||
|
#
|
||||||
|
# We will see if binlog file size is increased or not, It should be constant for the
|
||||||
|
# entire period of test.
|
||||||
|
#
|
||||||
|
# ==== Related bugs ====
|
||||||
|
#
|
||||||
|
# Mdev-9266
|
||||||
|
#
|
||||||
|
source include/have_log_bin.inc;
|
||||||
|
source include/have_binlog_format_row.inc;
|
||||||
|
|
||||||
|
RESET MASTER;
|
||||||
|
|
||||||
|
--echo #Create table test
|
||||||
|
--let $sql_query= create temporary table t1(a int, b int)
|
||||||
|
--source suite/binlog/include/check_binlog_size.inc
|
||||||
|
|
||||||
|
--echo #Add index test
|
||||||
|
--let $sql_query= create index index_a on t1(a)
|
||||||
|
--source suite/binlog/include/check_binlog_size.inc
|
||||||
|
|
||||||
|
--echo #drop index test
|
||||||
|
--let $sql_query= drop index index_a on t1
|
||||||
|
--source suite/binlog/include/check_binlog_size.inc
|
@ -125,13 +125,13 @@ def mysql innodb_index_stats sample_size 7 NULL YES bigint NULL NULL 20 0 NULL N
|
|||||||
def mysql innodb_index_stats stat_description 8 NULL NO varchar 1024 3072 NULL NULL NULL utf8 utf8_bin varchar(1024) select,insert,update,references NEVER NULL
|
def mysql innodb_index_stats stat_description 8 NULL NO varchar 1024 3072 NULL NULL NULL utf8 utf8_bin varchar(1024) select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_index_stats stat_name 5 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references NEVER NULL
|
def mysql innodb_index_stats stat_name 5 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_index_stats stat_value 6 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
def mysql innodb_index_stats stat_value 6 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_index_stats table_name 2 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references NEVER NULL
|
def mysql innodb_index_stats table_name 2 NULL NO varchar 199 597 NULL NULL NULL utf8 utf8_bin varchar(199) PRI select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_table_stats clustered_index_size 5 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
def mysql innodb_table_stats clustered_index_size 5 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_table_stats database_name 1 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references NEVER NULL
|
def mysql innodb_table_stats database_name 1 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_table_stats last_update 3 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() select,insert,update,references NEVER NULL
|
def mysql innodb_table_stats last_update 3 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_table_stats n_rows 4 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
def mysql innodb_table_stats n_rows 4 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_table_stats sum_of_other_index_sizes 6 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
def mysql innodb_table_stats sum_of_other_index_sizes 6 NULL NO bigint NULL NULL 20 0 NULL NULL NULL bigint(20) unsigned select,insert,update,references NEVER NULL
|
||||||
def mysql innodb_table_stats table_name 2 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_bin varchar(64) PRI select,insert,update,references NEVER NULL
|
def mysql innodb_table_stats table_name 2 NULL NO varchar 199 597 NULL NULL NULL utf8 utf8_bin varchar(199) PRI select,insert,update,references NEVER NULL
|
||||||
def mysql plugin dl 2 '' NO varchar 128 384 NULL NULL NULL utf8 utf8_general_ci varchar(128) select,insert,update,references NEVER NULL
|
def mysql plugin dl 2 '' NO varchar 128 384 NULL NULL NULL utf8 utf8_general_ci varchar(128) select,insert,update,references NEVER NULL
|
||||||
def mysql plugin name 1 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) PRI select,insert,update,references NEVER NULL
|
def mysql plugin name 1 '' NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) PRI select,insert,update,references NEVER NULL
|
||||||
def mysql proc aggregate 21 'NONE' NO enum 5 15 NULL NULL NULL utf8 utf8_general_ci enum('NONE','GROUP') select,insert,update,references NEVER NULL
|
def mysql proc aggregate 21 'NONE' NO enum 5 15 NULL NULL NULL utf8 utf8_general_ci enum('NONE','GROUP') select,insert,update,references NEVER NULL
|
||||||
@ -462,7 +462,7 @@ NULL mysql help_topic help_category_id smallint NULL NULL NULL NULL smallint(5)
|
|||||||
NULL mysql index_stats prefix_arity int NULL NULL NULL NULL int(11) unsigned
|
NULL mysql index_stats prefix_arity int NULL NULL NULL NULL int(11) unsigned
|
||||||
NULL mysql index_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4)
|
NULL mysql index_stats avg_frequency decimal NULL NULL NULL NULL decimal(12,4)
|
||||||
3.0000 mysql innodb_index_stats database_name varchar 64 192 utf8 utf8_bin varchar(64)
|
3.0000 mysql innodb_index_stats database_name varchar 64 192 utf8 utf8_bin varchar(64)
|
||||||
3.0000 mysql innodb_index_stats table_name varchar 64 192 utf8 utf8_bin varchar(64)
|
3.0000 mysql innodb_index_stats table_name varchar 199 597 utf8 utf8_bin varchar(199)
|
||||||
3.0000 mysql innodb_index_stats index_name varchar 64 192 utf8 utf8_bin varchar(64)
|
3.0000 mysql innodb_index_stats index_name varchar 64 192 utf8 utf8_bin varchar(64)
|
||||||
NULL mysql innodb_index_stats last_update timestamp NULL NULL NULL NULL timestamp
|
NULL mysql innodb_index_stats last_update timestamp NULL NULL NULL NULL timestamp
|
||||||
3.0000 mysql innodb_index_stats stat_name varchar 64 192 utf8 utf8_bin varchar(64)
|
3.0000 mysql innodb_index_stats stat_name varchar 64 192 utf8 utf8_bin varchar(64)
|
||||||
@ -470,7 +470,7 @@ NULL mysql innodb_index_stats stat_value bigint NULL NULL NULL NULL bigint(20) u
|
|||||||
NULL mysql innodb_index_stats sample_size bigint NULL NULL NULL NULL bigint(20) unsigned
|
NULL mysql innodb_index_stats sample_size bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||||
3.0000 mysql innodb_index_stats stat_description varchar 1024 3072 utf8 utf8_bin varchar(1024)
|
3.0000 mysql innodb_index_stats stat_description varchar 1024 3072 utf8 utf8_bin varchar(1024)
|
||||||
3.0000 mysql innodb_table_stats database_name varchar 64 192 utf8 utf8_bin varchar(64)
|
3.0000 mysql innodb_table_stats database_name varchar 64 192 utf8 utf8_bin varchar(64)
|
||||||
3.0000 mysql innodb_table_stats table_name varchar 64 192 utf8 utf8_bin varchar(64)
|
3.0000 mysql innodb_table_stats table_name varchar 199 597 utf8 utf8_bin varchar(199)
|
||||||
NULL mysql innodb_table_stats last_update timestamp NULL NULL NULL NULL timestamp
|
NULL mysql innodb_table_stats last_update timestamp NULL NULL NULL NULL timestamp
|
||||||
NULL mysql innodb_table_stats n_rows bigint NULL NULL NULL NULL bigint(20) unsigned
|
NULL mysql innodb_table_stats n_rows bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||||
NULL mysql innodb_table_stats clustered_index_size bigint NULL NULL NULL NULL bigint(20) unsigned
|
NULL mysql innodb_table_stats clustered_index_size bigint NULL NULL NULL NULL bigint(20) unsigned
|
||||||
|
@ -36,3 +36,4 @@ galera_kill_applier : race condition at the start of the test
|
|||||||
galera_ist_progress: MDEV-15236 galera_ist_progress fails when trying to read transfer status
|
galera_ist_progress: MDEV-15236 galera_ist_progress fails when trying to read transfer status
|
||||||
galera_concurrent_ctas : MDEV-15845 Test failure on galera.galera_concurrent_ctas
|
galera_concurrent_ctas : MDEV-15845 Test failure on galera.galera_concurrent_ctas
|
||||||
pxc-421: Lock timeout exceeded
|
pxc-421: Lock timeout exceeded
|
||||||
|
galera_sst_mysqldump_with_key : MDEV-16890 Galera test failure
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
SELECT @@innodb_stats_persistent;
|
||||||
|
@@innodb_stats_persistent
|
||||||
|
1
|
||||||
|
CREATE TABLE t1 (f1 INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, f2 INTEGER DEFAULT 1) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1(f1) values (NULL);
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
SELECT count(1) from t1;
|
||||||
|
count(1)
|
||||||
|
16384
|
||||||
|
connection node_2;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
INSERT INTO t1 VALUES (9999999,NULL);
|
||||||
|
SELECT SLEEP(1000);;
|
||||||
|
connection node_1;
|
||||||
|
ALTER TABLE t1 CHANGE f2 f2 INTEGER NOT NULL DEFAULT 1;
|
||||||
|
connection node_2;
|
||||||
|
ERROR 40001: Deadlock: wsrep aborted transaction
|
||||||
|
wsrep_local_aborts_increment
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
@ -14,7 +14,7 @@ CREATE USER sslsst;
|
|||||||
GRANT ALL PRIVILEGES ON *.* TO sslsst;
|
GRANT ALL PRIVILEGES ON *.* TO sslsst;
|
||||||
GRANT USAGE ON *.* TO sslsst REQUIRE SSL;
|
GRANT USAGE ON *.* TO sslsst REQUIRE SSL;
|
||||||
SET GLOBAL wsrep_sst_auth = 'sslsst:';
|
SET GLOBAL wsrep_sst_auth = 'sslsst:';
|
||||||
Performing State Transfer on a server that has been temporarily disconnected
|
Performing State Transfer on a server that has been shut down cleanly and restarted
|
||||||
connection node_1;
|
connection node_1;
|
||||||
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
|
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
@ -34,8 +34,7 @@ INSERT INTO t1 VALUES ('node2_committed_before');
|
|||||||
INSERT INTO t1 VALUES ('node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
INSERT INTO t1 VALUES ('node2_committed_before');
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
Unloading wsrep provider ...
|
Shutting down server ...
|
||||||
SET GLOBAL wsrep_provider = 'none';
|
|
||||||
connection node_1;
|
connection node_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
@ -51,7 +50,7 @@ INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
|||||||
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
connect node_1a_galera_st_disconnect_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
connect node_1a_galera_st_shutdown_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
@ -60,7 +59,7 @@ INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
|||||||
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
connection node_2;
|
connection node_2;
|
||||||
Loading wsrep provider ...
|
Starting server ...
|
||||||
SET AUTOCOMMIT=OFF;
|
SET AUTOCOMMIT=OFF;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
INSERT INTO t1 VALUES ('node2_committed_after');
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
@ -84,7 +83,7 @@ INSERT INTO t1 VALUES ('node1_committed_after');
|
|||||||
INSERT INTO t1 VALUES ('node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
INSERT INTO t1 VALUES ('node1_committed_after');
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
COMMIT;
|
COMMIT;
|
||||||
connection node_1a_galera_st_disconnect_slave;
|
connection node_1a_galera_st_shutdown_slave;
|
||||||
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
@ -109,6 +108,210 @@ COUNT(*) = 0
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
SET AUTOCOMMIT=ON;
|
SET AUTOCOMMIT=ON;
|
||||||
|
Performing State Transfer on a server that has been killed and restarted
|
||||||
|
connection node_1;
|
||||||
|
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
COMMIT;
|
||||||
|
connection node_2;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
COMMIT;
|
||||||
|
Killing server ...
|
||||||
|
connection node_1;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_during');
|
||||||
|
COMMIT;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
connect node_1a_galera_st_kill_slave, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
connection node_2;
|
||||||
|
Performing --wsrep-recover ...
|
||||||
|
Starting server ...
|
||||||
|
Using --wsrep-start-position when starting mysqld ...
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_after');
|
||||||
|
COMMIT;
|
||||||
|
connection node_1;
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_committed_after');
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_after');
|
||||||
|
COMMIT;
|
||||||
|
connection node_1a_galera_st_kill_slave;
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
|
COUNT(*) = 35
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
|
connection node_1;
|
||||||
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
|
COUNT(*) = 35
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
|
Performing State Transfer on a server that has been killed and restarted
|
||||||
|
while a DDL was in progress on it
|
||||||
|
connection node_1;
|
||||||
|
CREATE TABLE t1 (f1 CHAR(255)) ENGINE=InnoDB;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node1_committed_before');
|
||||||
|
connection node_2;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
INSERT INTO t1 VALUES ('node2_committed_before');
|
||||||
|
COMMIT;
|
||||||
|
SET GLOBAL debug_dbug = 'd,sync.alter_opened_table';
|
||||||
|
connection node_1;
|
||||||
|
ALTER TABLE t1 ADD COLUMN f2 INTEGER;
|
||||||
|
connection node_2;
|
||||||
|
SET wsrep_sync_wait = 0;
|
||||||
|
Killing server ...
|
||||||
|
connection node_1;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_during');
|
||||||
|
COMMIT;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
connect node_1a_galera_st_kill_slave_ddl, 127.0.0.1, root, , test, $NODE_MYPORT_1;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
connection node_2;
|
||||||
|
Performing --wsrep-recover ...
|
||||||
|
connection node_2;
|
||||||
|
Starting server ...
|
||||||
|
Using --wsrep-start-position when starting mysqld ...
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node2_committed_after');
|
||||||
|
COMMIT;
|
||||||
|
connection node_1;
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_committed_after');
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
START TRANSACTION;
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_committed_after');
|
||||||
|
COMMIT;
|
||||||
|
connection node_1a_galera_st_kill_slave_ddl;
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
INSERT INTO t1 (f1) VALUES ('node1_to_be_rollbacked_after');
|
||||||
|
ROLLBACK;
|
||||||
|
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
|
COUNT(*) = 2
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
|
COUNT(*) = 35
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
|
connection node_1;
|
||||||
|
SELECT COUNT(*) = 2 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 't1';
|
||||||
|
COUNT(*) = 2
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 35 FROM t1;
|
||||||
|
COUNT(*) = 35
|
||||||
|
1
|
||||||
|
SELECT COUNT(*) = 0 FROM (SELECT COUNT(*) AS c, f1 FROM t1 GROUP BY f1 HAVING c NOT IN (5, 10)) AS a1;
|
||||||
|
COUNT(*) = 0
|
||||||
|
1
|
||||||
|
DROP TABLE t1;
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=ON;
|
||||||
|
SET GLOBAL debug_dbug = $debug_orig;
|
||||||
connection node_1;
|
connection node_1;
|
||||||
CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query");
|
CALL mtr.add_suppression("Slave SQL: Error 'The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement' on query");
|
||||||
DROP USER sst;
|
DROP USER sst;
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
--innodb_stats_persistent=ON
|
@ -0,0 +1,49 @@
|
|||||||
|
--source include/galera_cluster.inc
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test a local transaction being aborted by a slave one while it is running a SLEEP()
|
||||||
|
#
|
||||||
|
|
||||||
|
SELECT @@innodb_stats_persistent;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (f1 INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, f2 INTEGER DEFAULT 1) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1(f1) values (NULL);
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
INSERT INTO t1(f1) select NULL from t1;
|
||||||
|
SELECT count(1) from t1;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
SET AUTOCOMMIT=OFF;
|
||||||
|
--let $wsrep_local_bf_aborts_before = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||||
|
INSERT INTO t1 VALUES (9999999,NULL);
|
||||||
|
--send SELECT SLEEP(1000);
|
||||||
|
|
||||||
|
--connection node_1
|
||||||
|
ALTER TABLE t1 CHANGE f2 f2 INTEGER NOT NULL DEFAULT 1;
|
||||||
|
|
||||||
|
--connection node_2
|
||||||
|
--error ER_LOCK_DEADLOCK
|
||||||
|
--reap
|
||||||
|
|
||||||
|
--let $wsrep_local_bf_aborts_after = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
|
||||||
|
|
||||||
|
# Check that wsrep_local_bf_aborts has been incremented by exactly 1
|
||||||
|
--disable_query_log
|
||||||
|
--eval SELECT $wsrep_local_bf_aborts_after - $wsrep_local_bf_aborts_before = 1 AS wsrep_local_aborts_increment;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
@ -19,7 +19,12 @@ GRANT USAGE ON *.* TO sslsst REQUIRE SSL;
|
|||||||
|
|
||||||
SET GLOBAL wsrep_sst_auth = 'sslsst:';
|
SET GLOBAL wsrep_sst_auth = 'sslsst:';
|
||||||
|
|
||||||
--source suite/galera/include/galera_st_disconnect_slave.inc
|
# We set the required mysqldump SST options here so that they are used every time the server is restarted during the test
|
||||||
|
--let $start_mysqld_params = --wsrep_sst_auth=sst:'sslsst:' --wsrep_sst_method=mysqldump --wsrep-sst-receive-address=127.0.0.1:$NODE_MYPORT_2 --skip-grant-tables
|
||||||
|
|
||||||
|
--source suite/galera/include/galera_st_shutdown_slave.inc
|
||||||
|
--source suite/galera/include/galera_st_kill_slave.inc
|
||||||
|
--source suite/galera/include/galera_st_kill_slave_ddl.inc
|
||||||
|
|
||||||
--source include/auto_increment_offset_restore.inc
|
--source include/auto_increment_offset_restore.inc
|
||||||
--source suite/galera/include/galera_sst_restore.inc
|
--source suite/galera/include/galera_sst_restore.inc
|
||||||
|
@ -25,7 +25,7 @@ SET GLOBAL innodb_default_row_format=Dynamic;
|
|||||||
CREATE TABLE tab(a INT) ENGINE=InnoDB;
|
CREATE TABLE tab(a INT) ENGINE=InnoDB;
|
||||||
ALTER TABLE tab DISCARD TABLESPACE;
|
ALTER TABLE tab DISCARD TABLESPACE;
|
||||||
ALTER TABLE tab IMPORT TABLESPACE;
|
ALTER TABLE tab IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1)
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||||
DROP TABLE tab;
|
DROP TABLE tab;
|
||||||
SET GLOBAL innodb_default_row_format=Compact;
|
SET GLOBAL innodb_default_row_format=Compact;
|
||||||
SELECT @@innodb_default_row_format;
|
SELECT @@innodb_default_row_format;
|
||||||
|
@ -115,7 +115,7 @@ ALTER TABLE t2 DISCARD TABLESPACE;
|
|||||||
db.opt
|
db.opt
|
||||||
t2.frm
|
t2.frm
|
||||||
ALTER TABLE t2 IMPORT TABLESPACE;
|
ALTER TABLE t2 IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1)
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||||
ALTER TABLE t2 IMPORT TABLESPACE;
|
ALTER TABLE t2 IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Expected FSP_SPACE_FLAGS=0x*, .ibd file contains 0x*.)
|
ERROR HY000: Schema mismatch (Expected FSP_SPACE_FLAGS=0x*, .ibd file contains 0x*.)
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
@ -603,7 +603,7 @@ SELECT * FROM t1;
|
|||||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
restore: t1 .ibd and .cfg files
|
restore: t1 .ibd and .cfg files
|
||||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x0)
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x0; .cfg file uses ROW_FORMAT=REDUNDANT)
|
||||||
unlink: t1.ibd
|
unlink: t1.ibd
|
||||||
unlink: t1.cfg
|
unlink: t1.cfg
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -615,7 +615,19 @@ SELECT * FROM t1;
|
|||||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
restore: t1 .ibd and .cfg files
|
restore: t1 .ibd and .cfg files
|
||||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x0)
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x0; .cfg file uses ROW_FORMAT=REDUNDANT)
|
||||||
|
unlink: t1.ibd
|
||||||
|
unlink: t1.cfg
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x29 and the meta-data file has 0x0; .cfg file uses ROW_FORMAT=REDUNDANT)
|
||||||
unlink: t1.ibd
|
unlink: t1.ibd
|
||||||
unlink: t1.cfg
|
unlink: t1.cfg
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -789,7 +801,7 @@ SELECT * FROM t1;
|
|||||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
restore: t1 .ibd and .cfg files
|
restore: t1 .ibd and .cfg files
|
||||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x1)
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||||
unlink: t1.ibd
|
unlink: t1.ibd
|
||||||
unlink: t1.cfg
|
unlink: t1.cfg
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -801,7 +813,19 @@ SELECT * FROM t1;
|
|||||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
restore: t1 .ibd and .cfg files
|
restore: t1 .ibd and .cfg files
|
||||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1)
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||||
|
unlink: t1.ibd
|
||||||
|
unlink: t1.cfg
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x29 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||||
unlink: t1.ibd
|
unlink: t1.ibd
|
||||||
unlink: t1.cfg
|
unlink: t1.cfg
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -978,7 +1002,7 @@ SELECT * FROM t1;
|
|||||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
restore: t1 .ibd and .cfg files
|
restore: t1 .ibd and .cfg files
|
||||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x21)
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x21; .cfg file uses ROW_FORMAT=DYNAMIC)
|
||||||
unlink: t1.ibd
|
unlink: t1.ibd
|
||||||
unlink: t1.cfg
|
unlink: t1.cfg
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -990,7 +1014,19 @@ SELECT * FROM t1;
|
|||||||
ERROR HY000: Tablespace has been discarded for table `t1`
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
restore: t1 .ibd and .cfg files
|
restore: t1 .ibd and .cfg files
|
||||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x21)
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x21; .cfg file uses ROW_FORMAT=DYNAMIC)
|
||||||
|
unlink: t1.ibd
|
||||||
|
unlink: t1.cfg
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x29 and the meta-data file has 0x21; .cfg file uses ROW_FORMAT=DYNAMIC)
|
||||||
unlink: t1.ibd
|
unlink: t1.ibd
|
||||||
unlink: t1.cfg
|
unlink: t1.cfg
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
@ -1049,6 +1085,220 @@ c1 c2
|
|||||||
42 1
|
42 1
|
||||||
43 1
|
43 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
INSERT INTO t1(c2) VALUES(1);
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`c2` int(11) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`c1`),
|
||||||
|
KEY `idx` (`c2`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2
|
||||||
|
1 1
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
6 1
|
||||||
|
7 1
|
||||||
|
8 1
|
||||||
|
9 1
|
||||||
|
13 1
|
||||||
|
14 1
|
||||||
|
15 1
|
||||||
|
16 1
|
||||||
|
17 1
|
||||||
|
18 1
|
||||||
|
19 1
|
||||||
|
20 1
|
||||||
|
28 1
|
||||||
|
29 1
|
||||||
|
30 1
|
||||||
|
31 1
|
||||||
|
32 1
|
||||||
|
33 1
|
||||||
|
34 1
|
||||||
|
35 1
|
||||||
|
36 1
|
||||||
|
37 1
|
||||||
|
38 1
|
||||||
|
39 1
|
||||||
|
40 1
|
||||||
|
41 1
|
||||||
|
42 1
|
||||||
|
43 1
|
||||||
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
|
backup: t1
|
||||||
|
UNLOCK TABLES;
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
unlink: t1.cfg
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`c2` int(11) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`c1`),
|
||||||
|
KEY `idx` (`c2`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2
|
||||||
|
1 1
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
6 1
|
||||||
|
7 1
|
||||||
|
8 1
|
||||||
|
9 1
|
||||||
|
13 1
|
||||||
|
14 1
|
||||||
|
15 1
|
||||||
|
16 1
|
||||||
|
17 1
|
||||||
|
18 1
|
||||||
|
19 1
|
||||||
|
20 1
|
||||||
|
28 1
|
||||||
|
29 1
|
||||||
|
30 1
|
||||||
|
31 1
|
||||||
|
32 1
|
||||||
|
33 1
|
||||||
|
34 1
|
||||||
|
35 1
|
||||||
|
36 1
|
||||||
|
37 1
|
||||||
|
38 1
|
||||||
|
39 1
|
||||||
|
40 1
|
||||||
|
41 1
|
||||||
|
42 1
|
||||||
|
43 1
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x29; .cfg file uses ROW_FORMAT=COMPRESSED)
|
||||||
|
unlink: t1.ibd
|
||||||
|
unlink: t1.cfg
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x29; .cfg file uses ROW_FORMAT=COMPRESSED)
|
||||||
|
unlink: t1.ibd
|
||||||
|
unlink: t1.cfg
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x29; .cfg file uses ROW_FORMAT=COMPRESSED)
|
||||||
|
unlink: t1.ibd
|
||||||
|
unlink: t1.cfg
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB
|
||||||
|
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x23 and the meta-data file has 0x29; .cfg file uses ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8)
|
||||||
|
unlink: t1.ibd
|
||||||
|
unlink: t1.cfg
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
ERROR HY000: Tablespace has been discarded for table `t1`
|
||||||
|
restore: t1 .ibd and .cfg files
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
Table Op Msg_type Msg_text
|
||||||
|
test.t1 check status OK
|
||||||
|
unlink: t1.cfg
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
Table Create Table
|
||||||
|
t1 CREATE TABLE `t1` (
|
||||||
|
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`c2` int(11) DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`c1`),
|
||||||
|
KEY `idx` (`c2`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
c1 c2
|
||||||
|
1 1
|
||||||
|
2 1
|
||||||
|
3 1
|
||||||
|
4 1
|
||||||
|
6 1
|
||||||
|
7 1
|
||||||
|
8 1
|
||||||
|
9 1
|
||||||
|
13 1
|
||||||
|
14 1
|
||||||
|
15 1
|
||||||
|
16 1
|
||||||
|
17 1
|
||||||
|
18 1
|
||||||
|
19 1
|
||||||
|
20 1
|
||||||
|
28 1
|
||||||
|
29 1
|
||||||
|
30 1
|
||||||
|
31 1
|
||||||
|
32 1
|
||||||
|
33 1
|
||||||
|
34 1
|
||||||
|
35 1
|
||||||
|
36 1
|
||||||
|
37 1
|
||||||
|
38 1
|
||||||
|
39 1
|
||||||
|
40 1
|
||||||
|
41 1
|
||||||
|
42 1
|
||||||
|
43 1
|
||||||
|
DROP TABLE t1;
|
||||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
||||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||||
|
@ -72,7 +72,7 @@ DROP TABLE t1;
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1932 Table 'test.t1' doesn't exist in engine
|
Warning 1932 Table 'test.t1' doesn't exist in engine
|
||||||
DROP TABLE t2,t3;
|
DROP TABLE t2,t3;
|
||||||
FOUND 49 /\[ERROR\] InnoDB: Table `test`\.`t1` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=1 SYS_TABLES\.MIX_LEN=511\b/ in mysqld.1.err
|
FOUND 50 /\[ERROR\] InnoDB: Table `test`\.`t1` in InnoDB data dictionary contains invalid flags\. SYS_TABLES\.TYPE=1 SYS_TABLES\.MIX_LEN=511\b/ in mysqld.1.err
|
||||||
ib_buffer_pool
|
ib_buffer_pool
|
||||||
ib_logfile0
|
ib_logfile0
|
||||||
ib_logfile1
|
ib_logfile1
|
||||||
|
@ -485,7 +485,7 @@ SELECT * FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Row format tests [EXPORT REDUNDANT - IMPORT COMPACT & DYNAMIC]
|
# EXPORT ROW_FORMAT=REDUNDANT
|
||||||
#
|
#
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
@ -587,6 +587,29 @@ EOF
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--error ER_TABLE_SCHEMA_MISMATCH
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_unlink_tablespace("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# This should be OK.
|
# This should be OK.
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
@ -615,7 +638,7 @@ SELECT * FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Row format tests [EXPORT COMPACT - IMPORT REDUNDANT & DYNAMIC]
|
# EXPORT ROW_FORMAT=COMPACT
|
||||||
#
|
#
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
@ -717,6 +740,29 @@ EOF
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--error ER_TABLE_SCHEMA_MISMATCH
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_unlink_tablespace("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# This should be OK.
|
# This should be OK.
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
@ -746,7 +792,7 @@ SELECT * FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Row format tests [EXPORT DYNAMIC- IMPORT REDUNDANT & DYNAMIC]
|
# EXPORT ROW_FORMAT=DYNAMIC
|
||||||
#
|
#
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
@ -848,6 +894,29 @@ EOF
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--error ER_TABLE_SCHEMA_MISMATCH
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_unlink_tablespace("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# This should be OK.
|
# This should be OK.
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
@ -876,6 +945,185 @@ SELECT * FROM t1;
|
|||||||
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# EXPORT ROW_FORMAT=COMPRESSED
|
||||||
|
#
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
|
||||||
|
INSERT INTO t1(c2) VALUES(1);
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||||
|
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
FLUSH TABLES t1 FOR EXPORT;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_backup_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_cleanup("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||||
|
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--error ER_TABLE_SCHEMA_MISMATCH
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_unlink_tablespace("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
||||||
|
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--error ER_TABLE_SCHEMA_MISMATCH
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_unlink_tablespace("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--error ER_TABLE_SCHEMA_MISMATCH
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_unlink_tablespace("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB
|
||||||
|
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
--error ER_TABLE_SCHEMA_MISMATCH
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_unlink_tablespace("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
# This should be OK.
|
||||||
|
CREATE TABLE t1(
|
||||||
|
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||||
|
|
||||||
|
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||||
|
--error ER_TABLESPACE_DISCARDED
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_discard_tablespaces("test", "t1");
|
||||||
|
ib_restore_tablespaces("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||||
|
CHECK TABLE t1;
|
||||||
|
|
||||||
|
perl;
|
||||||
|
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||||
|
ib_cleanup("test", "t1");
|
||||||
|
EOF
|
||||||
|
|
||||||
|
SHOW CREATE TABLE t1;
|
||||||
|
SELECT * FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
||||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||||
|
9
mysql-test/suite/innodb_fts/r/fts_kill_query.result
Normal file
9
mysql-test/suite/innodb_fts/r/fts_kill_query.result
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
CREATE TABLE t1 (a VARCHAR(7), b text, FULLTEXT KEY idx (a,b)) ENGINE=InnoDB;
|
||||||
|
COMMIT;
|
||||||
|
SELECT COUNT(*) FROM t1
|
||||||
|
WHERE MATCH (a,b) AGAINST ('foo bar' IN BOOLEAN MODE);
|
||||||
|
connect con1,localhost,root,,;
|
||||||
|
KILL QUERY @id;
|
||||||
|
disconnect con1;
|
||||||
|
connection default;
|
||||||
|
DROP TABLE t1;
|
105
mysql-test/suite/innodb_fts/r/sync_ddl.result
Normal file
105
mysql-test/suite/innodb_fts/r/sync_ddl.result
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
SET @save_debug = @@GLOBAL.debug_dbug;
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_sync_before_syncing,ib_trunc_sleep_before_fts_cache_clear';
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('By default or with the IN NATURAL LANGUAGE MODE modifier')
|
||||||
|
;
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_write_words_before_select_index,ib_trunc_sleep_before_fts_cache_clear';
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('By default or with the IN NATURAL LANGUAGE MODE modifier'),
|
||||||
|
('performs a natural language search for a string'),
|
||||||
|
('collection is a set of one or more columns included'),
|
||||||
|
('returns a relevance value; that is, a similarity measure'),
|
||||||
|
('and the text in that row in the columns named in'),
|
||||||
|
('By default, the search is performed in case-insensitive'),
|
||||||
|
('sensitive full-text search, use a binary collation '),
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_msg_sync_sleep';
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('By default or with the IN NATURAL LANGUAGE MODE modifier'),
|
||||||
|
('performs a natural language search for a string'),
|
||||||
|
('collection is a set of one or more columns included'),
|
||||||
|
('returns a relevance value; that is, a similarity measure'),
|
||||||
|
('and the text in that row in the columns named in'),
|
||||||
|
('By default, the search is performed in case-insensitive'),
|
||||||
|
('sensitive full-text search, use a binary collation '),
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
DROP INDEX idx1 ON t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_msg_sync_sleep';
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('By default or with the IN NATURAL LANGUAGE MODE modifier'),
|
||||||
|
('performs a natural language search for a string'),
|
||||||
|
('collection is a set of one or more columns included'),
|
||||||
|
('returns a relevance value; that is, a similarity measure'),
|
||||||
|
('and the text in that row in the columns named in'),
|
||||||
|
('By default, the search is performed in case-insensitive'),
|
||||||
|
('sensitive full-text search, use a binary collation '),
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
ALTER TABLE t1
|
||||||
|
DROP INDEX idx1,
|
||||||
|
ALGORITHM=INPLACE;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_msg_sync_sleep';
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
ALTER TABLE t1
|
||||||
|
DROP INDEX idx1,
|
||||||
|
ALGORITHM=COPY;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_msg_sync_sleep';
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
ALTER TABLE t1
|
||||||
|
DROP COLUMN id1,
|
||||||
|
ADD COLUMN id2 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
DROP INDEX idx1,
|
||||||
|
ADD FULLTEXT INDEX idx2(value),
|
||||||
|
ALGORITHM=INPLACE;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
30
mysql-test/suite/innodb_fts/t/fts_kill_query.test
Normal file
30
mysql-test/suite/innodb_fts/t/fts_kill_query.test
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(7), b text, FULLTEXT KEY idx (a,b)) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
--disable_query_log
|
||||||
|
BEGIN;
|
||||||
|
let $n=1000;
|
||||||
|
while ($n) {
|
||||||
|
INSERT INTO t1 VALUES('foo bar','boo far');
|
||||||
|
dec $n;
|
||||||
|
}
|
||||||
|
--enable_query_log
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
let $id = `SELECT CONNECTION_ID()`;
|
||||||
|
send SELECT COUNT(*) FROM t1
|
||||||
|
WHERE MATCH (a,b) AGAINST ('foo bar' IN BOOLEAN MODE);
|
||||||
|
|
||||||
|
connect (con1,localhost,root,,);
|
||||||
|
let $ignore= `SELECT @id := $ID`;
|
||||||
|
KILL QUERY @id;
|
||||||
|
disconnect con1;
|
||||||
|
|
||||||
|
connection default;
|
||||||
|
# The following would return a result set if the KILL was not fast enough.
|
||||||
|
--disable_result_log
|
||||||
|
--error 0,ER_QUERY_INTERRUPTED,HA_ERR_ABORTED_BY_USER
|
||||||
|
reap;
|
||||||
|
--enable_result_log
|
||||||
|
DROP TABLE t1;
|
177
mysql-test/suite/innodb_fts/t/sync_ddl.test
Normal file
177
mysql-test/suite/innodb_fts/t/sync_ddl.test
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
#
|
||||||
|
# BUG#27082268 FTS synchronization issues
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
--source include/have_debug.inc
|
||||||
|
|
||||||
|
#--------------------------------------
|
||||||
|
# Check FTS_sync vs TRUNCATE (1)
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
|
||||||
|
SET @save_debug = @@GLOBAL.debug_dbug;
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_sync_before_syncing,ib_trunc_sleep_before_fts_cache_clear';
|
||||||
|
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('By default or with the IN NATURAL LANGUAGE MODE modifier')
|
||||||
|
;
|
||||||
|
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
|
||||||
|
#--------------------------------------
|
||||||
|
# Check FTS sync vs DROP INDEX (2)
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_write_words_before_select_index,ib_trunc_sleep_before_fts_cache_clear';
|
||||||
|
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('By default or with the IN NATURAL LANGUAGE MODE modifier'),
|
||||||
|
('performs a natural language search for a string'),
|
||||||
|
('collection is a set of one or more columns included'),
|
||||||
|
('returns a relevance value; that is, a similarity measure'),
|
||||||
|
('and the text in that row in the columns named in'),
|
||||||
|
('By default, the search is performed in case-insensitive'),
|
||||||
|
('sensitive full-text search, use a binary collation '),
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
|
||||||
|
TRUNCATE TABLE t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
|
||||||
|
#--------------------------------------
|
||||||
|
# Check FTS sync vs DROP INDEX
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_msg_sync_sleep';
|
||||||
|
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('By default or with the IN NATURAL LANGUAGE MODE modifier'),
|
||||||
|
('performs a natural language search for a string'),
|
||||||
|
('collection is a set of one or more columns included'),
|
||||||
|
('returns a relevance value; that is, a similarity measure'),
|
||||||
|
('and the text in that row in the columns named in'),
|
||||||
|
('By default, the search is performed in case-insensitive'),
|
||||||
|
('sensitive full-text search, use a binary collation '),
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
|
||||||
|
DROP INDEX idx1 ON t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
|
||||||
|
#--------------------------------------
|
||||||
|
# Check FTS sync vs ALTER TABLE DROP INDEX (INPLACE)
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_msg_sync_sleep';
|
||||||
|
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('By default or with the IN NATURAL LANGUAGE MODE modifier'),
|
||||||
|
('performs a natural language search for a string'),
|
||||||
|
('collection is a set of one or more columns included'),
|
||||||
|
('returns a relevance value; that is, a similarity measure'),
|
||||||
|
('and the text in that row in the columns named in'),
|
||||||
|
('By default, the search is performed in case-insensitive'),
|
||||||
|
('sensitive full-text search, use a binary collation '),
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE t1
|
||||||
|
DROP INDEX idx1,
|
||||||
|
ALGORITHM=INPLACE;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
|
||||||
|
#--------------------------------------
|
||||||
|
# Check FTS sync vs ALTER TABLE DROP INDEX (COPY)
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_msg_sync_sleep';
|
||||||
|
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE t1
|
||||||
|
DROP INDEX idx1,
|
||||||
|
ALGORITHM=COPY;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
||||||
|
|
||||||
|
#--------------------------------------
|
||||||
|
# Check FTS sync vs ALTER TABLE (INPLACE, new cluster)
|
||||||
|
#--------------------------------------
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
id1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
value VARCHAR(1024)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE FULLTEXT INDEX idx1 ON t1(value);
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = '+d,fts_instrument_sync_request,fts_instrument_msg_sync_sleep';
|
||||||
|
|
||||||
|
INSERT INTO t1 (value) VALUES
|
||||||
|
('example, a column that uses the latin1 character'),
|
||||||
|
('collation of latin1_bin to make it case sensitive')
|
||||||
|
;
|
||||||
|
|
||||||
|
ALTER TABLE t1
|
||||||
|
DROP COLUMN id1,
|
||||||
|
ADD COLUMN id2 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
DROP INDEX idx1,
|
||||||
|
ADD FULLTEXT INDEX idx2(value),
|
||||||
|
ALGORITHM=INPLACE;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET GLOBAL debug_dbug = @save_debug;
|
@ -1286,7 +1286,7 @@ CREATE SPATIAL INDEX idx2 ON t1(c1);
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE mysql.innodb_table_stats (
|
CREATE TABLE mysql.innodb_table_stats (
|
||||||
database_name varchar(64) COLLATE utf8_bin NOT NULL,
|
database_name varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
table_name varchar(64) COLLATE utf8_bin NOT NULL,
|
table_name varchar(199) COLLATE utf8_bin NOT NULL,
|
||||||
last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
n_rows bigint(20) unsigned NOT NULL,
|
n_rows bigint(20) unsigned NOT NULL,
|
||||||
clustered_index_size bigint(20) unsigned NOT NULL,
|
clustered_index_size bigint(20) unsigned NOT NULL,
|
||||||
|
@ -1168,7 +1168,7 @@ CREATE SPATIAL INDEX idx2 ON t1(c1);
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE mysql.innodb_table_stats (
|
CREATE TABLE mysql.innodb_table_stats (
|
||||||
database_name varchar(64) COLLATE utf8_bin NOT NULL,
|
database_name varchar(64) COLLATE utf8_bin NOT NULL,
|
||||||
table_name varchar(64) COLLATE utf8_bin NOT NULL,
|
table_name varchar(199) COLLATE utf8_bin NOT NULL,
|
||||||
last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
n_rows bigint(20) unsigned NOT NULL,
|
n_rows bigint(20) unsigned NOT NULL,
|
||||||
clustered_index_size bigint(20) unsigned NOT NULL,
|
clustered_index_size bigint(20) unsigned NOT NULL,
|
||||||
|
7
mysql-test/suite/parts/r/truncate_locked.result
Normal file
7
mysql-test/suite/parts/r/truncate_locked.result
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
create table t1 (i int) engine=myisam partition by hash(i) partitions 2 ;
|
||||||
|
lock table t1 write;
|
||||||
|
truncate table t1;
|
||||||
|
desc t1;
|
||||||
|
Field Type Null Key Default Extra
|
||||||
|
i int(11) YES NULL
|
||||||
|
drop table t1;
|
10
mysql-test/suite/parts/t/truncate_locked.test
Normal file
10
mysql-test/suite/parts/t/truncate_locked.test
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#
|
||||||
|
# MDEV-15551 Server hangs or assertion `strcmp(share->unique_file_name,filename) || share->last_version' fails in test_if_reopen or unexpected ER_LOCK_DEADLOCK
|
||||||
|
#
|
||||||
|
--source include/have_partition.inc
|
||||||
|
create table t1 (i int) engine=myisam partition by hash(i) partitions 2 ;
|
||||||
|
lock table t1 write;
|
||||||
|
truncate table t1;
|
||||||
|
desc t1;
|
||||||
|
drop table t1;
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
SELECT COUNT(@@GLOBAL.innodb_log_optimize_ddl);
|
||||||
|
COUNT(@@GLOBAL.innodb_log_optimize_ddl)
|
||||||
|
1
|
||||||
|
1 Expected
|
||||||
|
SELECT COUNT(@@SESSION.innodb_log_optimize_ddl);
|
||||||
|
ERROR HY000: Variable 'innodb_log_optimize_ddl' is a GLOBAL variable
|
||||||
|
Expected error 'Variable is a GLOBAL variable'
|
||||||
|
SELECT @@GLOBAL.innodb_log_optimize_ddl;
|
||||||
|
@@GLOBAL.innodb_log_optimize_ddl
|
||||||
|
1
|
||||||
|
SELECT @@GLOBAL.innodb_log_optimize_ddl INTO @innodb_log_optimize_ddl_save;
|
||||||
|
SET @@GLOBAL.innodb_log_optimize_ddl = ON;
|
||||||
|
SET @@GLOBAL.innodb_log_optimize_ddl = OFF;
|
||||||
|
SET @@GLOBAL.innodb_log_optimize_ddl = 13;
|
||||||
|
ERROR 42000: Variable 'innodb_log_optimize_ddl' can't be set to the value of '13'
|
||||||
|
SET @@GLOBAL.innodb_log_optimize_ddl = 'ABC';
|
||||||
|
ERROR 42000: Variable 'innodb_log_optimize_ddl' can't be set to the value of 'ABC'
|
||||||
|
SELECT @@GLOBAL.innodb_log_optimize_ddl = 0
|
||||||
|
OR @@GLOBAL.innodb_log_optimize_ddl = 1 AS col;
|
||||||
|
col
|
||||||
|
1
|
||||||
|
1 Expected
|
||||||
|
SELECT @@innodb_log_optimize_ddl = @@GLOBAL.innodb_log_optimize_ddl AS col;
|
||||||
|
col
|
||||||
|
1
|
||||||
|
1 Expected
|
||||||
|
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||||
|
WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
|
||||||
|
VARIABLE_VALUE
|
||||||
|
OFF
|
||||||
|
SHOW VARIABLES WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
|
||||||
|
Variable_name Value
|
||||||
|
innodb_log_optimize_ddl OFF
|
||||||
|
SELECT @@local.innodb_log_optimize_ddl;
|
||||||
|
ERROR HY000: Variable 'innodb_log_optimize_ddl' is a GLOBAL variable
|
||||||
|
Expected error 'Variable is a GLOBAL variable'
|
||||||
|
SELECT innodb_log_optimize_ddl;
|
||||||
|
ERROR 42S22: Unknown column 'innodb_log_optimize_ddl' in 'field list'
|
||||||
|
SET GLOBAL innodb_log_optimize_ddl = @innodb_log_optimize_ddl_save;
|
@ -586,6 +586,20 @@ NUMERIC_BLOCK_SIZE 1
|
|||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
COMMAND_LINE_ARGUMENT REQUIRED
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
|
VARIABLE_NAME CORE_FILE
|
||||||
|
SESSION_VALUE NULL
|
||||||
|
GLOBAL_VALUE ON
|
||||||
|
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||||
|
DEFAULT_VALUE NULL
|
||||||
|
VARIABLE_SCOPE GLOBAL
|
||||||
|
VARIABLE_TYPE BOOLEAN
|
||||||
|
VARIABLE_COMMENT write a core-file on crashes
|
||||||
|
NUMERIC_MIN_VALUE NULL
|
||||||
|
NUMERIC_MAX_VALUE NULL
|
||||||
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
ENUM_VALUE_LIST OFF,ON
|
||||||
|
READ_ONLY YES
|
||||||
|
COMMAND_LINE_ARGUMENT NULL
|
||||||
VARIABLE_NAME DATADIR
|
VARIABLE_NAME DATADIR
|
||||||
SESSION_VALUE NULL
|
SESSION_VALUE NULL
|
||||||
GLOBAL_VALUE PATH
|
GLOBAL_VALUE PATH
|
||||||
|
@ -586,6 +586,20 @@ NUMERIC_BLOCK_SIZE 1
|
|||||||
ENUM_VALUE_LIST NULL
|
ENUM_VALUE_LIST NULL
|
||||||
READ_ONLY NO
|
READ_ONLY NO
|
||||||
COMMAND_LINE_ARGUMENT REQUIRED
|
COMMAND_LINE_ARGUMENT REQUIRED
|
||||||
|
VARIABLE_NAME CORE_FILE
|
||||||
|
SESSION_VALUE NULL
|
||||||
|
GLOBAL_VALUE ON
|
||||||
|
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||||
|
DEFAULT_VALUE NULL
|
||||||
|
VARIABLE_SCOPE GLOBAL
|
||||||
|
VARIABLE_TYPE BOOLEAN
|
||||||
|
VARIABLE_COMMENT write a core-file on crashes
|
||||||
|
NUMERIC_MIN_VALUE NULL
|
||||||
|
NUMERIC_MAX_VALUE NULL
|
||||||
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
ENUM_VALUE_LIST OFF,ON
|
||||||
|
READ_ONLY YES
|
||||||
|
COMMAND_LINE_ARGUMENT NULL
|
||||||
VARIABLE_NAME DATADIR
|
VARIABLE_NAME DATADIR
|
||||||
SESSION_VALUE NULL
|
SESSION_VALUE NULL
|
||||||
GLOBAL_VALUE PATH
|
GLOBAL_VALUE PATH
|
||||||
|
@ -0,0 +1,65 @@
|
|||||||
|
############# suite/sys_vars/t/innodb_log_optimize_ddl_basic.test #############
|
||||||
|
# #
|
||||||
|
# Variable Name: innodb_log_optimize_ddl #
|
||||||
|
# Scope: Global #
|
||||||
|
# Access Type: Dynamic #
|
||||||
|
# Data Type: boolean #
|
||||||
|
# #
|
||||||
|
# The variable was introduced by #
|
||||||
|
# MDEV-16809 Allow full redo logging for ALTER TABLE #
|
||||||
|
# #
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
#### Reveal that the global innodb system variable exists
|
||||||
|
SELECT COUNT(@@GLOBAL.innodb_log_optimize_ddl);
|
||||||
|
--echo 1 Expected
|
||||||
|
|
||||||
|
#### Reveal that no session innodb system variable exists
|
||||||
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||||
|
SELECT COUNT(@@SESSION.innodb_log_optimize_ddl);
|
||||||
|
--echo Expected error 'Variable is a GLOBAL variable'
|
||||||
|
|
||||||
|
#### Display the default value
|
||||||
|
SELECT @@GLOBAL.innodb_log_optimize_ddl;
|
||||||
|
|
||||||
|
SELECT @@GLOBAL.innodb_log_optimize_ddl INTO @innodb_log_optimize_ddl_save;
|
||||||
|
#### Check if the value can be set
|
||||||
|
SET @@GLOBAL.innodb_log_optimize_ddl = ON;
|
||||||
|
SET @@GLOBAL.innodb_log_optimize_ddl = OFF;
|
||||||
|
|
||||||
|
#### Check if disallowed values are refused
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@GLOBAL.innodb_log_optimize_ddl = 13;
|
||||||
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
|
SET @@GLOBAL.innodb_log_optimize_ddl = 'ABC';
|
||||||
|
|
||||||
|
#### Check if the initial value was in the range of supported values
|
||||||
|
# We use 0 and 1 in order to avoid a warning.
|
||||||
|
SELECT @@GLOBAL.innodb_log_optimize_ddl = 0
|
||||||
|
OR @@GLOBAL.innodb_log_optimize_ddl = 1 AS col;
|
||||||
|
--echo 1 Expected
|
||||||
|
|
||||||
|
#### Check if the value presented without GLOBAL point is the same
|
||||||
|
SELECT @@innodb_log_optimize_ddl = @@GLOBAL.innodb_log_optimize_ddl AS col;
|
||||||
|
--echo 1 Expected
|
||||||
|
|
||||||
|
#### Show the value presented in information_schema and SHOW VARIABLES
|
||||||
|
# We do not want to get and than maybe suppress the print of
|
||||||
|
# Warning 1292 Truncated incorrect DOUBLE value: 'OFF'
|
||||||
|
# and so we simply print the value and do not compare.
|
||||||
|
SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||||
|
WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
|
||||||
|
SHOW VARIABLES WHERE VARIABLE_NAME='innodb_log_optimize_ddl';
|
||||||
|
|
||||||
|
#### Show that variants with @@local. and without @@ do not exist.
|
||||||
|
--Error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||||
|
SELECT @@local.innodb_log_optimize_ddl;
|
||||||
|
--echo Expected error 'Variable is a GLOBAL variable'
|
||||||
|
--Error ER_BAD_FIELD_ERROR
|
||||||
|
SELECT innodb_log_optimize_ddl;
|
||||||
|
|
||||||
|
#### Restore the initial value
|
||||||
|
SET GLOBAL innodb_log_optimize_ddl = @innodb_log_optimize_ddl_save;
|
||||||
|
|
@ -625,6 +625,19 @@
|
|||||||
fun:dlopen*
|
fun:dlopen*
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Warning caused by small memory leak in _dl_init
|
||||||
|
#
|
||||||
|
|
||||||
|
{
|
||||||
|
dl_init memory leak
|
||||||
|
Memcheck:Leak
|
||||||
|
fun:malloc
|
||||||
|
obj:*/libstdc++.so*
|
||||||
|
fun:call_init.part*
|
||||||
|
fun:_dl_init
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# In glibc (checked version 2.7), inet_ntoa allocates an 18-byte
|
# In glibc (checked version 2.7), inet_ntoa allocates an 18-byte
|
||||||
# per-thread static buffer for the return value. That memory is freed
|
# per-thread static buffer for the return value. That memory is freed
|
||||||
|
@ -39,7 +39,10 @@ int my_rename(const char *from, const char *to, myf MyFlags)
|
|||||||
if (link(from, to) || unlink(from))
|
if (link(from, to) || unlink(from))
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
my_errno=errno;
|
if (errno == ENOENT && !access(from, F_OK))
|
||||||
|
my_errno= ENOTDIR;
|
||||||
|
else
|
||||||
|
my_errno= errno;
|
||||||
error = -1;
|
error = -1;
|
||||||
if (MyFlags & (MY_FAE+MY_WME))
|
if (MyFlags & (MY_FAE+MY_WME))
|
||||||
my_error(EE_LINK, MYF(ME_BELL+ME_WAITTANG),from,to,my_errno);
|
my_error(EE_LINK, MYF(ME_BELL+ME_WAITTANG),from,to,my_errno);
|
||||||
|
@ -91,6 +91,7 @@ SET(ADD_GIS_SP_EOL ";")
|
|||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/maria_add_gis_sp.sql.in
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/maria_add_gis_sp.sql.in
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/maria_add_gis_sp_bootstrap.sql ESCAPE_QUOTES @ONLY)
|
${CMAKE_CURRENT_BINARY_DIR}/maria_add_gis_sp_bootstrap.sql ESCAPE_QUOTES @ONLY)
|
||||||
|
|
||||||
|
IF (NOT WITHOUT_SERVER)
|
||||||
INSTALL(FILES
|
INSTALL(FILES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables.sql
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql
|
${CMAKE_CURRENT_SOURCE_DIR}/mysql_system_tables_data.sql
|
||||||
@ -104,6 +105,7 @@ INSTALL(FILES
|
|||||||
${FIX_PRIVILEGES_SQL}
|
${FIX_PRIVILEGES_SQL}
|
||||||
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server
|
DESTINATION ${INSTALL_MYSQLSHAREDIR} COMPONENT Server
|
||||||
)
|
)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
# TCMalloc hacks
|
# TCMalloc hacks
|
||||||
IF(MALLOC_LIB)
|
IF(MALLOC_LIB)
|
||||||
|
@ -236,6 +236,11 @@ cannot_find_file()
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "If you compiled from source, you need to either run 'make install' to"
|
||||||
|
echo "copy the software into the correct location ready for operation."
|
||||||
|
echo "If you don't want to do a full install, you can use the --srcdir"
|
||||||
|
echo "option to only install the mysql database and privilege tables"
|
||||||
echo
|
echo
|
||||||
echo "If you compiled from source, you need to either run 'make install' to"
|
echo "If you compiled from source, you need to either run 'make install' to"
|
||||||
echo "copy the software into the correct location ready for operation."
|
echo "copy the software into the correct location ready for operation."
|
||||||
@ -341,7 +346,7 @@ else
|
|||||||
basedir="@prefix@"
|
basedir="@prefix@"
|
||||||
bindir="@bindir@"
|
bindir="@bindir@"
|
||||||
resolveip="$bindir/resolveip"
|
resolveip="$bindir/resolveip"
|
||||||
mysqld="@libexecdir@/mysqld"
|
mysqld="@sbindir@/mysqld"
|
||||||
srcpkgdatadir="@pkgdatadir@"
|
srcpkgdatadir="@pkgdatadir@"
|
||||||
buildpkgdatadir="@pkgdatadir@"
|
buildpkgdatadir="@pkgdatadir@"
|
||||||
plugindir="@pkgplugindir@"
|
plugindir="@pkgplugindir@"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
-- Copyright (c) 2007, 2013, Oracle and/or its affiliates.
|
-- Copyright (c) 2007, 2018, Oracle and/or its affiliates.
|
||||||
-- Copyright (c) 2008, 2014, Monty Program Ab & SkySQL Ab
|
-- Copyright (c) 2008, 2014, Monty Program Ab & SkySQL Ab
|
||||||
--
|
--
|
||||||
-- This program is free software; you can redistribute it and/or modify
|
-- This program is free software; you can redistribute it and/or modify
|
||||||
@ -107,7 +107,7 @@ CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8 COLLATE utf8_b
|
|||||||
|
|
||||||
SET @create_innodb_table_stats="CREATE TABLE IF NOT EXISTS innodb_table_stats (
|
SET @create_innodb_table_stats="CREATE TABLE IF NOT EXISTS innodb_table_stats (
|
||||||
database_name VARCHAR(64) NOT NULL,
|
database_name VARCHAR(64) NOT NULL,
|
||||||
table_name VARCHAR(64) NOT NULL,
|
table_name VARCHAR(199) NOT NULL,
|
||||||
last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
n_rows BIGINT UNSIGNED NOT NULL,
|
n_rows BIGINT UNSIGNED NOT NULL,
|
||||||
clustered_index_size BIGINT UNSIGNED NOT NULL,
|
clustered_index_size BIGINT UNSIGNED NOT NULL,
|
||||||
@ -117,7 +117,7 @@ SET @create_innodb_table_stats="CREATE TABLE IF NOT EXISTS innodb_table_stats (
|
|||||||
|
|
||||||
SET @create_innodb_index_stats="CREATE TABLE IF NOT EXISTS innodb_index_stats (
|
SET @create_innodb_index_stats="CREATE TABLE IF NOT EXISTS innodb_index_stats (
|
||||||
database_name VARCHAR(64) NOT NULL,
|
database_name VARCHAR(64) NOT NULL,
|
||||||
table_name VARCHAR(64) NOT NULL,
|
table_name VARCHAR(199) NOT NULL,
|
||||||
index_name VARCHAR(64) NOT NULL,
|
index_name VARCHAR(64) NOT NULL,
|
||||||
last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
last_update TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||||
/* there are at least:
|
/* there are at least:
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
-- Copyright (C) 2003, 2013 Oracle and/or its affiliates.
|
-- Copyright (C) 2003, 2013 Oracle and/or its affiliates.
|
||||||
-- Copyright (C) 2010, 2015 MariaDB Corporation Ab.
|
-- Copyright (C) 2010, 2018 MariaDB Corporation
|
||||||
--
|
--
|
||||||
-- This program is free software; you can redistribute it and/or modify
|
-- This program is free software; you can redistribute it and/or modify
|
||||||
-- it under the terms of the GNU General Public License as published by
|
-- it under the terms of the GNU General Public License as published by
|
||||||
@ -28,15 +28,24 @@ set sql_mode='';
|
|||||||
set storage_engine=MyISAM;
|
set storage_engine=MyISAM;
|
||||||
set enforce_storage_engine=NULL;
|
set enforce_storage_engine=NULL;
|
||||||
|
|
||||||
ALTER TABLE user add File_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
|
ALTER TABLE user add File_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||||
|
|
||||||
# Detect whether or not we had the Grant_priv column
|
# Detect whether or not we had the Grant_priv column
|
||||||
SET @hadGrantPriv:=0;
|
SET @hadGrantPriv:=0;
|
||||||
SELECT @hadGrantPriv:=1 FROM user WHERE Grant_priv LIKE '%';
|
SELECT @hadGrantPriv:=1 FROM user WHERE Grant_priv LIKE '%';
|
||||||
|
|
||||||
ALTER TABLE user add Grant_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
|
ALTER TABLE user add Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
ALTER TABLE host add Grant_priv enum('N','Y') NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
|
add References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
ALTER TABLE db add Grant_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add References_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Index_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL,add Alter_priv enum('N','Y') COLLATE utf8_general_ci NOT NULL;
|
add Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
|
add Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||||
|
ALTER TABLE host add Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
|
add References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
|
add Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
|
add Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||||
|
ALTER TABLE db add Grant_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
|
add References_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
|
add Index_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
|
add Alter_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||||
|
|
||||||
# Fix privileges for old tables
|
# Fix privileges for old tables
|
||||||
UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;
|
UPDATE user SET Grant_priv=File_priv,References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Create_priv WHERE @hadGrantPriv = 0;
|
||||||
@ -48,11 +57,11 @@ UPDATE host SET References_priv=Create_priv,Index_priv=Create_priv,Alter_priv=Cr
|
|||||||
# Adding columns needed by GRANT .. REQUIRE (openssl)
|
# Adding columns needed by GRANT .. REQUIRE (openssl)
|
||||||
|
|
||||||
ALTER TABLE user
|
ALTER TABLE user
|
||||||
ADD ssl_type enum('','ANY','X509', 'SPECIFIED') COLLATE utf8_general_ci NOT NULL,
|
ADD ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL,
|
||||||
ADD ssl_cipher BLOB NOT NULL,
|
ADD ssl_cipher BLOB NOT NULL,
|
||||||
ADD x509_issuer BLOB NOT NULL,
|
ADD x509_issuer BLOB NOT NULL,
|
||||||
ADD x509_subject BLOB NOT NULL;
|
ADD x509_subject BLOB NOT NULL;
|
||||||
ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') NOT NULL;
|
ALTER TABLE user MODIFY ssl_type enum('','ANY','X509', 'SPECIFIED') DEFAULT '' NOT NULL;
|
||||||
|
|
||||||
#
|
#
|
||||||
# tables_priv
|
# tables_priv
|
||||||
@ -63,9 +72,9 @@ ALTER TABLE tables_priv
|
|||||||
ALTER TABLE tables_priv
|
ALTER TABLE tables_priv
|
||||||
MODIFY Host char(60) NOT NULL default '',
|
MODIFY Host char(60) NOT NULL default '',
|
||||||
MODIFY Db char(64) NOT NULL default '',
|
MODIFY Db char(64) NOT NULL default '',
|
||||||
MODIFY User char(80) NOT NULL default '',
|
MODIFY User char(80) binary NOT NULL default '',
|
||||||
MODIFY Table_name char(64) NOT NULL default '',
|
MODIFY Table_name char(64) NOT NULL default '',
|
||||||
MODIFY Grantor char(141) NOT NULL default '',
|
MODIFY Grantor char(141) COLLATE utf8_bin NOT NULL default '',
|
||||||
ENGINE=MyISAM,
|
ENGINE=MyISAM,
|
||||||
CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||||
|
|
||||||
@ -91,7 +100,7 @@ ALTER TABLE columns_priv
|
|||||||
ALTER TABLE columns_priv
|
ALTER TABLE columns_priv
|
||||||
MODIFY Host char(60) NOT NULL default '',
|
MODIFY Host char(60) NOT NULL default '',
|
||||||
MODIFY Db char(64) NOT NULL default '',
|
MODIFY Db char(64) NOT NULL default '',
|
||||||
MODIFY User char(80) NOT NULL default '',
|
MODIFY User char(80) binary NOT NULL default '',
|
||||||
MODIFY Table_name char(64) NOT NULL default '',
|
MODIFY Table_name char(64) NOT NULL default '',
|
||||||
MODIFY Column_name char(64) NOT NULL default '',
|
MODIFY Column_name char(64) NOT NULL default '',
|
||||||
ENGINE=MyISAM,
|
ENGINE=MyISAM,
|
||||||
@ -162,7 +171,7 @@ alter table func comment='User defined functions';
|
|||||||
# and reset all char columns to correct width
|
# and reset all char columns to correct width
|
||||||
ALTER TABLE user
|
ALTER TABLE user
|
||||||
MODIFY Host char(60) NOT NULL default '',
|
MODIFY Host char(60) NOT NULL default '',
|
||||||
MODIFY User char(80) NOT NULL default '',
|
MODIFY User char(80) binary NOT NULL default '',
|
||||||
ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||||
|
|
||||||
# In MySQL 5.7.6 the Password column is removed. Recreate it to preserve the number
|
# In MySQL 5.7.6 the Password column is removed. Recreate it to preserve the number
|
||||||
@ -198,7 +207,7 @@ ALTER TABLE user
|
|||||||
ALTER TABLE db
|
ALTER TABLE db
|
||||||
MODIFY Host char(60) NOT NULL default '',
|
MODIFY Host char(60) NOT NULL default '',
|
||||||
MODIFY Db char(64) NOT NULL default '',
|
MODIFY Db char(64) NOT NULL default '',
|
||||||
MODIFY User char(80) NOT NULL default '',
|
MODIFY User char(80) binary NOT NULL default '',
|
||||||
ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
ENGINE=MyISAM, CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
|
||||||
ALTER TABLE db
|
ALTER TABLE db
|
||||||
MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
MODIFY Select_priv enum('N','Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL,
|
||||||
@ -462,7 +471,7 @@ ALTER TABLE proc MODIFY db
|
|||||||
MODIFY definer
|
MODIFY definer
|
||||||
char(141) collate utf8_bin DEFAULT '' NOT NULL,
|
char(141) collate utf8_bin DEFAULT '' NOT NULL,
|
||||||
MODIFY comment
|
MODIFY comment
|
||||||
char(64) collate utf8_bin DEFAULT '' NOT NULL;
|
text collate utf8_bin NOT NULL;
|
||||||
|
|
||||||
ALTER TABLE proc ADD character_set_client
|
ALTER TABLE proc ADD character_set_client
|
||||||
char(32) collate utf8_bin DEFAULT NULL
|
char(32) collate utf8_bin DEFAULT NULL
|
||||||
@ -540,19 +549,18 @@ ALTER TABLE proc ADD aggregate enum('NONE', 'GROUP') DEFAULT 'NONE' NOT NULL
|
|||||||
SET @hadEventPriv := 0;
|
SET @hadEventPriv := 0;
|
||||||
SELECT @hadEventPriv :=1 FROM user WHERE Event_priv LIKE '%';
|
SELECT @hadEventPriv :=1 FROM user WHERE Event_priv LIKE '%';
|
||||||
|
|
||||||
ALTER TABLE user add Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
|
ALTER TABLE user ADD Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
|
||||||
ALTER TABLE user MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
|
ALTER TABLE user MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL AFTER Create_user_priv;
|
||||||
|
|
||||||
UPDATE user SET Event_priv=Super_priv WHERE @hadEventPriv = 0;
|
UPDATE user SET Event_priv=Super_priv WHERE @hadEventPriv = 0;
|
||||||
|
|
||||||
ALTER TABLE db add Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
|
ALTER TABLE db ADD Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
|
||||||
ALTER TABLE db MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
|
ALTER TABLE db MODIFY Event_priv enum('N','Y') character set utf8 DEFAULT 'N' NOT NULL;
|
||||||
|
|
||||||
#
|
#
|
||||||
# EVENT table
|
# EVENT table
|
||||||
#
|
#
|
||||||
ALTER TABLE event DROP PRIMARY KEY;
|
ALTER TABLE event DROP PRIMARY KEY, ADD PRIMARY KEY(db, name);
|
||||||
ALTER TABLE event ADD PRIMARY KEY(db, name);
|
|
||||||
# Add sql_mode column just in case.
|
# Add sql_mode column just in case.
|
||||||
ALTER TABLE event ADD sql_mode set ('IGNORE_BAD_TABLE_OPTIONS') AFTER on_completion;
|
ALTER TABLE event ADD sql_mode set ('IGNORE_BAD_TABLE_OPTIONS') AFTER on_completion;
|
||||||
# Update list of sql_mode values.
|
# Update list of sql_mode values.
|
||||||
@ -594,8 +602,8 @@ ALTER TABLE event MODIFY sql_mode
|
|||||||
) DEFAULT '' NOT NULL AFTER on_completion;
|
) DEFAULT '' NOT NULL AFTER on_completion;
|
||||||
ALTER TABLE event MODIFY name char(64) CHARACTER SET utf8 NOT NULL default '';
|
ALTER TABLE event MODIFY name char(64) CHARACTER SET utf8 NOT NULL default '';
|
||||||
|
|
||||||
ALTER TABLE event MODIFY COLUMN originator INT UNSIGNED NOT NULL;
|
|
||||||
ALTER TABLE event ADD COLUMN originator INT UNSIGNED NOT NULL AFTER comment;
|
ALTER TABLE event ADD COLUMN originator INT UNSIGNED NOT NULL AFTER comment;
|
||||||
|
ALTER TABLE event MODIFY COLUMN originator INT UNSIGNED NOT NULL;
|
||||||
|
|
||||||
ALTER TABLE event MODIFY COLUMN status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED';
|
ALTER TABLE event MODIFY COLUMN status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED';
|
||||||
|
|
||||||
@ -674,12 +682,14 @@ ALTER TABLE db modify Delete_history_priv enum('N','Y') COLLATE utf8_general_ci
|
|||||||
|
|
||||||
UPDATE user SET Delete_history_priv = Super_priv WHERE @had_user_delete_history_priv = 0;
|
UPDATE user SET Delete_history_priv = Super_priv WHERE @had_user_delete_history_priv = 0;
|
||||||
|
|
||||||
ALTER TABLE user ADD plugin char(64) DEFAULT '', ADD authentication_string TEXT;
|
ALTER TABLE user ADD plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL,
|
||||||
|
ADD authentication_string TEXT NOT NULL;
|
||||||
|
ALTER TABLE user MODIFY plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL,
|
||||||
|
MODIFY authentication_string TEXT NOT NULL;
|
||||||
ALTER TABLE user ADD password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
ALTER TABLE user ADD password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||||
ALTER TABLE user ADD is_role enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
ALTER TABLE user ADD is_role enum('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||||
ALTER TABLE user ADD default_role char(80) binary DEFAULT '' NOT NULL;
|
ALTER TABLE user ADD default_role char(80) binary DEFAULT '' NOT NULL;
|
||||||
ALTER TABLE user ADD max_statement_time decimal(12,6) DEFAULT 0 NOT NULL;
|
ALTER TABLE user ADD max_statement_time decimal(12,6) DEFAULT 0 NOT NULL;
|
||||||
ALTER TABLE user MODIFY plugin char(64) CHARACTER SET latin1 DEFAULT '' NOT NULL, MODIFY authentication_string TEXT NOT NULL;
|
|
||||||
-- Somewhere above, we ran ALTER TABLE user .... CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin.
|
-- Somewhere above, we ran ALTER TABLE user .... CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin.
|
||||||
-- we want password_expired column to have collation utf8_general_ci.
|
-- we want password_expired column to have collation utf8_general_ci.
|
||||||
ALTER TABLE user MODIFY password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
ALTER TABLE user MODIFY password_expired ENUM('N', 'Y') COLLATE utf8_general_ci DEFAULT 'N' NOT NULL;
|
||||||
@ -722,13 +732,13 @@ set @str=replace(@str, "innodb_index_stats", "innodb_table_stats");
|
|||||||
prepare stmt from @str;
|
prepare stmt from @str;
|
||||||
execute stmt;
|
execute stmt;
|
||||||
|
|
||||||
# update timestamp fields in the innodb stat tables
|
# update table_name and timestamp fields in the innodb stat tables
|
||||||
set @str="alter table mysql.innodb_index_stats modify last_update timestamp not null default current_timestamp on update current_timestamp";
|
set @str="alter table mysql.innodb_index_stats modify last_update timestamp not null default current_timestamp on update current_timestamp, modify table_name varchar(199)";
|
||||||
set @str=if(@have_innodb <> 0, @str, "set @dummy = 0");
|
set @str=if(@have_innodb <> 0, @str, "set @dummy = 0");
|
||||||
prepare stmt from @str;
|
prepare stmt from @str;
|
||||||
execute stmt;
|
execute stmt;
|
||||||
|
|
||||||
set @str="alter table mysql.innodb_table_stats modify last_update timestamp not null default current_timestamp on update current_timestamp";
|
set @str="alter table mysql.innodb_table_stats modify last_update timestamp not null default current_timestamp on update current_timestamp, modify table_name varchar(199)";
|
||||||
set @str=if(@have_innodb <> 0, @str, "set @dummy = 0");
|
set @str=if(@have_innodb <> 0, @str, "set @dummy = 0");
|
||||||
prepare stmt from @str;
|
prepare stmt from @str;
|
||||||
execute stmt;
|
execute stmt;
|
||||||
|
@ -30,7 +30,7 @@ $opt_example = 0;
|
|||||||
$opt_help = 0;
|
$opt_help = 0;
|
||||||
$opt_log = undef();
|
$opt_log = undef();
|
||||||
$opt_mysqladmin = "@bindir@/mysqladmin";
|
$opt_mysqladmin = "@bindir@/mysqladmin";
|
||||||
$opt_mysqld = "@libexecdir@/mysqld";
|
$opt_mysqld = "@sbindir@/mysqld";
|
||||||
$opt_no_log = 0;
|
$opt_no_log = 0;
|
||||||
$opt_password = undef();
|
$opt_password = undef();
|
||||||
$opt_tcp_ip = 0;
|
$opt_tcp_ip = 0;
|
||||||
|
@ -33,7 +33,6 @@ ssystag=""
|
|||||||
XTRABACKUP_PID=""
|
XTRABACKUP_PID=""
|
||||||
SST_PORT=""
|
SST_PORT=""
|
||||||
REMOTEIP=""
|
REMOTEIP=""
|
||||||
REMOTEHOST=""
|
|
||||||
tcert=""
|
tcert=""
|
||||||
tpem=""
|
tpem=""
|
||||||
tkey=""
|
tkey=""
|
||||||
@ -219,7 +218,7 @@ get_transfer()
|
|||||||
tcmd="socat -u openssl-listen:${TSST_PORT},reuseaddr,cert=${tpem},cafile=${tcert}${sockopt} stdio"
|
tcmd="socat -u openssl-listen:${TSST_PORT},reuseaddr,cert=${tpem},cafile=${tcert}${sockopt} stdio"
|
||||||
else
|
else
|
||||||
wsrep_log_info "Encrypting with cert=${tpem}, cafile=${tcert}"
|
wsrep_log_info "Encrypting with cert=${tpem}, cafile=${tcert}"
|
||||||
tcmd="socat -u stdio openssl-connect:${REMOTEHOST}:${TSST_PORT},cert=${tpem},cafile=${tcert}${sockopt}"
|
tcmd="socat -u stdio openssl-connect:${REMOTEIP}:${TSST_PORT},cert=${tpem},cafile=${tcert}${sockopt}"
|
||||||
fi
|
fi
|
||||||
elif [[ $encrypt -eq 3 ]];then
|
elif [[ $encrypt -eq 3 ]];then
|
||||||
wsrep_log_info "Using openssl based encryption with socat: with key and crt"
|
wsrep_log_info "Using openssl based encryption with socat: with key and crt"
|
||||||
@ -242,7 +241,7 @@ get_transfer()
|
|||||||
tcmd="socat -u stdio openssl-connect:${REMOTEIP}:${TSST_PORT},cert=${tpem},key=${tkey},verify=0${sockopt}"
|
tcmd="socat -u stdio openssl-connect:${REMOTEIP}:${TSST_PORT},cert=${tpem},key=${tkey},verify=0${sockopt}"
|
||||||
else
|
else
|
||||||
wsrep_log_info "Encrypting with cert=${tpem}, key=${tkey}, cafile=${tcert}"
|
wsrep_log_info "Encrypting with cert=${tpem}, key=${tkey}, cafile=${tcert}"
|
||||||
tcmd="socat -u stdio openssl-connect:${REMOTEHOST}:${TSST_PORT},cert=${tpem},key=${tkey},cafile=${tcert}${sockopt}"
|
tcmd="socat -u stdio openssl-connect:${REMOTEIP}:${TSST_PORT},cert=${tpem},key=${tkey},cafile=${tcert}${sockopt}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -512,10 +511,6 @@ setup_ports()
|
|||||||
if [[ "$WSREP_SST_OPT_ROLE" == "donor" ]];then
|
if [[ "$WSREP_SST_OPT_ROLE" == "donor" ]];then
|
||||||
SST_PORT=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $2 }')
|
SST_PORT=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $2 }')
|
||||||
REMOTEIP=$(echo $WSREP_SST_OPT_ADDR | awk -F ':' '{ print $1 }')
|
REMOTEIP=$(echo $WSREP_SST_OPT_ADDR | awk -F ':' '{ print $1 }')
|
||||||
REMOTEHOST=$(getent hosts $REMOTEIP | awk '{ print $2 }')
|
|
||||||
if [[ -z $REMOTEHOST ]];then
|
|
||||||
REMOTEHOST=$REMOTEIP
|
|
||||||
fi
|
|
||||||
lsn=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $4 }')
|
lsn=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $4 }')
|
||||||
sst_ver=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $5 }')
|
sst_ver=$(echo $WSREP_SST_OPT_ADDR | awk -F '[:/]' '{ print $5 }')
|
||||||
else
|
else
|
||||||
@ -638,6 +633,27 @@ send_donor()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
monitor_process()
|
||||||
|
{
|
||||||
|
local sst_stream_pid=$1
|
||||||
|
|
||||||
|
while true ; do
|
||||||
|
|
||||||
|
if ! ps --pid "${WSREP_SST_OPT_PARENT}" &>/dev/null; then
|
||||||
|
wsrep_log_error "Parent mysqld process (PID:${WSREP_SST_OPT_PARENT}) terminated unexpectedly."
|
||||||
|
kill -- -"${WSREP_SST_OPT_PARENT}"
|
||||||
|
exit 32
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ps --pid "${sst_stream_pid}" &>/dev/null; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep 0.1
|
||||||
|
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
wsrep_check_programs "$INNOBACKUPEX_BIN"
|
wsrep_check_programs "$INNOBACKUPEX_BIN"
|
||||||
|
|
||||||
rm -f "${MAGIC_FILE}"
|
rm -f "${MAGIC_FILE}"
|
||||||
@ -923,7 +939,7 @@ then
|
|||||||
|
|
||||||
MAGIC_FILE="${DATA}/${INFO_FILE}"
|
MAGIC_FILE="${DATA}/${INFO_FILE}"
|
||||||
wsrep_log_info "Waiting for SST streaming to complete!"
|
wsrep_log_info "Waiting for SST streaming to complete!"
|
||||||
wait $jpid
|
monitor_process $jpid
|
||||||
|
|
||||||
get_proc
|
get_proc
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user