mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge branch '10.0' into 10.1
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@ -59,6 +59,9 @@ include/mysql_version.h
|
||||
include/mysqld_ername.h
|
||||
include/mysqld_error.h
|
||||
include/sql_state.h
|
||||
include/probes_mysql.d
|
||||
include/probes_mysql_dtrace.h
|
||||
include/probes_mysql_nodtrace.h
|
||||
info_macros.cmake
|
||||
libmysql*/libmysql*_exports_file.cc
|
||||
libmysql*/merge_archives_mysql*.cmake
|
||||
|
45
CREDITS
45
CREDITS
@ -1,25 +1,30 @@
|
||||
MariaDB is brought to you by the MariaDB foundation, a USA non profit
|
||||
organization.
|
||||
MariaDB is brought to you by the MariaDB Foundation, a non profit
|
||||
organization registered in the USA.
|
||||
|
||||
The current main members and sponsors of the MariaDB foundation are:
|
||||
The current main members and sponsors of the MariaDB Foundation are:
|
||||
|
||||
Automattic http://automattic.com (2014)
|
||||
SkySQL Ab http://www.skysql.com (2013, 2014)
|
||||
Booking.com http://www.booking.com (2013)
|
||||
Parallels http://www.parallels.com/products/plesk (2013)
|
||||
MariaDB Corporation http://www.mariadb.com (2013 - 2016)
|
||||
Booking.com http://www.booking.com (2013 - 2016)
|
||||
Parallels http://www.parallels.com/products/plesk (2013 - 2016)
|
||||
Automattic http://automattic.com (2014 - 2016)
|
||||
Verkkokauppa.com http://verkkokauppa.com (2015 - 2016)
|
||||
Visma http://visma.com/ (2015 - 2016)
|
||||
Webyog http://webyog.com (2015 - 2016)
|
||||
Wikimedia Foundation http://wikimedia.org (2015 - 2016)
|
||||
Acronis http://acronis.com (2016)
|
||||
|
||||
For a full list of supporters and sponsors see
|
||||
https://mariadb.org/en/supporters/
|
||||
https://mariadb.org/about/supporters/
|
||||
|
||||
You can also do this by doing SHOW CONTRIBUTORS.
|
||||
You can also do this by running SHOW CONTRIBUTORS.
|
||||
|
||||
For all corporate memberships and sponsorships please contact the
|
||||
MariaDB foundation Board via foundation@mariadb.org.
|
||||
MariaDB Foundation Board via foundation@mariadb.org.
|
||||
|
||||
The MariaDB foundation is responsible for the MariaDB source
|
||||
The MariaDB Foundation is responsible for the MariaDB source
|
||||
repository, the official MariaDB binaries and http://mariadb.org.
|
||||
|
||||
The MariaDB foundation provides also, among other things, the
|
||||
The MariaDB Foundation also provides, among other things, the
|
||||
following services to the MariaDB community:
|
||||
|
||||
- Code reviews and applying patches for MariaDB
|
||||
@ -28,17 +33,19 @@ following services to the MariaDB community:
|
||||
- Bug fixing in MariaDB (for bugs that affects a large part of the community)
|
||||
- Building the official MariaDB binaries
|
||||
- Maintaining http://mariadb.org
|
||||
- Documenting MariaDB in the MariaDB Knowledge Base http://mariadb.com/kb
|
||||
|
||||
To be able to do the above we need help from cooperations and individuals!
|
||||
To be able to do the above we need help from corporations and individuals!
|
||||
|
||||
You can help support MariaDB by be becoming a MariaDB developer or a
|
||||
member or sponsor of the MariaDB foundation!
|
||||
You can help support MariaDB by becoming a MariaDB developer or a
|
||||
member or sponsor of the MariaDB Foundation. To donate or sponsor,
|
||||
go to https://mariadb.org/donate/
|
||||
|
||||
You can get a list of all main authors of MariaDB / MySQL by doing
|
||||
You can get a list of all the main authors of MariaDB / MySQL by running
|
||||
SHOW AUTHORS;
|
||||
|
||||
You can get a list sponsors and contributors by doing
|
||||
You can get a list sponsors and contributors by running
|
||||
SHOW CONTRIBUTORS;
|
||||
|
||||
You can read more about the MariaDB foundation at:
|
||||
https://mariadb.org/en/foundation/
|
||||
You can read more about the MariaDB Foundation at:
|
||||
https://mariadb.org/about/
|
||||
|
8
README
8
README
@ -1,17 +1,17 @@
|
||||
MariaDB is designed as a drop-in replacement of MySQL(R) with more
|
||||
features, new storage engines, fewer bugs, and better performance.
|
||||
|
||||
MariaDB is brought to you by the MariaDB foundation.
|
||||
Please read the file CREDITS for details about the MariaDB foundation,
|
||||
MariaDB is brought to you by the MariaDB Foundation.
|
||||
Please read the CREDITS file for details about the MariaDB Foundation,
|
||||
and who is developing MariaDB.
|
||||
|
||||
MariaDB is developed by many of the original developers of MySQL who
|
||||
now work for MariadB foundation and SkySQL Ab, and by many people in
|
||||
now work for the MariadB Foundation and the MariaDB Corporation, and by many people in
|
||||
the community.
|
||||
|
||||
MySQL, which is the base of MariaDB, is a product and trademark of Oracle
|
||||
Corporation, Inc. For a list of developers and other contributors,
|
||||
see the Credits appendix. You can also do 'SHOW authors' to get a
|
||||
see the Credits appendix. You can also run 'SHOW authors' to get a
|
||||
list of active contributors.
|
||||
|
||||
A description of the MariaDB project and a manual can be found at:
|
||||
|
1
VERSION
1
VERSION
@ -1,4 +1,3 @@
|
||||
MYSQL_VERSION_MAJOR=10
|
||||
MYSQL_VERSION_MINOR=1
|
||||
MYSQL_VERSION_PATCH=12
|
||||
MYSQL_VERSION_EXTRA=
|
||||
|
@ -1344,6 +1344,44 @@ sig_handler mysql_end(int sig)
|
||||
exit(status.exit_status);
|
||||
}
|
||||
|
||||
/*
|
||||
set connection-specific options and call mysql_real_connect
|
||||
*/
|
||||
static bool do_connect(MYSQL *mysql, const char *host, const char *user,
|
||||
const char *password, const char *database, ulong flags)
|
||||
{
|
||||
if (opt_secure_auth)
|
||||
mysql_options(mysql, MYSQL_SECURE_AUTH, (char *) &opt_secure_auth);
|
||||
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
|
||||
if (opt_use_ssl)
|
||||
{
|
||||
mysql_ssl_set(mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
|
||||
opt_ssl_capath, opt_ssl_cipher);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
|
||||
mysql_options(mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
|
||||
}
|
||||
mysql_options(mysql,MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||
(char*)&opt_ssl_verify_server_cert);
|
||||
#endif
|
||||
if (opt_protocol)
|
||||
mysql_options(mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
|
||||
#ifdef HAVE_SMEM
|
||||
if (shared_memory_base_name)
|
||||
mysql_options(mysql,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
|
||||
#endif
|
||||
if (opt_plugin_dir && *opt_plugin_dir)
|
||||
mysql_options(mysql, MYSQL_PLUGIN_DIR, opt_plugin_dir);
|
||||
|
||||
if (opt_default_auth && *opt_default_auth)
|
||||
mysql_options(mysql, MYSQL_DEFAULT_AUTH, opt_default_auth);
|
||||
|
||||
mysql_options(mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
|
||||
mysql_options4(mysql, MYSQL_OPT_CONNECT_ATTR_ADD,
|
||||
"program_name", "mysql");
|
||||
return mysql_real_connect(mysql, host, user, password, database,
|
||||
opt_mysql_port, opt_mysql_unix_port, flags);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
This function handles sigint calls
|
||||
@ -1365,11 +1403,7 @@ sig_handler handle_sigint(int sig)
|
||||
}
|
||||
|
||||
kill_mysql= mysql_init(kill_mysql);
|
||||
mysql_options(kill_mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
|
||||
mysql_options4(kill_mysql, MYSQL_OPT_CONNECT_ATTR_ADD,
|
||||
"program_name", "mysql");
|
||||
if (!mysql_real_connect(kill_mysql,current_host, current_user, opt_password,
|
||||
"", opt_mysql_port, opt_mysql_unix_port,0))
|
||||
if (!do_connect(kill_mysql,current_host, current_user, opt_password, "", 0))
|
||||
{
|
||||
tee_fprintf(stdout, "Ctrl-C -- sorry, cannot connect to server to kill query, giving up ...\n");
|
||||
goto err;
|
||||
@ -4576,27 +4610,8 @@ sql_real_connect(char *host,char *database,char *user,char *password,
|
||||
}
|
||||
if (opt_compress)
|
||||
mysql_options(&mysql,MYSQL_OPT_COMPRESS,NullS);
|
||||
if (opt_secure_auth)
|
||||
mysql_options(&mysql, MYSQL_SECURE_AUTH, (char *) &opt_secure_auth);
|
||||
if (using_opt_local_infile)
|
||||
mysql_options(&mysql,MYSQL_OPT_LOCAL_INFILE, (char*) &opt_local_infile);
|
||||
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
|
||||
if (opt_use_ssl)
|
||||
{
|
||||
mysql_ssl_set(&mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
|
||||
opt_ssl_capath, opt_ssl_cipher);
|
||||
mysql_options(&mysql, MYSQL_OPT_SSL_CRL, opt_ssl_crl);
|
||||
mysql_options(&mysql, MYSQL_OPT_SSL_CRLPATH, opt_ssl_crlpath);
|
||||
}
|
||||
mysql_options(&mysql,MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
|
||||
(char*)&opt_ssl_verify_server_cert);
|
||||
#endif
|
||||
if (opt_protocol)
|
||||
mysql_options(&mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
|
||||
#ifdef HAVE_SMEM
|
||||
if (shared_memory_base_name)
|
||||
mysql_options(&mysql,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
|
||||
#endif
|
||||
if (safe_updates)
|
||||
{
|
||||
char init_command[100];
|
||||
@ -4608,18 +4623,8 @@ sql_real_connect(char *host,char *database,char *user,char *password,
|
||||
|
||||
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
|
||||
|
||||
if (opt_plugin_dir && *opt_plugin_dir)
|
||||
mysql_options(&mysql, MYSQL_PLUGIN_DIR, opt_plugin_dir);
|
||||
|
||||
if (opt_default_auth && *opt_default_auth)
|
||||
mysql_options(&mysql, MYSQL_DEFAULT_AUTH, opt_default_auth);
|
||||
|
||||
mysql_options(&mysql, MYSQL_OPT_CONNECT_ATTR_RESET, 0);
|
||||
mysql_options4(&mysql, MYSQL_OPT_CONNECT_ATTR_ADD,
|
||||
"program_name", "mysql");
|
||||
if (!mysql_real_connect(&mysql, host, user, password,
|
||||
database, opt_mysql_port, opt_mysql_unix_port,
|
||||
connect_flag | CLIENT_MULTI_STATEMENTS))
|
||||
if (!do_connect(&mysql, host, user, password, database,
|
||||
connect_flag | CLIENT_MULTI_STATEMENTS))
|
||||
{
|
||||
if (!silent ||
|
||||
(mysql_errno(&mysql) != CR_CONN_HOST_ERROR &&
|
||||
|
@ -184,7 +184,8 @@ static const char *load_default_groups[]=
|
||||
static void free_used_memory(void)
|
||||
{
|
||||
/* Free memory allocated by 'load_defaults' */
|
||||
free_defaults(defaults_argv);
|
||||
if (defaults_argv)
|
||||
free_defaults(defaults_argv);
|
||||
|
||||
dynstr_free(&ds_args);
|
||||
dynstr_free(&conn_args);
|
||||
@ -1110,7 +1111,6 @@ int main(int argc, char **argv)
|
||||
if (opt_systables_only && !opt_silent)
|
||||
printf("The --upgrade-system-tables option was used, user tables won't be touched.\n");
|
||||
|
||||
|
||||
/*
|
||||
Read the mysql_upgrade_info file to check if mysql_upgrade
|
||||
already has been run for this installation of MySQL
|
||||
|
@ -86,6 +86,9 @@ IF(ENABLE_DTRACE)
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql_dtrace.h
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h
|
||||
)
|
||||
ELSE()
|
||||
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/probes_mysql_nodtrace.h.in
|
||||
${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h COPYONLY)
|
||||
ENDIF()
|
||||
|
||||
FUNCTION(DTRACE_INSTRUMENT target)
|
||||
|
@ -3,20 +3,6 @@ INCLUDE (CheckLibraryExists)
|
||||
SET(WITH_JEMALLOC auto CACHE STRING
|
||||
"Build with jemalloc. Possible values are 'yes', 'no', 'static', 'auto'")
|
||||
|
||||
MACRO(JEMALLOC_TRY_STATIC)
|
||||
SET(libname jemalloc_pic)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES pthread dl m)
|
||||
SET(what bundled)
|
||||
CHECK_LIBRARY_EXISTS(${libname} malloc_stats_print "" HAVE_STATIC_JEMALLOC)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(JEMALLOC_TRY_DYNAMIC)
|
||||
SET(libname jemalloc)
|
||||
SET(what system)
|
||||
CHECK_LIBRARY_EXISTS(${libname} malloc_stats_print "" HAVE_DYNAMIC_JEMALLOC)
|
||||
ENDMACRO()
|
||||
|
||||
MACRO (CHECK_JEMALLOC)
|
||||
# compatibility with old WITH_JEMALLOC values
|
||||
IF(WITH_JEMALLOC STREQUAL "bundled")
|
||||
@ -26,21 +12,30 @@ MACRO (CHECK_JEMALLOC)
|
||||
SET(WITH_JEMALLOC "yes")
|
||||
ENDIF()
|
||||
|
||||
IF (WITH_JEMALLOC STREQUAL "yes" OR WITH_JEMALLOC STREQUAL "auto")
|
||||
JEMALLOC_TRY_DYNAMIC()
|
||||
ENDIF()
|
||||
IF(WITH_JEMALLOC STREQUAL "yes" OR WITH_JEMALLOC STREQUAL "auto" OR
|
||||
WITH_JEMALLOC STREQUAL "static")
|
||||
|
||||
IF (WITH_JEMALLOC STREQUAL "static" OR WITH_JEMALLOC STREQUAL "auto"
|
||||
AND NOT HAVE_DYNAMIC_JEMALLOC)
|
||||
JEMALLOC_TRY_STATIC()
|
||||
ENDIF()
|
||||
IF(WITH_JEMALLOC STREQUAL "static")
|
||||
SET(libname jemalloc_pic)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES pthread dl m)
|
||||
SET(what bundled)
|
||||
ELSE()
|
||||
SET(libname jemalloc c)
|
||||
SET(what system)
|
||||
ENDIF()
|
||||
|
||||
IF (libname)
|
||||
IF (HAVE_DYNAMIC_JEMALLOC OR HAVE_STATIC_JEMALLOC)
|
||||
SET(LIBJEMALLOC ${libname})
|
||||
SET(MALLOC_LIBRARY "${what} jemalloc")
|
||||
ELSEIF (NOT WITH_JEMALLOC STREQUAL "auto")
|
||||
MESSAGE(FATAL_ERROR "${libname} is not found")
|
||||
FOREACH(lib ${libname})
|
||||
CHECK_LIBRARY_EXISTS(${lib} malloc_stats_print "" HAVE_JEMALLOC_IN_${lib})
|
||||
IF (HAVE_JEMALLOC_IN_${lib})
|
||||
SET(LIBJEMALLOC ${lib})
|
||||
SET(MALLOC_LIBRARY "${what} jemalloc")
|
||||
BREAK()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||
|
||||
IF (NOT LIBJEMALLOC AND NOT WITH_JEMALLOC STREQUAL "auto")
|
||||
MESSAGE(FATAL_ERROR "jemalloc is not found")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDMACRO()
|
||||
|
@ -799,16 +799,36 @@ ENDIF()
|
||||
#
|
||||
# Test for how the C compiler does inline, if at all
|
||||
#
|
||||
# SunPro is weird, apparently it only supports inline at -xO3 or -xO4.
|
||||
# And if CMAKE_C_FLAGS has -xO4 but CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE} has -xO2
|
||||
# then CHECK_C_SOURCE_COMPILES will succeed but the built will fail.
|
||||
# We must test all flags here.
|
||||
# XXX actually, we can do this for all compilers, not only SunPro
|
||||
IF (CMAKE_CXX_COMPILER_ID MATCHES "SunPro" AND
|
||||
CMAKE_GENERATOR MATCHES "Makefiles")
|
||||
STRING(TOUPPER "CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}" flags)
|
||||
SET(CMAKE_REQUIRED_FLAGS "${${flags}}")
|
||||
ENDIF()
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
static inline int foo(){return 0;}
|
||||
extern int bar(int x);
|
||||
static inline int foo(){return bar(1);}
|
||||
int main(int argc, char *argv[]){return 0;}"
|
||||
C_HAS_inline)
|
||||
IF(NOT C_HAS_inline)
|
||||
CHECK_C_SOURCE_COMPILES("
|
||||
static __inline int foo(){return 0;}
|
||||
extern int bar(int x);
|
||||
static __inline int foo(){return bar(1);}
|
||||
int main(int argc, char *argv[]){return 0;}"
|
||||
C_HAS___inline)
|
||||
SET(C_INLINE __inline)
|
||||
IF(C_HAS___inline)
|
||||
SET(C_INLINE __inline)
|
||||
ElSE()
|
||||
SET(C_INLINE)
|
||||
MESSAGE(WARNING "C compiler does not support funcion inlining")
|
||||
IF(NOT NOINLINE)
|
||||
MESSAGE(FATAL_ERROR "Use -DNOINLINE=TRUE to allow compilation without inlining")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
IF(NOT CMAKE_CROSSCOMPILING AND NOT MSVC)
|
||||
|
@ -12,6 +12,17 @@ before calling SSL_new();
|
||||
|
||||
*** end Note ***
|
||||
|
||||
yaSSL Release notes, version 2.3.9 (12/01/2015)
|
||||
This release of yaSSL fixes two client side Diffie-Hellman problems.
|
||||
yaSSL was only handling the cases of zero or one leading zeros for the key
|
||||
agreement instead of potentially any number. This caused about 1 in 50,000
|
||||
connections to fail when using DHE cipher suites. The second problem was
|
||||
the case where a server would send a public value shorter than the prime
|
||||
value, causing about 1 in 128 client connections to fail, and also
|
||||
caused the yaSSL client to read off the end of memory. All client side
|
||||
DHE cipher suite users should update.
|
||||
Thanks to Adam Langely (agl@imperialviolet.org) for the detailed report!
|
||||
|
||||
yaSSL Release notes, version 2.3.8 (9/17/2015)
|
||||
This release of yaSSL fixes a high security vulnerability. All users
|
||||
SHOULD update. If using yaSSL for TLS on the server side with private
|
||||
|
@ -378,6 +378,7 @@ public:
|
||||
|
||||
uint get_agreedKeyLength() const;
|
||||
const byte* get_agreedKey() const;
|
||||
uint get_publicKeyLength() const;
|
||||
const byte* get_publicKey() const;
|
||||
void makeAgreement(const byte*, unsigned int);
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include "rsa.h"
|
||||
|
||||
|
||||
#define YASSL_VERSION "2.3.8"
|
||||
#define YASSL_VERSION "2.3.9"
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
@ -751,9 +751,10 @@ struct DiffieHellman::DHImpl {
|
||||
byte* publicKey_;
|
||||
byte* privateKey_;
|
||||
byte* agreedKey_;
|
||||
uint pubKeyLength_;
|
||||
|
||||
DHImpl(TaoCrypt::RandomNumberGenerator& r) : ranPool_(r), publicKey_(0),
|
||||
privateKey_(0), agreedKey_(0) {}
|
||||
privateKey_(0), agreedKey_(0), pubKeyLength_(0) {}
|
||||
~DHImpl()
|
||||
{
|
||||
ysArrayDelete(agreedKey_);
|
||||
@ -762,7 +763,7 @@ struct DiffieHellman::DHImpl {
|
||||
}
|
||||
|
||||
DHImpl(const DHImpl& that) : dh_(that.dh_), ranPool_(that.ranPool_),
|
||||
publicKey_(0), privateKey_(0), agreedKey_(0)
|
||||
publicKey_(0), privateKey_(0), agreedKey_(0), pubKeyLength_(0)
|
||||
{
|
||||
uint length = dh_.GetByteLength();
|
||||
AllocKeys(length, length, length);
|
||||
@ -810,7 +811,7 @@ DiffieHellman::DiffieHellman(const byte* p, unsigned int pSz, const byte* g,
|
||||
using TaoCrypt::Integer;
|
||||
|
||||
pimpl_->dh_.Initialize(Integer(p, pSz).Ref(), Integer(g, gSz).Ref());
|
||||
pimpl_->publicKey_ = NEW_YS opaque[pubSz];
|
||||
pimpl_->publicKey_ = NEW_YS opaque[pimpl_->pubKeyLength_ = pubSz];
|
||||
memcpy(pimpl_->publicKey_, pub, pubSz);
|
||||
}
|
||||
|
||||
@ -869,6 +870,10 @@ const byte* DiffieHellman::get_agreedKey() const
|
||||
return pimpl_->agreedKey_;
|
||||
}
|
||||
|
||||
uint DiffieHellman::get_publicKeyLength() const
|
||||
{
|
||||
return pimpl_->pubKeyLength_;
|
||||
}
|
||||
|
||||
const byte* DiffieHellman::get_publicKey() const
|
||||
{
|
||||
|
@ -109,15 +109,12 @@ void ClientDiffieHellmanPublic::build(SSL& ssl)
|
||||
uint keyLength = dhClient.get_agreedKeyLength(); // pub and agree same
|
||||
|
||||
alloc(keyLength, true);
|
||||
dhClient.makeAgreement(dhServer.get_publicKey(), keyLength);
|
||||
dhClient.makeAgreement(dhServer.get_publicKey(),
|
||||
dhServer.get_publicKeyLength());
|
||||
c16toa(keyLength, Yc_);
|
||||
memcpy(Yc_ + KEY_OFFSET, dhClient.get_publicKey(), keyLength);
|
||||
|
||||
// because of encoding first byte might be zero, don't use it for preMaster
|
||||
if (*dhClient.get_agreedKey() == 0)
|
||||
ssl.set_preMaster(dhClient.get_agreedKey() + 1, keyLength - 1);
|
||||
else
|
||||
ssl.set_preMaster(dhClient.get_agreedKey(), keyLength);
|
||||
ssl.set_preMaster(dhClient.get_agreedKey(), keyLength);
|
||||
}
|
||||
|
||||
|
||||
@ -321,11 +318,7 @@ void ClientDiffieHellmanPublic::read(SSL& ssl, input_buffer& input)
|
||||
}
|
||||
dh.makeAgreement(Yc_, keyLength);
|
||||
|
||||
// because of encoding, first byte might be 0, don't use for preMaster
|
||||
if (*dh.get_agreedKey() == 0)
|
||||
ssl.set_preMaster(dh.get_agreedKey() + 1, dh.get_agreedKeyLength() - 1);
|
||||
else
|
||||
ssl.set_preMaster(dh.get_agreedKey(), dh.get_agreedKeyLength());
|
||||
ssl.set_preMaster(dh.get_agreedKey(), dh.get_agreedKeyLength());
|
||||
ssl.makeMasterSecret();
|
||||
}
|
||||
|
||||
|
@ -807,6 +807,19 @@ void SSL::set_random(const opaque* random, ConnectionEnd sender)
|
||||
// store client pre master secret
|
||||
void SSL::set_preMaster(const opaque* pre, uint sz)
|
||||
{
|
||||
uint i(0); // trim leading zeros
|
||||
uint fullSz(sz);
|
||||
|
||||
while (i++ < fullSz && *pre == 0) {
|
||||
sz--;
|
||||
pre++;
|
||||
}
|
||||
|
||||
if (sz == 0) {
|
||||
SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
secure_.use_connection().AllocPreSecret(sz);
|
||||
memcpy(secure_.use_connection().pre_master_secret_, pre, sz);
|
||||
}
|
||||
@ -924,6 +937,8 @@ void SSL::order_error()
|
||||
// Create and store the master secret see page 32, 6.1
|
||||
void SSL::makeMasterSecret()
|
||||
{
|
||||
if (GetError()) return;
|
||||
|
||||
if (isTLS())
|
||||
makeTLSMasterSecret();
|
||||
else {
|
||||
|
@ -31,7 +31,7 @@
|
||||
Attention: Please, note, uint3korr reads 4 bytes (not 3)!
|
||||
It means, that you have to provide enough allocated space.
|
||||
*/
|
||||
#if defined(HAVE_purify) && !defined(_WIN32)
|
||||
#if defined(HAVE_valgrind) && !defined(_WIN32)
|
||||
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
|
||||
(((uint32) ((uchar) (A)[1])) << 8) +\
|
||||
(((uint32) ((uchar) (A)[2])) << 16))
|
||||
|
@ -200,20 +200,6 @@
|
||||
#define likely(x) __builtin_expect(((x) != 0),1)
|
||||
#define unlikely(x) __builtin_expect(((x) != 0),0)
|
||||
|
||||
/*
|
||||
now let's figure out if inline functions are supported
|
||||
autoconf defines 'inline' to be empty, if not
|
||||
*/
|
||||
#define inline_test_1(X) X ## 1
|
||||
#define inline_test_2(X) inline_test_1(X)
|
||||
#if inline_test_2(inline) != 1
|
||||
#define HAVE_INLINE
|
||||
#else
|
||||
#error Compiler does not support inline!
|
||||
#endif
|
||||
#undef inline_test_2
|
||||
#undef inline_test_1
|
||||
|
||||
/* Fix problem with S_ISLNK() on Linux */
|
||||
#if defined(TARGET_OS_LINUX) || defined(__GLIBC__)
|
||||
#undef _GNU_SOURCE
|
||||
@ -454,7 +440,7 @@ extern "C" int madvise(void *addr, size_t len, int behav);
|
||||
#endif
|
||||
|
||||
#ifndef STDERR_FILENO
|
||||
#define STDERR_FILENO 2
|
||||
#define STDERR_FILENO fileno(stderr)
|
||||
#endif
|
||||
|
||||
#ifndef SO_EXT
|
||||
@ -825,6 +811,9 @@ inline unsigned long long my_double2ulonglong(double d)
|
||||
#else
|
||||
#define finite(x) (1.0 / fabs(x) > 0.0)
|
||||
#endif /* HAVE_FINITE */
|
||||
#elif (__cplusplus >= 201103L)
|
||||
#include <cmath>
|
||||
static inline bool isfinite(double x) { return std::isfinite(x); }
|
||||
#endif /* isfinite */
|
||||
|
||||
#ifndef HAVE_ISNAN
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2011, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2011, 2015, MariaDB
|
||||
/* Copyright (c) 2011, 2016, Oracle and/or its affiliates.
|
||||
Copyright (c) 2011, 2016, MariaDB
|
||||
|
||||
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
|
||||
@ -17,7 +17,7 @@
|
||||
#ifndef _welcome_copyright_notice_h_
|
||||
#define _welcome_copyright_notice_h_
|
||||
|
||||
#define COPYRIGHT_NOTICE_CURRENT_YEAR "2015"
|
||||
#define COPYRIGHT_NOTICE_CURRENT_YEAR "2016"
|
||||
|
||||
/*
|
||||
This define specifies copyright notice which is displayed by every MySQL
|
||||
|
@ -496,6 +496,7 @@ sub process_suite {
|
||||
|
||||
# disabled.def
|
||||
parse_disabled($suite->{dir} .'/disabled.def', $suitename);
|
||||
parse_disabled($suite->{dir} .'/t/disabled.def', $suitename);
|
||||
|
||||
# combinations
|
||||
if (@::opt_combinations)
|
||||
|
@ -2,15 +2,9 @@ drop table if exists t1,t2,t3;
|
||||
create table t1 (a int not null primary key, b int, c varchar(80), e enum('a','b'));
|
||||
insert into t1 (a) values (1),(2),(3);
|
||||
alter online table t1 modify b int default 5;
|
||||
ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
|
||||
alter online table t1 change b new_name int;
|
||||
ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
|
||||
alter online table t1 modify e enum('a','b','c');
|
||||
ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
|
||||
alter online table t1 comment "new comment";
|
||||
ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
|
||||
alter online table t1 rename to t2;
|
||||
ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
|
||||
alter online table t1 algorithm=INPLACE, lock=NONE;
|
||||
alter online table t1;
|
||||
alter table t1 algorithm=INPLACE;
|
||||
@ -40,10 +34,13 @@ alter online table t1 add f int;
|
||||
ERROR 0A000: LOCK=NONE is not supported for this operation. Try LOCK=SHARED.
|
||||
alter online table t1 engine=memory;
|
||||
ERROR 0A000: LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.
|
||||
alter online table t1 rename to t2;
|
||||
ERROR 0A000: LOCK=NONE/SHARED is not supported for this operation. Try LOCK=EXCLUSIVE.
|
||||
alter table t1 engine=innodb;
|
||||
alter table t1 add index (b);
|
||||
alter online table t1 add index c (c);
|
||||
alter online table t1 drop index b;
|
||||
alter online table t1 comment "new comment";
|
||||
drop table t1;
|
||||
create temporary table t1 (a int not null primary key, b int, c varchar(80), e enum('a','b'));
|
||||
insert into t1 (a) values (1),(2),(3);
|
||||
|
@ -1,15 +1,13 @@
|
||||
SHOW CONTRIBUTORS;
|
||||
Name Location Comment
|
||||
Booking.com http://www.booking.com Founding member of the MariaDB foundation
|
||||
SkySQL Ab http://www.skysql.com Founding member of the MariaDB foundation
|
||||
Auttomatic http://automattic.com Member of the MariaDB foundation
|
||||
Parallels http://www.parallels.com/products/plesk Founding member of the MariaDB foundation
|
||||
Verkkokauppa.com Finland Sponsor of the MariaDB foundation
|
||||
Webyog Bangalor Sponsor of the MariaDB foundation
|
||||
Percona USA Sponsor of the MariaDB foundation
|
||||
Jelastic.com Russia Sponsor of the MariaDB foundation
|
||||
Planetta.net Finland Sponsor of the MariaDB foundation
|
||||
Open query Australia Sponsor of the MariaDB foundation
|
||||
Booking.com http://www.booking.com Founding member of the MariaDB Foundation
|
||||
MariaDB Corporation https://mariadb.com Founding member of the MariaDB Foundation
|
||||
Auttomattic http://automattic.com Member of the MariaDB Foundation
|
||||
Parallels http://www.parallels.com/products/plesk Founding member of the MariaDB Foundation
|
||||
Acronis http://www.acronis.com Member of the MariaDB Foundation
|
||||
Verkkokauppa.com Finland Sponsor of the MariaDB Foundation
|
||||
Webyog Bangalore Sponsor of the MariaDB Foundation
|
||||
Wikimedia Foundation USA Sponsor of the MariaDB Foundation
|
||||
Google USA Sponsoring parallel replication and GTID
|
||||
Facebook USA Sponsoring non-blocking API, LIMIT ROWS EXAMINED etc
|
||||
Ronald Bradford Brisbane, Australia EFF contribution for UC2006 Auction
|
||||
|
@ -1889,5 +1889,21 @@ Warnings:
|
||||
Note 1291 Column 'a' has duplicated value '' in ENUM
|
||||
drop table t1;
|
||||
set @@session.collation_server=default;
|
||||
#
|
||||
# MDEV-7765: Crash (Assertion `!table || (!table->write_set ||
|
||||
# bitmap_is_set(table->write_set, field_index) ||
|
||||
# bitmap_is_set(table->vcol_set, field_index))' fails)
|
||||
# on using function over not created table
|
||||
#
|
||||
CREATE function f1() returns int
|
||||
BEGIN
|
||||
declare n int;
|
||||
set n:= (select count(*) from t1);
|
||||
return n;
|
||||
end|
|
||||
create table t1 as select f1();
|
||||
ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
drop function f1;
|
||||
End of 5.5 tests
|
||||
create table t1;
|
||||
ERROR 42000: A table must have at least 1 column
|
||||
|
@ -116,7 +116,7 @@ hex(a) STRCMP(a,'a') STRCMP(a,'a ')
|
||||
DROP TABLE t1;
|
||||
select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es');
|
||||
insert('txs',2,1,'hi') insert('is ',4,0,'a') insert('txxxxt',2,4,'es')
|
||||
this is a test
|
||||
this is test
|
||||
select insert("aa",100,1,"b"),insert("aa",1,3,"b");
|
||||
insert("aa",100,1,"b") insert("aa",1,3,"b")
|
||||
aa b
|
||||
@ -5374,8 +5374,7 @@ INSERT INTO t1 VALUES (0), (0), (1), (0), (0);
|
||||
SELECT COUNT(*) FROM t1, t1 t2
|
||||
GROUP BY INSERT('', t2.a, t1.a, (@@global.max_binlog_size));
|
||||
COUNT(*)
|
||||
20
|
||||
5
|
||||
25
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#11764503 (Bug#57341) Query in EXPLAIN EXTENDED shows wrong characters
|
||||
|
@ -116,7 +116,7 @@ hex(a) STRCMP(a,'a') STRCMP(a,'a ')
|
||||
DROP TABLE t1;
|
||||
select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es');
|
||||
insert('txs',2,1,'hi') insert('is ',4,0,'a') insert('txxxxt',2,4,'es')
|
||||
this is a test
|
||||
this is test
|
||||
select insert("aa",100,1,"b"),insert("aa",1,3,"b");
|
||||
insert("aa",100,1,"b") insert("aa",1,3,"b")
|
||||
aa b
|
||||
|
@ -116,7 +116,7 @@ hex(a) STRCMP(a,'a') STRCMP(a,'a ')
|
||||
DROP TABLE t1;
|
||||
select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es');
|
||||
insert('txs',2,1,'hi') insert('is ',4,0,'a') insert('txxxxt',2,4,'es')
|
||||
this is a test
|
||||
this is test
|
||||
select insert("aa",100,1,"b"),insert("aa",1,3,"b");
|
||||
insert("aa",100,1,"b") insert("aa",1,3,"b")
|
||||
aa b
|
||||
|
@ -116,7 +116,7 @@ hex(a) STRCMP(a,'a') STRCMP(a,'a ')
|
||||
DROP TABLE t1;
|
||||
select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es');
|
||||
insert('txs',2,1,'hi') insert('is ',4,0,'a') insert('txxxxt',2,4,'es')
|
||||
this is a test
|
||||
this is test
|
||||
select insert("aa",100,1,"b"),insert("aa",1,3,"b");
|
||||
insert("aa",100,1,"b") insert("aa",1,3,"b")
|
||||
aa b
|
||||
|
@ -116,7 +116,7 @@ hex(a) STRCMP(a,'a') STRCMP(a,'a ')
|
||||
DROP TABLE t1;
|
||||
select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es');
|
||||
insert('txs',2,1,'hi') insert('is ',4,0,'a') insert('txxxxt',2,4,'es')
|
||||
this is a test
|
||||
this is test
|
||||
select insert("aa",100,1,"b"),insert("aa",1,3,"b");
|
||||
insert("aa",100,1,"b") insert("aa",1,3,"b")
|
||||
aa b
|
||||
|
@ -603,6 +603,351 @@ select x.id, message from (select id from t1) x left join
|
||||
where coalesce(message,0) <> 0;
|
||||
id message
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-7827: Assertion `!table || (!table->read_set ||
|
||||
# bitmap_is_set(table->read_set, field_index))' failed
|
||||
# in Field_long::val_str on EXPLAIN EXTENDED
|
||||
#
|
||||
CREATE TABLE t1 (f1 INT, f2 INT, KEY(f2)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (6,9);
|
||||
CREATE TABLE t2 (f3 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (2),(0);
|
||||
EXPLAIN EXTENDED
|
||||
SELECT f1 FROM ( SELECT * FROM t1 ) AS sq
|
||||
WHERE f1 IN (
|
||||
SELECT f3 FROM t2 WHERE f2 IN (
|
||||
SELECT f3 FROM t2 HAVING f3 >= 8
|
||||
)
|
||||
);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY <subquery4> eq_ref distinct_key distinct_key 4 sq.f2 1 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where; FirstMatch(<subquery4>); Using join buffer (flat, BNL join)
|
||||
4 MATERIALIZED t2 ALL NULL NULL NULL NULL 2 100.00
|
||||
2 DERIVED t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1276 Field or reference 'sq.f2' of SELECT #3 was resolved in SELECT #1
|
||||
Note 1003 select 6 AS `f1` from <materialize> (select `test`.`t2`.`f3` from `test`.`t2` having (`test`.`t2`.`f3` >= 8)) semi join (`test`.`t2`) where ((`test`.`t2`.`f3` = 6) and (9 = `<subquery4>`.`f3`))
|
||||
DROP TABLE t2,t1;
|
||||
#
|
||||
# MDEV-9462: Out of memory using explain on 2 empty tables
|
||||
#
|
||||
CREATE TABLE `t1` (
|
||||
`REC_GROUP` char(2) DEFAULT NULL,
|
||||
`CLIENT_INFO` text CHARACTER SET utf8,
|
||||
`NAME` text,
|
||||
`PHONE_NUMBER` text,
|
||||
`ATTENTION_NAME` text,
|
||||
`PAYMENT_TERM` text CHARACTER SET utf8,
|
||||
`CREDIT_LIMIT` decimal(12,2) DEFAULT NULL,
|
||||
`LAST_PAY_DATE` text CHARACTER SET utf8,
|
||||
`TOTAL` double DEFAULT NULL,
|
||||
`TOTAL_MCL` double DEFAULT NULL,
|
||||
`TOTAL_MFS` double DEFAULT NULL,
|
||||
`TOTAL_MIS` double DEFAULT NULL,
|
||||
`BEFORE_DUE_7_MCL` double DEFAULT NULL,
|
||||
`BEFORE_DUE_7_MFS` double DEFAULT NULL,
|
||||
`BEFORE_DUE_7_MIS` double DEFAULT NULL,
|
||||
`PER1_MCL` double DEFAULT NULL,
|
||||
`PER1_MFS` double DEFAULT NULL,
|
||||
`PER1_MIS` double DEFAULT NULL,
|
||||
`PER2_MCL` double DEFAULT NULL,
|
||||
`PER2_MFS` double DEFAULT NULL,
|
||||
`PER2_MIS` double DEFAULT NULL,
|
||||
`PER3_MCL` double DEFAULT NULL,
|
||||
`PER3_MFS` double DEFAULT NULL,
|
||||
`PER3_MIS` double DEFAULT NULL,
|
||||
`PER4_MCL` double DEFAULT NULL,
|
||||
`PER4_MFS` double DEFAULT NULL,
|
||||
`PER4_MIS` double DEFAULT NULL,
|
||||
`PER5_MCL` double DEFAULT NULL,
|
||||
`PER5_MFS` double DEFAULT NULL,
|
||||
`PER5_MIS` double DEFAULT NULL,
|
||||
`PER6_MCL` double DEFAULT NULL,
|
||||
`PER6_MFS` double DEFAULT NULL,
|
||||
`PER6_MIS` double DEFAULT NULL,
|
||||
`PER7_MCL` double DEFAULT NULL,
|
||||
`PER7_MFS` double DEFAULT NULL,
|
||||
`PER7_MIS` double DEFAULT NULL,
|
||||
`BEFORE_DUE_7` double DEFAULT NULL,
|
||||
`PER1` double DEFAULT NULL,
|
||||
`PER2` double DEFAULT NULL,
|
||||
`PER3` double DEFAULT NULL,
|
||||
`PER4` double DEFAULT NULL,
|
||||
`PER5` double DEFAULT NULL,
|
||||
`PER6` double DEFAULT NULL,
|
||||
`PER7` double DEFAULT NULL,
|
||||
`REF` varchar(30) DEFAULT NULL,
|
||||
`TYPE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
|
||||
);
|
||||
CREATE TABLE `t2` (
|
||||
`RECEIVABLE_GROUP` char(2) DEFAULT NULL,
|
||||
`CLIENT_NUMBER` varchar(35) DEFAULT NULL,
|
||||
`CLIENT_NAME` varchar(73) DEFAULT NULL,
|
||||
`PHONE_NUMBER` char(12) DEFAULT NULL,
|
||||
`ATTENTION_NAME` char(26) DEFAULT NULL,
|
||||
`PAYMENT_TERM` varchar(26) CHARACTER SET utf8 DEFAULT NULL,
|
||||
`CREDIT_LIMIT` decimal(12,2) DEFAULT NULL,
|
||||
`LAST_PAY_DATE` varchar(42) CHARACTER SET utf8 DEFAULT NULL,
|
||||
`TOTAL` decimal(12,2) DEFAULT NULL,
|
||||
`BEFORE_DUE_7` decimal(12,2) DEFAULT NULL,
|
||||
`PER1` decimal(12,2) DEFAULT NULL,
|
||||
`PER2` decimal(12,2) DEFAULT NULL,
|
||||
`PER3` decimal(12,2) DEFAULT NULL,
|
||||
`PER4` decimal(12,2) DEFAULT NULL,
|
||||
`PER5` decimal(12,2) DEFAULT NULL,
|
||||
`PER6` decimal(12,2) DEFAULT NULL,
|
||||
`PER7` decimal(12,2) DEFAULT NULL,
|
||||
`DIVISION` varchar(3) CHARACTER SET utf8 NOT NULL,
|
||||
`CLIENT_INFO` varchar(294) CHARACTER SET utf8 DEFAULT NULL,
|
||||
`EXCHANGE_RATE` double NOT NULL,
|
||||
`REF` varchar(30) DEFAULT NULL
|
||||
);
|
||||
explain
|
||||
SELECT A.RECEIVABLE_GROUP,A.CLIENT_INFO,A.CLIENT_NAME,A.PHONE_NUMBER,A.ATTENTION_NAME,A.PAYMENT_TERM,A.CREDIT_LIMIT,A.LAST_PAY_DATE,A.TOTAL,
|
||||
COALESCE(B.TOTAL_MCL,0) AS TOTAL_MCL,
|
||||
COALESCE(C.TOTAL_MFS,0) AS TOTAL_MFS,
|
||||
COALESCE(D.TOTAL_MIS,0) AS TOTAL_MIS,
|
||||
COALESCE(F.BEFORE_DUE_7_MCL,0) AS BEFORE_DUE_7_MCL,
|
||||
COALESCE(G.BEFORE_DUE_7_MFS,0) AS BEFORE_DUE_7_MFS,
|
||||
COALESCE(H.BEFORE_DUE_7_MIS,0) AS BEFORE_DUE_7_MIS,
|
||||
COALESCE(I.PER1_MCL,0) AS PER1_MCL,
|
||||
COALESCE(J.PER1_MFS,0) AS PER1_MFS,
|
||||
COALESCE(K.PER1_MIS,0) AS PER1_MIS,
|
||||
COALESCE(L.PER2_MCL,0) AS PER2_MCL,
|
||||
COALESCE(M.PER2_MFS,0) AS PER2_MFS,
|
||||
COALESCE(N.PER2_MIS,0) AS PER2_MIS,
|
||||
COALESCE(O.PER3_MCL,0) AS PER3_MCL,
|
||||
COALESCE(P.PER3_MFS,0) AS PER3_MFS,
|
||||
COALESCE(R.PER3_MIS,0) AS PER3_MIS,
|
||||
COALESCE(S.PER4_MCL,0) AS PER4_MCL,
|
||||
COALESCE(T.PER4_MFS,0) AS PER4_MFS,
|
||||
COALESCE(U.PER4_MIS,0) AS PER4_MIS,
|
||||
COALESCE(V.PER5_MCL,0) AS PER5_MCL,
|
||||
COALESCE(X.PER5_MFS,0) AS PER5_MFS,
|
||||
COALESCE(Z.PER5_MIS,0) AS PER5_MIS,
|
||||
COALESCE(Q.PER6_MCL,0) AS PER6_MCL,
|
||||
COALESCE(Y.PER6_MFS,0) AS PER6_MFS,
|
||||
COALESCE(W.PER6_MIS,0) AS PER6_MIS,
|
||||
COALESCE(A1.PER7_MCL,0) AS PER7_MCL,
|
||||
COALESCE(B1.PER7_MFS,0) AS PER7_MFS,
|
||||
COALESCE(C1.PER7_MIS,0) AS PER7_MIS,
|
||||
A.BEFORE_DUE_7,A.PER1,A.PER2,A.PER3,A.PER4,A.PER5,A.PER6,A.PER7,
|
||||
CONCAT(A.DIVISION,'-',A.CLIENT_NUMBER) AS REF,"2" AS TYPE FROM
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,
|
||||
GROUP_CONCAT(DISTINCT CLIENT_INFO SEPARATOR '<br>') AS CLIENT_INFO,
|
||||
GROUP_CONCAT(DISTINCT CLIENT_NAME SEPARATOR '<br>') AS CLIENT_NAME,
|
||||
GROUP_CONCAT( DISTINCT `PHONE_NUMBER` SEPARATOR '<br>' ) AS PHONE_NUMBER ,
|
||||
GROUP_CONCAT( DISTINCT `ATTENTION_NAME` SEPARATOR '<br>' ) AS ATTENTION_NAME,
|
||||
GROUP_CONCAT( DISTINCT `PAYMENT_TERM` SEPARATOR '<br>' ) AS PAYMENT_TERM,
|
||||
CREDIT_LIMIT ,
|
||||
GROUP_CONCAT( `LAST_PAY_DATE` SEPARATOR '<br>' ) AS LAST_PAY_DATE,
|
||||
SUM( `TOTAL`*EXCHANGE_RATE ) AS TOTAL,
|
||||
SUM( `BEFORE_DUE_7`*EXCHANGE_RATE ) AS BEFORE_DUE_7,
|
||||
SUM( `PER1`*EXCHANGE_RATE ) AS PER1,
|
||||
SUM( `PER2`*EXCHANGE_RATE ) AS PER2,
|
||||
SUM( `PER3`*EXCHANGE_RATE ) AS PER3,
|
||||
SUM( `PER4`*EXCHANGE_RATE ) AS PER4,
|
||||
SUM( `PER5`*EXCHANGE_RATE ) AS PER5,
|
||||
SUM( `PER6`*EXCHANGE_RATE ) AS PER6,
|
||||
SUM( `PER7`*EXCHANGE_RATE ) AS PER7
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS A
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( `TOTAL`*EXCHANGE_RATE ) AS TOTAL_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS B ON A.CLIENT_NUMBER=B.CLIENT_NUMBER AND
|
||||
A.DIVISION=B.DIVISION AND A.RECEIVABLE_GROUP=B.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=B.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( `TOTAL`*EXCHANGE_RATE ) AS TOTAL_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS C ON A.CLIENT_NUMBER=C.CLIENT_NUMBER
|
||||
AND
|
||||
A.DIVISION=C.DIVISION AND A.RECEIVABLE_GROUP=C.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=C.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( `TOTAL`*EXCHANGE_RATE ) AS TOTAL_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS D ON A.CLIENT_NUMBER=D.CLIENT_NUMBER AND
|
||||
A.DIVISION=D.DIVISION AND A.RECEIVABLE_GROUP=D.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=D.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( BEFORE_DUE_7*EXCHANGE_RATE ) AS BEFORE_DUE_7_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS F ON A.CLIENT_NUMBER=F.CLIENT_NUMBER AND
|
||||
A.DIVISION=F.DIVISION AND A.RECEIVABLE_GROUP=F.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=F.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( BEFORE_DUE_7*EXCHANGE_RATE ) AS BEFORE_DUE_7_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS G ON A.CLIENT_NUMBER=G.CLIENT_NUMBER AND
|
||||
A.DIVISION=G.DIVISION AND A.RECEIVABLE_GROUP=G.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=G.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( BEFORE_DUE_7*EXCHANGE_RATE ) AS BEFORE_DUE_7_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS H ON A.CLIENT_NUMBER=H.CLIENT_NUMBER AND
|
||||
A.DIVISION=H.DIVISION AND A.RECEIVABLE_GROUP=H.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=H.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER1*EXCHANGE_RATE ) AS PER1_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS I ON A.CLIENT_NUMBER=I.CLIENT_NUMBER AND
|
||||
A.DIVISION=I.DIVISION AND A.RECEIVABLE_GROUP=I.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=I.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER1*EXCHANGE_RATE ) AS PER1_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS J ON A.CLIENT_NUMBER=J.CLIENT_NUMBER AND
|
||||
A.DIVISION=J.DIVISION AND A.RECEIVABLE_GROUP=J.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=J.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER1*EXCHANGE_RATE ) AS PER1_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS K ON A.CLIENT_NUMBER=K.CLIENT_NUMBER AND
|
||||
A.DIVISION=K.DIVISION AND A.RECEIVABLE_GROUP=K.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=K.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER2*EXCHANGE_RATE ) AS PER2_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS L ON A.CLIENT_NUMBER=L.CLIENT_NUMBER AND
|
||||
A.DIVISION=L.DIVISION AND A.RECEIVABLE_GROUP=L.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=L.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER2*EXCHANGE_RATE ) AS PER2_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS M ON A.CLIENT_NUMBER=M.CLIENT_NUMBER AND
|
||||
A.DIVISION=M.DIVISION AND A.RECEIVABLE_GROUP=M.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=M.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER2*EXCHANGE_RATE ) AS PER2_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS N ON A.CLIENT_NUMBER=N.CLIENT_NUMBER AND
|
||||
A.DIVISION=N.DIVISION AND A.RECEIVABLE_GROUP=N.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=N.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER3*EXCHANGE_RATE ) AS PER3_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS O ON A.CLIENT_NUMBER=O.CLIENT_NUMBER AND
|
||||
A.DIVISION=O.DIVISION AND A.RECEIVABLE_GROUP=O.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=O.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER3*EXCHANGE_RATE ) AS PER3_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS P ON A.CLIENT_NUMBER=P.CLIENT_NUMBER AND
|
||||
A.DIVISION=P.DIVISION AND A.RECEIVABLE_GROUP=P.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=P.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER3*EXCHANGE_RATE ) AS PER3_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS R ON A.CLIENT_NUMBER=R.CLIENT_NUMBER AND
|
||||
A.DIVISION=R.DIVISION AND A.RECEIVABLE_GROUP=R.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=R.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER4*EXCHANGE_RATE ) AS PER4_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS S ON A.CLIENT_NUMBER=S.CLIENT_NUMBER AND
|
||||
A.DIVISION=S.DIVISION AND A.RECEIVABLE_GROUP=S.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=S.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER4*EXCHANGE_RATE ) AS PER4_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS T ON A.CLIENT_NUMBER=T.CLIENT_NUMBER AND
|
||||
A.DIVISION=T.DIVISION AND A.RECEIVABLE_GROUP=T.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=T.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER4*EXCHANGE_RATE ) AS PER4_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS U ON A.CLIENT_NUMBER=U.CLIENT_NUMBER AND
|
||||
A.DIVISION=U.DIVISION AND A.RECEIVABLE_GROUP=U.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=U.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER5*EXCHANGE_RATE ) AS PER5_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS V ON A.CLIENT_NUMBER=V.CLIENT_NUMBER AND
|
||||
A.DIVISION=V.DIVISION AND A.RECEIVABLE_GROUP=V.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=V.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER5*EXCHANGE_RATE ) AS PER5_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS X ON A.CLIENT_NUMBER=X.CLIENT_NUMBER AND
|
||||
A.DIVISION=X.DIVISION AND A.RECEIVABLE_GROUP=X.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=X.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER5*EXCHANGE_RATE ) AS PER5_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS Z ON A.CLIENT_NUMBER=Z.CLIENT_NUMBER AND
|
||||
A.DIVISION=Z.DIVISION AND A.RECEIVABLE_GROUP=Z.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=Z.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER6*EXCHANGE_RATE ) AS PER6_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS Q ON A.CLIENT_NUMBER=Q.CLIENT_NUMBER AND
|
||||
A.DIVISION=Q.DIVISION AND A.RECEIVABLE_GROUP=Q.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=Q.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER6*EXCHANGE_RATE ) AS PER6_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS Y ON A.CLIENT_NUMBER=Y.CLIENT_NUMBER AND
|
||||
A.DIVISION=Y.DIVISION AND A.RECEIVABLE_GROUP=Y.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=Y.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER6*EXCHANGE_RATE ) AS PER6_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS W ON A.CLIENT_NUMBER=W.CLIENT_NUMBER AND
|
||||
A.DIVISION=W.DIVISION AND A.RECEIVABLE_GROUP=W.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=W.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER7*EXCHANGE_RATE ) AS PER7_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS A1 ON A.CLIENT_NUMBER=A1.CLIENT_NUMBER AND
|
||||
A.DIVISION=A1.DIVISION AND A.RECEIVABLE_GROUP=A1.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=A1.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER7*EXCHANGE_RATE ) AS PER7_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS B1 ON A.CLIENT_NUMBER=B1.CLIENT_NUMBER AND
|
||||
A.DIVISION=B1.DIVISION AND A.RECEIVABLE_GROUP=B1.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=B1.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER7*EXCHANGE_RATE ) AS PER7_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS C1 ON A.CLIENT_NUMBER=C1.CLIENT_NUMBER AND
|
||||
A.DIVISION=C1.DIVISION AND A.RECEIVABLE_GROUP=C1.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=C1.CREDIT_LIMIT
|
||||
ORDER BY TOTAL DESC;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived3> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived4> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived5> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived6> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived7> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived8> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived9> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived10> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived11> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived12> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived13> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived14> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived15> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived16> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived17> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived18> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived19> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived20> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived21> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived22> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived23> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived24> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived25> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived26> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived27> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived28> system NULL NULL NULL NULL 0 const row not found
|
||||
1 PRIMARY <derived29> system NULL NULL NULL NULL 0 const row not found
|
||||
29 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
28 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
27 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
26 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
25 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
24 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
23 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
22 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
21 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
20 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
19 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
18 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
17 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
16 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
15 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
14 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
13 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
12 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
11 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
10 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
9 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
8 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
7 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
6 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
5 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
4 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
DROP TABLES t1,t2;
|
||||
set optimizer_switch=@save_derived_optimizer_switch;
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
|
@ -204,7 +204,7 @@ CONCAT('"',CONCAT_WS('";"',repeat('a',60),repeat('b',60),repeat('c',60),repeat('
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc";"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
|
||||
select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es');
|
||||
insert('txs',2,1,'hi') insert('is ',4,0,'a') insert('txxxxt',2,4,'es')
|
||||
this is a test
|
||||
this is test
|
||||
select replace('aaaa','a','b'),replace('aaaa','aa','b'),replace('aaaa','a','bb'),replace('aaaa','','b'),replace('bbbb','a','c');
|
||||
replace('aaaa','a','b') replace('aaaa','aa','b') replace('aaaa','a','bb') replace('aaaa','','b') replace('bbbb','a','c')
|
||||
bbbb bb bbbbbbbb aaaa bbbb
|
||||
@ -2343,7 +2343,7 @@ INSERT('abc', 3, 3, '1234')
|
||||
ab1234
|
||||
SELECT INSERT('abc', 4, 3, '1234');
|
||||
INSERT('abc', 4, 3, '1234')
|
||||
abc1234
|
||||
abc
|
||||
SELECT INSERT('abc', 5, 3, '1234');
|
||||
INSERT('abc', 5, 3, '1234')
|
||||
abc
|
||||
@ -2633,7 +2633,7 @@ CREATE TABLE t1 ( a TEXT );
|
||||
SELECT 'aaaaaaaaaaaaaa' INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug58165.txt';;
|
||||
SELECT insert( substring_index( 'a', 'a', 'b' ), 1, 0, 'x' );
|
||||
insert( substring_index( 'a', 'a', 'b' ), 1, 0, 'x' )
|
||||
x
|
||||
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect INTEGER value: 'b'
|
||||
LOAD DATA INFILE 'MYSQLTEST_VARDIR/tmp/bug58165.txt' INTO TABLE t1;;
|
||||
@ -4579,8 +4579,7 @@ CREATE TABLE t1 (a INT);
|
||||
INSERT INTO t1 VALUES (0),(0),(1),(0),(0);
|
||||
SELECT COUNT(*) FROM t1, t1 t2 GROUP BY INSERT('', t2.a, t1.a, @@global.max_binlog_size);
|
||||
COUNT(*)
|
||||
20
|
||||
5
|
||||
25
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
|
@ -1729,6 +1729,45 @@ Warnings:
|
||||
Warning 1292 Incorrect datetime value: '1'
|
||||
drop table t1;
|
||||
SET timestamp=DEFAULT;
|
||||
#
|
||||
# Bug #21564557: INCONSISTENT OUTPUT FROM 5.5 AND 5.6
|
||||
# UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%M"
|
||||
#
|
||||
SELECT UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%m"));
|
||||
UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%m"))
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1411 Incorrect datetime value: '201506' for function str_to_date
|
||||
SELECT UNIX_TIMESTAMP('2015-06-00');
|
||||
UNIX_TIMESTAMP('2015-06-00')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Incorrect datetime value: '2015-06-00'
|
||||
SELECT UNIX_TIMESTAMP(STR_TO_DATE('0000-00-00 10:30:30', '%Y-%m-%d %h:%i:%s'));
|
||||
UNIX_TIMESTAMP(STR_TO_DATE('0000-00-00 10:30:30', '%Y-%m-%d %h:%i:%s'))
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1411 Incorrect datetime value: '0000-00-00 10:30:30' for function str_to_date
|
||||
set sql_mode= 'TRADITIONAL';
|
||||
SELECT @@sql_mode;
|
||||
@@sql_mode
|
||||
STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
|
||||
SELECT UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%m"));
|
||||
UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%m"))
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1411 Incorrect datetime value: '201506' for function str_to_date
|
||||
SELECT UNIX_TIMESTAMP('2015-06-00');
|
||||
UNIX_TIMESTAMP('2015-06-00')
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1292 Incorrect datetime value: '2015-06-00'
|
||||
SELECT UNIX_TIMESTAMP(STR_TO_DATE('0000-00-00 10:30:30', '%Y-%m-%d %h:%i:%s'));
|
||||
UNIX_TIMESTAMP(STR_TO_DATE('0000-00-00 10:30:30', '%Y-%m-%d %h:%i:%s'))
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1411 Incorrect datetime value: '0000-00-00 10:30:30' for function str_to_date
|
||||
set sql_mode= default;
|
||||
select time('10:10:10') > 10;
|
||||
time('10:10:10') > 10
|
||||
1
|
||||
|
@ -35,3 +35,36 @@ c1
|
||||
Ann
|
||||
Alice
|
||||
DROP TABLE t1, t2, t3, t4, t5;
|
||||
create table t1 (c1 varchar(100));
|
||||
create table t2 (c1 varchar(100));
|
||||
create view t3 as select * from t1;
|
||||
insert into t1 values ('ann'), ('alice');
|
||||
insert into t2 values ('bob'), ('brian');
|
||||
create temporary table t4 (c1 varchar(100)) engine=MERGE union=(t2, t1);
|
||||
create temporary table t5 (c1 varchar(100)) engine=MERGE union=(t3, t1);
|
||||
select * from t5;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
lock tables t1 read, t2 read, t3 read, t4 read;
|
||||
select * from t5;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
select * from t4;
|
||||
c1
|
||||
bob
|
||||
brian
|
||||
ann
|
||||
alice
|
||||
unlock tables;
|
||||
drop table t2;
|
||||
create view t2 as select * from t1;
|
||||
select * from t4;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
lock tables t1 read, t2 read, t3 read;
|
||||
select * from t4;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
select * from t4;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
select * from t4;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
unlock tables;
|
||||
drop view t2, t3;
|
||||
drop table t1;
|
||||
|
@ -319,4 +319,64 @@ master-bin.000001 # Gtid # # GTID #-#-#
|
||||
master-bin.000001 # Query # # use `test`; REPAIR VIEW `v4` FROM MYSQL
|
||||
drop table if exists kv;
|
||||
drop view v1,v2,v3,v4;
|
||||
rename table mysql.event to mysql.ev_bk;
|
||||
flush tables;
|
||||
The --upgrade-system-tables option was used, user tables won't be touched.
|
||||
MySQL upgrade detected
|
||||
Phase 1/6: Checking and upgrading mysql database
|
||||
Processing databases
|
||||
mysql
|
||||
mysql.column_stats OK
|
||||
mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.ev_bk OK
|
||||
mysql.event OK
|
||||
mysql.func OK
|
||||
mysql.gtid_slave_pos OK
|
||||
mysql.help_category OK
|
||||
mysql.help_keyword OK
|
||||
mysql.help_relation OK
|
||||
mysql.help_topic OK
|
||||
mysql.host OK
|
||||
mysql.index_stats OK
|
||||
mysql.innodb_index_stats
|
||||
Error : Unknown storage engine 'InnoDB'
|
||||
error : Corrupt
|
||||
mysql.innodb_table_stats
|
||||
Error : Unknown storage engine 'InnoDB'
|
||||
error : Corrupt
|
||||
mysql.plugin OK
|
||||
mysql.proc OK
|
||||
mysql.procs_priv OK
|
||||
mysql.proxies_priv OK
|
||||
mysql.roles_mapping OK
|
||||
mysql.servers OK
|
||||
mysql.table_stats OK
|
||||
mysql.tables_priv OK
|
||||
mysql.time_zone OK
|
||||
mysql.time_zone_leap_second OK
|
||||
mysql.time_zone_name OK
|
||||
mysql.time_zone_transition OK
|
||||
mysql.time_zone_transition_type OK
|
||||
mysql.user OK
|
||||
|
||||
Repairing tables
|
||||
mysql.innodb_index_stats
|
||||
Error : Unknown storage engine 'InnoDB'
|
||||
error : Corrupt
|
||||
mysql.innodb_table_stats
|
||||
Error : Unknown storage engine 'InnoDB'
|
||||
error : Corrupt
|
||||
Phase 2/6: Fixing views from mysql
|
||||
test.v1 OK
|
||||
test.v2 OK
|
||||
test.v3 OK
|
||||
Phase 3/6: Running 'mysql_fix_privilege_tables'
|
||||
Phase 4/6: Fixing table and database names ... Skipped
|
||||
Phase 5/6: Checking and upgrading tables... Skipped
|
||||
Phase 6/6: Running 'FLUSH PRIVILEGES'
|
||||
OK
|
||||
drop table mysql.event;
|
||||
rename table mysql.ev_bk to mysql.event;
|
||||
drop view v1,v2,v3;
|
||||
drop table t1;
|
||||
|
13
mysql-test/r/second_frac-9175.result
Normal file
13
mysql-test/r/second_frac-9175.result
Normal file
@ -0,0 +1,13 @@
|
||||
select timestampdiff(microsecond,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456');
|
||||
timestampdiff(microsecond,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456')
|
||||
31622400123456
|
||||
explain extended select timestampdiff(microsecond,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456');
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 select timestampdiff(MICROSECOND,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456') AS `timestampdiff(microsecond,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456')`
|
||||
create view v1 as select timestampdiff(microsecond,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456');
|
||||
select * from v1;
|
||||
Name_exp_1
|
||||
31622400123456
|
||||
drop view v1;
|
@ -348,3 +348,18 @@ select found_rows();
|
||||
found_rows()
|
||||
75
|
||||
drop table t1;
|
||||
create table t1(c1 int);
|
||||
insert into t1 values(1),(2),(3),(4),(5);
|
||||
select * from t1 order by c1 limit 2,1;
|
||||
c1
|
||||
3
|
||||
select found_rows();
|
||||
found_rows()
|
||||
3
|
||||
select sql_calc_found_rows * from t1 order by c1 limit 2,1;
|
||||
c1
|
||||
3
|
||||
select found_rows();
|
||||
found_rows()
|
||||
5
|
||||
drop table t1;
|
||||
|
@ -4326,57 +4326,57 @@ test.t1 repair status OK
|
||||
test.t2 repair status OK
|
||||
test.t3 repair status OK
|
||||
test.v1 repair Error 'test.v1' is not BASE TABLE
|
||||
test.v1 repair error Corrupt
|
||||
test.v1 repair status Operation failed
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
test.t2 optimize status OK
|
||||
test.t3 optimize status OK
|
||||
test.v1 optimize Error 'test.v1' is not BASE TABLE
|
||||
test.v1 optimize error Corrupt
|
||||
test.v1 optimize status Operation failed
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Table is already up to date
|
||||
test.t2 analyze status Table is already up to date
|
||||
test.t3 analyze status Table is already up to date
|
||||
test.v1 analyze Error 'test.v1' is not BASE TABLE
|
||||
test.v1 analyze error Corrupt
|
||||
test.v1 analyze status Operation failed
|
||||
call bug13012()|
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
test.t2 repair status OK
|
||||
test.t3 repair status OK
|
||||
test.v1 repair Error 'test.v1' is not BASE TABLE
|
||||
test.v1 repair error Corrupt
|
||||
test.v1 repair status Operation failed
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
test.t2 optimize status OK
|
||||
test.t3 optimize status OK
|
||||
test.v1 optimize Error 'test.v1' is not BASE TABLE
|
||||
test.v1 optimize error Corrupt
|
||||
test.v1 optimize status Operation failed
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Table is already up to date
|
||||
test.t2 analyze status Table is already up to date
|
||||
test.t3 analyze status Table is already up to date
|
||||
test.v1 analyze Error 'test.v1' is not BASE TABLE
|
||||
test.v1 analyze error Corrupt
|
||||
test.v1 analyze status Operation failed
|
||||
call bug13012()|
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 repair status OK
|
||||
test.t2 repair status OK
|
||||
test.t3 repair status OK
|
||||
test.v1 repair Error 'test.v1' is not BASE TABLE
|
||||
test.v1 repair error Corrupt
|
||||
test.v1 repair status Operation failed
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
test.t2 optimize status OK
|
||||
test.t3 optimize status OK
|
||||
test.v1 optimize Error 'test.v1' is not BASE TABLE
|
||||
test.v1 optimize error Corrupt
|
||||
test.v1 optimize status Operation failed
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status Table is already up to date
|
||||
test.t2 analyze status Table is already up to date
|
||||
test.t3 analyze status Table is already up to date
|
||||
test.v1 analyze Error 'test.v1' is not BASE TABLE
|
||||
test.v1 analyze error Corrupt
|
||||
test.v1 analyze status Operation failed
|
||||
drop procedure bug13012|
|
||||
drop view v1|
|
||||
select * from t1 order by data|
|
||||
|
5
mysql-test/r/ssl_cert_verify.result
Normal file
5
mysql-test/r/ssl_cert_verify.result
Normal file
@ -0,0 +1,5 @@
|
||||
#T1: Host name (/CN=localhost/) as OU name in the server certificate, server certificate verification should fail.
|
||||
#T2: Host name (localhost) as common name in the server certificate, server certificate verification should pass.
|
||||
Variable_name Value
|
||||
Ssl_version TLS_VERSION
|
||||
# restart server using restart
|
@ -7110,6 +7110,20 @@ NULL
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2,t3,t4;
|
||||
#
|
||||
# MDEV-7122
|
||||
# Assertion `0' failed in subselect_hash_sj_engine::init
|
||||
#
|
||||
SET SESSION big_tables=1;
|
||||
CREATE TABLE t1(a char(255) DEFAULT '', KEY(a(10))) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
INSERT INTO t1 VALUES(0),(0),(0);
|
||||
SELECT * FROM t1 WHERE a IN(SELECT MIN(a) FROM t1);
|
||||
a
|
||||
0
|
||||
0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
SET SESSION big_tables=0;
|
||||
#
|
||||
# MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
|
||||
# m_lock_type != 2' failed in handler::ha_index_read_map
|
||||
#
|
||||
|
@ -349,9 +349,9 @@ WHERE t.a IN (SELECT b FROM t1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
3 MATERIALIZED t1 system NULL NULL NULL NULL 1 100.00
|
||||
3 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,0 AS `a`,0 AS `b` from `test`.`t2` where <expr_cache><0>(<in_optimizer>(0,0 in ( <materialize> (select 0 from dual ), <primary_index_lookup>(0 in <temporary table> on distinct_key where ((0 = `<subquery3>`.`b`))))))
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,0 AS `a`,0 AS `b` from `test`.`t2` where <expr_cache><0>(<in_optimizer>(0,<exists>(select 0 from dual where (<cache>(0) = 0))))
|
||||
SELECT * FROM t2 RIGHT JOIN v1 AS t ON t.a != 0
|
||||
WHERE t.a IN (SELECT b FROM t1);
|
||||
a a b
|
||||
@ -362,9 +362,9 @@ WHERE t.a IN (SELECT b FROM t1);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1 100.00
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 100.00 Using where
|
||||
2 MATERIALIZED t1 system NULL NULL NULL NULL 1 100.00
|
||||
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1 100.00
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,0 AS `a`,0 AS `b` from `test`.`t2` where <expr_cache><0>(<in_optimizer>(0,0 in ( <materialize> (select 0 from dual ), <primary_index_lookup>(0 in <temporary table> on distinct_key where ((0 = `<subquery2>`.`b`))))))
|
||||
Note 1003 select `test`.`t2`.`a` AS `a`,0 AS `a`,0 AS `b` from `test`.`t2` where <expr_cache><0>(<in_optimizer>(0,<exists>(select 0 from dual where (<cache>(0) = 0))))
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
|
@ -7110,6 +7110,20 @@ NULL
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2,t3,t4;
|
||||
#
|
||||
# MDEV-7122
|
||||
# Assertion `0' failed in subselect_hash_sj_engine::init
|
||||
#
|
||||
SET SESSION big_tables=1;
|
||||
CREATE TABLE t1(a char(255) DEFAULT '', KEY(a(10))) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
INSERT INTO t1 VALUES(0),(0),(0);
|
||||
SELECT * FROM t1 WHERE a IN(SELECT MIN(a) FROM t1);
|
||||
a
|
||||
0
|
||||
0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
SET SESSION big_tables=0;
|
||||
#
|
||||
# MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
|
||||
# m_lock_type != 2' failed in handler::ha_index_read_map
|
||||
#
|
||||
|
@ -7103,6 +7103,20 @@ NULL
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2,t3,t4;
|
||||
#
|
||||
# MDEV-7122
|
||||
# Assertion `0' failed in subselect_hash_sj_engine::init
|
||||
#
|
||||
SET SESSION big_tables=1;
|
||||
CREATE TABLE t1(a char(255) DEFAULT '', KEY(a(10))) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
INSERT INTO t1 VALUES(0),(0),(0);
|
||||
SELECT * FROM t1 WHERE a IN(SELECT MIN(a) FROM t1);
|
||||
a
|
||||
0
|
||||
0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
SET SESSION big_tables=0;
|
||||
#
|
||||
# MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
|
||||
# m_lock_type != 2' failed in handler::ha_index_read_map
|
||||
#
|
||||
|
@ -7101,6 +7101,20 @@ NULL
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2,t3,t4;
|
||||
#
|
||||
# MDEV-7122
|
||||
# Assertion `0' failed in subselect_hash_sj_engine::init
|
||||
#
|
||||
SET SESSION big_tables=1;
|
||||
CREATE TABLE t1(a char(255) DEFAULT '', KEY(a(10))) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
INSERT INTO t1 VALUES(0),(0),(0);
|
||||
SELECT * FROM t1 WHERE a IN(SELECT MIN(a) FROM t1);
|
||||
a
|
||||
0
|
||||
0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
SET SESSION big_tables=0;
|
||||
#
|
||||
# MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
|
||||
# m_lock_type != 2' failed in handler::ha_index_read_map
|
||||
#
|
||||
|
@ -7116,6 +7116,20 @@ NULL
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2,t3,t4;
|
||||
#
|
||||
# MDEV-7122
|
||||
# Assertion `0' failed in subselect_hash_sj_engine::init
|
||||
#
|
||||
SET SESSION big_tables=1;
|
||||
CREATE TABLE t1(a char(255) DEFAULT '', KEY(a(10))) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
INSERT INTO t1 VALUES(0),(0),(0);
|
||||
SELECT * FROM t1 WHERE a IN(SELECT MIN(a) FROM t1);
|
||||
a
|
||||
0
|
||||
0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
SET SESSION big_tables=0;
|
||||
#
|
||||
# MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
|
||||
# m_lock_type != 2' failed in handler::ha_index_read_map
|
||||
#
|
||||
|
@ -7101,6 +7101,20 @@ NULL
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2,t3,t4;
|
||||
#
|
||||
# MDEV-7122
|
||||
# Assertion `0' failed in subselect_hash_sj_engine::init
|
||||
#
|
||||
SET SESSION big_tables=1;
|
||||
CREATE TABLE t1(a char(255) DEFAULT '', KEY(a(10))) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
INSERT INTO t1 VALUES(0),(0),(0);
|
||||
SELECT * FROM t1 WHERE a IN(SELECT MIN(a) FROM t1);
|
||||
a
|
||||
0
|
||||
0
|
||||
0
|
||||
DROP TABLE t1;
|
||||
SET SESSION big_tables=0;
|
||||
#
|
||||
# MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
|
||||
# m_lock_type != 2' failed in handler::ha_index_read_map
|
||||
#
|
||||
|
@ -3003,4 +3003,69 @@ explain
|
||||
select 1 from t1 where _cp932 "1" in (select '1' from t1);
|
||||
ERROR HY000: Illegal mix of collations (cp932_japanese_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation '='
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-7823: Server crashes in next_depth_first_tab on nested IN clauses with SQ inside
|
||||
#
|
||||
set @tmp_mdev7823=@@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE TABLE t2 (f2 INT, KEY(f2));
|
||||
INSERT INTO t2 VALUES (8),(0);
|
||||
CREATE TABLE t3 (f3 INT);
|
||||
INSERT INTO t3 VALUES (1),(2);
|
||||
CREATE TABLE t4 (f4 INT);
|
||||
INSERT INTO t4 VALUES (0),(5);
|
||||
explain
|
||||
SELECT * FROM t1, t2, t3 WHERE f2 IN ( f1 IN ( SELECT f4 FROM t4 ) );
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||
1 PRIMARY t2 ref f2 f2 5 const 0 Using where; Using index
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 Using where
|
||||
SELECT * FROM t1, t2, t3 WHERE f2 IN ( f1 IN ( SELECT f4 FROM t4 ) );
|
||||
f1 f2 f3
|
||||
1 0 1
|
||||
1 0 2
|
||||
drop table t1,t2,t3,t4;
|
||||
set optimizer_switch= @tmp_mdev7823;
|
||||
#
|
||||
# MDEV-6859: scalar subqueries in a comparison produced unexpected result
|
||||
#
|
||||
set @tmp_mdev6859=@@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
CREATE TABLE t1 (
|
||||
project_number varchar(50) NOT NULL,
|
||||
PRIMARY KEY (project_number)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 (project_number) VALUES ('aaa'),('bbb');
|
||||
CREATE TABLE t2 (
|
||||
id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
project_number varchar(50) NOT NULL,
|
||||
history_date date NOT NULL,
|
||||
country varchar(50) NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 (id, project_number, history_date, country) VALUES
|
||||
(1, 'aaa', '2014-08-09', 'france'),(2, 'aaa', '2014-09-09', 'singapore');
|
||||
CREATE TABLE t3 (
|
||||
region varchar(50) NOT NULL,
|
||||
country varchar(50) NOT NULL
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t3 (region, country) VALUES ('apac', 'singapore'),('eame', 'france');
|
||||
SELECT SQL_NO_CACHE a.project_number
|
||||
FROM t1 a
|
||||
WHERE ( SELECT z.country
|
||||
FROM t2 z
|
||||
WHERE z.project_number = a.project_number AND z.history_date <= '2014-09-01'
|
||||
ORDER BY z.id DESC LIMIT 1
|
||||
) IN (
|
||||
SELECT r.country
|
||||
FROM t3 r
|
||||
WHERE r.region = 'eame'
|
||||
);
|
||||
project_number
|
||||
aaa
|
||||
drop table t1, t2, t3;
|
||||
set optimizer_switch= @tmp_mdev6859;
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
|
@ -3017,6 +3017,71 @@ explain
|
||||
select 1 from t1 where _cp932 "1" in (select '1' from t1);
|
||||
ERROR HY000: Illegal mix of collations (cp932_japanese_ci,COERCIBLE) and (latin1_swedish_ci,COERCIBLE) for operation '='
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-7823: Server crashes in next_depth_first_tab on nested IN clauses with SQ inside
|
||||
#
|
||||
set @tmp_mdev7823=@@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE TABLE t2 (f2 INT, KEY(f2));
|
||||
INSERT INTO t2 VALUES (8),(0);
|
||||
CREATE TABLE t3 (f3 INT);
|
||||
INSERT INTO t3 VALUES (1),(2);
|
||||
CREATE TABLE t4 (f4 INT);
|
||||
INSERT INTO t4 VALUES (0),(5);
|
||||
explain
|
||||
SELECT * FROM t1, t2, t3 WHERE f2 IN ( f1 IN ( SELECT f4 FROM t4 ) );
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t1 system NULL NULL NULL NULL 1
|
||||
1 PRIMARY t2 ref f2 f2 5 const 0 Using where; Using index
|
||||
1 PRIMARY t3 ALL NULL NULL NULL NULL 2 Using join buffer (flat, BNL join)
|
||||
2 DEPENDENT SUBQUERY t4 ALL NULL NULL NULL NULL 2 Using where
|
||||
SELECT * FROM t1, t2, t3 WHERE f2 IN ( f1 IN ( SELECT f4 FROM t4 ) );
|
||||
f1 f2 f3
|
||||
1 0 1
|
||||
1 0 2
|
||||
drop table t1,t2,t3,t4;
|
||||
set optimizer_switch= @tmp_mdev7823;
|
||||
#
|
||||
# MDEV-6859: scalar subqueries in a comparison produced unexpected result
|
||||
#
|
||||
set @tmp_mdev6859=@@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
CREATE TABLE t1 (
|
||||
project_number varchar(50) NOT NULL,
|
||||
PRIMARY KEY (project_number)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 (project_number) VALUES ('aaa'),('bbb');
|
||||
CREATE TABLE t2 (
|
||||
id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
project_number varchar(50) NOT NULL,
|
||||
history_date date NOT NULL,
|
||||
country varchar(50) NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 (id, project_number, history_date, country) VALUES
|
||||
(1, 'aaa', '2014-08-09', 'france'),(2, 'aaa', '2014-09-09', 'singapore');
|
||||
CREATE TABLE t3 (
|
||||
region varchar(50) NOT NULL,
|
||||
country varchar(50) NOT NULL
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t3 (region, country) VALUES ('apac', 'singapore'),('eame', 'france');
|
||||
SELECT SQL_NO_CACHE a.project_number
|
||||
FROM t1 a
|
||||
WHERE ( SELECT z.country
|
||||
FROM t2 z
|
||||
WHERE z.project_number = a.project_number AND z.history_date <= '2014-09-01'
|
||||
ORDER BY z.id DESC LIMIT 1
|
||||
) IN (
|
||||
SELECT r.country
|
||||
FROM t3 r
|
||||
WHERE r.region = 'eame'
|
||||
);
|
||||
project_number
|
||||
aaa
|
||||
drop table t1, t2, t3;
|
||||
set optimizer_switch= @tmp_mdev6859;
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
#
|
||||
# BUG#49129: Wrong result with IN-subquery with join_cache_level=6 and firstmatch=off
|
||||
|
@ -439,6 +439,15 @@ select 1 from t1 as t1_0 inner join t1 as t2 on (t1_0.a <=> now()) join t1 on 1;
|
||||
1
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-9511 Valgrind warnings 'Invalid read' in Field_newdate::cmp and Field_newdate::val_str
|
||||
#
|
||||
CREATE TABLE t1 (f1 DATE, f2 VARCHAR(1));
|
||||
INSERT INTO t1 VALUES ('2003-04-27','a'),('1900-01-01','a');
|
||||
SELECT GROUP_CONCAT(f2, IF(f1, f2, f1), f1 ORDER BY 2,1,3) FROM t1;
|
||||
GROUP_CONCAT(f2, IF(f1, f2, f1), f1 ORDER BY 2,1,3)
|
||||
aa1900-01-01,aa2003-04-27
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
#
|
||||
@ -511,12 +520,6 @@ Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = DATE'2001-01-01')
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.1 tests
|
||||
#
|
||||
#
|
||||
# Start of 10.1 tests
|
||||
#
|
||||
#
|
||||
# MDEV-8699 Wrong result for SELECT..WHERE HEX(date_column)!='323030312D30312D3031' AND date_column='2001-01-01x'
|
||||
#
|
||||
CREATE TABLE t1 (a DATE);
|
||||
|
@ -2425,28 +2425,28 @@ CREATE VIEW v1 AS SELECT id FROM t1;
|
||||
OPTIMIZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 optimize Error 'test.v1' is not BASE TABLE
|
||||
test.v1 optimize error Corrupt
|
||||
test.v1 optimize status Operation failed
|
||||
ANALYZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 analyze Error 'test.v1' is not BASE TABLE
|
||||
test.v1 analyze error Corrupt
|
||||
test.v1 analyze status Operation failed
|
||||
REPAIR TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 repair Error 'test.v1' is not BASE TABLE
|
||||
test.v1 repair error Corrupt
|
||||
test.v1 repair status Operation failed
|
||||
DROP TABLE t1;
|
||||
OPTIMIZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 optimize Error 'test.v1' is not BASE TABLE
|
||||
test.v1 optimize error Corrupt
|
||||
test.v1 optimize status Operation failed
|
||||
ANALYZE TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 analyze Error 'test.v1' is not BASE TABLE
|
||||
test.v1 analyze error Corrupt
|
||||
test.v1 analyze status Operation failed
|
||||
REPAIR TABLE v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 repair Error 'test.v1' is not BASE TABLE
|
||||
test.v1 repair error Corrupt
|
||||
test.v1 repair status Operation failed
|
||||
DROP VIEW v1;
|
||||
create definer = current_user() sql security invoker view v1 as select 1;
|
||||
show create view v1;
|
||||
@ -5540,6 +5540,14 @@ execute stmt;
|
||||
deallocate prepare stmt;
|
||||
drop view v1,v2;
|
||||
drop table `t1`;
|
||||
create table t1 (a int, b int);
|
||||
create view v1 as select a+b from t1;
|
||||
alter table v1 check partition p1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 check Error 'test.v1' is not BASE TABLE
|
||||
test.v1 check status Operation failed
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.5 tests.
|
||||
# -----------------------------------------------------------------
|
||||
|
20
mysql-test/std_data/ca-cert-verify.pem
Normal file
20
mysql-test/std_data/ca-cert-verify.pem
Normal file
@ -0,0 +1,20 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDWzCCAkOgAwIBAgIJAO/QdKLEDQdXMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNV
|
||||
BAYTAklOMREwDwYDVQQIDAhLYXJuYXRrYTESMBAGA1UEBwwJQmFuZ2Fsb3JlMQ4w
|
||||
DAYDVQQKDAVNeVNRTDAeFw0xNjAxMDUxMDA1MDhaFw0yNTExMTMxMDA1MDhaMEQx
|
||||
CzAJBgNVBAYTAklOMREwDwYDVQQIDAhLYXJuYXRrYTESMBAGA1UEBwwJQmFuZ2Fs
|
||||
b3JlMQ4wDAYDVQQKDAVNeVNRTDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
||||
ggEBAKdOCuS2CzfBTJ2x8SAzY0J7cYJfNJvMDF1cvANnhkIhtnkWt/HZ5DJ9NxeX
|
||||
q5h7FJLAi4gddqdk/tvQJw0V6gZepJr/mKVnMPivF5+oHPc9ZJQMX6B3FBNwWylm
|
||||
ACd5GKx8I/H/MXyuhQTcoV//Ab+2pI8RHeYbBsm3lHH+tX7bRU6mUFjneqMpiCkb
|
||||
JHt6BWZiWR10O6pMuGQ9+dDdsLhEV1fj3CctEPwW6rs4IZzD8xl5n+8cy7qu6eYH
|
||||
Wt/snwsTzkrufeMRqTtqelxON9eoQwYOR1oH3vNEVlcbuoJAvaWOqBROUBdf12SP
|
||||
TYSdP9nlRh7lTKQOywN4kYt6LqUCAwEAAaNQME4wHQYDVR0OBBYEFJ4c9tKaUU0P
|
||||
EjBq5G207jjXI7RAMB8GA1UdIwQYMBaAFJ4c9tKaUU0PEjBq5G207jjXI7RAMAwG
|
||||
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBABRnUyj21oFi0SGJg/K5+8Lc
|
||||
4n6OwVU/NgLOysIB0baIP/Rqeaze59xG/v9FPQgBlWcJK3RabOywx5bxAxdcus+1
|
||||
yp5j4h37Qq1/qkgqmevvdSAPa0OBQbLb+58/naV+ywUpCYZ6flLdCMH3fXuDSlSq
|
||||
qrCznextjojtWbnzrBmCmJmXWGd2gSaJDvb90ZZp/Elt3vN1sgjW0M/JEkb4MJ1r
|
||||
6nfD/FHr2lUwBHm2yk7Blovx7x4d/Ip3pglk63cNO/Rn0SBTdoVDS2LB9du3Phq2
|
||||
TZiL3NrRMGUNwmdaavyrJxaPq5D+Sfa4LYP3MMYD4KhLogNzIl299n5joyizlJw=
|
||||
-----END CERTIFICATE-----
|
19
mysql-test/std_data/server-cert-verify-fail.pem
Normal file
19
mysql-test/std_data/server-cert-verify-fail.pem
Normal file
@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDJzCCAg8CAQEwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCSU4xETAPBgNV
|
||||
BAgMCEthcm5hdGthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBU15U1FM
|
||||
MB4XDTE2MDEwNTEwMDgyN1oXDTI1MTExMzEwMDgyN1owbzELMAkGA1UEBhMCSU4x
|
||||
EjAQBgNVBAgMCTpLYXJuYXRrYTETMBEGA1UEBwwKOkJhbmdhbG9yZTEPMA0GA1UE
|
||||
CgwGOk15U1FMMRcwFQYDVQQLDA4vQ049bG9jYWxob3N0LzENMAsGA1UEAwwEZmFp
|
||||
bDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3wnWuJodzZYq9TAJRm
|
||||
HU7995FA3TEWdUinYTgGP79aTVQ4M9aeINlB6whWXOI8seh9Ja7C6kMzqOgYbgCl
|
||||
WlDPAVJWktFYeWXOLxbpzh1KWkS6jBkWT02t7H7JcYbil7xjlJUxLz4UOOUDUDIP
|
||||
6yqdA9VE3osESttjzj57Zm2xPqzbIHVJfORn7EexH4pryS7439p6i4XtfL31NJ8V
|
||||
07M3j3a8GqbcEqXYvcUCrLnywDQ1igP817b6ta52nbgYWiqdn0mJs535UJ/p/rSl
|
||||
D4Ae/6G3BSEY7whir6xY6vsd4KJ6w+wRCHnY0ky6OdDJVJLH1iqh7si7P3RBGkxw
|
||||
Y7MCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAggbw1jj2b7H5KDdeGJGIoOGkQAcs
|
||||
GNSJussCfdk7qnzYXKmjyNppC86jjaOrXona5f+SNCuujdu86Tv8V69EH57k4lUc
|
||||
DW7J4AD3vUb/tBzB0tsI/76Z4gm1XoCsnCGGpWd8GQAg/QNn/ZfJB2Vb/9ObN6rH
|
||||
0HV7ouB6OGZSsb71+grKiN6mDyB1lZynCGvqBxOCKFISfcRbCNFHo/pONlHaNGPE
|
||||
vjDH1bPZbEHj8owYgkdcQe0a8EbJYeQfm6fH8V8bmUcG7N60DrCnq4l1qwwVkh1S
|
||||
7RpIDgrWkU+esIIdYZIIbtDxQP1Sm7kUh++7b+bcHnyw3KtDVSCw7MIedA==
|
||||
-----END CERTIFICATE-----
|
19
mysql-test/std_data/server-cert-verify-pass.pem
Normal file
19
mysql-test/std_data/server-cert-verify-pass.pem
Normal file
@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDEzCCAfsCAQEwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCSU4xETAPBgNV
|
||||
BAgMCEthcm5hdGthMRIwEAYDVQQHDAlCYW5nYWxvcmUxDjAMBgNVBAoMBU15U1FM
|
||||
MB4XDTE2MDEwNTEwMDU1OVoXDTI1MTExMzEwMDU1OVowWzELMAkGA1UEBhMCSU4x
|
||||
EjAQBgNVBAgMCTpLYXJuYXRrYTETMBEGA1UEBwwKOkJhbmdhbG9yZTEPMA0GA1UE
|
||||
CgwGOk15U1FMMRIwEAYDVQQDDAlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUA
|
||||
A4IBDwAwggEKAoIBAQDAmkbUwDe+nrqL8A8uwlIZk74HHCDjUAWrskKF9leEIQsB
|
||||
5exFZ8JEo1u6mdR4laQWsxizGdTPqIEidkDyyEMh4+joHgyQEPD/G3rFVW8yEFHb
|
||||
42O04O96BEPFXNPDRuX3MxI+lGbYDjxTS/WhVub4/3SqLjC28FJmEUXIHA0/A+c5
|
||||
hlYXK0u+aPAqXxHIjBgB4BxxHXZKqecmvR3LhXoVmhJmndsVfKajB27nDKc8/OTI
|
||||
H2SXb6h3nRPDXRfwB/C5i+004tEsVeIgkYshcCgLSyDdeVieUP2pm3EAmDSjmtLF
|
||||
6CgY/EBSfH+JCKFUk75bA4k8CCGzBfIeOcsKHwgFAgMBAAEwDQYJKoZIhvcNAQEL
|
||||
BQADggEBAInDuHtDkeT6dkWmRJCP56c4xiQqib2QuYUuMSrAhf07xlLHc6iHnD2X
|
||||
hCWCrja6uwF90DnPjeouKMAUe5txq/uKA8/Y/NfXN6nPiAeHLI0qnTv7Mr9TQ8zU
|
||||
DNDwRz6onlI2cS4GhrwAnlpiaxu7AjMUWHtfBFGFrgn3PawjDQpsBZNcxw1QsLc0
|
||||
E0hFrWLOd0vDETEhoRge88N7a0jqK0Rd9cvRWnvjI+IsjQMLZzKufivIHPzI9K+9
|
||||
Wtp8iRHcaBr5DpsBjgsO7dqVRbsNyaWsdHdLt+CQSGXpv7P6fq3K6nJFTBeIgSfS
|
||||
gflrHVKYZRkKDDDpX4yHNdnIqrvy4RU=
|
||||
-----END CERTIFICATE-----
|
27
mysql-test/std_data/server-key-verify-fail.pem
Normal file
27
mysql-test/std_data/server-key-verify-fail.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAvfCda4mh3Nlir1MAlGYdTv33kUDdMRZ1SKdhOAY/v1pNVDgz
|
||||
1p4g2UHrCFZc4jyx6H0lrsLqQzOo6BhuAKVaUM8BUlaS0Vh5Zc4vFunOHUpaRLqM
|
||||
GRZPTa3sfslxhuKXvGOUlTEvPhQ45QNQMg/rKp0D1UTeiwRK22POPntmbbE+rNsg
|
||||
dUl85GfsR7EfimvJLvjf2nqLhe18vfU0nxXTszePdrwaptwSpdi9xQKsufLANDWK
|
||||
A/zXtvq1rnaduBhaKp2fSYmznflQn+n+tKUPgB7/obcFIRjvCGKvrFjq+x3gonrD
|
||||
7BEIedjSTLo50MlUksfWKqHuyLs/dEEaTHBjswIDAQABAoIBAQCSUyNzDPydXvsf
|
||||
hhoUOParPAvU4tuETYDdD9Vdi7Lgf3jDQOjulbNIq/ec3KuBvrBwIrk9APvn+YxO
|
||||
AUP9S2Vgi5jBDeDdVgNv4n90b3pSJk2UVQJI8V72wN5Ibnf/KeErSKvWo6V5daq/
|
||||
AuZtKsZIdd3WFtA62HuyuBjTGc23Alj1C0EKnN0Rx1uBwDvx/OVQ266Us/x8jJqW
|
||||
ZxIOfcvfNzBQEa5hAzbQCReVaC+rBLRAcMM2yGP7aDa+8cRkwuVlSqpX8CXBdLoU
|
||||
PqmU49etcW72Rb1AFt9WgEu1Oh9UYbHFSB+FEbO8IGcGBsuYHf9zkxQyjpy/iKyT
|
||||
H5dTu7YBAoGBAOWqEGepZVrfB+P6X18n3vbJhgYmF0sa0mCmwkFYgk36yNqsZ8at
|
||||
lQjm5mbn4wjEKHIcQ/T1taq73W471M+PxMnn0WTwoG5jsyarZGgy6/95YXiyZtQe
|
||||
qgA4P3aKkCteRP22DjG7uxmm9Hoqx8Z31vfRTLAHN1IEHPHHkg/J3gPTAoGBANO4
|
||||
aqKeY4vcDvVkvxVbADrw++tZGwA+RuxfO4HKKru59VdA2PsAxhXwb3Dfejwj7hYW
|
||||
yE9edHjGpMr1+dpf8YJYs7qjajHe1HxBOYqQGHycIdw+Gv56R4HpaS9eW3x8l/Pi
|
||||
b4xnAodv2qIriACOe7br+rll4wKX46Wt64zdvpShAoGAT0r3HQM0Vjp4u/J+qRjX
|
||||
9za+yjKuiiS5i9snaG5JlujGHhG2Rrc5pHgsBk17alRnbnZp1BJdZZQ1MFEB+aO2
|
||||
mssp1YLqsRJFEU3NfdhO+MaMq6JUtFnd8fN5ndDbU83ZXgtUPUGGqKWm9OL+VHyd
|
||||
wLQHmSL0q6F16Ngxirf0qjcCgYEAtSmiJVA+gdhk/FmeoBlkEwtNpM50Kjsf2PaM
|
||||
Jrzk4Al5A5Y7lFvPI8q+sOio4XklKsWH1VJPe2EOdZUQnGlocE6SS+u03MN9Mm1l
|
||||
XUl7inTXDGwgEQx0z5b4KE4nHlhGdauWI5+pLFbrz8RL9Z32AkneGnIyU2/AnW46
|
||||
lijQAMECgYEAmgp/88ndIw49RCtMhYhtXQ87AsEAP6kzXQyKppDkn0os+xI5igIL
|
||||
i/UDxB33hx3yjrUZwoGDV9MwlMhZNX5Tf5bwjPmmh1NR6KdEpPt5AkklX4s6uil2
|
||||
Bxl1P5l1jl/PbEYtv5LDZKIPANWRzViMSIWqjUWlbdqE7/vjx+Oo+cc=
|
||||
-----END RSA PRIVATE KEY-----
|
27
mysql-test/std_data/server-key-verify-pass.pem
Normal file
27
mysql-test/std_data/server-key-verify-pass.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEAwJpG1MA3vp66i/APLsJSGZO+Bxwg41AFq7JChfZXhCELAeXs
|
||||
RWfCRKNbupnUeJWkFrMYsxnUz6iBInZA8shDIePo6B4MkBDw/xt6xVVvMhBR2+Nj
|
||||
tODvegRDxVzTw0bl9zMSPpRm2A48U0v1oVbm+P90qi4wtvBSZhFFyBwNPwPnOYZW
|
||||
FytLvmjwKl8RyIwYAeAccR12SqnnJr0dy4V6FZoSZp3bFXymowdu5wynPPzkyB9k
|
||||
l2+od50Tw10X8AfwuYvtNOLRLFXiIJGLIXAoC0sg3XlYnlD9qZtxAJg0o5rSxego
|
||||
GPxAUnx/iQihVJO+WwOJPAghswXyHjnLCh8IBQIDAQABAoIBAHPQUSc9LkgBSks7
|
||||
XuXPE28t1+aOk3gcdkx4NGg5aQaal/PcPea+LaL4WAAs4AZidPjxWLjZn43+1SfT
|
||||
09opcbS/Rx3Mc+FtTn0YGQrwBJ0mExMV+K6bU2Ubi2TyHKQfzciHfUEEG5Nve/ba
|
||||
hikuCFVRxuVOQRzABcw6NqvNsmlg892lfw6/+RDwMBcz7ocwzmiOUoIxgjyFo9G4
|
||||
aJvRmHLij5892H6qveik+A/Xr+8leGQHiQET2wW/F9MFP5ypIT7aeE6remeZH7fG
|
||||
f4/Zfei/TE4xK2ElNR/91byzeKIVY4vjtTndAiBuqpfYuICb40MC02LNW5Oe6VN2
|
||||
3mQ6EgECgYEA7O4ndBnbs/00gyTGyNg6I+3wRTibhNH4R8RZFJiLfKRKOlUiLhUo
|
||||
+bQeO4bCQ6YY++TYDvMEXTlA3jow9R9Mj2AWc6bNmQmJd/065QyFHftywT66I+V4
|
||||
rz1ohSJyHXcv4DxqNk3o3Vb4N8GFjZKcodSgTv2Lk+9ipDYFcQiZop0CgYEA0BrF
|
||||
SIyLTnjoVht/7RbIGEqhMQUiz5mx7qQ1TPB+YTG77G2xXJNg5d6S7WT4LN+cqbxN
|
||||
YdndIbW4NdV7bH7FlG9q7jfkuZ+AY2BPU047tcDeyO0HYYEhVY+EyZqHci/26mvt
|
||||
JrawdqS5HQS1y/rKfytm7YBGTvqoNZHvOHc6aokCgYEAxcjlbJkte+pyzMuFmiJP
|
||||
HrFBczeXM+BoJ9j0GCpjvvAS+vEYsGl/pDvFRSHwx7I/hv/5kTkzOnNSAHGJbwbq
|
||||
zYGEHJVxakC43k6pvI2gDnBa0pD/qHmmLnvP5dvkcU6Oy90DOUP+kc9JNJo7V/y8
|
||||
/qdWD7q+qwcaTETAdCSexE0CgYA/DN1Y7bwHOnqqHArWOmDFe1b7EyNI4rgWJYpA
|
||||
lVy09eyJ5XInKj/hZV3+rujCL723b2XCj89/tx7osJWEeaRDJL6xDh4uXzT25uch
|
||||
xkIw/w6Asc/aqtT+p00EB92hqwaUX76qTA+K4r1zHUo3UvSnMu8sZgDnTOpJ0L05
|
||||
zmXUgQKBgDT+IFrAzOty4B0mJncTCC/TulpW704bEZwNJfQSdtiBQr/vqoXygBQc
|
||||
bHfpncpSfhzHB5lhRUv02TqXgl53D70nM7JD5nx98WYTTBxsbvxPlt4gBRZkfgq5
|
||||
tHKclAArc1SbfW5Z8oYyl7h33LQJK116QSyiIIGieH5VXNPwnqUs
|
||||
-----END RSA PRIVATE KEY-----
|
@ -58,7 +58,7 @@ sub skip_combinations {
|
||||
return 0 unless socket my $sock, PF_INET6, SOCK_STREAM, getprotobyname('tcp');
|
||||
# eval{}, if there's no Socket::sockaddr_in6 at all, old Perl installation
|
||||
eval { connect $sock, sockaddr_in6(7, Socket::IN6ADDR_LOOPBACK) };
|
||||
return $! != 101;
|
||||
return $@ eq "";
|
||||
}
|
||||
$skip{'include/check_ipv6.inc'} = 'No IPv6' unless ipv6_ok();
|
||||
|
||||
|
@ -2164,6 +2164,12 @@ DROP TABLE federated.t1;
|
||||
End of 5.1 tests
|
||||
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_MASTER_CONCURRENT_INSERT;
|
||||
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
|
||||
#
|
||||
# MDEV-9346 - The federatedx and spider engine make mysqld crash when
|
||||
# they are configured withtout username
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=FEDERATED CONNECTION='mysql://@127.0.0.1:SLAVE_PORT/federated/t1';
|
||||
ERROR HY000: Can't create federated table. Foreign data src error: database: 'federated' username: '' hostname: '127.0.0.1'
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE IF EXISTS federated;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
|
@ -2001,4 +2001,13 @@ SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
|
||||
|
||||
connection default;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-9346 - The federatedx and spider engine make mysqld crash when
|
||||
--echo # they are configured withtout username
|
||||
--echo #
|
||||
connection master;
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
--error ER_CANT_CREATE_FEDERATED_TABLE
|
||||
eval CREATE TABLE t1 (a INT) ENGINE=FEDERATED CONNECTION='mysql://@127.0.0.1:$SLAVE_MYPORT/federated/t1';
|
||||
|
||||
source include/federated_cleanup.inc;
|
||||
|
@ -1,30 +0,0 @@
|
||||
CREATE TABLE `test_wo_keys` (
|
||||
`f01` int AUTO_INCREMENT,
|
||||
`f02` bigint, `f03` bigint, `f04` enum('a','b'),
|
||||
`f05` date, `f06` int, `f07` int, `f08` double, `f09` int,
|
||||
`f10` bigint, `f11` double, `f12` enum('a','b','c','d','e'),
|
||||
`f13` int, `f14` int, `f15` varchar(255), `f16` int, `f17` int, `f18` int,
|
||||
`f19` double, `f20` double, `f21` double, `f22` double, `f23` double, `f24` tinyint,
|
||||
`f25` double, `f26` double, `f27` double, `f28` double, `f29` int unsigned,
|
||||
`f30` int unsigned, `f31` bigint, `f32` int unsigned, `f33` bigint,
|
||||
`f34` int unsigned, `f35` int unsigned,
|
||||
PRIMARY KEY `f01` (`f01`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
show status like '%merge_buffers%';
|
||||
Variable_name Value
|
||||
Innodb_os_merge_buffers_written 0
|
||||
Innodb_os_merge_buffers_read 0
|
||||
Innodb_os_merge_buffers_merged 0
|
||||
ALTER TABLE test_wo_keys
|
||||
ADD KEY `f06` (`f06`), ADD KEY `f05` (`f05`), ADD KEY `f04` (`f04`), ADD KEY `f23` (`f23`),
|
||||
ADD KEY `f10` (`f10`), ADD KEY `f11` (`f11`), ADD KEY `f09` (`f09`), ADD KEY `f22` (`f22`),
|
||||
ADD KEY `f21` (`f21`), ADD KEY `f07` (`f07`), ADD KEY `f08` (`f08`), ADD KEY `f18` (`f18`),
|
||||
ADD KEY `f19` (`f19`), ADD KEY `f20` (`f20`), ADD KEY `f29` (`f29`,`f31`,`f33`),
|
||||
ADD KEY `f35` (`f35`), ADD KEY `f25` (`f25`), ADD KEY `f26` (`f26`),
|
||||
ADD KEY `f27` (`f27`), ADD KEY `f28` (`f28`);
|
||||
show status like '%merge_buffers%';
|
||||
Variable_name Value
|
||||
Innodb_os_merge_buffers_written 0
|
||||
Innodb_os_merge_buffers_read 0
|
||||
Innodb_os_merge_buffers_merged 0
|
||||
DROP TABLE test_wo_keys;
|
@ -43,3 +43,95 @@ KEY `mdl_courmodu_gro_ix` (`groupingid`)
|
||||
# Inserting 2701 rows into the table...
|
||||
ALTER TABLE moodle19.mdl_course_modules ADD stefantest LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci AFTER showdescription;
|
||||
drop database moodle19;
|
||||
use test;
|
||||
CREATE TABLE `w_findispmon05u` (
|
||||
`atpkey` INT(11) NOT NULL DEFAULT '0',
|
||||
`atzo05` INT(11) NULL DEFAULT NULL,
|
||||
`pos` BIGINT(21) NULL DEFAULT NULL,
|
||||
`f5BnvB` INT(9) NULL DEFAULT NULL,
|
||||
`f5atbvb` INT(11) NULL DEFAULT NULL,
|
||||
`f5atbwmg` INT(11) NULL DEFAULT NULL,
|
||||
`f5pBneu` BIGINT(12) NULL DEFAULT NULL,
|
||||
`atbwdt` INT(11) NULL DEFAULT NULL,
|
||||
`atbwzt` INT(11) NULL DEFAULT NULL,
|
||||
`atbart` VARCHAR(10) NULL DEFAULT NULL
|
||||
)
|
||||
COLLATE='utf8_general_ci'
|
||||
ENGINE=InnoDB;
|
||||
ALTER TABLE `w_findispmon05u`
|
||||
CHANGE COLUMN `atpkey` `f5atpkey` INT(11) NOT NULL DEFAULT '0' FIRST,
|
||||
CHANGE COLUMN `atzo05` `f5atzo05` INT(11) NULL DEFAULT NULL AFTER `f5atpkey`,
|
||||
CHANGE COLUMN `atbwdt` `f5atbwdt` INT(11) NULL DEFAULT NULL AFTER `f5pBneu`,
|
||||
CHANGE COLUMN `atbwzt` `f5atbwzt` INT(11) NULL DEFAULT NULL AFTER `f5atbwdt`,
|
||||
CHANGE COLUMN `atbart` `f5atbart` VARCHAR(10) NULL DEFAULT NULL AFTER `f5atbwzt`,
|
||||
ADD INDEX `atpkey` (`f5atpkey`),
|
||||
ADD INDEX `inatkey` (`f5atzo05`, `pos`),
|
||||
ADD INDEX `pos` (`pos`, `f5atzo05`);
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
SHOW CREATE TABLE `w_findispmon05u`;
|
||||
Table Create Table
|
||||
w_findispmon05u CREATE TABLE `w_findispmon05u` (
|
||||
`f5atpkey` int(11) NOT NULL DEFAULT '0',
|
||||
`f5atzo05` int(11) DEFAULT NULL,
|
||||
`pos` bigint(21) DEFAULT NULL,
|
||||
`f5BnvB` int(9) DEFAULT NULL,
|
||||
`f5atbvb` int(11) DEFAULT NULL,
|
||||
`f5atbwmg` int(11) DEFAULT NULL,
|
||||
`f5pBneu` bigint(12) DEFAULT NULL,
|
||||
`f5atbwdt` int(11) DEFAULT NULL,
|
||||
`f5atbwzt` int(11) DEFAULT NULL,
|
||||
`f5atbart` varchar(10) DEFAULT NULL,
|
||||
KEY `atpkey` (`f5atpkey`),
|
||||
KEY `inatkey` (`f5atzo05`,`pos`),
|
||||
KEY `pos` (`pos`,`f5atzo05`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8
|
||||
DROP TABLE `w_findispmon05u`;
|
||||
CREATE TABLE t (
|
||||
a INT NOT NULL,
|
||||
b INT NOT NULL,
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=INNODB;
|
||||
ALTER TABLE t
|
||||
CHANGE COLUMN b c INT NOT NULL,
|
||||
ADD UNIQUE INDEX (c);
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
SHOW CREATE TABLE t;
|
||||
Table Create Table
|
||||
t CREATE TABLE `t` (
|
||||
`a` int(11) NOT NULL,
|
||||
`c` int(11) NOT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
UNIQUE KEY `c` (`c`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
ALTER TABLE t
|
||||
CHANGE COLUMN c b INT NOT NULL,
|
||||
ADD UNIQUE INDEX (c);
|
||||
ERROR 42000: Key column 'c' doesn't exist in table
|
||||
DROP TABLE t;
|
||||
CREATE TABLE parent (
|
||||
a INT NOT NULL,
|
||||
b INT NOT NULL,
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=INNODB;
|
||||
CREATE TABLE child (
|
||||
a INT NOT NULL,
|
||||
b INT NOT NULL,
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=INNODB;
|
||||
ALTER TABLE child
|
||||
CHANGE COLUMN b c INT NOT NULL,
|
||||
ADD FOREIGN KEY (c) REFERENCES parent(a);
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
SHOW CREATE TABLE child;
|
||||
Table Create Table
|
||||
child CREATE TABLE `child` (
|
||||
`a` int(11) NOT NULL,
|
||||
`c` int(11) NOT NULL,
|
||||
PRIMARY KEY (`a`),
|
||||
KEY `c` (`c`),
|
||||
CONSTRAINT `child_ibfk_1` FOREIGN KEY (`c`) REFERENCES `parent` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
DROP TABLE child, parent;
|
||||
|
@ -130,9 +130,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs disabled
|
||||
os_log_pending_writes disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
trx_rw_commits disabled
|
||||
trx_ro_commits disabled
|
||||
trx_nl_ro_commits disabled
|
||||
@ -281,9 +278,6 @@ lock_row_lock_time disabled
|
||||
lock_row_lock_time_max disabled
|
||||
lock_row_lock_waits disabled
|
||||
lock_row_lock_time_avg disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
innodb_rwlock_s_spin_waits disabled
|
||||
innodb_rwlock_x_spin_waits disabled
|
||||
innodb_rwlock_s_spin_rounds disabled
|
||||
@ -322,9 +316,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs enabled
|
||||
os_log_pending_writes enabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
set global innodb_monitor_enable="";
|
||||
ERROR 42000: Variable 'innodb_monitor_enable' can't be set to the value of ''
|
||||
set global innodb_monitor_enable="_";
|
||||
|
@ -165,9 +165,6 @@ os_log_bytes_written os 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL di
|
||||
os_log_fsyncs os 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled status_counter Number of fsync log writes (innodb_os_log_fsyncs)
|
||||
os_log_pending_fsyncs os 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled status_counter Number of pending fsync write (innodb_os_log_pending_fsyncs)
|
||||
os_log_pending_writes os 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled status_counter Number of pending log file writes (innodb_os_log_pending_writes)
|
||||
os_merge_blocks_written os 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled status_counter Number of merge blocks written (innodb_os_merge_blocks_written)
|
||||
os_merge_blocks_read os 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled status_counter Number of merge blocks read (innodb_os_merge_blocks_read)
|
||||
os_merge_blocks_merged os 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled status_counter Number of merge blocks merged (innodb_os_merge_blocks_merged)
|
||||
trx_rw_commits transaction 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled counter Number of read-write transactions committed
|
||||
trx_ro_commits transaction 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled counter Number of read-only transactions committed
|
||||
trx_nl_ro_commits transaction 0 NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL disabled counter Number of non-locking auto-commit read-only transactions committed
|
||||
|
51
mysql-test/suite/innodb/r/tmpdir.result
Normal file
51
mysql-test/suite/innodb/r/tmpdir.result
Normal file
@ -0,0 +1,51 @@
|
||||
#
|
||||
# Bug #19183565 CREATE DYNAMIC INNODB_TMPDIR VARIABLE TO CONTROL
|
||||
# WHERE INNODB WRITES TEMP FILES
|
||||
#
|
||||
# If innodb_tmpdir is NULL or "", temporary file will be created in
|
||||
# server configuration variable location(--tmpdir)
|
||||
create table t1(a int primary key)engine=innodb;
|
||||
show session variables like 'innodb_tmpdir';
|
||||
Variable_name Value
|
||||
innodb_tmpdir
|
||||
alter table t1 add column b int not null;
|
||||
set global innodb_tmpdir=NULL;
|
||||
# Connection con1
|
||||
show session variables like 'innodb_tmpdir';
|
||||
Variable_name Value
|
||||
innodb_tmpdir
|
||||
alter table t1 add key(b);
|
||||
drop table t1;
|
||||
# innodb_tmpdir with invalid path.
|
||||
create table t1(a int primary key)engine=innodb;
|
||||
set global innodb_tmpdir='wrong_value';
|
||||
ERROR 42000: Variable 'innodb_tmpdir' can't be set to the value of 'wrong_value'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Warning 1210 InnoDB: Path doesn't exist.
|
||||
Error 1231 Variable 'innodb_tmpdir' can't be set to the value of 'wrong_value'
|
||||
drop table t1;
|
||||
# innodb_tmpdir with mysql data directory path.
|
||||
create table t1(a text, b text, fulltext(a,b))engine=innodb;
|
||||
insert into t1 values('test1', 'test2');
|
||||
insert into t1 values('text1', 'text2');
|
||||
set global innodb_tmpdir = @@global.datadir;
|
||||
ERROR 42000: Variable 'innodb_tmpdir' can't be set to the value of 'MYSQL_DATADIR'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Warning 1210 InnoDB: Path Location should not be same as mysql data directory location.
|
||||
Error 1231 DATADIR/data/'
|
||||
drop table t1;
|
||||
# innodb_tmpdir with valid location.
|
||||
create table t1(a text, b text, fulltext(a,b))engine=innodb;
|
||||
insert into t1 values('test1', 'test2');
|
||||
insert into t1 values('text1', 'text2');
|
||||
set @tmpdir = @@global.tmpdir;
|
||||
set global innodb_tmpdir = @tmpdir;
|
||||
show session variables like 'innodb_tmpdir';
|
||||
Variable_name Value
|
||||
innodb_tmpdir
|
||||
# Connection con3
|
||||
alter table t1 add fulltext(b);
|
||||
set global innodb_tmpdir=NULL;
|
||||
drop table t1;
|
@ -1,32 +0,0 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
#
|
||||
# MDEV-8696: Adding indexes on empty table is slow with large innodb_sort_buffer_size.
|
||||
#
|
||||
|
||||
CREATE TABLE `test_wo_keys` (
|
||||
`f01` int AUTO_INCREMENT,
|
||||
`f02` bigint, `f03` bigint, `f04` enum('a','b'),
|
||||
`f05` date, `f06` int, `f07` int, `f08` double, `f09` int,
|
||||
`f10` bigint, `f11` double, `f12` enum('a','b','c','d','e'),
|
||||
`f13` int, `f14` int, `f15` varchar(255), `f16` int, `f17` int, `f18` int,
|
||||
`f19` double, `f20` double, `f21` double, `f22` double, `f23` double, `f24` tinyint,
|
||||
`f25` double, `f26` double, `f27` double, `f28` double, `f29` int unsigned,
|
||||
`f30` int unsigned, `f31` bigint, `f32` int unsigned, `f33` bigint,
|
||||
`f34` int unsigned, `f35` int unsigned,
|
||||
PRIMARY KEY `f01` (`f01`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
show status like '%merge_buffers%';
|
||||
|
||||
ALTER TABLE test_wo_keys
|
||||
ADD KEY `f06` (`f06`), ADD KEY `f05` (`f05`), ADD KEY `f04` (`f04`), ADD KEY `f23` (`f23`),
|
||||
ADD KEY `f10` (`f10`), ADD KEY `f11` (`f11`), ADD KEY `f09` (`f09`), ADD KEY `f22` (`f22`),
|
||||
ADD KEY `f21` (`f21`), ADD KEY `f07` (`f07`), ADD KEY `f08` (`f08`), ADD KEY `f18` (`f18`),
|
||||
ADD KEY `f19` (`f19`), ADD KEY `f20` (`f20`), ADD KEY `f29` (`f29`,`f31`,`f33`),
|
||||
ADD KEY `f35` (`f35`), ADD KEY `f25` (`f25`), ADD KEY `f26` (`f26`),
|
||||
ADD KEY `f27` (`f27`), ADD KEY `f28` (`f28`);
|
||||
|
||||
show status like '%merge_buffers%';
|
||||
|
||||
DROP TABLE test_wo_keys;
|
@ -57,3 +57,84 @@ while ($num)
|
||||
ALTER TABLE moodle19.mdl_course_modules ADD stefantest LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci AFTER showdescription;
|
||||
|
||||
drop database moodle19;
|
||||
|
||||
#
|
||||
# Mdev-9469: Incorrect key file on alter table
|
||||
#
|
||||
use test;
|
||||
|
||||
CREATE TABLE `w_findispmon05u` (
|
||||
`atpkey` INT(11) NOT NULL DEFAULT '0',
|
||||
`atzo05` INT(11) NULL DEFAULT NULL,
|
||||
`pos` BIGINT(21) NULL DEFAULT NULL,
|
||||
`f5BnvB` INT(9) NULL DEFAULT NULL,
|
||||
`f5atbvb` INT(11) NULL DEFAULT NULL,
|
||||
`f5atbwmg` INT(11) NULL DEFAULT NULL,
|
||||
`f5pBneu` BIGINT(12) NULL DEFAULT NULL,
|
||||
`atbwdt` INT(11) NULL DEFAULT NULL,
|
||||
`atbwzt` INT(11) NULL DEFAULT NULL,
|
||||
`atbart` VARCHAR(10) NULL DEFAULT NULL
|
||||
)
|
||||
COLLATE='utf8_general_ci'
|
||||
ENGINE=InnoDB;
|
||||
ALTER TABLE `w_findispmon05u`
|
||||
CHANGE COLUMN `atpkey` `f5atpkey` INT(11) NOT NULL DEFAULT '0' FIRST,
|
||||
CHANGE COLUMN `atzo05` `f5atzo05` INT(11) NULL DEFAULT NULL AFTER `f5atpkey`,
|
||||
CHANGE COLUMN `atbwdt` `f5atbwdt` INT(11) NULL DEFAULT NULL AFTER `f5pBneu`,
|
||||
CHANGE COLUMN `atbwzt` `f5atbwzt` INT(11) NULL DEFAULT NULL AFTER `f5atbwdt`,
|
||||
CHANGE COLUMN `atbart` `f5atbart` VARCHAR(10) NULL DEFAULT NULL AFTER `f5atbwzt`,
|
||||
ADD INDEX `atpkey` (`f5atpkey`),
|
||||
ADD INDEX `inatkey` (`f5atzo05`, `pos`),
|
||||
ADD INDEX `pos` (`pos`, `f5atzo05`);
|
||||
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE `w_findispmon05u`;
|
||||
|
||||
DROP TABLE `w_findispmon05u`;
|
||||
|
||||
CREATE TABLE t (
|
||||
a INT NOT NULL,
|
||||
b INT NOT NULL,
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=INNODB;
|
||||
|
||||
ALTER TABLE t
|
||||
CHANGE COLUMN b c INT NOT NULL,
|
||||
ADD UNIQUE INDEX (c);
|
||||
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE t;
|
||||
|
||||
# this should fail
|
||||
--error 1072
|
||||
ALTER TABLE t
|
||||
CHANGE COLUMN c b INT NOT NULL,
|
||||
ADD UNIQUE INDEX (c);
|
||||
|
||||
DROP TABLE t;
|
||||
|
||||
#
|
||||
# Check Foreign Keys
|
||||
#
|
||||
CREATE TABLE parent (
|
||||
a INT NOT NULL,
|
||||
b INT NOT NULL,
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=INNODB;
|
||||
|
||||
CREATE TABLE child (
|
||||
a INT NOT NULL,
|
||||
b INT NOT NULL,
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=INNODB;
|
||||
|
||||
ALTER TABLE child
|
||||
CHANGE COLUMN b c INT NOT NULL,
|
||||
ADD FOREIGN KEY (c) REFERENCES parent(a);
|
||||
|
||||
SHOW WARNINGS;
|
||||
|
||||
SHOW CREATE TABLE child;
|
||||
|
||||
DROP TABLE child, parent;
|
||||
|
||||
|
68
mysql-test/suite/innodb/t/tmpdir.test
Normal file
68
mysql-test/suite/innodb/t/tmpdir.test
Normal file
@ -0,0 +1,68 @@
|
||||
--source include/have_innodb.inc
|
||||
--source include/count_sessions.inc
|
||||
|
||||
if (`select plugin_auth_version <= "5.6.28-MariaDB-76.1" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB as of 5.6.28-MariaDB-76.1 or earlier
|
||||
}
|
||||
|
||||
--echo #
|
||||
--echo # Bug #19183565 CREATE DYNAMIC INNODB_TMPDIR VARIABLE TO CONTROL
|
||||
--echo # WHERE INNODB WRITES TEMP FILES
|
||||
--echo #
|
||||
|
||||
--echo # If innodb_tmpdir is NULL or "", temporary file will be created in
|
||||
--echo # server configuration variable location(--tmpdir)
|
||||
|
||||
create table t1(a int primary key)engine=innodb;
|
||||
show session variables like 'innodb_tmpdir';
|
||||
alter table t1 add column b int not null;
|
||||
set global innodb_tmpdir=NULL;
|
||||
--echo # Connection con1
|
||||
connect (con1,localhost,root);
|
||||
show session variables like 'innodb_tmpdir';
|
||||
alter table t1 add key(b);
|
||||
connection default;
|
||||
disconnect con1;
|
||||
drop table t1;
|
||||
|
||||
--echo # innodb_tmpdir with invalid path.
|
||||
|
||||
create table t1(a int primary key)engine=innodb;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set global innodb_tmpdir='wrong_value';
|
||||
show warnings;
|
||||
drop table t1;
|
||||
|
||||
|
||||
--echo # innodb_tmpdir with mysql data directory path.
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
create table t1(a text, b text, fulltext(a,b))engine=innodb;
|
||||
insert into t1 values('test1', 'test2');
|
||||
insert into t1 values('text1', 'text2');
|
||||
--replace_result $MYSQLD_DATADIR MYSQL_DATADIR
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set global innodb_tmpdir = @@global.datadir;
|
||||
--replace_regex /.*mysqld.1/DATADIR/
|
||||
show warnings;
|
||||
drop table t1;
|
||||
|
||||
--echo # innodb_tmpdir with valid location.
|
||||
let $MYSQL_TMP_DIR= `select @@tmpdir`;
|
||||
create table t1(a text, b text, fulltext(a,b))engine=innodb;
|
||||
insert into t1 values('test1', 'test2');
|
||||
insert into t1 values('text1', 'text2');
|
||||
set @tmpdir = @@global.tmpdir;
|
||||
set global innodb_tmpdir = @tmpdir;
|
||||
show session variables like 'innodb_tmpdir';
|
||||
--echo # Connection con3
|
||||
connect (con3,localhost,root);
|
||||
# Following alter using innodb_tmpdir as a path to create temporary files
|
||||
alter table t1 add fulltext(b);
|
||||
disconnect con3;
|
||||
connection default;
|
||||
set global innodb_tmpdir=NULL;
|
||||
drop table t1;
|
||||
|
||||
--source include/wait_until_count_sessions.inc
|
@ -1 +1 @@
|
||||
--loose-innodb-file-format-check --loose-innodb-file-per-table=1 --skip-stack-trace --skip-core-file
|
||||
--loose-innodb-file-format-check --loose-innodb-file-per-table=1 --skip-stack-trace --skip-core-file --loose-innodb-buffer-pool-size=32M
|
||||
|
@ -52,7 +52,7 @@ insert into marker set a = 1;
|
||||
optimize table test.v1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 optimize Error 'test.v1' is not BASE TABLE
|
||||
test.v1 optimize error Corrupt
|
||||
test.v1 optimize status Operation failed
|
||||
insert into marker set a = 1;
|
||||
select * from test.v1;
|
||||
a b
|
||||
|
@ -88,3 +88,10 @@ UNLOCK TABLES;
|
||||
--echo
|
||||
UPDATE performance_schema.setup_instruments SET timed='NO'
|
||||
ORDER BY RAND();
|
||||
|
||||
# MTR is configured to start with everything set to ON,
|
||||
# so we need to restore it after the previous update
|
||||
--disable_query_log
|
||||
update performance_schema.setup_instruments set timed='YES';
|
||||
--enable_query_log
|
||||
|
||||
|
@ -8,6 +8,7 @@ select * from information_schema.feedback where variable_name like 'feed%'
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
FEEDBACK used 1
|
||||
FEEDBACK version 1.1
|
||||
FEEDBACK_HTTP_PROXY
|
||||
FEEDBACK_SEND_RETRY_WAIT 60
|
||||
FEEDBACK_SEND_TIMEOUT 60
|
||||
FEEDBACK_URL http://mariadb.org/feedback_plugin/post
|
||||
|
@ -0,0 +1,29 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
Test case 1:- table name with one character latin name.
|
||||
SET @s:=CONCAT("CREATE TABLE `",REPEAT(CHAR(131),1),"` (a INT)");
|
||||
PREPARE STMT FROM @s;
|
||||
EXECUTE stmt;
|
||||
SET @s:=CONCAT("INSERT INTO `",REPEAT(CHAR(131),1),"` VALUES (1)");
|
||||
PREPARE STMT FROM @s;
|
||||
EXECUTE stmt;
|
||||
SET @s:=CONCAT("DROP TABLE `",REPEAT(CHAR(131),1), "`");
|
||||
PREPARE STMT FROM @s;
|
||||
EXECUTE stmt;
|
||||
Test case 2:- table name and database names with one character latin name.
|
||||
SET @s:=CONCAT("CREATE DATABASE `",REPEAT(CHAR(131),1),"`");
|
||||
PREPARE STMT FROM @s;
|
||||
EXECUTE stmt;
|
||||
SET @s:=CONCAT("CREATE TABLE `",REPEAT(CHAR(131),1),"`.`",REPEAT(CHAR(131),1),"` (a INT)");
|
||||
PREPARE STMT FROM @s;
|
||||
EXECUTE stmt;
|
||||
SET @s:=CONCAT("INSERT INTO `",REPEAT(CHAR(131),1),"`.`",REPEAT(CHAR(131),1),"` VALUES (1)");
|
||||
PREPARE STMT FROM @s;
|
||||
EXECUTE stmt;
|
||||
SET @s:=CONCAT("DROP TABLE `",REPEAT(CHAR(131),1),"`.`",REPEAT(CHAR(131),1), "`");
|
||||
PREPARE STMT FROM @s;
|
||||
EXECUTE stmt;
|
||||
SET @s:=CONCAT("DROP DATABASE `",REPEAT(CHAR(131),1),"`");
|
||||
PREPARE STMT FROM @s;
|
||||
EXECUTE stmt;
|
||||
include/rpl_end.inc
|
53
mysql-test/suite/rpl/r/rpl_unsafe_statements.result
Normal file
53
mysql-test/suite/rpl/r/rpl_unsafe_statements.result
Normal file
@ -0,0 +1,53 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
CREATE TABLE t1(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TABLE t2(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TRIGGER trig1 AFTER INSERT ON t1
|
||||
FOR EACH ROW
|
||||
INSERT INTO t2(i) VALUES(new.i);
|
||||
START TRANSACTION;
|
||||
INSERT INTO t2(i) VALUES (1);
|
||||
ROLLBACK;
|
||||
INSERT INTO t1(i) VALUES(2);
|
||||
START TRANSACTION;
|
||||
LOCK TABLES t1 WRITE, t2 WRITE;
|
||||
INSERT INTO t1(i) VALUES(3);
|
||||
UNLOCK TABLES;
|
||||
COMMIT;
|
||||
include/diff_tables.inc [master:t1, slave:t1]
|
||||
include/diff_tables.inc [master:t2, slave:t2]
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1(i INT) ENGINE=INNODB;
|
||||
CREATE TABLE t2(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
INSERT INTO t1 values (1), (2), (3);
|
||||
START TRANSACTION;
|
||||
INSERT INTO t2(i) VALUES (1);
|
||||
ROLLBACK;
|
||||
INSERT INTO t2(i) SELECT i FROM t1;
|
||||
START TRANSACTION;
|
||||
LOCK TABLES t2 WRITE, t1 READ;
|
||||
INSERT INTO t2(i) SELECT i FROM t1;
|
||||
UNLOCK TABLES;
|
||||
COMMIT;
|
||||
include/diff_tables.inc [master:t1, slave:t1]
|
||||
include/diff_tables.inc [master:t2, slave:t2]
|
||||
DROP TABLE t1,t2;
|
||||
CREATE TABLE t1(i int, id INT AUTO_INCREMENT, PRIMARY KEY (i, id)) ENGINE=MYISAM;
|
||||
INSERT INTO t1 (i) values (1);
|
||||
START TRANSACTION;
|
||||
LOCK TABLES t1 WRITE;
|
||||
INSERT INTO t1 (i) values (2);
|
||||
UNLOCK TABLES;
|
||||
COMMIT;
|
||||
include/diff_tables.inc [master:t1, slave:t1]
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(i INT, j INT, UNIQUE KEY(i), UNIQUE KEY(j)) ENGINE=INNODB;
|
||||
INSERT INTO t1 (i,j) VALUES (1,2) ON DUPLICATE KEY UPDATE j=j+1;
|
||||
START TRANSACTION;
|
||||
LOCK TABLES t1 WRITE;
|
||||
INSERT INTO t1 (i,j) VALUES (1,2) ON DUPLICATE KEY UPDATE j=j+1;
|
||||
UNLOCK TABLES;
|
||||
COMMIT;
|
||||
include/diff_tables.inc [master:t1, slave:t1]
|
||||
DROP TABLE t1;
|
||||
include/rpl_end.inc
|
@ -0,0 +1,87 @@
|
||||
###############################################################################
|
||||
# Bug#21205695 DROP TABLE MAY CAUSE SLAVES TO BREAK
|
||||
#
|
||||
# Problem:
|
||||
# ========
|
||||
# 1) Drop table queries are re-generated by server
|
||||
# before writing the events(queries) into binlog
|
||||
# for various reasons. If table name/db name contains
|
||||
# a non regular characters (like latin characters),
|
||||
# the generated query is wrong. Hence it breaks the
|
||||
# replication.
|
||||
# 2) In the edge case, when table name contains
|
||||
# 64 latin characters (latin takes 2 bytes), server is
|
||||
# throwing an assert (M_TBLLEN < 128)
|
||||
#
|
||||
# 3) In the edge case, when db name contains 64 latin
|
||||
# characters, binlog contents are interpreted wrongly
|
||||
# which is leading to replication issues.
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
--source include/not_windows.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
--let iter=1
|
||||
# Change iteration to 4 after fixing Bug #22280214
|
||||
while ($iter <= 2)
|
||||
{
|
||||
--connection master
|
||||
if ($iter == 1)
|
||||
{
|
||||
--echo Test case 1:- table name with one character latin name.
|
||||
--let $tblname= REPEAT(CHAR(131),1)
|
||||
}
|
||||
if ($iter == 2)
|
||||
{
|
||||
--echo Test case 2:- table name and database names with one character latin name.
|
||||
--let $tblname= REPEAT(CHAR(131),1),"`.`",REPEAT(CHAR(131),1)
|
||||
--eval SET @s:=CONCAT("CREATE DATABASE `",REPEAT(CHAR(131),1),"`")
|
||||
PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
}
|
||||
# After fixing Bug #22280214 DATADIR LOCATION IS LIMITING
|
||||
# IDENTIFIER MAX LENGTH, the following two tests (iter 3 and 4) can be
|
||||
# uncommented.
|
||||
#if ($iter == 3)
|
||||
#{
|
||||
# --echo Test case 3:- table name and database names with 64 latin characters name.
|
||||
# --let $tblname= REPEAT(CHAR(131),64),"`.`", REPEAT(CHAR(131),64)
|
||||
# --eval SET @s:=CONCAT("CREATE DATABASE `",REPEAT(CHAR(131),64),"`")
|
||||
# PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
#}
|
||||
#if ($iter == 4)
|
||||
#{
|
||||
# --echo Test case 4:- table name and database names with 64 Euro(€) characters.
|
||||
# --let $tblname= REPEAT(CHAR(226,130,172),64),"`.`", REPEAT(CHAR(226,130,172),64)
|
||||
# --eval SET @s:=CONCAT("CREATE DATABASE `",REPEAT(CHAR(226,130,172),64),"`")
|
||||
# PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
#}
|
||||
--eval SET @s:=CONCAT("CREATE TABLE `",$tblname,"` (a INT)")
|
||||
PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
--eval SET @s:=CONCAT("INSERT INTO `",$tblname,"` VALUES (1)")
|
||||
PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
--eval SET @s:=CONCAT("DROP TABLE `",$tblname, "`")
|
||||
PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
if ($iter == 2)
|
||||
{
|
||||
--eval SET @s:=CONCAT("DROP DATABASE `",REPEAT(CHAR(131),1),"`")
|
||||
PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
}
|
||||
# After fixing Bug #22280214 DATADIR LOCATION IS LIMITING
|
||||
# IDENTIFIER MAX LENGTH, the following two tests (iter 3 and 4) can be
|
||||
# uncommented.
|
||||
#if ($iter == 3)
|
||||
#{
|
||||
# --eval SET @s:=CONCAT("DROP DATABASE `",REPEAT(CHAR(131),64),"`")
|
||||
# PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
#}
|
||||
#if ($iter == 4)
|
||||
#{
|
||||
# --eval SET @s:=CONCAT("DROP DATABASE `",REPEAT(CHAR(226,130,172),64),"`")
|
||||
# PREPARE STMT FROM @s; EXECUTE stmt;
|
||||
#}
|
||||
--sync_slave_with_master
|
||||
--inc $iter
|
||||
}
|
||||
|
||||
--source include/rpl_end.inc
|
176
mysql-test/suite/rpl/t/rpl_unsafe_statements.test
Normal file
176
mysql-test/suite/rpl/t/rpl_unsafe_statements.test
Normal file
@ -0,0 +1,176 @@
|
||||
################################################################################
|
||||
# Bug#17047208 REPLICATION DIFFERENCE FOR MULTIPLE TRIGGERS
|
||||
# Problem: If DML invokes a trigger or a stored function that inserts into an
|
||||
# AUTO_INCREMENT column, that DML has to be marked as 'unsafe' statement. If the
|
||||
# tables are locked in the transaction prior to DML statement (using LOCK
|
||||
# TABLES), then the DML statement is not marked as 'unsafe' statement.
|
||||
|
||||
# Steps to reproduce the reported test case (BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS)
|
||||
# Case-1:
|
||||
# > Create a trigger on a table and do a insert in the trigger that updates
|
||||
# auto increment column
|
||||
# > A DML that executes the trigger in step.1 and check that DML is marked
|
||||
# as unsafe and DML is written into binlog using row format (in MBR)
|
||||
# > Execute the step 2 by locking the required tables prior to DML and check
|
||||
# that DML is marked as unsafe and DML is written into binlog using row
|
||||
# format (in MBR)
|
||||
#
|
||||
# This test script also adds test cases to cover few other unsafe statements.
|
||||
# Case-2: BINLOG_STMT_UNSAFE_WRITE_AUTOINC_SELECT
|
||||
# Case-3: BINLOG_STMT_UNSAFE_AUTOINC_NOT_FIRST
|
||||
# Case-4: BINLOG_STMT_UNSAFE_INSERT_TWO_KEYS
|
||||
################################################################################
|
||||
|
||||
--source include/have_innodb.inc
|
||||
--source include/have_binlog_format_mixed.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
# Case-1: BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS
|
||||
# Statement is unsafe because it invokes a trigger or a
|
||||
# stored function that inserts into an AUTO_INCREMENT column.
|
||||
|
||||
# Step-1.1: Create two tables, one with AUTO_INCREMENT column.
|
||||
CREATE TABLE t1(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
CREATE TABLE t2(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
|
||||
# Step-1.2: Create a trigger that inserts into an AUTO_INCREMENT column.
|
||||
CREATE TRIGGER trig1 AFTER INSERT ON t1
|
||||
FOR EACH ROW
|
||||
INSERT INTO t2(i) VALUES(new.i);
|
||||
|
||||
# Step-1.3: Create some gap in auto increment value on master's t2 table
|
||||
# but not on slave (by doing rollback). Just in case if the unsafe statements
|
||||
# are written in statement format, diff tables will fail.
|
||||
START TRANSACTION;
|
||||
INSERT INTO t2(i) VALUES (1);
|
||||
ROLLBACK;
|
||||
|
||||
# Step-1.4: Insert a tuple into table t1 that triggers trig1 which inserts
|
||||
# into an AUTO_INCREMENT column.
|
||||
INSERT INTO t1(i) VALUES(2);
|
||||
|
||||
# Step-1.5: Repeat step 1.4 but using 'LOCK TABLES' logic.
|
||||
START TRANSACTION;
|
||||
LOCK TABLES t1 WRITE, t2 WRITE;
|
||||
INSERT INTO t1(i) VALUES(3);
|
||||
UNLOCK TABLES;
|
||||
COMMIT;
|
||||
|
||||
# Step-1.6: Sync slave with master
|
||||
--sync_slave_with_master
|
||||
|
||||
# Step-1.7: Diff master-slave tables to make sure everything is in sync.
|
||||
--let $diff_tables=master:t1, slave:t1
|
||||
--source include/diff_tables.inc
|
||||
|
||||
--let $diff_tables=master:t2, slave:t2
|
||||
--source include/diff_tables.inc
|
||||
|
||||
# Step-1.8: Cleanup
|
||||
--connection master
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
# Case-2: BINLOG_STMT_UNSAFE_WRITE_AUTOINC_SELECT
|
||||
# Statements writing to a table with an auto-increment column after selecting
|
||||
# from another table are unsafe because the order in which rows are retrieved
|
||||
# determines what (if any) rows will be written. This order cannot be
|
||||
# predicted and may differ on master and the slave.
|
||||
|
||||
# Step-2.1: Create two tables, one with AUTO_INCREMENT column.
|
||||
CREATE TABLE t1(i INT) ENGINE=INNODB;
|
||||
CREATE TABLE t2(id INT AUTO_INCREMENT, i INT, PRIMARY KEY (id)) ENGINE=INNODB;
|
||||
|
||||
# Step-2.2: Create some tuples in table t1.
|
||||
INSERT INTO t1 values (1), (2), (3);
|
||||
|
||||
# Step-2.3: Create some gap in auto increment value on master's t2 table
|
||||
# but not on slave (by doing rollback). Just in case if the unsafe statements
|
||||
# are written in statement format, diff tables will fail.
|
||||
START TRANSACTION;
|
||||
INSERT INTO t2(i) VALUES (1);
|
||||
ROLLBACK;
|
||||
|
||||
# Step-2.4: Insert into t2 (table with an auto-increment) by selecting tuples
|
||||
# from table t1.
|
||||
INSERT INTO t2(i) SELECT i FROM t1;
|
||||
|
||||
# Step-2.5: Repeat step 2.4 but now with 'LOCK TABLES' logic.
|
||||
START TRANSACTION;
|
||||
LOCK TABLES t2 WRITE, t1 READ;
|
||||
INSERT INTO t2(i) SELECT i FROM t1;
|
||||
UNLOCK TABLES;
|
||||
COMMIT;
|
||||
|
||||
# Step-2.6: Sync slave with master
|
||||
--sync_slave_with_master
|
||||
|
||||
# Step-2.7: Diff master-slave tables to make sure everything is in sync.
|
||||
--let $diff_tables=master:t1, slave:t1
|
||||
--source include/diff_tables.inc
|
||||
|
||||
--let $diff_tables=master:t2, slave:t2
|
||||
--source include/diff_tables.inc
|
||||
|
||||
# Step-2.8: Cleanup
|
||||
--connection master
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
# Case-3: BINLOG_STMT_UNSAFE_AUTOINC_NOT_FIRST
|
||||
# INSERT into autoincrement field which is not the first part in the
|
||||
# composed primary key is unsafe
|
||||
#
|
||||
# Step-3.1: Create a table with auto increment column and a composed primary key
|
||||
# (second column is auto increment column). Such a definition is allowed only
|
||||
# with 'myisam' engine.
|
||||
CREATE TABLE t1(i int, id INT AUTO_INCREMENT, PRIMARY KEY (i, id)) ENGINE=MYISAM;
|
||||
|
||||
# Step-3.2: Inserting into such a table is unsafe.
|
||||
INSERT INTO t1 (i) values (1);
|
||||
|
||||
# Step-3.3: Repeat step 3.2, now with 'LOCK TABLES' logic.
|
||||
START TRANSACTION;
|
||||
LOCK TABLES t1 WRITE;
|
||||
INSERT INTO t1 (i) values (2);
|
||||
UNLOCK TABLES;
|
||||
COMMIT;
|
||||
|
||||
# Step-3.4: Sync slave with master
|
||||
--sync_slave_with_master
|
||||
|
||||
# Step-3.5: Diff master-slave tables to make sure everything is in sync.
|
||||
--let $diff_tables=master:t1, slave:t1
|
||||
--source include/diff_tables.inc
|
||||
|
||||
# Step-3.6: Cleanup
|
||||
--connection master
|
||||
DROP TABLE t1;
|
||||
|
||||
# Case-4: BINLOG_STMT_UNSAFE_INSERT_TWO_KEYS
|
||||
# INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY
|
||||
# is unsafe Statement
|
||||
|
||||
# Step-4.1: Create a table with two unique keys
|
||||
CREATE TABLE t1(i INT, j INT, UNIQUE KEY(i), UNIQUE KEY(j)) ENGINE=INNODB;
|
||||
|
||||
# Step-4.2: Inserting into such a table is unsafe.
|
||||
INSERT INTO t1 (i,j) VALUES (1,2) ON DUPLICATE KEY UPDATE j=j+1;
|
||||
|
||||
# Step-4.3: Repeat step 3.2, now with 'LOCK TABLES' logic.
|
||||
START TRANSACTION;
|
||||
LOCK TABLES t1 WRITE;
|
||||
INSERT INTO t1 (i,j) VALUES (1,2) ON DUPLICATE KEY UPDATE j=j+1;
|
||||
UNLOCK TABLES;
|
||||
COMMIT;
|
||||
|
||||
# Step-4.4: Sync slave with master
|
||||
--sync_slave_with_master
|
||||
|
||||
# Step-4.5: Diff master-slave tables to make sure everything is in sync.
|
||||
--let $diff_tables=master:t1, slave:t1
|
||||
--source include/diff_tables.inc
|
||||
|
||||
# Step-4.6: Cleanup
|
||||
--connection master
|
||||
DROP TABLE t1;
|
||||
|
||||
--source include/rpl_end.inc
|
@ -130,9 +130,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs disabled
|
||||
os_log_pending_writes disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
trx_rw_commits disabled
|
||||
trx_ro_commits disabled
|
||||
trx_nl_ro_commits disabled
|
||||
@ -281,9 +278,6 @@ lock_row_lock_time disabled
|
||||
lock_row_lock_time_max disabled
|
||||
lock_row_lock_waits disabled
|
||||
lock_row_lock_time_avg disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
innodb_rwlock_s_spin_waits disabled
|
||||
innodb_rwlock_x_spin_waits disabled
|
||||
innodb_rwlock_s_spin_rounds disabled
|
||||
@ -322,9 +316,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs enabled
|
||||
os_log_pending_writes enabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
set global innodb_monitor_enable="";
|
||||
ERROR 42000: Variable 'innodb_monitor_enable' can't be set to the value of ''
|
||||
set global innodb_monitor_enable="_";
|
||||
|
@ -130,9 +130,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs disabled
|
||||
os_log_pending_writes disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
trx_rw_commits disabled
|
||||
trx_ro_commits disabled
|
||||
trx_nl_ro_commits disabled
|
||||
@ -281,9 +278,6 @@ lock_row_lock_time disabled
|
||||
lock_row_lock_time_max disabled
|
||||
lock_row_lock_waits disabled
|
||||
lock_row_lock_time_avg disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
innodb_rwlock_s_spin_waits disabled
|
||||
innodb_rwlock_x_spin_waits disabled
|
||||
innodb_rwlock_s_spin_rounds disabled
|
||||
@ -322,9 +316,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs enabled
|
||||
os_log_pending_writes enabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
set global innodb_monitor_enable="";
|
||||
ERROR 42000: Variable 'innodb_monitor_enable' can't be set to the value of ''
|
||||
set global innodb_monitor_enable="_";
|
||||
|
@ -130,9 +130,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs disabled
|
||||
os_log_pending_writes disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
trx_rw_commits disabled
|
||||
trx_ro_commits disabled
|
||||
trx_nl_ro_commits disabled
|
||||
@ -281,9 +278,6 @@ lock_row_lock_time disabled
|
||||
lock_row_lock_time_max disabled
|
||||
lock_row_lock_waits disabled
|
||||
lock_row_lock_time_avg disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
innodb_rwlock_s_spin_waits disabled
|
||||
innodb_rwlock_x_spin_waits disabled
|
||||
innodb_rwlock_s_spin_rounds disabled
|
||||
@ -322,9 +316,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs enabled
|
||||
os_log_pending_writes enabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
set global innodb_monitor_enable="";
|
||||
ERROR 42000: Variable 'innodb_monitor_enable' can't be set to the value of ''
|
||||
set global innodb_monitor_enable="_";
|
||||
|
@ -130,9 +130,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs disabled
|
||||
os_log_pending_writes disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
trx_rw_commits disabled
|
||||
trx_ro_commits disabled
|
||||
trx_nl_ro_commits disabled
|
||||
@ -281,9 +278,6 @@ lock_row_lock_time disabled
|
||||
lock_row_lock_time_max disabled
|
||||
lock_row_lock_waits disabled
|
||||
lock_row_lock_time_avg disabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
innodb_rwlock_s_spin_waits disabled
|
||||
innodb_rwlock_x_spin_waits disabled
|
||||
innodb_rwlock_s_spin_rounds disabled
|
||||
@ -322,9 +316,6 @@ os_log_bytes_written disabled
|
||||
os_log_fsyncs disabled
|
||||
os_log_pending_fsyncs enabled
|
||||
os_log_pending_writes enabled
|
||||
os_merge_blocks_written disabled
|
||||
os_merge_blocks_read disabled
|
||||
os_merge_blocks_merged disabled
|
||||
set global innodb_monitor_enable="";
|
||||
ERROR 42000: Variable 'innodb_monitor_enable' can't be set to the value of ''
|
||||
set global innodb_monitor_enable="_";
|
||||
|
35
mysql-test/suite/sys_vars/r/innodb_tmpdir_basic.result
Normal file
35
mysql-test/suite/sys_vars/r/innodb_tmpdir_basic.result
Normal file
@ -0,0 +1,35 @@
|
||||
SET @start_global_value = @@global.innodb_tmpdir;
|
||||
SELECT @start_global_value;
|
||||
@start_global_value
|
||||
NULL
|
||||
select @@session.innodb_tmpdir;
|
||||
@@session.innodb_tmpdir
|
||||
NULL
|
||||
show global variables like 'innodb_tmpdir';
|
||||
Variable_name Value
|
||||
innodb_tmpdir
|
||||
show session variables like 'innodb_tmpdir';
|
||||
Variable_name Value
|
||||
innodb_tmpdir
|
||||
select * from information_schema.global_variables where variable_name='innodb_tmpdir';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_TMPDIR
|
||||
select * from information_schema.session_variables where variable_name='innodb_tmpdir';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INNODB_TMPDIR
|
||||
set global innodb_tmpdir=@@global.tmpdir;
|
||||
set session innodb_tmpdir=@@global.tmpdir;
|
||||
set global innodb_tmpdir=1.1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_tmpdir'
|
||||
set global innodb_tmpdir=1e1;
|
||||
ERROR 42000: Incorrect argument type to variable 'innodb_tmpdir'
|
||||
set global innodb_tmpdir=repeat('a',1000);
|
||||
ERROR 42000: Variable 'innodb_tmpdir' can't be set to the value of 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Warning 1210 Path length should not exceed 512 bytes
|
||||
Error 1231 Variable 'innodb_tmpdir' can't be set to the value of 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
|
||||
SET @@global.innodb_tmpdir = @start_global_value;
|
||||
SELECT @@global.innodb_tmpdir;
|
||||
@@global.innodb_tmpdir
|
||||
NULL
|
@ -571,14 +571,21 @@
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
@@ -2203,6 +2637,34 @@
|
||||
@@ -2203,14 +2637,28 @@
|
||||
ENUM_VALUE_LIST NULL
|
||||
READ_ONLY NO
|
||||
COMMAND_LINE_ARGUMENT REQUIRED
|
||||
-VARIABLE_NAME INNODB_TMPDIR
|
||||
-SESSION_VALUE
|
||||
-GLOBAL_VALUE
|
||||
+VARIABLE_NAME INNODB_TRACK_CHANGED_PAGES
|
||||
+SESSION_VALUE NULL
|
||||
+GLOBAL_VALUE OFF
|
||||
+GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
-DEFAULT_VALUE
|
||||
-VARIABLE_SCOPE SESSION
|
||||
-VARIABLE_TYPE VARCHAR
|
||||
-VARIABLE_COMMENT Directory for temporary non-tablespace files.
|
||||
+DEFAULT_VALUE OFF
|
||||
+VARIABLE_SCOPE GLOBAL
|
||||
+VARIABLE_TYPE BOOLEAN
|
||||
@ -597,16 +604,10 @@
|
||||
+VARIABLE_SCOPE GLOBAL
|
||||
+VARIABLE_TYPE BOOLEAN
|
||||
+VARIABLE_COMMENT Force log tracker to catch up with checkpoint now
|
||||
+NUMERIC_MIN_VALUE NULL
|
||||
+NUMERIC_MAX_VALUE NULL
|
||||
+NUMERIC_BLOCK_SIZE NULL
|
||||
+ENUM_VALUE_LIST NULL
|
||||
+READ_ONLY NO
|
||||
+COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME INNODB_TRX_PURGE_VIEW_UPDATE_ONLY_DEBUG
|
||||
SESSION_VALUE NULL
|
||||
GLOBAL_VALUE OFF
|
||||
@@ -2280,7 +2742,7 @@
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
@@ -2294,7 +2742,7 @@
|
||||
DEFAULT_VALUE OFF
|
||||
VARIABLE_SCOPE GLOBAL
|
||||
VARIABLE_TYPE BOOLEAN
|
||||
@ -615,7 +616,7 @@
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
@@ -2301,6 +2763,20 @@
|
||||
@@ -2315,6 +2763,20 @@
|
||||
ENUM_VALUE_LIST NULL
|
||||
READ_ONLY YES
|
||||
COMMAND_LINE_ARGUMENT NONE
|
||||
@ -636,7 +637,7 @@
|
||||
VARIABLE_NAME INNODB_USE_MTFLUSH
|
||||
SESSION_VALUE NULL
|
||||
GLOBAL_VALUE OFF
|
||||
@@ -2315,6 +2791,20 @@
|
||||
@@ -2329,6 +2791,20 @@
|
||||
ENUM_VALUE_LIST NULL
|
||||
READ_ONLY YES
|
||||
COMMAND_LINE_ARGUMENT NONE
|
||||
@ -657,12 +658,12 @@
|
||||
VARIABLE_NAME INNODB_USE_SYS_MALLOC
|
||||
SESSION_VALUE NULL
|
||||
GLOBAL_VALUE ON
|
||||
@@ -2345,12 +2835,12 @@
|
||||
@@ -2359,12 +2835,12 @@
|
||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME INNODB_VERSION
|
||||
SESSION_VALUE NULL
|
||||
-GLOBAL_VALUE 5.6.27
|
||||
+GLOBAL_VALUE 5.6.26-76.0
|
||||
-GLOBAL_VALUE 5.6.29
|
||||
+GLOBAL_VALUE 5.6.28-76.1
|
||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
DEFAULT_VALUE NULL
|
||||
VARIABLE_SCOPE GLOBAL
|
||||
|
@ -2203,6 +2203,20 @@ NUMERIC_BLOCK_SIZE 0
|
||||
ENUM_VALUE_LIST NULL
|
||||
READ_ONLY NO
|
||||
COMMAND_LINE_ARGUMENT REQUIRED
|
||||
VARIABLE_NAME INNODB_TMPDIR
|
||||
SESSION_VALUE
|
||||
GLOBAL_VALUE
|
||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
DEFAULT_VALUE
|
||||
VARIABLE_SCOPE SESSION
|
||||
VARIABLE_TYPE VARCHAR
|
||||
VARIABLE_COMMENT Directory for temporary non-tablespace files.
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
ENUM_VALUE_LIST NULL
|
||||
READ_ONLY NO
|
||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME INNODB_TRX_PURGE_VIEW_UPDATE_ONLY_DEBUG
|
||||
SESSION_VALUE NULL
|
||||
GLOBAL_VALUE OFF
|
||||
@ -2345,7 +2359,7 @@ READ_ONLY NO
|
||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME INNODB_VERSION
|
||||
SESSION_VALUE NULL
|
||||
GLOBAL_VALUE 5.6.27
|
||||
GLOBAL_VALUE 5.6.29
|
||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
DEFAULT_VALUE NULL
|
||||
VARIABLE_SCOPE GLOBAL
|
||||
|
48
mysql-test/suite/sys_vars/t/innodb_tmpdir_basic.test
Normal file
48
mysql-test/suite/sys_vars/t/innodb_tmpdir_basic.test
Normal file
@ -0,0 +1,48 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
if (`select plugin_auth_version <= "5.6.28-MariaDB-76.1" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB as of 5.6.28-MariaDB-76.1 or earlier
|
||||
}
|
||||
|
||||
SET @start_global_value = @@global.innodb_tmpdir;
|
||||
SELECT @start_global_value;
|
||||
|
||||
#
|
||||
# exists as global and session
|
||||
#
|
||||
select @@session.innodb_tmpdir;
|
||||
|
||||
show global variables like 'innodb_tmpdir';
|
||||
show session variables like 'innodb_tmpdir';
|
||||
|
||||
select * from information_schema.global_variables where variable_name='innodb_tmpdir';
|
||||
select * from information_schema.session_variables where variable_name='innodb_tmpdir';
|
||||
#
|
||||
# Show that it is writable
|
||||
#
|
||||
|
||||
set global innodb_tmpdir=@@global.tmpdir;
|
||||
set session innodb_tmpdir=@@global.tmpdir;
|
||||
|
||||
#
|
||||
# incorrect types
|
||||
#
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
set global innodb_tmpdir=1.1;
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
set global innodb_tmpdir=1e1;
|
||||
|
||||
#
|
||||
# path len more than 512
|
||||
#
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
set global innodb_tmpdir=repeat('a',1000);
|
||||
show warnings;
|
||||
|
||||
#
|
||||
# Cleanup
|
||||
#
|
||||
|
||||
SET @@global.innodb_tmpdir = @start_global_value;
|
||||
SELECT @@global.innodb_tmpdir;
|
@ -287,3 +287,30 @@ select * from t1;
|
||||
|
||||
set sql_warnings = 0;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-9093: Persistent computed column is not updated when
|
||||
--echo # update query contains join
|
||||
--echo #
|
||||
|
||||
CREATE TABLE `t1` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`name` varchar(254) DEFAULT NULL,
|
||||
`name_hash` varchar(64) AS (sha1(name)) PERSISTENT,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
insert into t1(id,name) values (2050, 'name1'),(2051, 'name2'),(2041, 'name3');
|
||||
|
||||
create table t2 (id bigint);
|
||||
insert into t2 values (2050),(2051),(2041);
|
||||
|
||||
select * from t1;
|
||||
|
||||
update t1 join t2 using(id) set name = concat(name,
|
||||
'+1') where t1.id in (2051,2041);
|
||||
|
||||
select * from t1;
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
|
44
mysql-test/suite/vcol/r/alter_inplace-9045.result
Normal file
44
mysql-test/suite/vcol/r/alter_inplace-9045.result
Normal file
@ -0,0 +1,44 @@
|
||||
create table t1(id int auto_increment primary key, handle int, data bigint not null default 0) engine = innodb;
|
||||
insert into t1(handle) values(12),(54),(NULL);
|
||||
select *, md5(handle) from t1;
|
||||
id handle data md5(handle)
|
||||
1 12 0 c20ad4d76fe97759aa27a0c99bff6710
|
||||
2 54 0 a684eceee76fc522773286a895bc8436
|
||||
3 NULL 0 NULL
|
||||
alter table t1 add index handle(handle), algorithm=inplace;
|
||||
alter table t1 add column hash varchar(32) as (md5(handle)) persistent, algorithm=inplace;
|
||||
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
|
||||
alter table t1 add column hash varchar(32) as (md5(handle)) persistent, add unique index hash(hash), algorithm=inplace;
|
||||
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
|
||||
alter table t1 add column hash varchar(32) as (md5(handle)) persistent, add unique index hash(hash), algorithm=copy;
|
||||
select * from t1;
|
||||
id handle data hash
|
||||
1 12 0 c20ad4d76fe97759aa27a0c99bff6710
|
||||
2 54 0 a684eceee76fc522773286a895bc8436
|
||||
3 NULL 0 NULL
|
||||
alter table t1 modify column hash varchar(32) as (md5(handle+1)) persistent, algorithm=inplace;
|
||||
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
|
||||
alter table t1 modify column hash varchar(32) as (md5(handle+1)) persistent, algorithm=copy;
|
||||
select * from t1;
|
||||
id handle data hash
|
||||
1 12 0 c51ce410c124a10e0db5e4b97fc2af39
|
||||
2 54 0 b53b3a3d6ab90ce0268229151c9bde11
|
||||
3 NULL 0 NULL
|
||||
alter table t1 modify column handle int not null, algorithm=inplace;
|
||||
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
|
||||
alter table t1 modify column handle int not null, algorithm=copy;
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'handle' at row 3
|
||||
select * from t1;
|
||||
id handle data hash
|
||||
1 12 0 c51ce410c124a10e0db5e4b97fc2af39
|
||||
2 54 0 b53b3a3d6ab90ce0268229151c9bde11
|
||||
3 0 0 c4ca4238a0b923820dcc509a6f75849b
|
||||
alter table t1 drop index handle, algorithm=inplace;
|
||||
create index data on t1(data) algorithm=inplace;
|
||||
alter table t1 drop column data, algorithm=inplace;
|
||||
alter table t1 add column sha varchar(32) as (sha1(handle)) persistent, algorithm=inplace;
|
||||
ERROR 0A000: ALGORITHM=INPLACE is not supported for this operation. Try ALGORITHM=COPY.
|
||||
alter table t1 add column sha varchar(32), algorithm=inplace;
|
||||
alter table t1 drop column hash, algorithm=inplace;
|
||||
drop table t1;
|
16
mysql-test/suite/vcol/r/innodb_autoinc_vcol.result
Normal file
16
mysql-test/suite/vcol/r/innodb_autoinc_vcol.result
Normal file
@ -0,0 +1,16 @@
|
||||
create table t1 (c2 int as (-c1), c1 int primary key auto_increment) engine=innodb;
|
||||
insert into t1(c1) values (null),(null),(null);
|
||||
select * from t1;
|
||||
c2 c1
|
||||
-1 1
|
||||
-2 2
|
||||
-3 3
|
||||
alter table t1 auto_increment = 3;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c2` int(11) AS (-c1) VIRTUAL,
|
||||
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||
PRIMARY KEY (`c1`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
|
||||
drop table t1;
|
@ -425,3 +425,29 @@ select * from t1;
|
||||
a b c d
|
||||
set sql_warnings = 0;
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-9093: Persistent computed column is not updated when
|
||||
# update query contains join
|
||||
#
|
||||
CREATE TABLE `t1` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`name` varchar(254) DEFAULT NULL,
|
||||
`name_hash` varchar(64) AS (sha1(name)) PERSISTENT,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
insert into t1(id,name) values (2050, 'name1'),(2051, 'name2'),(2041, 'name3');
|
||||
create table t2 (id bigint);
|
||||
insert into t2 values (2050),(2051),(2041);
|
||||
select * from t1;
|
||||
id name name_hash
|
||||
2041 name3 1aefcd1b0f39da45fa1fd7236f683c907c15ef82
|
||||
2050 name1 9b46b0dd3a8083c070c3b9953bb5f3f95c5ab4da
|
||||
2051 name2 39ea84acf1fef629fef18a9c6f5799bba32ecc25
|
||||
update t1 join t2 using(id) set name = concat(name,
|
||||
'+1') where t1.id in (2051,2041);
|
||||
select * from t1;
|
||||
id name name_hash
|
||||
2041 name3+1 93c9096df48221428de46e146abc9f4f94bf7d2e
|
||||
2050 name1 9b46b0dd3a8083c070c3b9953bb5f3f95c5ab4da
|
||||
2051 name2+1 fd4f236320db3956a5ec073c5ec39707d7f05708
|
||||
drop table t1,t2;
|
||||
|
@ -363,3 +363,29 @@ select * from t1;
|
||||
a b c d
|
||||
set sql_warnings = 0;
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-9093: Persistent computed column is not updated when
|
||||
# update query contains join
|
||||
#
|
||||
CREATE TABLE `t1` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`name` varchar(254) DEFAULT NULL,
|
||||
`name_hash` varchar(64) AS (sha1(name)) PERSISTENT,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
insert into t1(id,name) values (2050, 'name1'),(2051, 'name2'),(2041, 'name3');
|
||||
create table t2 (id bigint);
|
||||
insert into t2 values (2050),(2051),(2041);
|
||||
select * from t1;
|
||||
id name name_hash
|
||||
2050 name1 9b46b0dd3a8083c070c3b9953bb5f3f95c5ab4da
|
||||
2051 name2 39ea84acf1fef629fef18a9c6f5799bba32ecc25
|
||||
2041 name3 1aefcd1b0f39da45fa1fd7236f683c907c15ef82
|
||||
update t1 join t2 using(id) set name = concat(name,
|
||||
'+1') where t1.id in (2051,2041);
|
||||
select * from t1;
|
||||
id name name_hash
|
||||
2050 name1 9b46b0dd3a8083c070c3b9953bb5f3f95c5ab4da
|
||||
2051 name2+1 fd4f236320db3956a5ec073c5ec39707d7f05708
|
||||
2041 name3+1 93c9096df48221428de46e146abc9f4f94bf7d2e
|
||||
drop table t1,t2;
|
||||
|
31
mysql-test/suite/vcol/t/alter_inplace-9045.test
Normal file
31
mysql-test/suite/vcol/t/alter_inplace-9045.test
Normal file
@ -0,0 +1,31 @@
|
||||
#
|
||||
# MDEV-9045 Inconsistent handling of "ALGORITHM=INPLACE" with PERSISTENT generated columns
|
||||
#
|
||||
--source include/have_innodb.inc
|
||||
|
||||
create table t1(id int auto_increment primary key, handle int, data bigint not null default 0) engine = innodb;
|
||||
insert into t1(handle) values(12),(54),(NULL);
|
||||
select *, md5(handle) from t1;
|
||||
alter table t1 add index handle(handle), algorithm=inplace;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add column hash varchar(32) as (md5(handle)) persistent, algorithm=inplace;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add column hash varchar(32) as (md5(handle)) persistent, add unique index hash(hash), algorithm=inplace;
|
||||
alter table t1 add column hash varchar(32) as (md5(handle)) persistent, add unique index hash(hash), algorithm=copy;
|
||||
select * from t1;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 modify column hash varchar(32) as (md5(handle+1)) persistent, algorithm=inplace;
|
||||
alter table t1 modify column hash varchar(32) as (md5(handle+1)) persistent, algorithm=copy;
|
||||
select * from t1;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 modify column handle int not null, algorithm=inplace;
|
||||
alter table t1 modify column handle int not null, algorithm=copy;
|
||||
select * from t1;
|
||||
alter table t1 drop index handle, algorithm=inplace;
|
||||
create index data on t1(data) algorithm=inplace;
|
||||
alter table t1 drop column data, algorithm=inplace;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add column sha varchar(32) as (sha1(handle)) persistent, algorithm=inplace;
|
||||
alter table t1 add column sha varchar(32), algorithm=inplace;
|
||||
alter table t1 drop column hash, algorithm=inplace;
|
||||
drop table t1;
|
9
mysql-test/suite/vcol/t/innodb_autoinc_vcol.test
Normal file
9
mysql-test/suite/vcol/t/innodb_autoinc_vcol.test
Normal file
@ -0,0 +1,9 @@
|
||||
--source include/have_innodb.inc
|
||||
|
||||
create table t1 (c2 int as (-c1), c1 int primary key auto_increment) engine=innodb;
|
||||
insert into t1(c1) values (null),(null),(null);
|
||||
select * from t1;
|
||||
alter table t1 auto_increment = 3;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
@ -7,22 +7,16 @@
|
||||
drop table if exists t1,t2,t3;
|
||||
--enable_warnings
|
||||
#
|
||||
# Test of things that can not be done online
|
||||
# Test of things that can be done online
|
||||
#
|
||||
|
||||
create table t1 (a int not null primary key, b int, c varchar(80), e enum('a','b'));
|
||||
insert into t1 (a) values (1),(2),(3);
|
||||
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter online table t1 modify b int default 5;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter online table t1 change b new_name int;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter online table t1 modify e enum('a','b','c');
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter online table t1 comment "new comment";
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter online table t1 rename to t2;
|
||||
|
||||
# No OPs
|
||||
|
||||
@ -68,11 +62,14 @@ alter online table t1 modify c varchar(100);
|
||||
alter online table t1 add f int;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
alter online table t1 engine=memory;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter online table t1 rename to t2;
|
||||
|
||||
alter table t1 engine=innodb;
|
||||
alter table t1 add index (b);
|
||||
alter online table t1 add index c (c);
|
||||
alter online table t1 drop index b;
|
||||
alter online table t1 comment "new comment";
|
||||
drop table t1;
|
||||
|
||||
create temporary table t1 (a int not null primary key, b int, c varchar(80), e enum('a','b'));
|
||||
|
@ -1737,6 +1737,27 @@ create table t1(a enum('',''));
|
||||
drop table t1;
|
||||
set @@session.collation_server=default;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7765: Crash (Assertion `!table || (!table->write_set ||
|
||||
--echo # bitmap_is_set(table->write_set, field_index) ||
|
||||
--echo # bitmap_is_set(table->vcol_set, field_index))' fails)
|
||||
--echo # on using function over not created table
|
||||
--echo #
|
||||
|
||||
DELIMITER |;
|
||||
CREATE function f1() returns int
|
||||
BEGIN
|
||||
declare n int;
|
||||
set n:= (select count(*) from t1);
|
||||
return n;
|
||||
end|
|
||||
DELIMITER ;|
|
||||
-- error ER_NO_SUCH_TABLE
|
||||
create table t1 as select f1();
|
||||
drop function f1;
|
||||
|
||||
--echo End of 5.5 tests
|
||||
|
||||
#
|
||||
# MDEV-4880 Attempt to create a table without columns produces ER_ILLEGAL_HA instead of ER_TABLE_MUST_HAVE_COLUMNS
|
||||
#
|
||||
|
@ -538,6 +538,296 @@ select x.id, message from (select id from t1) x left join
|
||||
where coalesce(message,0) <> 0;
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7827: Assertion `!table || (!table->read_set ||
|
||||
--echo # bitmap_is_set(table->read_set, field_index))' failed
|
||||
--echo # in Field_long::val_str on EXPLAIN EXTENDED
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (f1 INT, f2 INT, KEY(f2)) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (6,9);
|
||||
|
||||
CREATE TABLE t2 (f3 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (2),(0);
|
||||
|
||||
EXPLAIN EXTENDED
|
||||
SELECT f1 FROM ( SELECT * FROM t1 ) AS sq
|
||||
WHERE f1 IN (
|
||||
SELECT f3 FROM t2 WHERE f2 IN (
|
||||
SELECT f3 FROM t2 HAVING f3 >= 8
|
||||
)
|
||||
);
|
||||
|
||||
DROP TABLE t2,t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-9462: Out of memory using explain on 2 empty tables
|
||||
--echo #
|
||||
|
||||
CREATE TABLE `t1` (
|
||||
`REC_GROUP` char(2) DEFAULT NULL,
|
||||
`CLIENT_INFO` text CHARACTER SET utf8,
|
||||
`NAME` text,
|
||||
`PHONE_NUMBER` text,
|
||||
`ATTENTION_NAME` text,
|
||||
`PAYMENT_TERM` text CHARACTER SET utf8,
|
||||
`CREDIT_LIMIT` decimal(12,2) DEFAULT NULL,
|
||||
`LAST_PAY_DATE` text CHARACTER SET utf8,
|
||||
`TOTAL` double DEFAULT NULL,
|
||||
`TOTAL_MCL` double DEFAULT NULL,
|
||||
`TOTAL_MFS` double DEFAULT NULL,
|
||||
`TOTAL_MIS` double DEFAULT NULL,
|
||||
`BEFORE_DUE_7_MCL` double DEFAULT NULL,
|
||||
`BEFORE_DUE_7_MFS` double DEFAULT NULL,
|
||||
`BEFORE_DUE_7_MIS` double DEFAULT NULL,
|
||||
`PER1_MCL` double DEFAULT NULL,
|
||||
`PER1_MFS` double DEFAULT NULL,
|
||||
`PER1_MIS` double DEFAULT NULL,
|
||||
`PER2_MCL` double DEFAULT NULL,
|
||||
`PER2_MFS` double DEFAULT NULL,
|
||||
`PER2_MIS` double DEFAULT NULL,
|
||||
`PER3_MCL` double DEFAULT NULL,
|
||||
`PER3_MFS` double DEFAULT NULL,
|
||||
`PER3_MIS` double DEFAULT NULL,
|
||||
`PER4_MCL` double DEFAULT NULL,
|
||||
`PER4_MFS` double DEFAULT NULL,
|
||||
`PER4_MIS` double DEFAULT NULL,
|
||||
`PER5_MCL` double DEFAULT NULL,
|
||||
`PER5_MFS` double DEFAULT NULL,
|
||||
`PER5_MIS` double DEFAULT NULL,
|
||||
`PER6_MCL` double DEFAULT NULL,
|
||||
`PER6_MFS` double DEFAULT NULL,
|
||||
`PER6_MIS` double DEFAULT NULL,
|
||||
`PER7_MCL` double DEFAULT NULL,
|
||||
`PER7_MFS` double DEFAULT NULL,
|
||||
`PER7_MIS` double DEFAULT NULL,
|
||||
`BEFORE_DUE_7` double DEFAULT NULL,
|
||||
`PER1` double DEFAULT NULL,
|
||||
`PER2` double DEFAULT NULL,
|
||||
`PER3` double DEFAULT NULL,
|
||||
`PER4` double DEFAULT NULL,
|
||||
`PER5` double DEFAULT NULL,
|
||||
`PER6` double DEFAULT NULL,
|
||||
`PER7` double DEFAULT NULL,
|
||||
`REF` varchar(30) DEFAULT NULL,
|
||||
`TYPE` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE `t2` (
|
||||
`RECEIVABLE_GROUP` char(2) DEFAULT NULL,
|
||||
`CLIENT_NUMBER` varchar(35) DEFAULT NULL,
|
||||
`CLIENT_NAME` varchar(73) DEFAULT NULL,
|
||||
`PHONE_NUMBER` char(12) DEFAULT NULL,
|
||||
`ATTENTION_NAME` char(26) DEFAULT NULL,
|
||||
`PAYMENT_TERM` varchar(26) CHARACTER SET utf8 DEFAULT NULL,
|
||||
`CREDIT_LIMIT` decimal(12,2) DEFAULT NULL,
|
||||
`LAST_PAY_DATE` varchar(42) CHARACTER SET utf8 DEFAULT NULL,
|
||||
`TOTAL` decimal(12,2) DEFAULT NULL,
|
||||
`BEFORE_DUE_7` decimal(12,2) DEFAULT NULL,
|
||||
`PER1` decimal(12,2) DEFAULT NULL,
|
||||
`PER2` decimal(12,2) DEFAULT NULL,
|
||||
`PER3` decimal(12,2) DEFAULT NULL,
|
||||
`PER4` decimal(12,2) DEFAULT NULL,
|
||||
`PER5` decimal(12,2) DEFAULT NULL,
|
||||
`PER6` decimal(12,2) DEFAULT NULL,
|
||||
`PER7` decimal(12,2) DEFAULT NULL,
|
||||
`DIVISION` varchar(3) CHARACTER SET utf8 NOT NULL,
|
||||
`CLIENT_INFO` varchar(294) CHARACTER SET utf8 DEFAULT NULL,
|
||||
`EXCHANGE_RATE` double NOT NULL,
|
||||
`REF` varchar(30) DEFAULT NULL
|
||||
);
|
||||
|
||||
explain
|
||||
SELECT A.RECEIVABLE_GROUP,A.CLIENT_INFO,A.CLIENT_NAME,A.PHONE_NUMBER,A.ATTENTION_NAME,A.PAYMENT_TERM,A.CREDIT_LIMIT,A.LAST_PAY_DATE,A.TOTAL,
|
||||
COALESCE(B.TOTAL_MCL,0) AS TOTAL_MCL,
|
||||
COALESCE(C.TOTAL_MFS,0) AS TOTAL_MFS,
|
||||
COALESCE(D.TOTAL_MIS,0) AS TOTAL_MIS,
|
||||
COALESCE(F.BEFORE_DUE_7_MCL,0) AS BEFORE_DUE_7_MCL,
|
||||
COALESCE(G.BEFORE_DUE_7_MFS,0) AS BEFORE_DUE_7_MFS,
|
||||
COALESCE(H.BEFORE_DUE_7_MIS,0) AS BEFORE_DUE_7_MIS,
|
||||
COALESCE(I.PER1_MCL,0) AS PER1_MCL,
|
||||
COALESCE(J.PER1_MFS,0) AS PER1_MFS,
|
||||
COALESCE(K.PER1_MIS,0) AS PER1_MIS,
|
||||
COALESCE(L.PER2_MCL,0) AS PER2_MCL,
|
||||
COALESCE(M.PER2_MFS,0) AS PER2_MFS,
|
||||
COALESCE(N.PER2_MIS,0) AS PER2_MIS,
|
||||
COALESCE(O.PER3_MCL,0) AS PER3_MCL,
|
||||
COALESCE(P.PER3_MFS,0) AS PER3_MFS,
|
||||
COALESCE(R.PER3_MIS,0) AS PER3_MIS,
|
||||
COALESCE(S.PER4_MCL,0) AS PER4_MCL,
|
||||
COALESCE(T.PER4_MFS,0) AS PER4_MFS,
|
||||
COALESCE(U.PER4_MIS,0) AS PER4_MIS,
|
||||
COALESCE(V.PER5_MCL,0) AS PER5_MCL,
|
||||
COALESCE(X.PER5_MFS,0) AS PER5_MFS,
|
||||
COALESCE(Z.PER5_MIS,0) AS PER5_MIS,
|
||||
COALESCE(Q.PER6_MCL,0) AS PER6_MCL,
|
||||
COALESCE(Y.PER6_MFS,0) AS PER6_MFS,
|
||||
COALESCE(W.PER6_MIS,0) AS PER6_MIS,
|
||||
COALESCE(A1.PER7_MCL,0) AS PER7_MCL,
|
||||
COALESCE(B1.PER7_MFS,0) AS PER7_MFS,
|
||||
COALESCE(C1.PER7_MIS,0) AS PER7_MIS,
|
||||
A.BEFORE_DUE_7,A.PER1,A.PER2,A.PER3,A.PER4,A.PER5,A.PER6,A.PER7,
|
||||
CONCAT(A.DIVISION,'-',A.CLIENT_NUMBER) AS REF,"2" AS TYPE FROM
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,
|
||||
GROUP_CONCAT(DISTINCT CLIENT_INFO SEPARATOR '<br>') AS CLIENT_INFO,
|
||||
GROUP_CONCAT(DISTINCT CLIENT_NAME SEPARATOR '<br>') AS CLIENT_NAME,
|
||||
GROUP_CONCAT( DISTINCT `PHONE_NUMBER` SEPARATOR '<br>' ) AS PHONE_NUMBER ,
|
||||
GROUP_CONCAT( DISTINCT `ATTENTION_NAME` SEPARATOR '<br>' ) AS ATTENTION_NAME,
|
||||
GROUP_CONCAT( DISTINCT `PAYMENT_TERM` SEPARATOR '<br>' ) AS PAYMENT_TERM,
|
||||
CREDIT_LIMIT ,
|
||||
GROUP_CONCAT( `LAST_PAY_DATE` SEPARATOR '<br>' ) AS LAST_PAY_DATE,
|
||||
SUM( `TOTAL`*EXCHANGE_RATE ) AS TOTAL,
|
||||
SUM( `BEFORE_DUE_7`*EXCHANGE_RATE ) AS BEFORE_DUE_7,
|
||||
SUM( `PER1`*EXCHANGE_RATE ) AS PER1,
|
||||
SUM( `PER2`*EXCHANGE_RATE ) AS PER2,
|
||||
SUM( `PER3`*EXCHANGE_RATE ) AS PER3,
|
||||
SUM( `PER4`*EXCHANGE_RATE ) AS PER4,
|
||||
SUM( `PER5`*EXCHANGE_RATE ) AS PER5,
|
||||
SUM( `PER6`*EXCHANGE_RATE ) AS PER6,
|
||||
SUM( `PER7`*EXCHANGE_RATE ) AS PER7
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS A
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( `TOTAL`*EXCHANGE_RATE ) AS TOTAL_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS B ON A.CLIENT_NUMBER=B.CLIENT_NUMBER AND
|
||||
A.DIVISION=B.DIVISION AND A.RECEIVABLE_GROUP=B.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=B.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( `TOTAL`*EXCHANGE_RATE ) AS TOTAL_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS C ON A.CLIENT_NUMBER=C.CLIENT_NUMBER
|
||||
AND
|
||||
A.DIVISION=C.DIVISION AND A.RECEIVABLE_GROUP=C.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=C.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( `TOTAL`*EXCHANGE_RATE ) AS TOTAL_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS D ON A.CLIENT_NUMBER=D.CLIENT_NUMBER AND
|
||||
A.DIVISION=D.DIVISION AND A.RECEIVABLE_GROUP=D.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=D.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( BEFORE_DUE_7*EXCHANGE_RATE ) AS BEFORE_DUE_7_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS F ON A.CLIENT_NUMBER=F.CLIENT_NUMBER AND
|
||||
A.DIVISION=F.DIVISION AND A.RECEIVABLE_GROUP=F.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=F.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( BEFORE_DUE_7*EXCHANGE_RATE ) AS BEFORE_DUE_7_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS G ON A.CLIENT_NUMBER=G.CLIENT_NUMBER AND
|
||||
A.DIVISION=G.DIVISION AND A.RECEIVABLE_GROUP=G.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=G.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( BEFORE_DUE_7*EXCHANGE_RATE ) AS BEFORE_DUE_7_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS H ON A.CLIENT_NUMBER=H.CLIENT_NUMBER AND
|
||||
A.DIVISION=H.DIVISION AND A.RECEIVABLE_GROUP=H.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=H.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER1*EXCHANGE_RATE ) AS PER1_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS I ON A.CLIENT_NUMBER=I.CLIENT_NUMBER AND
|
||||
A.DIVISION=I.DIVISION AND A.RECEIVABLE_GROUP=I.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=I.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER1*EXCHANGE_RATE ) AS PER1_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS J ON A.CLIENT_NUMBER=J.CLIENT_NUMBER AND
|
||||
A.DIVISION=J.DIVISION AND A.RECEIVABLE_GROUP=J.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=J.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER1*EXCHANGE_RATE ) AS PER1_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS K ON A.CLIENT_NUMBER=K.CLIENT_NUMBER AND
|
||||
A.DIVISION=K.DIVISION AND A.RECEIVABLE_GROUP=K.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=K.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER2*EXCHANGE_RATE ) AS PER2_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS L ON A.CLIENT_NUMBER=L.CLIENT_NUMBER AND
|
||||
A.DIVISION=L.DIVISION AND A.RECEIVABLE_GROUP=L.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=L.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER2*EXCHANGE_RATE ) AS PER2_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS M ON A.CLIENT_NUMBER=M.CLIENT_NUMBER AND
|
||||
A.DIVISION=M.DIVISION AND A.RECEIVABLE_GROUP=M.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=M.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER2*EXCHANGE_RATE ) AS PER2_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS N ON A.CLIENT_NUMBER=N.CLIENT_NUMBER AND
|
||||
A.DIVISION=N.DIVISION AND A.RECEIVABLE_GROUP=N.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=N.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER3*EXCHANGE_RATE ) AS PER3_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS O ON A.CLIENT_NUMBER=O.CLIENT_NUMBER AND
|
||||
A.DIVISION=O.DIVISION AND A.RECEIVABLE_GROUP=O.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=O.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER3*EXCHANGE_RATE ) AS PER3_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS P ON A.CLIENT_NUMBER=P.CLIENT_NUMBER AND
|
||||
A.DIVISION=P.DIVISION AND A.RECEIVABLE_GROUP=P.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=P.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER3*EXCHANGE_RATE ) AS PER3_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS R ON A.CLIENT_NUMBER=R.CLIENT_NUMBER AND
|
||||
A.DIVISION=R.DIVISION AND A.RECEIVABLE_GROUP=R.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=R.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER4*EXCHANGE_RATE ) AS PER4_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS S ON A.CLIENT_NUMBER=S.CLIENT_NUMBER AND
|
||||
A.DIVISION=S.DIVISION AND A.RECEIVABLE_GROUP=S.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=S.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER4*EXCHANGE_RATE ) AS PER4_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS T ON A.CLIENT_NUMBER=T.CLIENT_NUMBER AND
|
||||
A.DIVISION=T.DIVISION AND A.RECEIVABLE_GROUP=T.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=T.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER4*EXCHANGE_RATE ) AS PER4_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS U ON A.CLIENT_NUMBER=U.CLIENT_NUMBER AND
|
||||
A.DIVISION=U.DIVISION AND A.RECEIVABLE_GROUP=U.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=U.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER5*EXCHANGE_RATE ) AS PER5_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS V ON A.CLIENT_NUMBER=V.CLIENT_NUMBER AND
|
||||
A.DIVISION=V.DIVISION AND A.RECEIVABLE_GROUP=V.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=V.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER5*EXCHANGE_RATE ) AS PER5_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS X ON A.CLIENT_NUMBER=X.CLIENT_NUMBER AND
|
||||
A.DIVISION=X.DIVISION AND A.RECEIVABLE_GROUP=X.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=X.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER5*EXCHANGE_RATE ) AS PER5_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS Z ON A.CLIENT_NUMBER=Z.CLIENT_NUMBER AND
|
||||
A.DIVISION=Z.DIVISION AND A.RECEIVABLE_GROUP=Z.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=Z.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER6*EXCHANGE_RATE ) AS PER6_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS Q ON A.CLIENT_NUMBER=Q.CLIENT_NUMBER AND
|
||||
A.DIVISION=Q.DIVISION AND A.RECEIVABLE_GROUP=Q.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=Q.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER6*EXCHANGE_RATE ) AS PER6_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS Y ON A.CLIENT_NUMBER=Y.CLIENT_NUMBER AND
|
||||
A.DIVISION=Y.DIVISION AND A.RECEIVABLE_GROUP=Y.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=Y.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER6*EXCHANGE_RATE ) AS PER6_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS W ON A.CLIENT_NUMBER=W.CLIENT_NUMBER AND
|
||||
A.DIVISION=W.DIVISION AND A.RECEIVABLE_GROUP=W.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=W.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER7*EXCHANGE_RATE ) AS PER7_MCL
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MCL" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS A1 ON A.CLIENT_NUMBER=A1.CLIENT_NUMBER AND
|
||||
A.DIVISION=A1.DIVISION AND A.RECEIVABLE_GROUP=A1.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=A1.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER7*EXCHANGE_RATE ) AS PER7_MFS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MFS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS B1 ON A.CLIENT_NUMBER=B1.CLIENT_NUMBER AND
|
||||
A.DIVISION=B1.DIVISION AND A.RECEIVABLE_GROUP=B1.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=B1.CREDIT_LIMIT
|
||||
LEFT JOIN
|
||||
(SELECT RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT,SUM( PER7*EXCHANGE_RATE ) AS PER7_MIS
|
||||
FROM `t2`
|
||||
WHERE REF IS NULL AND DIVISION="MIS" GROUP BY RECEIVABLE_GROUP,DIVISION,CLIENT_NUMBER,CREDIT_LIMIT) AS C1 ON A.CLIENT_NUMBER=C1.CLIENT_NUMBER AND
|
||||
A.DIVISION=C1.DIVISION AND A.RECEIVABLE_GROUP=C1.RECEIVABLE_GROUP AND A.CREDIT_LIMIT=C1.CREDIT_LIMIT
|
||||
ORDER BY TOTAL DESC;
|
||||
|
||||
DROP TABLES t1,t2;
|
||||
|
||||
set optimizer_switch=@save_derived_optimizer_switch;
|
||||
|
||||
--echo #
|
||||
|
@ -1043,6 +1043,24 @@ select 1 from t1 where 1 < some (select cast(a as datetime) from t1);
|
||||
drop table t1;
|
||||
SET timestamp=DEFAULT;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #21564557: INCONSISTENT OUTPUT FROM 5.5 AND 5.6
|
||||
--echo # UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%M"
|
||||
--echo #
|
||||
|
||||
SELECT UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%m"));
|
||||
SELECT UNIX_TIMESTAMP('2015-06-00');
|
||||
SELECT UNIX_TIMESTAMP(STR_TO_DATE('0000-00-00 10:30:30', '%Y-%m-%d %h:%i:%s'));
|
||||
|
||||
set sql_mode= 'TRADITIONAL';
|
||||
SELECT @@sql_mode;
|
||||
|
||||
SELECT UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%m"));
|
||||
SELECT UNIX_TIMESTAMP('2015-06-00');
|
||||
SELECT UNIX_TIMESTAMP(STR_TO_DATE('0000-00-00 10:30:30', '%Y-%m-%d %h:%i:%s'));
|
||||
|
||||
set sql_mode= default;
|
||||
|
||||
select time('10:10:10') > 10;
|
||||
select time('10:10:10') > 1010;
|
||||
select time('10:10:09') > 101010;
|
||||
|
@ -39,3 +39,34 @@ SELECT * FROM t2;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1, t2, t3, t4, t5;
|
||||
|
||||
#
|
||||
# Bug#20691429 temporary merge over view under lock tables
|
||||
#
|
||||
create table t1 (c1 varchar(100));
|
||||
create table t2 (c1 varchar(100));
|
||||
create view t3 as select * from t1;
|
||||
insert into t1 values ('ann'), ('alice');
|
||||
insert into t2 values ('bob'), ('brian');
|
||||
create temporary table t4 (c1 varchar(100)) engine=MERGE union=(t2, t1);
|
||||
create temporary table t5 (c1 varchar(100)) engine=MERGE union=(t3, t1);
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
select * from t5;
|
||||
lock tables t1 read, t2 read, t3 read, t4 read;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
select * from t5;
|
||||
select * from t4;
|
||||
unlock tables;
|
||||
drop table t2;
|
||||
create view t2 as select * from t1;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
select * from t4;
|
||||
lock tables t1 read, t2 read, t3 read;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
select * from t4;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
select * from t4;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
select * from t4;
|
||||
unlock tables;
|
||||
drop view t2, t3;
|
||||
drop table t1;
|
||||
|
@ -158,5 +158,30 @@ rename table mysql.ev_bk to mysql.event;
|
||||
|
||||
drop table if exists kv;
|
||||
drop view v1,v2,v3,v4;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# MDEV-9453 mysql_upgrade.exe error when mysql is migrated to mariadb
|
||||
# (mysql_upgrade.exe --upgrade-system-tables fails on fixing views)
|
||||
#
|
||||
|
||||
# Make it look like a MySQL directory again
|
||||
|
||||
rename table mysql.event to mysql.ev_bk;
|
||||
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYI $MYSQLD_DATADIR/mysql/event.MYI
|
||||
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYD $MYSQLD_DATADIR/mysql/event.MYD
|
||||
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.frm $MYSQLD_DATADIR/mysql/event.frm
|
||||
|
||||
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm $MYSQLD_DATADIR/test/v1.frm
|
||||
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v2.frm $MYSQLD_DATADIR/test/v2.frm
|
||||
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v3.frm $MYSQLD_DATADIR/test/v3.frm
|
||||
|
||||
flush tables;
|
||||
|
||||
--replace_result $MYSQLTEST_VARDIR var
|
||||
--exec $MYSQL_UPGRADE --force --upgrade-system-tables 2>&1
|
||||
|
||||
# back to mariadb default
|
||||
drop table mysql.event;
|
||||
rename table mysql.ev_bk to mysql.event;
|
||||
drop view v1,v2,v3;
|
||||
drop table t1;
|
||||
|
9
mysql-test/t/second_frac-9175.test
Normal file
9
mysql-test/t/second_frac-9175.test
Normal file
@ -0,0 +1,9 @@
|
||||
#
|
||||
# MDEV-9175 Query parser tansforms MICROSECOND into SECOND_FRAC, which does not work
|
||||
#
|
||||
|
||||
select timestampdiff(microsecond,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456');
|
||||
explain extended select timestampdiff(microsecond,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456');
|
||||
create view v1 as select timestampdiff(microsecond,'2000-01-01 00:00:00','2001-01-01 00:00:00.123456');
|
||||
select * from v1;
|
||||
drop view v1;
|
@ -277,3 +277,13 @@ select sql_calc_found_rows * from t1 ignore index (i) where i = 0 order by v lim
|
||||
select found_rows();
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# MDEV-9390 Function found_rows() gives incorrect result where the previous SELECT contains ORDER BY clause
|
||||
#
|
||||
create table t1(c1 int);
|
||||
insert into t1 values(1),(2),(3),(4),(5);
|
||||
select * from t1 order by c1 limit 2,1;
|
||||
select found_rows();
|
||||
select sql_calc_found_rows * from t1 order by c1 limit 2,1;
|
||||
select found_rows();
|
||||
drop table t1;
|
||||
|
43
mysql-test/t/ssl_cert_verify.test
Normal file
43
mysql-test/t/ssl_cert_verify.test
Normal file
@ -0,0 +1,43 @@
|
||||
# Want to skip this test from Valgrind execution
|
||||
--source include/no_valgrind_without_big.inc
|
||||
# This test should work in embedded server after we fix mysqltest
|
||||
-- source include/not_embedded.inc
|
||||
-- source include/have_ssl_communication.inc
|
||||
# Save the initial number of concurrent sessions
|
||||
--source include/count_sessions.inc
|
||||
|
||||
let $ssl_verify_fail_path = --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-key=$MYSQL_TEST_DIR/std_data/server-key-verify-fail.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/server-cert-verify-fail.pem;
|
||||
let $ssl_verify_pass_path = --ssl --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-key=$MYSQL_TEST_DIR/std_data/server-key-verify-pass.pem --ssl-cert=$MYSQL_TEST_DIR/std_data/server-cert-verify-pass.pem;
|
||||
|
||||
--echo #T1: Host name (/CN=localhost/) as OU name in the server certificate, server certificate verification should fail.
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--exec echo "restart:" $ssl_verify_fail_path > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL --protocol=tcp --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-verify-server-cert -e "SHOW STATUS like 'Ssl_version'"
|
||||
|
||||
--echo #T2: Host name (localhost) as common name in the server certificate, server certificate verification should pass.
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--exec echo "restart:" $ssl_verify_pass_path > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
--replace_result TLSv1.2 TLS_VERSION TLSv1.1 TLS_VERSION TLSv1 TLS_VERSION
|
||||
--exec $MYSQL --protocol=tcp --ssl-ca=$MYSQL_TEST_DIR/std_data/ca-cert-verify.pem --ssl-verify-server-cert -e "SHOW STATUS like 'Ssl_version'"
|
||||
|
||||
--echo # restart server using restart
|
||||
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--shutdown_server
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--exec echo "restart: " > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
--enable_reconnect
|
||||
--source include/wait_until_connected_again.inc
|
@ -5967,6 +5967,17 @@ EXECUTE stmt;
|
||||
deallocate prepare stmt;
|
||||
drop table t1,t2,t3,t4;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7122
|
||||
--echo # Assertion `0' failed in subselect_hash_sj_engine::init
|
||||
--echo #
|
||||
SET SESSION big_tables=1;
|
||||
CREATE TABLE t1(a char(255) DEFAULT '', KEY(a(10))) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||
INSERT INTO t1 VALUES(0),(0),(0);
|
||||
SELECT * FROM t1 WHERE a IN(SELECT MIN(a) FROM t1);
|
||||
DROP TABLE t1;
|
||||
SET SESSION big_tables=0;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7930: Assertion `table_share->tmp_table != NO_TMP_TABLE ||
|
||||
--echo # m_lock_type != 2' failed in handler::ha_index_read_map
|
||||
|
@ -2704,5 +2704,74 @@ explain
|
||||
select 1 from t1 where _cp932 "1" in (select '1' from t1);
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7823: Server crashes in next_depth_first_tab on nested IN clauses with SQ inside
|
||||
--echo #
|
||||
set @tmp_mdev7823=@@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
CREATE TABLE t1 (f1 INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
|
||||
CREATE TABLE t2 (f2 INT, KEY(f2));
|
||||
INSERT INTO t2 VALUES (8),(0);
|
||||
|
||||
CREATE TABLE t3 (f3 INT);
|
||||
INSERT INTO t3 VALUES (1),(2);
|
||||
|
||||
CREATE TABLE t4 (f4 INT);
|
||||
INSERT INTO t4 VALUES (0),(5);
|
||||
|
||||
explain
|
||||
SELECT * FROM t1, t2, t3 WHERE f2 IN ( f1 IN ( SELECT f4 FROM t4 ) );
|
||||
SELECT * FROM t1, t2, t3 WHERE f2 IN ( f1 IN ( SELECT f4 FROM t4 ) );
|
||||
|
||||
drop table t1,t2,t3,t4;
|
||||
set optimizer_switch= @tmp_mdev7823;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-6859: scalar subqueries in a comparison produced unexpected result
|
||||
--echo #
|
||||
set @tmp_mdev6859=@@optimizer_switch;
|
||||
set optimizer_switch=default;
|
||||
CREATE TABLE t1 (
|
||||
project_number varchar(50) NOT NULL,
|
||||
PRIMARY KEY (project_number)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
INSERT INTO t1 (project_number) VALUES ('aaa'),('bbb');
|
||||
|
||||
CREATE TABLE t2 (
|
||||
id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
project_number varchar(50) NOT NULL,
|
||||
history_date date NOT NULL,
|
||||
country varchar(50) NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
INSERT INTO t2 (id, project_number, history_date, country) VALUES
|
||||
(1, 'aaa', '2014-08-09', 'france'),(2, 'aaa', '2014-09-09', 'singapore');
|
||||
|
||||
CREATE TABLE t3 (
|
||||
region varchar(50) NOT NULL,
|
||||
country varchar(50) NOT NULL
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
INSERT INTO t3 (region, country) VALUES ('apac', 'singapore'),('eame', 'france');
|
||||
|
||||
SELECT SQL_NO_CACHE a.project_number
|
||||
FROM t1 a
|
||||
WHERE ( SELECT z.country
|
||||
FROM t2 z
|
||||
WHERE z.project_number = a.project_number AND z.history_date <= '2014-09-01'
|
||||
ORDER BY z.id DESC LIMIT 1
|
||||
) IN (
|
||||
SELECT r.country
|
||||
FROM t3 r
|
||||
WHERE r.region = 'eame'
|
||||
);
|
||||
|
||||
drop table t1, t2, t3;
|
||||
set optimizer_switch= @tmp_mdev6859;
|
||||
|
||||
# The following command must be the last one the file
|
||||
set optimizer_switch=@subselect_sj_tmp;
|
||||
|
@ -385,6 +385,14 @@ select 1 from t1 as t1_0 inner join t1 as t2 on (t1_0.a <=> now()) join t1 on 1;
|
||||
select 1 from t1 as t1_0 inner join t1 as t2 on (t1_0.a <=> now()) join t1 on 1;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-9511 Valgrind warnings 'Invalid read' in Field_newdate::cmp and Field_newdate::val_str
|
||||
--echo #
|
||||
CREATE TABLE t1 (f1 DATE, f2 VARCHAR(1));
|
||||
INSERT INTO t1 VALUES ('2003-04-27','a'),('1900-01-01','a');
|
||||
SELECT GROUP_CONCAT(f2, IF(f1, f2, f1), f1 ORDER BY 2,1,3) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.1 tests
|
||||
--echo #
|
||||
@ -402,15 +410,6 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a BETWEEN '2001-01-01
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='2001-01-01' AND a IN ('2001-01-01','2001-01-02');
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.1 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Start of 10.1 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-8699 Wrong result for SELECT..WHERE HEX(date_column)!='323030312D30312D3031' AND date_column='2001-01-01x'
|
||||
--echo #
|
||||
|
@ -5491,6 +5491,16 @@ deallocate prepare stmt;
|
||||
|
||||
drop view v1,v2;
|
||||
drop table `t1`;
|
||||
|
||||
#
|
||||
# Bug#19817021
|
||||
#
|
||||
create table t1 (a int, b int);
|
||||
create view v1 as select a+b from t1;
|
||||
alter table v1 check partition p1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
--echo # -----------------------------------------------------------------
|
||||
--echo # -- End of 5.5 tests.
|
||||
--echo # -----------------------------------------------------------------
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user