mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge MariaDB 10.0-base to MariaDB 10.0
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2012, Monty Program Ab
|
||||
|
||||
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
|
||||
|
@ -67,7 +67,7 @@ IF(NOT "${MAJOR_VERSION}" MATCHES "[0-9]+" OR
|
||||
MARK_AS_ADVANCED(VERSION MYSQL_VERSION_ID MYSQL_BASE_VERSION)
|
||||
SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
|
||||
SET(CPACK_PACKAGE_VERSION_MINOR ${MINOR_VERSION})
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION})
|
||||
SET(CPACK_PACKAGE_VERSION_PATCH ${PATCH_VERSION}${EXTRA_VERSION})
|
||||
ENDMACRO()
|
||||
|
||||
# Get mysql version and other interesting variables
|
||||
|
@ -41,7 +41,6 @@
|
||||
#cmakedefine HAVE_FNMATCH_H 1
|
||||
#cmakedefine HAVE_FPU_CONTROL_H 1
|
||||
#cmakedefine HAVE_GRP_H 1
|
||||
#cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1
|
||||
#cmakedefine HAVE_IA64INTRIN_H 1
|
||||
#cmakedefine HAVE_IEEEFP_H 1
|
||||
#cmakedefine HAVE_INTTYPES_H 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
|
||||
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
|
||||
|
@ -30,10 +30,6 @@ SET(YASSL_SOURCES src/buffer.cpp src/cert_wrapper.cpp src/crypto_wrapper.cpp sr
|
||||
src/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp
|
||||
src/yassl_imp.cpp src/yassl_int.cpp)
|
||||
|
||||
IF(HAVE_EXPLICIT_TEMPLATE_INSTANTIATION)
|
||||
SET(YASSL_SOURCES ${YASSL_SOURCES} src/template_instnt.cpp)
|
||||
ENDIF()
|
||||
|
||||
ADD_CONVENIENCE_LIBRARY(yassl ${YASSL_SOURCES})
|
||||
RESTRICT_SYMBOL_EXPORTS(yassl)
|
||||
|
||||
|
@ -993,25 +993,4 @@ x509* PemToDer(FILE* file, CertType type, EncryptedInfo* info)
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
|
||||
namespace yaSSL {
|
||||
template void ysDelete<DiffieHellman::DHImpl>(DiffieHellman::DHImpl*);
|
||||
template void ysDelete<Integer::IntegerImpl>(Integer::IntegerImpl*);
|
||||
template void ysDelete<RSA::RSAImpl>(RSA::RSAImpl*);
|
||||
template void ysDelete<DSS::DSSImpl>(DSS::DSSImpl*);
|
||||
template void ysDelete<RandomPool::RandomImpl>(RandomPool::RandomImpl*);
|
||||
template void ysDelete<AES::AESImpl>(AES::AESImpl*);
|
||||
template void ysDelete<RC4::RC4Impl>(RC4::RC4Impl*);
|
||||
template void ysDelete<DES_EDE::DES_EDEImpl>(DES_EDE::DES_EDEImpl*);
|
||||
template void ysDelete<DES::DESImpl>(DES::DESImpl*);
|
||||
template void ysDelete<HMAC_RMD::HMAC_RMDImpl>(HMAC_RMD::HMAC_RMDImpl*);
|
||||
template void ysDelete<HMAC_SHA::HMAC_SHAImpl>(HMAC_SHA::HMAC_SHAImpl*);
|
||||
template void ysDelete<HMAC_MD5::HMAC_MD5Impl>(HMAC_MD5::HMAC_MD5Impl*);
|
||||
template void ysDelete<RMD::RMDImpl>(RMD::RMDImpl*);
|
||||
template void ysDelete<SHA::SHAImpl>(SHA::SHAImpl*);
|
||||
template void ysDelete<MD5::MD5Impl>(MD5::MD5Impl*);
|
||||
}
|
||||
#endif // HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
|
||||
|
||||
#endif // !USE_CRYPTOPP_LIB
|
||||
|
@ -1,110 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
|
||||
/* Explicit template instantiation requests
|
||||
*/
|
||||
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "handshake.hpp"
|
||||
#include "yassl_int.hpp"
|
||||
#include "crypto_wrapper.hpp"
|
||||
#include "hmac.hpp"
|
||||
#include "md5.hpp"
|
||||
#include "sha.hpp"
|
||||
#include "ripemd.hpp"
|
||||
#include "openssl/ssl.h"
|
||||
|
||||
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
|
||||
|
||||
namespace mySTL {
|
||||
template class list<unsigned char*>;
|
||||
template yaSSL::del_ptr_zero for_each(mySTL::list<unsigned char*>::iterator, mySTL::list<unsigned char*>::iterator, yaSSL::del_ptr_zero);
|
||||
template pair<int, yaSSL::Message* (*)()>* uninit_copy<mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*>(mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*);
|
||||
template pair<int, yaSSL::HandShakeBase* (*)()>* uninit_copy<mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*>(mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*);
|
||||
template void destroy<mySTL::pair<int, yaSSL::Message* (*)()>*>(mySTL::pair<int, yaSSL::Message* (*)()>*, mySTL::pair<int, yaSSL::Message* (*)()>*);
|
||||
template void destroy<mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*>(mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*, mySTL::pair<int, yaSSL::HandShakeBase* (*)()>*);
|
||||
template pair<int, yaSSL::ServerKeyBase* (*)()>* uninit_copy<mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*);
|
||||
template void destroy<mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ServerKeyBase* (*)()>*);
|
||||
template pair<int, yaSSL::ClientKeyBase* (*)()>* uninit_copy<mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*);
|
||||
template class list<TaoCrypt::Signer*>;
|
||||
template class list<yaSSL::SSL_SESSION*>;
|
||||
template class list<yaSSL::input_buffer*>;
|
||||
template class list<yaSSL::output_buffer*>;
|
||||
template class list<yaSSL::x509*>;
|
||||
template class list<yaSSL::Digest*>;
|
||||
template class list<yaSSL::BulkCipher*>;
|
||||
template void destroy<mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*>(mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*, mySTL::pair<int, yaSSL::ClientKeyBase* (*)()>*);
|
||||
template yaSSL::del_ptr_zero for_each<mySTL::list<TaoCrypt::Signer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<TaoCrypt::Signer*>::iterator, mySTL::list<TaoCrypt::Signer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero for_each<mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::SSL_SESSION*>::iterator, mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero for_each<mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::input_buffer*>::iterator, mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero for_each<mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::output_buffer*>::iterator, mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero for_each<mySTL::list<yaSSL::x509*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::x509*>::iterator, mySTL::list<yaSSL::x509*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero for_each<mySTL::list<yaSSL::Digest*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::Digest*>::iterator, mySTL::list<yaSSL::Digest*>::iterator, yaSSL::del_ptr_zero);
|
||||
template yaSSL::del_ptr_zero for_each<mySTL::list<yaSSL::BulkCipher*>::iterator, yaSSL::del_ptr_zero>(mySTL::list<yaSSL::BulkCipher*>::iterator, mySTL::list<yaSSL::BulkCipher*>::iterator, yaSSL::del_ptr_zero);
|
||||
template bool list<yaSSL::ThreadError>::erase(list<yaSSL::ThreadError>::iterator);
|
||||
template void list<yaSSL::ThreadError>::push_back(yaSSL::ThreadError);
|
||||
template void list<yaSSL::ThreadError>::pop_front();
|
||||
template void list<yaSSL::ThreadError>::pop_back();
|
||||
template list<yaSSL::ThreadError>::~list();
|
||||
template pair<int, yaSSL::Message* (*)()>* GetArrayMemory<pair<int, yaSSL::Message* (*)()> >(size_t);
|
||||
template void FreeArrayMemory<pair<int, yaSSL::Message* (*)()> >(pair<int, yaSSL::Message* (*)()>*);
|
||||
template pair<int, yaSSL::HandShakeBase* (*)()>* GetArrayMemory<pair<int, yaSSL::HandShakeBase* (*)()> >(size_t);
|
||||
template void FreeArrayMemory<pair<int, yaSSL::HandShakeBase* (*)()> >(pair<int, yaSSL::HandShakeBase* (*)()>*);
|
||||
template pair<int, yaSSL::ServerKeyBase* (*)()>* GetArrayMemory<pair<int, yaSSL::ServerKeyBase* (*)()> >(size_t);
|
||||
template void FreeArrayMemory<pair<int, yaSSL::ServerKeyBase* (*)()> >(pair<int, yaSSL::ServerKeyBase* (*)()>*);
|
||||
template pair<int, yaSSL::ClientKeyBase* (*)()>* GetArrayMemory<pair<int, yaSSL::ClientKeyBase* (*)()> >(size_t);
|
||||
template void FreeArrayMemory<pair<int, yaSSL::ClientKeyBase* (*)()> >(pair<int, yaSSL::ClientKeyBase* (*)()>*);
|
||||
}
|
||||
|
||||
namespace yaSSL {
|
||||
template void ysDelete<SSL_CTX>(yaSSL::SSL_CTX*);
|
||||
template void ysDelete<SSL>(yaSSL::SSL*);
|
||||
template void ysDelete<BIGNUM>(yaSSL::BIGNUM*);
|
||||
template void ysDelete<unsigned char>(unsigned char*);
|
||||
template void ysDelete<DH>(yaSSL::DH*);
|
||||
template void ysDelete<TaoCrypt::Signer>(TaoCrypt::Signer*);
|
||||
template void ysDelete<SSL_SESSION>(yaSSL::SSL_SESSION*);
|
||||
template void ysDelete<input_buffer>(input_buffer*);
|
||||
template void ysDelete<output_buffer>(output_buffer*);
|
||||
template void ysDelete<x509>(x509*);
|
||||
template void ysDelete<Auth>(Auth*);
|
||||
template void ysDelete<HandShakeBase>(HandShakeBase*);
|
||||
template void ysDelete<ServerKeyBase>(ServerKeyBase*);
|
||||
template void ysDelete<ClientKeyBase>(ClientKeyBase*);
|
||||
template void ysDelete<SSL_METHOD>(SSL_METHOD*);
|
||||
template void ysDelete<DiffieHellman>(DiffieHellman*);
|
||||
template void ysDelete<BulkCipher>(BulkCipher*);
|
||||
template void ysDelete<Digest>(Digest*);
|
||||
template void ysDelete<X509>(X509*);
|
||||
template void ysDelete<Message>(Message*);
|
||||
template void ysDelete<sslFactory>(sslFactory*);
|
||||
template void ysDelete<Sessions>(Sessions*);
|
||||
template void ysDelete<Errors>(Errors*);
|
||||
template void ysArrayDelete<unsigned char>(unsigned char*);
|
||||
template void ysArrayDelete<char>(char*);
|
||||
|
||||
template int min<int>(int, int);
|
||||
template uint16 min<uint16>(uint16, uint16);
|
||||
template unsigned int min<unsigned int>(unsigned int, unsigned int);
|
||||
template unsigned long min<unsigned long>(unsigned long, unsigned long);
|
||||
}
|
||||
|
||||
#endif // HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
|
||||
|
@ -2601,13 +2601,3 @@ extern "C" void yaSSL_CleanUp()
|
||||
yaSSL::errorsInstance = 0;
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
|
||||
namespace mySTL {
|
||||
template yaSSL::yassl_int_cpp_local1::SumData for_each<mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumData>(mySTL::list<yaSSL::input_buffer*>::iterator, mySTL::list<yaSSL::input_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumData);
|
||||
template yaSSL::yassl_int_cpp_local1::SumBuffer for_each<mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer>(mySTL::list<yaSSL::output_buffer*>::iterator, mySTL::list<yaSSL::output_buffer*>::iterator, yaSSL::yassl_int_cpp_local1::SumBuffer);
|
||||
template mySTL::list<yaSSL::SSL_SESSION*>::iterator find_if<mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::yassl_int_cpp_local2::sess_match>(mySTL::list<yaSSL::SSL_SESSION*>::iterator, mySTL::list<yaSSL::SSL_SESSION*>::iterator, yaSSL::yassl_int_cpp_local2::sess_match);
|
||||
template mySTL::list<yaSSL::ThreadError>::iterator find_if<mySTL::list<yaSSL::ThreadError>::iterator, yaSSL::yassl_int_cpp_local2::thr_match>(mySTL::list<yaSSL::ThreadError>::iterator, mySTL::list<yaSSL::ThreadError>::iterator, yaSSL::yassl_int_cpp_local2::thr_match);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -29,10 +29,6 @@ SET(TAOCRYPT_SOURCES src/aes.cpp src/aestables.cpp src/algebra.cpp src/arc4.cpp
|
||||
include/random.hpp include/ripemd.hpp include/rsa.hpp include/sha.hpp
|
||||
include/rabbit.hpp include/hc128.hpp)
|
||||
|
||||
IF(HAVE_EXPLICIT_TEMPLATE_INSTANTIATION)
|
||||
SET(TAOCRYPT_SOURCES ${TAOCRYPT_SOURCES} src/template_instnt.cpp)
|
||||
ENDIF()
|
||||
|
||||
ADD_CONVENIENCE_LIBRARY(taocrypt ${TAOCRYPT_SOURCES})
|
||||
RESTRICT_SYMBOL_EXPORTS(taocrypt)
|
||||
|
||||
|
@ -325,13 +325,3 @@ void AbstractRing::SimultaneousExponentiate(Integer *results,
|
||||
|
||||
} // namespace
|
||||
|
||||
|
||||
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
|
||||
namespace mySTL {
|
||||
template TaoCrypt::WindowSlider* uninit_copy<TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template void destroy<TaoCrypt::WindowSlider*>(TaoCrypt::WindowSlider*, TaoCrypt::WindowSlider*);
|
||||
template TaoCrypt::WindowSlider* GetArrayMemory<TaoCrypt::WindowSlider>(size_t);
|
||||
template void FreeArrayMemory<TaoCrypt::WindowSlider>(TaoCrypt::WindowSlider*);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -3890,17 +3890,5 @@ Integer CRT(const Integer &xp, const Integer &p, const Integer &xq,
|
||||
return p * (u * (xq-xp) % q) + xp;
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
|
||||
#ifndef TAOCRYPT_NATIVE_DWORD_AVAILABLE
|
||||
template hword DivideThreeWordsByTwo<hword, Word>(hword*, hword, hword, Word*);
|
||||
#endif
|
||||
template word DivideThreeWordsByTwo<word, DWord>(word*, word, word, DWord*);
|
||||
#ifdef SSE2_INTRINSICS_AVAILABLE
|
||||
template class AlignedAllocator<word>;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
} // namespace
|
||||
|
||||
|
@ -1,81 +0,0 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
|
||||
/* Explicit template instantiation requests
|
||||
*/
|
||||
|
||||
|
||||
#include "runtime.hpp"
|
||||
#include "integer.hpp"
|
||||
#include "rsa.hpp"
|
||||
#include "sha.hpp"
|
||||
#include "md5.hpp"
|
||||
#include "hmac.hpp"
|
||||
#include "ripemd.hpp"
|
||||
#include "pwdbased.hpp"
|
||||
#include "algebra.hpp"
|
||||
#include "vector.hpp"
|
||||
#include "hash.hpp"
|
||||
|
||||
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
|
||||
namespace TaoCrypt {
|
||||
|
||||
#if defined(SSE2_INTRINSICS_AVAILABLE)
|
||||
template AlignedAllocator<unsigned int>::pointer StdReallocate<unsigned int, AlignedAllocator<unsigned int> >(AlignedAllocator<unsigned int>&, unsigned int*, AlignedAllocator<unsigned int>::size_type, AlignedAllocator<unsigned int>::size_type, bool);
|
||||
#endif
|
||||
|
||||
template class RSA_Decryptor<RSA_BlockType2>;
|
||||
template class RSA_Encryptor<RSA_BlockType1>;
|
||||
template class RSA_Encryptor<RSA_BlockType2>;
|
||||
template void tcDelete<HASH>(HASH*);
|
||||
template void tcDelete<Integer>(Integer*);
|
||||
template void tcArrayDelete<byte>(byte*);
|
||||
template AllocatorWithCleanup<byte>::pointer StdReallocate<byte, AllocatorWithCleanup<byte> >(AllocatorWithCleanup<byte>&, byte*, AllocatorWithCleanup<byte>::size_type, AllocatorWithCleanup<byte>::size_type, bool);
|
||||
template void tcArrayDelete<word>(word*);
|
||||
template AllocatorWithCleanup<word>::pointer StdReallocate<word, AllocatorWithCleanup<word> >(AllocatorWithCleanup<word>&, word*, AllocatorWithCleanup<word>::size_type, AllocatorWithCleanup<word>::size_type, bool);
|
||||
|
||||
#ifndef TAOCRYPT_SLOW_WORD64 // defined when word != word32
|
||||
template void tcArrayDelete<word32>(word32*);
|
||||
template AllocatorWithCleanup<word32>::pointer StdReallocate<word32, AllocatorWithCleanup<word32> >(AllocatorWithCleanup<word32>&, word32*, AllocatorWithCleanup<word32>::size_type, AllocatorWithCleanup<word32>::size_type, bool);
|
||||
#endif
|
||||
|
||||
template void tcArrayDelete<char>(char*);
|
||||
|
||||
template class PBKDF2_HMAC<SHA>;
|
||||
template class HMAC<MD5>;
|
||||
template class HMAC<SHA>;
|
||||
template class HMAC<RIPEMD160>;
|
||||
}
|
||||
|
||||
namespace mySTL {
|
||||
template vector<TaoCrypt::Integer>* uninit_fill_n<vector<TaoCrypt::Integer>*, size_t, vector<TaoCrypt::Integer> >(vector<TaoCrypt::Integer>*, size_t, vector<TaoCrypt::Integer> const&);
|
||||
template void destroy<vector<TaoCrypt::Integer>*>(vector<TaoCrypt::Integer>*, vector<TaoCrypt::Integer>*);
|
||||
template TaoCrypt::Integer* uninit_copy<TaoCrypt::Integer*, TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template TaoCrypt::Integer* uninit_fill_n<TaoCrypt::Integer*, size_t, TaoCrypt::Integer>(TaoCrypt::Integer*, size_t, TaoCrypt::Integer const&);
|
||||
template void destroy<TaoCrypt::Integer*>(TaoCrypt::Integer*, TaoCrypt::Integer*);
|
||||
template TaoCrypt::byte* GetArrayMemory<TaoCrypt::byte>(size_t);
|
||||
template void FreeArrayMemory<TaoCrypt::byte>(TaoCrypt::byte*);
|
||||
template TaoCrypt::Integer* GetArrayMemory<TaoCrypt::Integer>(size_t);
|
||||
template void FreeArrayMemory<TaoCrypt::Integer>(TaoCrypt::Integer*);
|
||||
template vector<TaoCrypt::Integer>* GetArrayMemory<vector<TaoCrypt::Integer> >(size_t);
|
||||
template void FreeArrayMemory<vector<TaoCrypt::Integer> >(vector<TaoCrypt::Integer>*);
|
||||
template void FreeArrayMemory<void>(void*);
|
||||
}
|
||||
|
||||
#endif
|
@ -283,6 +283,9 @@ enum ha_base_keytype {
|
||||
#define HA_USES_BLOCK_SIZE ((uint) 32768)
|
||||
#define HA_SORT_ALLOWS_SAME 512 /* Intern bit when sorting records */
|
||||
|
||||
/* This flag can be used only in KEY::ext_key_flags */
|
||||
#define HA_EXT_NOSAME 131072
|
||||
|
||||
/* These flags can be added to key-seg-flag */
|
||||
|
||||
#define HA_SPACE_PACK 1 /* Pack space in key-seg */
|
||||
|
@ -47,9 +47,6 @@ extern "C" {
|
||||
#ifndef MYSQL_ABI_CHECK
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
#ifdef __LCC__
|
||||
#include <winsock2.h> /* For windows */
|
||||
#endif
|
||||
typedef char my_bool;
|
||||
#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__)
|
||||
#define __WIN__
|
||||
@ -61,11 +58,13 @@ typedef char my_bool;
|
||||
#endif
|
||||
|
||||
#ifndef my_socket_defined
|
||||
#ifdef __WIN__
|
||||
#define my_socket SOCKET
|
||||
#if defined (_WIN64)
|
||||
#define my_socket unsigned long long
|
||||
#elif defined (_WIN32)
|
||||
#define my_socket unsigned int
|
||||
#else
|
||||
typedef int my_socket;
|
||||
#endif /* __WIN__ */
|
||||
#endif /* _WIN64 */
|
||||
#endif /* my_socket_defined */
|
||||
#endif /* MY_GLOBAL_INCLUDED */
|
||||
|
||||
|
@ -57,9 +57,6 @@
|
||||
#define LOCAL_HOST "localhost"
|
||||
#define LOCAL_HOST_NAMEDPIPE "."
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#if defined(__WIN__) && !defined( _CUSTOMCONFIG_)
|
||||
#define MYSQL_NAMEDPIPE "MySQL"
|
||||
@ -128,6 +125,8 @@ enum enum_server_command
|
||||
reserved by MySQL Cluster */
|
||||
#define FIELD_FLAGS_COLUMN_FORMAT 24 /* Field column format, bit 24-25,
|
||||
reserved by MySQL Cluster */
|
||||
#define HAS_EXPLICIT_VALUE (1 << 26) /* An INSERT/UPDATE operation supplied
|
||||
an explicit default value */
|
||||
|
||||
#define REFRESH_GRANT 1 /* Refresh grant tables */
|
||||
#define REFRESH_LOG 2 /* Start on new log file */
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (c) 2010, 2012, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2011, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2011, 2012, Monty Program Ab
|
||||
|
||||
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
|
||||
|
@ -1004,7 +1004,7 @@ bool Protocol::send_result_set_metadata(List<Item> *list, uint flags)
|
||||
thd_cs->mbmaxlen);
|
||||
}
|
||||
client_field->type= server_field.type;
|
||||
client_field->flags= server_field.flags;
|
||||
client_field->flags= (uint16) server_field.flags;
|
||||
client_field->decimals= server_field.decimals;
|
||||
client_field->db_length= strlen(client_field->db);
|
||||
client_field->table_length= strlen(client_field->table);
|
||||
|
@ -94,8 +94,10 @@ if (`SELECT @@global.binlog_format = 'STATEMENT'`)
|
||||
#flush the logs before the test
|
||||
connection slave;
|
||||
FLUSH LOGS;
|
||||
source include/wait_for_binlog_checkpoint.inc;
|
||||
connection master;
|
||||
FLUSH LOGS;
|
||||
source include/wait_for_binlog_checkpoint.inc;
|
||||
}
|
||||
|
||||
CREATE TABLE t1(a int, UNIQUE(a));
|
||||
|
@ -43,6 +43,7 @@ let $binlog_limit= 1,4;
|
||||
source include/show_binlog_events.inc;
|
||||
let $binlog_limit=;
|
||||
flush logs;
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
|
||||
# We need an extra update before doing save_master_pos.
|
||||
# Otherwise, an unlikely scenario may occur:
|
||||
|
@ -41,8 +41,10 @@ INSERT INTO t1 VALUES (3);
|
||||
#
|
||||
|
||||
FLUSH LOGS;
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
-- connection master
|
||||
FLUSH LOGS;
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
--let $is_relay_log= 0
|
||||
|
1166
mysql-test/include/function_defaults.inc
Normal file
1166
mysql-test/include/function_defaults.inc
Normal file
File diff suppressed because it is too large
Load Diff
94
mysql-test/include/function_defaults_notembedded.inc
Normal file
94
mysql-test/include/function_defaults_notembedded.inc
Normal file
@ -0,0 +1,94 @@
|
||||
SET TIME_ZONE = "+00:00";
|
||||
|
||||
--echo #
|
||||
--echo # Test of INSERT DELAYED ... SET ...
|
||||
--echo #
|
||||
|
||||
--echo # 2011-04-19 08:02:40 UTC
|
||||
SET TIMESTAMP = 1303200160.123456;
|
||||
|
||||
eval CREATE TABLE t1 ( a INT, b $timestamp NOT NULL DEFAULT CURRENT_$timestamp ON UPDATE CURRENT_$timestamp);
|
||||
|
||||
INSERT DELAYED INTO t1 SET a = 1;
|
||||
FLUSH TABLE t1;
|
||||
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t1 WHERE b = 0;
|
||||
|
||||
INSERT DELAYED INTO t1 SET a = 2, b = '1980-01-02 10:20:30.405060';
|
||||
FLUSH TABLE t1;
|
||||
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Test of INSERT DELAYED ... VALUES ...
|
||||
--echo #
|
||||
|
||||
--echo # 2011-04-19 08:04:01 UTC
|
||||
SET TIMESTAMP = 1303200241.234567;
|
||||
|
||||
eval CREATE TABLE t1 ( a INT, b $timestamp NOT NULL DEFAULT CURRENT_$timestamp ON UPDATE CURRENT_$timestamp);
|
||||
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (1);
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
INSERT DELAYED INTO t1 VALUES (2, '1977-12-19 12:34:56.789123');
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Test of a delayed insert handler servicing two insert operations
|
||||
--echo # with different sets of active defaults.
|
||||
--echo #
|
||||
eval CREATE TABLE t1 ( a INT, b $timestamp NOT NULL DEFAULT CURRENT_$timestamp ON UPDATE CURRENT_$timestamp);
|
||||
|
||||
--connect(con1, localhost, root,,)
|
||||
--echo # 2011-04-19 08:04:01 UTC
|
||||
SET TIMESTAMP = 1303200241.345678;
|
||||
SET debug_sync = 'before_write_delayed SIGNAL parked WAIT_FOR go';
|
||||
--send INSERT DELAYED INTO t1 ( a ) VALUES (1), (2), (3)
|
||||
|
||||
--connection default
|
||||
SET debug_sync = 'now WAIT_FOR parked';
|
||||
|
||||
--connect(con2, localhost, root,,)
|
||||
--echo # 2011-04-19 08:04:01 UTC
|
||||
SET TIME_ZONE="+03:00";
|
||||
SET TIMESTAMP = 1303200241.456789;
|
||||
--send INSERT DELAYED INTO t1 ( a, b ) VALUES (4, '1977-12-19 12:34:56.789123'), (5, '1977-12-19 12:34:57.891234'), (6, '1977-12-19 12:34:58.912345')
|
||||
|
||||
--connection default
|
||||
SET debug_sync = 'now SIGNAL go';
|
||||
|
||||
--let $wait_condition= SELECT COUNT(*) = 6 FROM t1
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--sorted_result
|
||||
SELECT * FROM t1;
|
||||
|
||||
--disconnect con1
|
||||
--disconnect con2
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Test of early activation of function defaults.
|
||||
--echo #
|
||||
|
||||
eval CREATE TABLE t1 ( a INT, b $timestamp NOT NULL DEFAULT CURRENT_$timestamp ON UPDATE CURRENT_$timestamp);
|
||||
|
||||
SET TIMESTAMP = 1317235172.987654; # 2011-09-28 18:39:32 UTC
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (1), (2), (3);
|
||||
|
||||
SET TIMESTAMP = 385503754.876543; # 1982-03-20 20:22:34 UTC
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (4), (5), (6);
|
||||
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
@ -1,5 +1,3 @@
|
||||
--require r/have_debug_sync.require
|
||||
disable_query_log;
|
||||
let $value= query_get_value(SHOW VARIABLES LIKE 'debug_sync', Value, 1);
|
||||
eval SELECT ('$value' LIKE 'ON %') AS debug_sync;
|
||||
enable_query_log;
|
||||
if (`select @@debug_sync not like 'ON %'`) {
|
||||
--skip Needs a debug_sync enabled
|
||||
}
|
||||
|
@ -4,6 +4,9 @@ plugin-load-add=$HA_INNODB_SO
|
||||
innodb
|
||||
innodb-cmpmem
|
||||
innodb-trx
|
||||
innodb-buffer-pool-stats
|
||||
innodb-buffer-page
|
||||
innodb-buffer-page-lru
|
||||
|
||||
[xtradb_plugin]
|
||||
ignore-builtin-innodb
|
||||
@ -11,9 +14,15 @@ plugin-load-add=$HA_XTRADB_SO
|
||||
innodb
|
||||
innodb-cmpmem
|
||||
innodb-trx
|
||||
innodb-buffer-pool-stats
|
||||
innodb-buffer-page
|
||||
innodb-buffer-page-lru
|
||||
|
||||
[xtradb]
|
||||
innodb
|
||||
innodb-cmpmem
|
||||
innodb-trx
|
||||
innodb-metrics
|
||||
innodb-buffer-pool-stats
|
||||
innodb-buffer-page
|
||||
innodb-buffer-page-lru
|
||||
|
53
mysql-test/include/wait_for_binlog_checkpoint.inc
Normal file
53
mysql-test/include/wait_for_binlog_checkpoint.inc
Normal file
@ -0,0 +1,53 @@
|
||||
# include/wait_for_binlog_checkpoint.inc
|
||||
#
|
||||
# SUMMARY
|
||||
#
|
||||
# Wait until binlog checkpoint has been logged for current binlog file.
|
||||
# This is useful to avoid races with output difference for binlog
|
||||
# checkpoints, as these are logged asynchronously from the binlog
|
||||
# background thread.
|
||||
#
|
||||
# USAGE:
|
||||
#
|
||||
# --source include/wait_for_binlog_checkpoint.inc
|
||||
|
||||
let $_wait_count= 300;
|
||||
|
||||
let $_found= 0;
|
||||
|
||||
while ($_wait_count)
|
||||
{
|
||||
dec $_wait_count;
|
||||
let $_cur_binlog= query_get_value(SHOW MASTER STATUS, File, 1);
|
||||
let $_more= 1;
|
||||
let $_row= 1;
|
||||
while ($_more)
|
||||
{
|
||||
let $_event= query_get_value(SHOW BINLOG EVENTS IN "$_cur_binlog", Event_type, $_row);
|
||||
if ($_event == "No such row")
|
||||
{
|
||||
let $_more= 0;
|
||||
}
|
||||
if ($_event == "Binlog_checkpoint")
|
||||
{
|
||||
let $_info= query_get_value(SHOW BINLOG EVENTS IN "$_cur_binlog", Info, $_row);
|
||||
if (`SELECT INSTR("$_info", "$_cur_binlog") != 0`)
|
||||
{
|
||||
let $_more= 0;
|
||||
let $_wait_count= 0;
|
||||
let $_found= 1;
|
||||
}
|
||||
}
|
||||
inc $_row;
|
||||
}
|
||||
if ($_wait_count)
|
||||
{
|
||||
real_sleep 0.1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$_found)
|
||||
{
|
||||
eval SHOW BINLOG EVENTS IN "$_cur_binlog";
|
||||
--die ERROR: failed while waiting for binlog checkpoint $_cur_binlog
|
||||
}
|
@ -55,9 +55,9 @@ ERROR 42000: Incorrect table name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int);
|
||||
ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long
|
||||
create table t1 (a datetime default now());
|
||||
ERROR 42000: Invalid default value for 'a'
|
||||
drop table t1;
|
||||
create table t1 (a datetime on update now());
|
||||
ERROR HY000: Invalid ON UPDATE clause for 'a' column
|
||||
drop table t1;
|
||||
create table t1 (a int default 100 auto_increment);
|
||||
ERROR 42000: Invalid default value for 'a'
|
||||
create table t1 (a tinyint default 1000);
|
||||
|
@ -282,4 +282,74 @@ CREATE TABLE t1 ( i INT );
|
||||
INSERT INTO t1 VALUES ( (SELECT 1 FROM ( SELECT * FROM t1 ) as a) );
|
||||
drop table t1;
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# MDEV-3801 Reproducible sub select join crash on 5.3.8 and 5.3.9
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
a char(2) DEFAULT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY a (a)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 (a)
|
||||
VALUES (NULL),(NULL),(NULL),('AB'),(NULL),('CD'),(NULL),(NULL);
|
||||
INSERT INTO t1 SELECT NULL, a1.a FROM t1 a1, t1 a2, t1 a3, t1 a4, t1 a5;
|
||||
CREATE TABLE t2 (
|
||||
pk int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||
INSERT INTO t2 SELECT NULL FROM t2 a1, t2 a2, t2 a3, t2 a4, t2 a5;
|
||||
CREATE TABLE t3 (
|
||||
pk int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||
INSERT INTO t3 SELECT NULL FROM t3 a1, t3 a2, t3 a3, t3 a4, t3 a5;
|
||||
CREATE TABLE t4 (
|
||||
a char(2) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t4 VALUES ('CD');
|
||||
set @@tmp_table_size=8192;
|
||||
EXPLAIN
|
||||
SELECT * FROM t3 AS tx JOIN t2 AS ty ON (tx.pk = ty.pk)
|
||||
WHERE
|
||||
tx.pk IN
|
||||
(SELECT *
|
||||
FROM (SELECT DISTINCT ta.pk
|
||||
FROM t3 AS ta
|
||||
JOIN t2 AS tb ON (ta.pk = tb.pk)
|
||||
JOIN t1 AS tc ON (tb.pk = tc.pk)
|
||||
JOIN t4 AS td ON tc.a = td.a) tu)
|
||||
limit 10;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL #
|
||||
1 PRIMARY tx eq_ref PRIMARY PRIMARY 4 tu.pk # Using index
|
||||
1 PRIMARY ty eq_ref PRIMARY PRIMARY 4 tu.pk # Using index
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL #
|
||||
3 DERIVED td system PRIMARY NULL NULL NULL # Using temporary
|
||||
3 DERIVED tc ref PRIMARY,a a 3 const #
|
||||
3 DERIVED ta eq_ref PRIMARY PRIMARY 4 test.tc.pk # Using index
|
||||
3 DERIVED tb eq_ref PRIMARY PRIMARY 4 test.tc.pk # Using index; Distinct
|
||||
SELECT * FROM t3 AS tX JOIN t2 AS tY ON (tX.pk = tY.pk)
|
||||
WHERE
|
||||
tX.pk IN
|
||||
(SELECT *
|
||||
FROM (SELECT DISTINCT tA.pk
|
||||
FROM t3 AS tA
|
||||
JOIN t2 AS tB ON (tA.pk = tB.pk)
|
||||
JOIN t1 AS tC ON (tB.pk = tC.pk)
|
||||
JOIN t4 AS tD ON tC.a = tD.a) tU)
|
||||
limit 10;
|
||||
pk pk
|
||||
6 6
|
||||
16 16
|
||||
24 24
|
||||
32 32
|
||||
40 40
|
||||
48 48
|
||||
56 56
|
||||
64 64
|
||||
72 72
|
||||
80 80
|
||||
drop table t1, t2, t3, t4;
|
||||
set optimizer_switch=@exit_optimizer_switch;
|
||||
|
3067
mysql-test/r/function_defaults.result
Normal file
3067
mysql-test/r/function_defaults.result
Normal file
File diff suppressed because it is too large
Load Diff
171
mysql-test/r/function_defaults_notembedded.result
Normal file
171
mysql-test/r/function_defaults_notembedded.result
Normal file
@ -0,0 +1,171 @@
|
||||
#
|
||||
# Test of function defaults for non-embedded server.
|
||||
#
|
||||
#
|
||||
# Function defaults run 1. No microsecond precision.
|
||||
#
|
||||
SET TIME_ZONE = "+00:00";
|
||||
#
|
||||
# Test of INSERT DELAYED ... SET ...
|
||||
#
|
||||
# 2011-04-19 08:02:40 UTC
|
||||
SET TIMESTAMP = 1303200160.123456;
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
|
||||
INSERT DELAYED INTO t1 SET a = 1;
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:02:40
|
||||
SELECT * FROM t1 WHERE b = 0;
|
||||
a b
|
||||
INSERT DELAYED INTO t1 SET a = 2, b = '1980-01-02 10:20:30.405060';
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:02:40
|
||||
2 1980-01-02 10:20:30
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test of INSERT DELAYED ... VALUES ...
|
||||
#
|
||||
# 2011-04-19 08:04:01 UTC
|
||||
SET TIMESTAMP = 1303200241.234567;
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (1);
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:04:01
|
||||
INSERT DELAYED INTO t1 VALUES (2, '1977-12-19 12:34:56.789123');
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:04:01
|
||||
2 1977-12-19 12:34:56
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test of a delayed insert handler servicing two insert operations
|
||||
# with different sets of active defaults.
|
||||
#
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
|
||||
# 2011-04-19 08:04:01 UTC
|
||||
SET TIMESTAMP = 1303200241.345678;
|
||||
SET debug_sync = 'before_write_delayed SIGNAL parked WAIT_FOR go';
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (1), (2), (3);
|
||||
SET debug_sync = 'now WAIT_FOR parked';
|
||||
# 2011-04-19 08:04:01 UTC
|
||||
SET TIME_ZONE="+03:00";
|
||||
SET TIMESTAMP = 1303200241.456789;
|
||||
INSERT DELAYED INTO t1 ( a, b ) VALUES (4, '1977-12-19 12:34:56.789123'), (5, '1977-12-19 12:34:57.891234'), (6, '1977-12-19 12:34:58.912345');
|
||||
SET debug_sync = 'now SIGNAL go';
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:04:01
|
||||
2 2011-04-19 08:04:01
|
||||
3 2011-04-19 08:04:01
|
||||
4 1977-12-19 09:34:56
|
||||
5 1977-12-19 09:34:57
|
||||
6 1977-12-19 09:34:58
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test of early activation of function defaults.
|
||||
#
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
|
||||
SET TIMESTAMP = 1317235172.987654;
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (1), (2), (3);
|
||||
SET TIMESTAMP = 385503754.876543;
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (4), (5), (6);
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-09-28 18:39:32
|
||||
2 2011-09-28 18:39:32
|
||||
3 2011-09-28 18:39:32
|
||||
4 1982-03-20 20:22:34
|
||||
5 1982-03-20 20:22:34
|
||||
6 1982-03-20 20:22:34
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Function defaults run 2. Six digits scale on seconds precision.
|
||||
#
|
||||
SET TIME_ZONE = "+00:00";
|
||||
#
|
||||
# Test of INSERT DELAYED ... SET ...
|
||||
#
|
||||
# 2011-04-19 08:02:40 UTC
|
||||
SET TIMESTAMP = 1303200160.123456;
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6));
|
||||
INSERT DELAYED INTO t1 SET a = 1;
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:02:40.123456
|
||||
SELECT * FROM t1 WHERE b = 0;
|
||||
a b
|
||||
INSERT DELAYED INTO t1 SET a = 2, b = '1980-01-02 10:20:30.405060';
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:02:40.123456
|
||||
2 1980-01-02 10:20:30.405060
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test of INSERT DELAYED ... VALUES ...
|
||||
#
|
||||
# 2011-04-19 08:04:01 UTC
|
||||
SET TIMESTAMP = 1303200241.234567;
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6));
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (1);
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:04:01.234567
|
||||
INSERT DELAYED INTO t1 VALUES (2, '1977-12-19 12:34:56.789123');
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:04:01.234567
|
||||
2 1977-12-19 12:34:56.789123
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test of a delayed insert handler servicing two insert operations
|
||||
# with different sets of active defaults.
|
||||
#
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6));
|
||||
# 2011-04-19 08:04:01 UTC
|
||||
SET TIMESTAMP = 1303200241.345678;
|
||||
SET debug_sync = 'before_write_delayed SIGNAL parked WAIT_FOR go';
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (1), (2), (3);
|
||||
SET debug_sync = 'now WAIT_FOR parked';
|
||||
# 2011-04-19 08:04:01 UTC
|
||||
SET TIME_ZONE="+03:00";
|
||||
SET TIMESTAMP = 1303200241.456789;
|
||||
INSERT DELAYED INTO t1 ( a, b ) VALUES (4, '1977-12-19 12:34:56.789123'), (5, '1977-12-19 12:34:57.891234'), (6, '1977-12-19 12:34:58.912345');
|
||||
SET debug_sync = 'now SIGNAL go';
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-04-19 08:04:01.345678
|
||||
2 2011-04-19 08:04:01.345678
|
||||
3 2011-04-19 08:04:01.345678
|
||||
4 1977-12-19 09:34:56.789123
|
||||
5 1977-12-19 09:34:57.891234
|
||||
6 1977-12-19 09:34:58.912345
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test of early activation of function defaults.
|
||||
#
|
||||
CREATE TABLE t1 ( a INT, b TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6));
|
||||
SET TIMESTAMP = 1317235172.987654;
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (1), (2), (3);
|
||||
SET TIMESTAMP = 385503754.876543;
|
||||
INSERT DELAYED INTO t1 ( a ) VALUES (4), (5), (6);
|
||||
FLUSH TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
1 2011-09-28 18:39:32.987654
|
||||
2 2011-09-28 18:39:32.987654
|
||||
3 2011-09-28 18:39:32.987654
|
||||
4 1982-03-20 20:22:34.876543
|
||||
5 1982-03-20 20:22:34.876543
|
||||
6 1982-03-20 20:22:34.876543
|
||||
DROP TABLE t1;
|
@ -2119,6 +2119,17 @@ FROM t2
|
||||
GROUP BY 1;
|
||||
a
|
||||
DROP TABLE t1, t2;
|
||||
FLUSH STATUS;
|
||||
CREATE TABLE t1 (f1 INT, f2 decimal(20,1), f3 blob);
|
||||
INSERT INTO t1 values(11,NULL,'blob'),(11,NULL,'blob');
|
||||
SELECT f3, MIN(f2) FROM t1 GROUP BY f1 LIMIT 1;
|
||||
f3 MIN(f2)
|
||||
blob NULL
|
||||
DROP TABLE t1;
|
||||
the value below *must* be 1
|
||||
show status like 'Created_tmp_disk_tables';
|
||||
Variable_name Value
|
||||
Created_tmp_disk_tables 1
|
||||
# End of 5.3 tests
|
||||
#
|
||||
# Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00
|
||||
|
@ -1,2 +0,0 @@
|
||||
debug_sync
|
||||
1
|
@ -1678,6 +1678,12 @@ SELECT length(CAST(b AS CHAR)) FROM ubig;
|
||||
length(CAST(b AS CHAR))
|
||||
20
|
||||
DROP TABLE ubig;
|
||||
select 1 from information_schema.tables where table_schema=repeat('a', 2000);
|
||||
1
|
||||
grant usage on *.* to mysqltest_1@localhost;
|
||||
select 1 from information_schema.tables where table_schema=repeat('a', 2000);
|
||||
1
|
||||
drop user mysqltest_1@localhost;
|
||||
End of 5.1 tests.
|
||||
#
|
||||
# Additional test for WL#3726 "DDL locking for all metadata objects"
|
||||
|
@ -613,6 +613,26 @@ Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
#
|
||||
# Bug mdev-3851: ref access used instead of expected eq_ref access
|
||||
# when extended_keys=on
|
||||
#
|
||||
create table t0 (a int);
|
||||
insert into t0 values (1), (2), (3), (4), (5);
|
||||
create index i_p_size on part(p_size);
|
||||
set optimizer_switch='extended_keys=on';
|
||||
explain
|
||||
select * from t0, part ignore index (primary)
|
||||
where p_partkey=t0.a and p_size=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t0 ALL NULL NULL NULL NULL 5 Using where
|
||||
1 SIMPLE part eq_ref i_p_size i_p_size 9 const,dbt3_s001.t0.a 1
|
||||
select * from t0, part ignore index (primary)
|
||||
where p_partkey=t0.a and p_size=1;
|
||||
a p_partkey p_name p_mfgr p_brand p_type p_size p_container p_retailprice p_comment
|
||||
2 2 blush rosy metallic lemon navajo Manufacturer#1 Brand#13 LARGE BRUSHED BRASS 1 LG CASE 902 final platelets hang f
|
||||
drop table t0;
|
||||
drop index i_p_size on part;
|
||||
DROP DATABASE dbt3_s001;
|
||||
use test;
|
||||
#
|
||||
@ -724,5 +744,33 @@ SELECT * FROM t1, t2 WHERE b=a;
|
||||
a b
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
# Bug mdev-3888: INSERT with UPDATE on duplicate keys
|
||||
# with extended_keys=on
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
c1 bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
c2 bigint(20) unsigned NOT NULL,
|
||||
c3 bigint(20) unsigned NOT NULL,
|
||||
c4 varchar(128) DEFAULT NULL,
|
||||
PRIMARY KEY (c1),
|
||||
UNIQUE KEY uq (c2,c3),
|
||||
KEY c3 (c3),
|
||||
KEY c4 (c4)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
set session optimizer_switch='extended_keys=off';
|
||||
INSERT INTO t1 (c2, c3, c4) VALUES (58291525, 2580, 'foobar')
|
||||
ON DUPLICATE KEY UPDATE c4 = VALUES(c4);
|
||||
INSERT INTO t1 (c2, c3, c4) VALUES (58291525, 2580, 'foobar')
|
||||
ON DUPLICATE KEY UPDATE c4 = VALUES(c4);
|
||||
DELETE FROM t1;
|
||||
set session optimizer_switch='extended_keys=on';
|
||||
INSERT INTO t1 (c2, c3, c4) VALUES (58291525, 2580, 'foobar')
|
||||
ON DUPLICATE KEY UPDATE c4 = VALUES(c4);
|
||||
INSERT INTO t1 (c2, c3, c4) VALUES (58291525, 2580, 'foobar')
|
||||
ON DUPLICATE KEY UPDATE c4 = VALUES(c4);
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
DROP TABLE t1;
|
||||
set optimizer_switch=@save_ext_key_optimizer_switch;
|
||||
SET SESSION STORAGE_ENGINE=DEFAULT;
|
||||
|
@ -1,2 +0,0 @@
|
||||
instr(version(), "debug") > 0
|
||||
1
|
@ -44,7 +44,7 @@ select @@log_slow_verbosity;
|
||||
innodb
|
||||
show fields from mysql.slow_log;
|
||||
Field Type Null Key Default Extra
|
||||
start_time timestamp(6) NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
|
||||
start_time timestamp(6) NO CURRENT_TIMESTAMP(6) on update CURRENT_TIMESTAMP
|
||||
user_host mediumtext NO NULL
|
||||
query_time time(6) NO NULL
|
||||
lock_time time(6) NO NULL
|
||||
|
@ -53,7 +53,7 @@ ERROR HY000: You can't use locks with log tables.
|
||||
show create table mysql.general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
@ -62,7 +62,7 @@ general_log CREATE TABLE `general_log` (
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
|
||||
show fields from mysql.general_log;
|
||||
Field Type Null Key Default Extra
|
||||
event_time timestamp(6) NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
|
||||
event_time timestamp(6) NO CURRENT_TIMESTAMP(6) on update CURRENT_TIMESTAMP
|
||||
user_host mediumtext NO NULL
|
||||
thread_id int(11) NO NULL
|
||||
server_id int(10) unsigned NO NULL
|
||||
@ -71,7 +71,7 @@ argument mediumtext NO NULL
|
||||
show create table mysql.slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
@ -85,7 +85,7 @@ slow_log CREATE TABLE `slow_log` (
|
||||
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
|
||||
show fields from mysql.slow_log;
|
||||
Field Type Null Key Default Extra
|
||||
start_time timestamp(6) NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
|
||||
start_time timestamp(6) NO CURRENT_TIMESTAMP(6) on update CURRENT_TIMESTAMP
|
||||
user_host mediumtext NO NULL
|
||||
query_time time(6) NO NULL
|
||||
lock_time time(6) NO NULL
|
||||
@ -164,7 +164,7 @@ set global slow_query_log='OFF';
|
||||
show create table mysql.general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
@ -174,7 +174,7 @@ general_log CREATE TABLE `general_log` (
|
||||
show create table mysql.slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
@ -191,7 +191,7 @@ alter table mysql.slow_log engine=myisam;
|
||||
show create table mysql.general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
@ -201,7 +201,7 @@ general_log CREATE TABLE `general_log` (
|
||||
show create table mysql.slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
|
@ -5239,7 +5239,7 @@ Error 1146 Table 'mysql.event' doesn't exist
|
||||
SHOW CREATE TABLE mysql.general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
@ -5249,7 +5249,7 @@ general_log CREATE TABLE `general_log` (
|
||||
SHOW CREATE TABLE mysql.slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
|
@ -83,7 +83,7 @@ Ssl_cipher AES128-SHA
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher AES128-SHA
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: SSL_CTX_new failed
|
||||
mysqltest: Could not open connection 'default': 2026 SSL connection error: Failed to set ciphers to use
|
||||
CREATE TABLE t1(a int);
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
|
||||
|
@ -2830,3 +2830,79 @@ f0 f1 f2
|
||||
set sort_buffer_size= @save_sort_buffer_size;
|
||||
DROP TABLE t1;
|
||||
End of 5.3 tests
|
||||
#
|
||||
# Bug 54599: discarded fast range scan for query with
|
||||
# GROUP BY + ORDER BY + LIMIT
|
||||
#
|
||||
create table t0 (a int);
|
||||
insert into t0 values (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
|
||||
create table t1 (a int, b int, index idx1(a,b), index idx2(b,a));
|
||||
insert into t1
|
||||
select 1000*s4.a+100*s3.a+10*s2.a + s1.a, 1000*s4.a+100*s3.a+10*s2.a+s1.a
|
||||
from t0 s1, t0 s2, t0 s3, t0 s4;
|
||||
analyze table t1;
|
||||
explain
|
||||
select b, count(*) num_cnt from t1
|
||||
where a > 9750 group by b order by num_cnt;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx1 idx1 5 NULL 502 Using where; Using index; Using temporary; Using filesort
|
||||
flush status;
|
||||
select b, count(*) num_cnt from t1
|
||||
where a > 9750 group by b order by num_cnt;
|
||||
show status like '%Handler_read%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 250
|
||||
Handler_read_last 0
|
||||
Handler_read_next 249
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 249
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 250
|
||||
explain
|
||||
select b, count(*) num_cnt from t1
|
||||
where a > 9750 group by b order by num_cnt limit 1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range idx1 idx1 5 NULL 502 Using where; Using index; Using temporary; Using filesort
|
||||
flush status;
|
||||
select b, count(*) num_cnt from t1
|
||||
where a > 9750 group by b order by num_cnt limit 1;
|
||||
show status like '%Handler_read%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 250
|
||||
Handler_read_last 0
|
||||
Handler_read_next 249
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 1
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 250
|
||||
drop table t0, t1;
|
||||
#
|
||||
# LP bug #1002508 : the number of expected rows to be examined is off
|
||||
# (bug #13528826)
|
||||
#
|
||||
CREATE TABLE t1(a int PRIMARY KEY, b int) ENGINE=myisam;
|
||||
INSERT INTO t1 VALUES
|
||||
(5, 10), (2, 70), (7, 80), (6, 20), (1, 50), (9, 40), (8, 30), (3, 60);
|
||||
CREATE TABLE t2 (p int, a int, INDEX i_a(a)) ENGINE=myisam;
|
||||
INSERT INTO t2 VALUES
|
||||
(103, 7), (109, 3), (102, 3), (108, 1), (106, 3),
|
||||
(107, 7), (105, 1), (101, 3), (100, 7), (110, 1);
|
||||
EXPLAIN
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.a=t2.a ORDER BY t1.a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 8 Using index
|
||||
1 SIMPLE t2 ref i_a i_a 5 test.t1.a 2 Using index
|
||||
EXPLAIN
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.a=t2.a ORDER BY t1.a LIMIT 8;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 4 Using index
|
||||
1 SIMPLE t2 ref i_a i_a 5 test.t1.a 2 Using index
|
||||
EXPLAIN
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.a=t2.a ORDER BY t1.a LIMIT 100;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL PRIMARY 4 NULL 8 Using index
|
||||
1 SIMPLE t2 ref i_a i_a 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.5 tests
|
||||
|
@ -2394,6 +2394,12 @@ HAVING b > geomfromtext("")
|
||||
);
|
||||
1
|
||||
DROP TABLE t1;
|
||||
|
||||
MDEV-612 Valgrind error in ha_maria::check_if_incompatible_data
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a)) ENGINE=Aria PARTITION BY KEY(a) PARTITIONS 2;
|
||||
ALTER TABLE t1 ADD KEY (b);
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# BUG#55385: UPDATE statement throws an error, but still updates
|
||||
|
@ -1221,6 +1221,153 @@ Lugansk UKR 469000
|
||||
Seattle USA 563374
|
||||
Caracas VEN 1975294
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# Bug mdev-585: range vs index-merge with ORDER BY ... LIMIT n
|
||||
# (LP bug #637962)
|
||||
#
|
||||
DROP INDEX CountryPopulation ON City;
|
||||
DROP INDEX CountryName ON City;
|
||||
DROP INDEX CityName on City;
|
||||
CREATE INDEX Name ON City(Name);
|
||||
CREATE INDEX Population ON City(Population);
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Country,Name,Population Name,Country 35,3 NULL # Using sort_union(Name,Country); Using where
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000);
|
||||
ID Name Country Population
|
||||
384 Cabo Frio BRA 119503
|
||||
387 Camaragibe BRA 118968
|
||||
403 Catanduva BRA 107761
|
||||
412 Cachoeirinha BRA 103240
|
||||
508 Watford GBR 113080
|
||||
509 Ipswich GBR 114000
|
||||
510 Slough GBR 112000
|
||||
511 Exeter GBR 111000
|
||||
512 Cheltenham GBR 106000
|
||||
513 Gloucester GBR 107000
|
||||
514 Saint Helens GBR 106293
|
||||
515 Sutton Coldfield GBR 106001
|
||||
516 York GBR 104425
|
||||
517 Oldham GBR 103931
|
||||
518 Basildon GBR 100924
|
||||
519 Worthing GBR 100000
|
||||
635 Mallawi EGY 119283
|
||||
636 Bilbays EGY 113608
|
||||
637 Mit Ghamr EGY 101801
|
||||
638 al-Arish EGY 100447
|
||||
701 Tarragona ESP 113016
|
||||
702 Lleida (Lérida) ESP 112207
|
||||
703 Jaén ESP 109247
|
||||
704 Ourense (Orense) ESP 109120
|
||||
705 Mataró ESP 104095
|
||||
706 Algeciras ESP 103106
|
||||
707 Marbella ESP 101144
|
||||
759 Gonder ETH 112249
|
||||
869 Cabuyao PHL 106630
|
||||
870 Calapan PHL 105910
|
||||
873 Cauayan PHL 103952
|
||||
903 Serekunda GMB 102600
|
||||
909 Sohumi GEO 111700
|
||||
913 Tema GHA 109975
|
||||
914 Sekondi-Takoradi GHA 103653
|
||||
924 Villa Nueva GTM 101295
|
||||
1844 Cape Breton CAN 114733
|
||||
1847 Cambridge CAN 109186
|
||||
2406 Herakleion GRC 116178
|
||||
2407 Kallithea GRC 114233
|
||||
2408 Larisa GRC 113090
|
||||
2908 Cajamarca PER 108009
|
||||
3002 Besançon FRA 117733
|
||||
3003 Caen FRA 113987
|
||||
3004 Orléans FRA 113126
|
||||
3005 Mulhouse FRA 110359
|
||||
3006 Rouen FRA 106592
|
||||
3007 Boulogne-Billancourt FRA 106367
|
||||
3008 Perpignan FRA 105115
|
||||
3009 Nancy FRA 103605
|
||||
3411 Ceyhan TUR 102412
|
||||
3567 Carúpano VEN 119639
|
||||
3568 Catia La Mar VEN 117012
|
||||
3571 Calabozo VEN 107146
|
||||
3786 Cam Ranh VNM 114041
|
||||
3792 Tartu EST 101246
|
||||
4002 Carrollton USA 109576
|
||||
4027 Cape Coral USA 102286
|
||||
4032 Cambridge USA 101355
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 385
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 377
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Country,Name,Population Population 4 NULL # Using where
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
ID Name Country Population
|
||||
519 Worthing GBR 100000
|
||||
638 al-Arish EGY 100447
|
||||
518 Basildon GBR 100924
|
||||
707 Marbella ESP 101144
|
||||
3792 Tartu EST 101246
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 59
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
set optimizer_switch='index_merge=off';
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Country,Name,Population Population 4 NULL # Using index condition; Using where
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
ID Name Country Population
|
||||
519 Worthing GBR 100000
|
||||
638 al-Arish EGY 100447
|
||||
518 Basildon GBR 100924
|
||||
707 Marbella ESP 101144
|
||||
3792 Tartu EST 101246
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 59
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
DROP DATABASE world;
|
||||
use test;
|
||||
CREATE TABLE t1 (
|
||||
|
@ -1,5 +1,5 @@
|
||||
--- r/range_vs_index_merge_innodb.result 2012-03-24 17:12:02.124422000 +0100
|
||||
+++ r/range_vs_index_merge_innodb,innodb_plugin.reject 2012-03-24 18:00:13.647902620 +0100
|
||||
--- ./r/range_vs_index_merge_innodb.result 2012-11-21 19:35:14.000000000 +0100
|
||||
+++ ./r/range_vs_index_merge_innodb,innodb_plugin.reject 2012-11-21 20:56:00.000000000 +0100
|
||||
@@ -50,14 +50,14 @@
|
||||
WHERE (Population >= 100000 OR Name LIKE 'P%') AND Country='CAN' OR
|
||||
(Population < 100000 OR Name Like 'T%') AND Country='ARG';
|
||||
@ -269,3 +269,12 @@
|
||||
SELECT Name, Country, Population FROM City WHERE
|
||||
(Name='Manila' AND Country='PHL') OR
|
||||
(Name='Addis Abeba' AND Country='ETH') OR
|
||||
@@ -1346,7 +1346,7 @@
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
-1 SIMPLE City range Country,Name,Population Population 4 NULL # Using index condition; Using where
|
||||
+1 SIMPLE City range Country,Name,Population Population 4 NULL # Using where
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
|
@ -1222,6 +1222,153 @@ Lugansk UKR 469000
|
||||
Seattle USA 563374
|
||||
Caracas VEN 1975294
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# Bug mdev-585: range vs index-merge with ORDER BY ... LIMIT n
|
||||
# (LP bug #637962)
|
||||
#
|
||||
DROP INDEX CountryPopulation ON City;
|
||||
DROP INDEX CountryName ON City;
|
||||
DROP INDEX CityName on City;
|
||||
CREATE INDEX Name ON City(Name);
|
||||
CREATE INDEX Population ON City(Population);
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City index_merge Country,Name,Population Name,Country 35,3 NULL # Using sort_union(Name,Country); Using where
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000);
|
||||
ID Name Country Population
|
||||
384 Cabo Frio BRA 119503
|
||||
387 Camaragibe BRA 118968
|
||||
403 Catanduva BRA 107761
|
||||
412 Cachoeirinha BRA 103240
|
||||
508 Watford GBR 113080
|
||||
509 Ipswich GBR 114000
|
||||
510 Slough GBR 112000
|
||||
511 Exeter GBR 111000
|
||||
512 Cheltenham GBR 106000
|
||||
513 Gloucester GBR 107000
|
||||
514 Saint Helens GBR 106293
|
||||
515 Sutton Coldfield GBR 106001
|
||||
516 York GBR 104425
|
||||
517 Oldham GBR 103931
|
||||
518 Basildon GBR 100924
|
||||
519 Worthing GBR 100000
|
||||
635 Mallawi EGY 119283
|
||||
636 Bilbays EGY 113608
|
||||
637 Mit Ghamr EGY 101801
|
||||
638 al-Arish EGY 100447
|
||||
701 Tarragona ESP 113016
|
||||
702 Lleida (Lérida) ESP 112207
|
||||
703 Jaén ESP 109247
|
||||
704 Ourense (Orense) ESP 109120
|
||||
705 Mataró ESP 104095
|
||||
706 Algeciras ESP 103106
|
||||
707 Marbella ESP 101144
|
||||
759 Gonder ETH 112249
|
||||
869 Cabuyao PHL 106630
|
||||
870 Calapan PHL 105910
|
||||
873 Cauayan PHL 103952
|
||||
903 Serekunda GMB 102600
|
||||
909 Sohumi GEO 111700
|
||||
913 Tema GHA 109975
|
||||
914 Sekondi-Takoradi GHA 103653
|
||||
924 Villa Nueva GTM 101295
|
||||
1844 Cape Breton CAN 114733
|
||||
1847 Cambridge CAN 109186
|
||||
2406 Herakleion GRC 116178
|
||||
2407 Kallithea GRC 114233
|
||||
2408 Larisa GRC 113090
|
||||
2908 Cajamarca PER 108009
|
||||
3002 Besançon FRA 117733
|
||||
3003 Caen FRA 113987
|
||||
3004 Orléans FRA 113126
|
||||
3005 Mulhouse FRA 110359
|
||||
3006 Rouen FRA 106592
|
||||
3007 Boulogne-Billancourt FRA 106367
|
||||
3008 Perpignan FRA 105115
|
||||
3009 Nancy FRA 103605
|
||||
3411 Ceyhan TUR 102412
|
||||
3567 Carúpano VEN 119639
|
||||
3568 Catia La Mar VEN 117012
|
||||
3571 Calabozo VEN 107146
|
||||
3786 Cam Ranh VNM 114041
|
||||
3792 Tartu EST 101246
|
||||
4002 Carrollton USA 109576
|
||||
4027 Cape Coral USA 102286
|
||||
4032 Cambridge USA 101355
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 2
|
||||
Handler_read_last 0
|
||||
Handler_read_next 385
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 377
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Country,Name,Population Population 4 NULL # Using where
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
ID Name Country Population
|
||||
519 Worthing GBR 100000
|
||||
638 al-Arish EGY 100447
|
||||
518 Basildon GBR 100924
|
||||
707 Marbella ESP 101144
|
||||
3792 Tartu EST 101246
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 59
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
set optimizer_switch='index_merge=off';
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE City range Country,Name,Population Population 4 NULL # Using index condition; Using where
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
ID Name Country Population
|
||||
519 Worthing GBR 100000
|
||||
638 al-Arish EGY 100447
|
||||
518 Basildon GBR 100924
|
||||
707 Marbella ESP 101144
|
||||
3792 Tartu EST 101246
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
Variable_name Value
|
||||
Handler_read_first 0
|
||||
Handler_read_key 1
|
||||
Handler_read_last 0
|
||||
Handler_read_next 59
|
||||
Handler_read_prev 0
|
||||
Handler_read_rnd 0
|
||||
Handler_read_rnd_deleted 0
|
||||
Handler_read_rnd_next 0
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
DROP DATABASE world;
|
||||
use test;
|
||||
CREATE TABLE t1 (
|
||||
|
@ -1,2 +0,0 @@
|
||||
Variable_name Value
|
||||
server_id 1
|
@ -1,2 +0,0 @@
|
||||
Variable_name Value
|
||||
server_id 102
|
@ -71,7 +71,7 @@ t1 CREATE TABLE `t1` (
|
||||
`email` varchar(60) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (`a`),
|
||||
UNIQUE KEY `email` (`email`)
|
||||
) TYPE=HEAP ROW_FORMAT=DYNAMIC
|
||||
) TYPE=MEMORY ROW_FORMAT=DYNAMIC
|
||||
set sql_mode="postgresql,oracle,mssql,db2,maxdb";
|
||||
select @@sql_mode;
|
||||
@@sql_mode
|
||||
|
@ -6060,6 +6060,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
||||
col_int_nokey
|
||||
1
|
||||
DROP TABLE ot,it1,it2;
|
||||
#
|
||||
# MDEV-746
|
||||
# Bug#13651009 WRONG RESULT FROM DERIVED TABLE IF THE SUBQUERY
|
||||
# HAS AN EMPTY RESULT
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk int NOT NULL,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (
|
||||
pk int NOT NULL AUTO_INCREMENT,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,4,4,'00:00:00','b','b');
|
||||
SET @var2:=4, @var3:=8;
|
||||
|
||||
Testcase without inner subquery
|
||||
EXPLAIN SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
EXPLAIN SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
|
||||
Testcase with inner subquery; crashed WL#6095
|
||||
SET @var3=8;
|
||||
EXPLAIN SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
2 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
EXPLAIN SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
3 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.2 tests
|
||||
#
|
||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||
@ -6860,7 +6970,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
@ -6894,6 +7004,6 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -6059,6 +6059,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
||||
col_int_nokey
|
||||
1
|
||||
DROP TABLE ot,it1,it2;
|
||||
#
|
||||
# MDEV-746
|
||||
# Bug#13651009 WRONG RESULT FROM DERIVED TABLE IF THE SUBQUERY
|
||||
# HAS AN EMPTY RESULT
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk int NOT NULL,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (
|
||||
pk int NOT NULL AUTO_INCREMENT,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,4,4,'00:00:00','b','b');
|
||||
SET @var2:=4, @var3:=8;
|
||||
|
||||
Testcase without inner subquery
|
||||
EXPLAIN SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
EXPLAIN SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
|
||||
Testcase with inner subquery; crashed WL#6095
|
||||
SET @var3=8;
|
||||
EXPLAIN SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
2 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
EXPLAIN SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
3 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.2 tests
|
||||
#
|
||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||
@ -6858,7 +6968,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
@ -6891,7 +7001,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
set optimizer_switch=default;
|
||||
|
@ -6055,6 +6055,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
||||
col_int_nokey
|
||||
1
|
||||
DROP TABLE ot,it1,it2;
|
||||
#
|
||||
# MDEV-746
|
||||
# Bug#13651009 WRONG RESULT FROM DERIVED TABLE IF THE SUBQUERY
|
||||
# HAS AN EMPTY RESULT
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk int NOT NULL,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (
|
||||
pk int NOT NULL AUTO_INCREMENT,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,4,4,'00:00:00','b','b');
|
||||
SET @var2:=4, @var3:=8;
|
||||
|
||||
Testcase without inner subquery
|
||||
EXPLAIN SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
EXPLAIN SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
|
||||
Testcase with inner subquery; crashed WL#6095
|
||||
SET @var3=8;
|
||||
EXPLAIN SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
2 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
EXPLAIN SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
3 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.2 tests
|
||||
#
|
||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||
@ -6855,7 +6965,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
@ -6889,7 +6999,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
set @optimizer_switch_for_subselect_test=null;
|
||||
|
@ -6066,6 +6066,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
||||
col_int_nokey
|
||||
1
|
||||
DROP TABLE ot,it1,it2;
|
||||
#
|
||||
# MDEV-746
|
||||
# Bug#13651009 WRONG RESULT FROM DERIVED TABLE IF THE SUBQUERY
|
||||
# HAS AN EMPTY RESULT
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk int NOT NULL,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (
|
||||
pk int NOT NULL AUTO_INCREMENT,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,4,4,'00:00:00','b','b');
|
||||
SET @var2:=4, @var3:=8;
|
||||
|
||||
Testcase without inner subquery
|
||||
EXPLAIN SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
EXPLAIN SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
|
||||
Testcase with inner subquery; crashed WL#6095
|
||||
SET @var3=8;
|
||||
EXPLAIN SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
2 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
EXPLAIN SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
3 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.2 tests
|
||||
#
|
||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||
@ -6866,7 +6976,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
@ -6900,7 +7010,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
set optimizer_switch=default;
|
||||
|
@ -6055,6 +6055,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
||||
col_int_nokey
|
||||
1
|
||||
DROP TABLE ot,it1,it2;
|
||||
#
|
||||
# MDEV-746
|
||||
# Bug#13651009 WRONG RESULT FROM DERIVED TABLE IF THE SUBQUERY
|
||||
# HAS AN EMPTY RESULT
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
pk int NOT NULL,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (
|
||||
pk int NOT NULL AUTO_INCREMENT,
|
||||
col_int_nokey int NOT NULL,
|
||||
col_int_key int NOT NULL,
|
||||
col_time_key time NOT NULL,
|
||||
col_varchar_key varchar(1) NOT NULL,
|
||||
col_varchar_nokey varchar(1) NOT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY col_int_key (col_int_key),
|
||||
KEY col_time_key (col_time_key),
|
||||
KEY col_varchar_key (col_varchar_key,col_int_key)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (1,4,4,'00:00:00','b','b');
|
||||
SET @var2:=4, @var3:=8;
|
||||
|
||||
Testcase without inner subquery
|
||||
EXPLAIN SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
EXPLAIN SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE <derived2> system NULL NULL NULL NULL 0 const row not found
|
||||
2 DERIVED NULL NULL NULL NULL NULL NULL NULL no matching row in const table
|
||||
SELECT * FROM ( SELECT @var3:=12, sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key + NULL) IS NULL OR
|
||||
sq4_alias1.col_varchar_key = @var3 ) AS alias3;
|
||||
@var3:=12 pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
SELECT @var3;
|
||||
@var3
|
||||
8
|
||||
|
||||
Testcase with inner subquery; crashed WL#6095
|
||||
SET @var3=8;
|
||||
EXPLAIN SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
2 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3));
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
EXPLAIN SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
3 DEPENDENT SUBQUERY c_sq1_alias1 system PRIMARY NULL NULL NULL 1
|
||||
SELECT * FROM ( SELECT sq4_alias1.*
|
||||
FROM t1 AS sq4_alias1
|
||||
WHERE (sq4_alias1.col_varchar_key , sq4_alias1.col_varchar_nokey)
|
||||
NOT IN
|
||||
(SELECT c_sq1_alias1.col_varchar_key AS c_sq1_field1,
|
||||
c_sq1_alias1.col_varchar_nokey AS c_sq1_field2
|
||||
FROM t2 AS c_sq1_alias1
|
||||
WHERE (c_sq1_alias1.col_int_nokey != @var2
|
||||
OR c_sq1_alias1.pk != @var3)) ) AS alias3;
|
||||
pk col_int_nokey col_int_key col_time_key col_varchar_key col_varchar_nokey
|
||||
DROP TABLE t1,t2;
|
||||
End of 5.2 tests
|
||||
#
|
||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
||||
@ -6855,7 +6965,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
#
|
||||
@ -6889,7 +6999,7 @@ INSERT INTO t2 VALUES (45),(17),(20);
|
||||
EXPLAIN SELECT * FROM t1 WHERE EXISTS ( SELECT a FROM t1, t2 WHERE b = a GROUP BY a HAVING a <> 1 ) ;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
||||
2 SUBQUERY t1 index a a 5 NULL 1 Using where; Using index
|
||||
2 SUBQUERY t1 index a a 5 NULL 2 Using where; Using index
|
||||
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||
DROP TABLE t1,t2;
|
||||
set @optimizer_switch_for_subselect_test=null;
|
||||
|
@ -247,7 +247,7 @@ event CREATE TABLE `event` (
|
||||
show create table general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
@ -257,7 +257,7 @@ general_log CREATE TABLE `general_log` (
|
||||
show create table slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
|
@ -247,7 +247,7 @@ event CREATE TABLE `event` (
|
||||
show create table general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
@ -257,7 +257,7 @@ general_log CREATE TABLE `general_log` (
|
||||
show create table slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
|
@ -247,7 +247,7 @@ event CREATE TABLE `event` (
|
||||
show create table general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
@ -257,7 +257,7 @@ general_log CREATE TABLE `general_log` (
|
||||
show create table slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
|
@ -247,7 +247,7 @@ event CREATE TABLE `event` (
|
||||
show create table general_log;
|
||||
Table Create Table
|
||||
general_log CREATE TABLE `general_log` (
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`thread_id` int(11) NOT NULL,
|
||||
`server_id` int(10) unsigned NOT NULL,
|
||||
@ -257,7 +257,7 @@ general_log CREATE TABLE `general_log` (
|
||||
show create table slow_log;
|
||||
Table Create Table
|
||||
slow_log CREATE TABLE `slow_log` (
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
`user_host` mediumtext NOT NULL,
|
||||
`query_time` time(6) NOT NULL,
|
||||
`lock_time` time(6) NOT NULL,
|
||||
|
@ -1,2 +0,0 @@
|
||||
Variable_name Value
|
||||
use extern server NO
|
@ -148,15 +148,15 @@ ix+0
|
||||
20030101000000
|
||||
drop table t1;
|
||||
create table t1 (t1 timestamp, t2 timestamp default now());
|
||||
ERROR HY000: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
|
||||
drop table t1;
|
||||
create table t1 (t1 timestamp, t2 timestamp on update now());
|
||||
ERROR HY000: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
|
||||
drop table t1;
|
||||
create table t1 (t1 timestamp, t2 timestamp default now() on update now());
|
||||
ERROR HY000: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
|
||||
drop table t1;
|
||||
create table t1 (t1 timestamp default now(), t2 timestamp on update now());
|
||||
ERROR HY000: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
|
||||
drop table t1;
|
||||
create table t1 (t1 timestamp on update now(), t2 timestamp default now() on update now());
|
||||
ERROR HY000: Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
|
||||
drop table t1;
|
||||
create table t1 (t1 timestamp default '2003-01-01 00:00:00', t2 datetime, t3 timestamp);
|
||||
SET TIMESTAMP=1000000000;
|
||||
insert into t1 values ();
|
||||
|
@ -63,15 +63,15 @@ a
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
`a` timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4) ON UPDATE CURRENT_TIMESTAMP(4)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
show columns from t1;
|
||||
Field Type Null Key Default Extra
|
||||
a timestamp(4) NO CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP
|
||||
a timestamp(4) NO CURRENT_TIMESTAMP(4) on update CURRENT_TIMESTAMP
|
||||
select table_name, column_name, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_scale, datetime_precision, character_set_name, collation_name, column_type, column_key, extra from information_schema.columns where table_name='t1';
|
||||
table_name t1
|
||||
column_name a
|
||||
column_default CURRENT_TIMESTAMP
|
||||
column_default CURRENT_TIMESTAMP(4)
|
||||
is_nullable NO
|
||||
data_type timestamp
|
||||
character_maximum_length NULL
|
||||
@ -113,7 +113,7 @@ t2 CREATE TABLE `t2` (
|
||||
show create table t3;
|
||||
Table Create Table
|
||||
t3 CREATE TABLE `t3` (
|
||||
`a` timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
`a` timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4) ON UPDATE CURRENT_TIMESTAMP(4)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||
drop table t2, t3;
|
||||
insert t1 values ('2010-12-13 14:15:16.222222');
|
||||
@ -278,3 +278,23 @@ select * from t1;
|
||||
a
|
||||
2011-01-01 01:01:01.12345
|
||||
drop table t1;
|
||||
create table t1 (a timestamp(5) default current_timestamp);
|
||||
drop table t1;
|
||||
create table t1 (a timestamp(5) default current_timestamp());
|
||||
drop table t1;
|
||||
create table t1 (a timestamp(5) default current_timestamp(2));
|
||||
ERROR 42000: Invalid default value for 'a'
|
||||
create table t1 (a timestamp(5) default current_timestamp(5));
|
||||
drop table t1;
|
||||
create table t1 (a timestamp(5) default current_timestamp(6));
|
||||
drop table t1;
|
||||
create table t1 (a timestamp(5) on update current_timestamp);
|
||||
drop table t1;
|
||||
create table t1 (a timestamp(5) on update current_timestamp());
|
||||
drop table t1;
|
||||
create table t1 (a timestamp(5) on update current_timestamp(3));
|
||||
ERROR HY000: Invalid ON UPDATE clause for 'a' column
|
||||
create table t1 (a timestamp(5) on update current_timestamp(5));
|
||||
drop table t1;
|
||||
create table t1 (a timestamp(5) on update current_timestamp(6));
|
||||
drop table t1;
|
||||
|
@ -498,4 +498,36 @@ DROP TABLE t1;
|
||||
#
|
||||
SET @bug12408412=1;
|
||||
SELECT GROUP_CONCAT(@bug12408412 ORDER BY 1) INTO @bug12408412;
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (0);
|
||||
SELECT DISTINCT POW(COUNT(*), @a:=(SELECT 1 FROM t1 LEFT JOIN t1 AS t2 ON @a))
|
||||
AS b FROM t1 GROUP BY a;
|
||||
b
|
||||
1
|
||||
SELECT @a;
|
||||
@a
|
||||
1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT, f2 INT);
|
||||
INSERT INTO t1 VALUES (1,2),(2,3),(3,1);
|
||||
CREATE TABLE t2(a INT);
|
||||
INSERT INTO t2 VALUES (1);
|
||||
SET @var=NULL;
|
||||
SELECT @var:=(SELECT f2 FROM t2 WHERE @var) FROM t1 GROUP BY f1 ORDER BY f2 DESC
|
||||
LIMIT 1;
|
||||
@var:=(SELECT f2 FROM t2 WHERE @var)
|
||||
NULL
|
||||
SELECT @var;
|
||||
@var
|
||||
NULL
|
||||
DROP TABLE t1, t2;
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (0),(1),(3);
|
||||
SELECT DISTINCT POW(COUNT(distinct a), @a:=(SELECT 1 FROM t1 LEFT JOIN t1 AS t2 ON @a limit 1)) AS b FROM t1 GROUP BY a;
|
||||
b
|
||||
1
|
||||
SELECT @a;
|
||||
@a
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 5.5 tests
|
||||
|
@ -211,10 +211,10 @@ VARIABLE_NAME VARIABLE_VALUE
|
||||
DEFAULT_STORAGE_ENGINE MEMORY
|
||||
show global variables like 'default_storage_engine';
|
||||
Variable_name Value
|
||||
default_storage_engine MRG_MYISAM
|
||||
default_storage_engine MRG_MyISAM
|
||||
select * from information_schema.global_variables where variable_name like 'default_storage_engine';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
DEFAULT_STORAGE_ENGINE MRG_MYISAM
|
||||
DEFAULT_STORAGE_ENGINE MRG_MyISAM
|
||||
set GLOBAL myisam_max_sort_file_size=2000000;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '2000000'
|
||||
|
@ -4825,6 +4825,38 @@ drop tables t1,t2;
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.3 tests.
|
||||
# -----------------------------------------------------------------
|
||||
#
|
||||
# MDEV-3874: Server crashes in Item_field::print on a SELECT
|
||||
# from a MERGE view with materialization+semijoin, subquery, ORDER BY
|
||||
#
|
||||
SET @save_optimizer_switch_MDEV_3874=@@optimizer_switch;
|
||||
SET optimizer_switch = 'materialization=on,semijoin=on';
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (1),(7);
|
||||
CREATE TABLE t2 (b INT) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (4),(6);
|
||||
CREATE TABLE t3 (c INT) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (1),(2);
|
||||
CREATE ALGORITHM=MERGE VIEW v1 AS SELECT
|
||||
( SELECT a FROM t1 WHERE ( 1, 1 ) IN (
|
||||
SELECT b, c FROM t2, t3 HAVING c > 2 ) ) AS field1,
|
||||
b + c AS field2
|
||||
FROM t2, t3 AS table1
|
||||
GROUP BY field1, field2 ORDER BY field1;
|
||||
Warnings:
|
||||
Warning 1354 View merge algorithm can't be used here for now (assumed undefined algorithm)
|
||||
SELECT * FROM v1;
|
||||
field1 field2
|
||||
NULL 5
|
||||
NULL 7
|
||||
NULL 6
|
||||
NULL 8
|
||||
drop view v1;
|
||||
drop table t1,t2,t3;
|
||||
SET optimizer_switch=@save_optimizer_switch_MDEV_3874;
|
||||
# -----------------------------------------------------------------
|
||||
# -- End of 5.5 tests.
|
||||
# -----------------------------------------------------------------
|
||||
# some subqueries in SELECT list test
|
||||
create table t1 (a int, b int);
|
||||
create table t2 (a int, b int);
|
||||
|
@ -1,2 +0,0 @@
|
||||
TRUE
|
||||
1
|
13
mysql-test/std_data/onerow.xml
Normal file
13
mysql-test/std_data/onerow.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0"?>
|
||||
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<database name="test">
|
||||
<table_structure name="onerow">
|
||||
<field Field="a" Type="int(11)" Null="YES" Key="" Extra="" />
|
||||
</table_structure>
|
||||
<table_data name="onerow">
|
||||
<row>
|
||||
<field name="a">1</field>
|
||||
</row>
|
||||
</table_data>
|
||||
</database>
|
||||
</mysqldump>
|
@ -70,8 +70,14 @@ include/show_binlog_events.inc
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||
master-bin.000003 # Binlog_checkpoint # # master-bin.000001
|
||||
SET DEBUG_SYNC= "RESET";
|
||||
SET @old_dbug= @@global.DEBUG_DBUG;
|
||||
SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed";
|
||||
SET DEBUG_SYNC= "now SIGNAL con2_continue";
|
||||
con1 is still pending, no new binlog checkpoint should have been logged.
|
||||
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
|
||||
SET GLOBAL debug_dbug= @old_dbug;
|
||||
SET DEBUG_SYNC= "RESET";
|
||||
include/show_binlog_events.inc
|
||||
Log_name Pos Event_type Server_id End_log_pos Info
|
||||
master-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||
|
@ -118,7 +118,11 @@ master-bin.000004 # Table_map # # table_id: # (test.t1)
|
||||
master-bin.000004 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000004 # Xid # # COMMIT /* XID */
|
||||
SET DEBUG_SYNC= "now SIGNAL con10_cont";
|
||||
SET @old_dbug= @@global.DEBUG_DBUG;
|
||||
SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed";
|
||||
SET DEBUG_SYNC= "now SIGNAL con12_cont";
|
||||
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
|
||||
SET GLOBAL debug_dbug= @old_dbug;
|
||||
SET DEBUG_SYNC= "now SIGNAL con11_cont";
|
||||
Checking that master-bin.000004 is the last binlog checkpoint
|
||||
include/show_binlog_events.inc
|
||||
|
@ -71,6 +71,12 @@ SET DEBUG_SYNC= "now WAIT_FOR con2_ready";
|
||||
--let $binlog_file= master-bin.000003
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
# We need to sync the test case with the background processing of the
|
||||
# commit checkpoint, otherwise we get nondeterministic results.
|
||||
SET DEBUG_SYNC= "RESET";
|
||||
SET @old_dbug= @@global.DEBUG_DBUG;
|
||||
SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed";
|
||||
|
||||
SET DEBUG_SYNC= "now SIGNAL con2_continue";
|
||||
|
||||
connection con2;
|
||||
@ -78,6 +84,12 @@ reap;
|
||||
|
||||
connection default;
|
||||
--echo con1 is still pending, no new binlog checkpoint should have been logged.
|
||||
# Make sure commit checkpoint is processed before we check that no checkpoint
|
||||
# event has been binlogged.
|
||||
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
|
||||
SET GLOBAL debug_dbug= @old_dbug;
|
||||
SET DEBUG_SYNC= "RESET";
|
||||
|
||||
--let $binlog_file= master-bin.000003
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
|
@ -14,8 +14,24 @@ CREATE TABLE t1 (a INT PRIMARY KEY, b MEDIUMTEXT) ENGINE=Innodb;
|
||||
# Insert some data to force a couple binlog rotations (3), so we get some
|
||||
# normal binlog checkpoints before starting the test.
|
||||
INSERT INTO t1 VALUES (100, REPEAT("x", 4100));
|
||||
# Wait for the master-bin.000002 binlog checkpoint to appear.
|
||||
--let $wait_for_all= 0
|
||||
--let $show_statement= SHOW BINLOG EVENTS IN "master-bin.000002"
|
||||
--let $field= Info
|
||||
--let $condition= = "master-bin.000002"
|
||||
--source include/wait_show_condition.inc
|
||||
INSERT INTO t1 VALUES (101, REPEAT("x", 4100));
|
||||
--let $wait_for_all= 0
|
||||
--let $show_statement= SHOW BINLOG EVENTS IN "master-bin.000003"
|
||||
--let $field= Info
|
||||
--let $condition= = "master-bin.000003"
|
||||
--source include/wait_show_condition.inc
|
||||
INSERT INTO t1 VALUES (102, REPEAT("x", 4100));
|
||||
--let $wait_for_all= 0
|
||||
--let $show_statement= SHOW BINLOG EVENTS IN "master-bin.000004"
|
||||
--let $field= Info
|
||||
--let $condition= = "master-bin.000004"
|
||||
--source include/wait_show_condition.inc
|
||||
|
||||
# Now start a bunch of transactions that span multiple binlog
|
||||
# files. Leave then in the state prepared-but-not-committed in the engine
|
||||
@ -154,10 +170,19 @@ SET DEBUG_SYNC= "now SIGNAL con10_cont";
|
||||
connection con10;
|
||||
reap;
|
||||
connection default;
|
||||
|
||||
# We need to sync the test case with the background processing of the
|
||||
# commit checkpoint, otherwise we get nondeterministic results.
|
||||
SET @old_dbug= @@global.DEBUG_DBUG;
|
||||
SET GLOBAL debug_dbug="+d,binlog_background_checkpoint_processed";
|
||||
|
||||
SET DEBUG_SYNC= "now SIGNAL con12_cont";
|
||||
connection con12;
|
||||
reap;
|
||||
connection default;
|
||||
SET DEBUG_SYNC= "now WAIT_FOR binlog_background_checkpoint_processed";
|
||||
SET GLOBAL debug_dbug= @old_dbug;
|
||||
|
||||
SET DEBUG_SYNC= "now SIGNAL con11_cont";
|
||||
connection con11;
|
||||
reap;
|
||||
@ -211,7 +236,20 @@ RESET MASTER;
|
||||
# crash recovery fails due to the error insert used for previous test.
|
||||
INSERT INTO t1 VALUES (21, REPEAT("x", 4100));
|
||||
INSERT INTO t1 VALUES (22, REPEAT("x", 4100));
|
||||
# Wait for the master-bin.000003 binlog checkpoint to appear.
|
||||
--let $wait_for_all= 0
|
||||
--let $show_statement= SHOW BINLOG EVENTS IN "master-bin.000003"
|
||||
--let $field= Info
|
||||
--let $condition= = "master-bin.000003"
|
||||
--source include/wait_show_condition.inc
|
||||
INSERT INTO t1 VALUES (23, REPEAT("x", 4100));
|
||||
# Wait for the last (master-bin.000004) binlog checkpoint to appear.
|
||||
--let $wait_for_all= 0
|
||||
--let $show_statement= SHOW BINLOG EVENTS IN "master-bin.000004"
|
||||
--let $field= Info
|
||||
--let $condition= = "master-bin.000004"
|
||||
--source include/wait_show_condition.inc
|
||||
|
||||
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
wait-binlog_xa_recover.test
|
||||
EOF
|
||||
|
@ -1999,4 +1999,4 @@ connection slave;
|
||||
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
|
||||
|
||||
connection default;
|
||||
source suite/federated/include/federated_cleanup.inc;
|
||||
source include/federated_cleanup.inc;
|
||||
|
@ -59,7 +59,7 @@ def mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(1) sele
|
||||
def mysql func type 4 NULL NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('function','aggregate') select,insert,update,references
|
||||
def mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||
def mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64) select,insert,update,references
|
||||
def mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
def mysql general_log event_time 1 CURRENT_TIMESTAMP(6) NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
def mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned select,insert,update,references
|
||||
def mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references
|
||||
def mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||
@ -203,7 +203,7 @@ def mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL NULL int
|
||||
def mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references
|
||||
def mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned select,insert,update,references
|
||||
def mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||
def mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
def mysql slow_log start_time 1 CURRENT_TIMESTAMP(6) NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update CURRENT_TIMESTAMP select,insert,update,references
|
||||
def mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8 utf8_general_ci mediumtext select,insert,update,references
|
||||
def mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References') select,insert,update,references
|
||||
def mysql tables_priv Db 2 NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI select,insert,update,references
|
||||
|
@ -59,7 +59,7 @@ def mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(1)
|
||||
def mysql func type 4 NULL NO enum 9 27 NULL NULL NULL utf8 utf8_general_ci enum('function','aggregate')
|
||||
def mysql general_log argument 6 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8 utf8_general_ci mediumtext
|
||||
def mysql general_log command_type 5 NULL NO varchar 64 192 NULL NULL NULL utf8 utf8_general_ci varchar(64)
|
||||
def mysql general_log event_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update CURRENT_TIMESTAMP
|
||||
def mysql general_log event_time 1 CURRENT_TIMESTAMP(6) NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update CURRENT_TIMESTAMP
|
||||
def mysql general_log server_id 4 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned
|
||||
def mysql general_log thread_id 3 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11)
|
||||
def mysql general_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8 utf8_general_ci mediumtext
|
||||
@ -203,7 +203,7 @@ def mysql slow_log rows_examined 6 NULL NO int NULL NULL 10 0 NULL NULL NULL int
|
||||
def mysql slow_log rows_sent 5 NULL NO int NULL NULL 10 0 NULL NULL NULL int(11)
|
||||
def mysql slow_log server_id 10 NULL NO int NULL NULL 10 0 NULL NULL NULL int(10) unsigned
|
||||
def mysql slow_log sql_text 11 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8 utf8_general_ci mediumtext
|
||||
def mysql slow_log start_time 1 CURRENT_TIMESTAMP NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update CURRENT_TIMESTAMP
|
||||
def mysql slow_log start_time 1 CURRENT_TIMESTAMP(6) NO timestamp NULL NULL NULL NULL 6 NULL NULL timestamp(6) on update CURRENT_TIMESTAMP
|
||||
def mysql slow_log user_host 2 NULL NO mediumtext 16777215 16777215 NULL NULL NULL utf8 utf8_general_ci mediumtext
|
||||
def mysql tables_priv Column_priv 8 NO set 31 93 NULL NULL NULL utf8 utf8_general_ci set('Select','Insert','Update','References')
|
||||
def mysql tables_priv Db 2 NO char 64 192 NULL NULL NULL utf8 utf8_bin char(64) PRI
|
||||
|
@ -1,6 +1,6 @@
|
||||
SELECT * FROM information_schema.engines
|
||||
WHERE ENGINE = 'MRG_MYISAM';
|
||||
ENGINE MRG_MYISAM
|
||||
ENGINE MRG_MyISAM
|
||||
SUPPORT YES
|
||||
COMMENT Collection of identical MyISAM tables
|
||||
TRANSACTIONS NO
|
||||
|
@ -382,6 +382,26 @@ INSERT INTO t1 VALUES('A ', 'A ');
|
||||
ERROR 23000: Duplicate entry 'A -A ' for key 'key1'
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
#
|
||||
# MDEV-568 (AKA LP BUG#1007981, AKA MySQL bug#44771)
|
||||
# Wrong result for a hash index look-up if the index is unique and
|
||||
# the key is NULL
|
||||
#
|
||||
CREATE TABLE t1 ( pk INT PRIMARY KEY, val INT, UNIQUE KEY USING HASH(val)) ENGINE=MEMORY;
|
||||
INSERT INTO t1 VALUES (1, NULL);
|
||||
INSERT INTO t1 VALUES (2, NULL);
|
||||
INSERT INTO t1 VALUES (3, 1);
|
||||
INSERT INTO t1 VALUES (4, NULL);
|
||||
EXPLAIN SELECT * FROM t1 WHERE val IS NULL;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref val val 5 const 1 Using where
|
||||
SELECT * FROM t1 WHERE val IS NULL;
|
||||
pk val
|
||||
4 NULL
|
||||
2 NULL
|
||||
1 NULL
|
||||
drop table t1;
|
||||
End of 5.2 tests
|
||||
# bit index in heap tables
|
||||
create table t1 (a bit(63) not null) engine=heap;
|
||||
insert into t1 values (869751),(736494),(226312),(802616),(728912);
|
||||
|
@ -285,6 +285,23 @@ DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-568 (AKA LP BUG#1007981, AKA MySQL bug#44771)
|
||||
--echo # Wrong result for a hash index look-up if the index is unique and
|
||||
--echo # the key is NULL
|
||||
--echo #
|
||||
CREATE TABLE t1 ( pk INT PRIMARY KEY, val INT, UNIQUE KEY USING HASH(val)) ENGINE=MEMORY;
|
||||
|
||||
INSERT INTO t1 VALUES (1, NULL);
|
||||
INSERT INTO t1 VALUES (2, NULL);
|
||||
INSERT INTO t1 VALUES (3, 1);
|
||||
INSERT INTO t1 VALUES (4, NULL);
|
||||
EXPLAIN SELECT * FROM t1 WHERE val IS NULL;
|
||||
SELECT * FROM t1 WHERE val IS NULL;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.2 tests
|
||||
|
||||
-- echo # bit index in heap tables
|
||||
|
||||
create table t1 (a bit(63) not null) engine=heap;
|
||||
|
@ -72,6 +72,7 @@ connection con3;
|
||||
--echo # Connection con3
|
||||
COMMIT;
|
||||
FLUSH LOGS;
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
|
||||
connection default;
|
||||
--echo # Connection default
|
||||
|
@ -3,11 +3,6 @@
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
if (`select plugin_auth_version <= "1.1.8-29.0" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB 1.1.8-29.0 or earlier
|
||||
}
|
||||
|
||||
-- disable_result_log
|
||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
|
||||
|
||||
|
@ -169,6 +169,7 @@ select * from db2.t1;
|
||||
|
||||
--connection master1
|
||||
flush logs;
|
||||
--source include/wait_for_binlog_checkpoint.inc
|
||||
--save_master_pos
|
||||
--connection slave
|
||||
--sync_with_master 0, 'master1'
|
||||
|
@ -56,8 +56,11 @@ where event_name like "%MYSQL_BIN_LOG%"
|
||||
and event_name not like "%MYSQL_BIN_LOG::update_cond"
|
||||
order by event_name;
|
||||
EVENT_NAME COUNT_STAR
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_binlog_background_thread NONE
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_binlog_background_thread_end NONE
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_queue_busy NONE
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_xid_list NONE
|
||||
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_binlog_background_thread MANY
|
||||
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_index MANY
|
||||
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_xid_list MANY
|
||||
"Expect no slave relay log"
|
||||
@ -131,8 +134,11 @@ where event_name like "%MYSQL_BIN_LOG%"
|
||||
and event_name not like "%MYSQL_BIN_LOG::update_cond"
|
||||
order by event_name;
|
||||
EVENT_NAME COUNT_STAR
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_binlog_background_thread MANY
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_binlog_background_thread_end NONE
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_queue_busy NONE
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_xid_list NONE
|
||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_xid_list MANY
|
||||
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_binlog_background_thread MANY
|
||||
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_index MANY
|
||||
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_xid_list MANY
|
||||
"Expect a slave relay log"
|
||||
|
29
mysql-test/suite/plugins/r/audit_null.result
Normal file
29
mysql-test/suite/plugins/r/audit_null.result
Normal file
@ -0,0 +1,29 @@
|
||||
set @old_global_general_log=@@global.general_log;
|
||||
set global general_log=OFF;
|
||||
install plugin audit_null soname 'adt_null';
|
||||
select 1;
|
||||
1
|
||||
1
|
||||
select foobar;
|
||||
ERROR 42S22: Unknown column 'foobar' in 'field list'
|
||||
show status like 'audit_null%';
|
||||
Variable_name Value
|
||||
Audit_null_called 9
|
||||
Audit_null_general_error 1
|
||||
Audit_null_general_log 3
|
||||
Audit_null_general_result 2
|
||||
create procedure au1(x char(16)) select concat("test1", x);
|
||||
call au1("-12");
|
||||
concat("test1", x)
|
||||
test1-12
|
||||
show status like 'audit_null%';
|
||||
Variable_name Value
|
||||
Audit_null_called 19
|
||||
Audit_null_general_error 1
|
||||
Audit_null_general_log 7
|
||||
Audit_null_general_result 5
|
||||
uninstall plugin audit_null;
|
||||
Warnings:
|
||||
Warning 1620 Plugin is busy and will be uninstalled on shutdown
|
||||
drop procedure au1;
|
||||
set global general_log=@old_global_general_log;
|
30
mysql-test/suite/plugins/t/audit_null.test
Normal file
30
mysql-test/suite/plugins/t/audit_null.test
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
--source include/not_embedded.inc
|
||||
|
||||
if (!$ADT_NULL_SO) {
|
||||
skip No NULL_AUDIT plugin;
|
||||
}
|
||||
|
||||
set @old_global_general_log=@@global.general_log;
|
||||
set global general_log=OFF;
|
||||
|
||||
--disable_ps_protocol
|
||||
install plugin audit_null soname 'adt_null';
|
||||
|
||||
select 1;
|
||||
--error 1054
|
||||
select foobar;
|
||||
|
||||
show status like 'audit_null%';
|
||||
|
||||
create procedure au1(x char(16)) select concat("test1", x);
|
||||
call au1("-12");
|
||||
|
||||
show status like 'audit_null%';
|
||||
|
||||
uninstall plugin audit_null;
|
||||
--enable_ps_protocol
|
||||
|
||||
drop procedure au1;
|
||||
set global general_log=@old_global_general_log;
|
||||
|
132
mysql-test/suite/rpl/r/rpl_function_defaults.result
Normal file
132
mysql-test/suite/rpl/r/rpl_function_defaults.result
Normal file
@ -0,0 +1,132 @@
|
||||
#
|
||||
# Test of function defaults on replicated tables.
|
||||
#
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
connection master
|
||||
SET TIME_ZONE="+10:30";
|
||||
SET TIMESTAMP=123456.789123;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
CURRENT_TIMESTAMP
|
||||
1970-01-02 20:47:36
|
||||
connection slave
|
||||
SET TIME_ZONE="+00:00";
|
||||
SET TIMESTAMP=987654321.123456;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
CURRENT_TIMESTAMP
|
||||
2001-04-19 04:25:21
|
||||
connection master
|
||||
CREATE TABLE t1 (
|
||||
a TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
b TIMESTAMP(1) NOT NULL DEFAULT CURRENT_TIMESTAMP(1),
|
||||
c TIMESTAMP(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2),
|
||||
d TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
e TIMESTAMP(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4),
|
||||
f TIMESTAMP(5) NOT NULL DEFAULT CURRENT_TIMESTAMP(5),
|
||||
g TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
h DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
i DATETIME(1) DEFAULT CURRENT_TIMESTAMP(1),
|
||||
j DATETIME(2) DEFAULT CURRENT_TIMESTAMP(2),
|
||||
k DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
|
||||
l DATETIME(4) DEFAULT CURRENT_TIMESTAMP(4),
|
||||
m DATETIME(5) DEFAULT CURRENT_TIMESTAMP(5),
|
||||
n DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6),
|
||||
o INT
|
||||
);
|
||||
INSERT INTO t1 ( o ) VALUES ( 1 );
|
||||
CREATE TABLE t2 (
|
||||
a TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
|
||||
b TIMESTAMP(1) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(1),
|
||||
c TIMESTAMP(2) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(2),
|
||||
d TIMESTAMP(3) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
e TIMESTAMP(4) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(4),
|
||||
f TIMESTAMP(5) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(5),
|
||||
g TIMESTAMP(6) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
h DATETIME ON UPDATE CURRENT_TIMESTAMP,
|
||||
i DATETIME(1) ON UPDATE CURRENT_TIMESTAMP(1),
|
||||
j DATETIME(2) ON UPDATE CURRENT_TIMESTAMP(2),
|
||||
k DATETIME(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
l DATETIME(4) ON UPDATE CURRENT_TIMESTAMP(4),
|
||||
m DATETIME(5) ON UPDATE CURRENT_TIMESTAMP(5),
|
||||
n DATETIME(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
o INT
|
||||
);
|
||||
INSERT INTO t2 ( o ) VALUES ( 1 );
|
||||
sync_slave_with_master
|
||||
connection slave
|
||||
SELECT * FROM t1;
|
||||
a 1970-01-02 10:17:36
|
||||
b 1970-01-02 10:17:36.7
|
||||
c 1970-01-02 10:17:36.78
|
||||
d 1970-01-02 10:17:36.789
|
||||
e 1970-01-02 10:17:36.7891
|
||||
f 1970-01-02 10:17:36.78912
|
||||
g 1970-01-02 10:17:36.789123
|
||||
h 1970-01-02 20:47:36
|
||||
i 1970-01-02 20:47:36.7
|
||||
j 1970-01-02 20:47:36.78
|
||||
k 1970-01-02 20:47:36.789
|
||||
l 1970-01-02 20:47:36.7891
|
||||
m 1970-01-02 20:47:36.78912
|
||||
n 1970-01-02 20:47:36.789123
|
||||
o 1
|
||||
SELECT * FROM t2;
|
||||
a 0000-00-00 00:00:00
|
||||
b 0000-00-00 00:00:00.0
|
||||
c 0000-00-00 00:00:00.00
|
||||
d 0000-00-00 00:00:00.000
|
||||
e 0000-00-00 00:00:00.0000
|
||||
f 0000-00-00 00:00:00.00000
|
||||
g 0000-00-00 00:00:00.000000
|
||||
h NULL
|
||||
i NULL
|
||||
j NULL
|
||||
k NULL
|
||||
l NULL
|
||||
m NULL
|
||||
n NULL
|
||||
o 1
|
||||
connection master
|
||||
SET TIMESTAMP=1234567890.123456;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
CURRENT_TIMESTAMP
|
||||
2009-02-14 10:01:30
|
||||
UPDATE t1 SET o = 2;
|
||||
UPDATE t2 SET o = 2;
|
||||
sync_slave_with_master
|
||||
connection slave
|
||||
SELECT * FROM t1;
|
||||
a 1970-01-02 10:17:36
|
||||
b 1970-01-02 10:17:36.7
|
||||
c 1970-01-02 10:17:36.78
|
||||
d 1970-01-02 10:17:36.789
|
||||
e 1970-01-02 10:17:36.7891
|
||||
f 1970-01-02 10:17:36.78912
|
||||
g 1970-01-02 10:17:36.789123
|
||||
h 1970-01-02 20:47:36
|
||||
i 1970-01-02 20:47:36.7
|
||||
j 1970-01-02 20:47:36.78
|
||||
k 1970-01-02 20:47:36.789
|
||||
l 1970-01-02 20:47:36.7891
|
||||
m 1970-01-02 20:47:36.78912
|
||||
n 1970-01-02 20:47:36.789123
|
||||
o 2
|
||||
SELECT * FROM t2;
|
||||
a 2009-02-13 23:31:30
|
||||
b 2009-02-13 23:31:30.1
|
||||
c 2009-02-13 23:31:30.12
|
||||
d 2009-02-13 23:31:30.123
|
||||
e 2009-02-13 23:31:30.1234
|
||||
f 2009-02-13 23:31:30.12345
|
||||
g 2009-02-13 23:31:30.123456
|
||||
h 2009-02-14 10:01:30
|
||||
i 2009-02-14 10:01:30.1
|
||||
j 2009-02-14 10:01:30.12
|
||||
k 2009-02-14 10:01:30.123
|
||||
l 2009-02-14 10:01:30.1234
|
||||
m 2009-02-14 10:01:30.12345
|
||||
n 2009-02-14 10:01:30.123456
|
||||
o 2
|
||||
connection master
|
||||
DROP TABLE t1, t2;
|
||||
include/rpl_end.inc
|
93
mysql-test/suite/rpl/t/rpl_function_defaults.test
Normal file
93
mysql-test/suite/rpl/t/rpl_function_defaults.test
Normal file
@ -0,0 +1,93 @@
|
||||
--echo #
|
||||
--echo # Test of function defaults on replicated tables.
|
||||
--echo #
|
||||
|
||||
source include/master-slave.inc;
|
||||
|
||||
--echo connection master
|
||||
connection master;
|
||||
SET TIME_ZONE="+10:30";
|
||||
SET TIMESTAMP=123456.789123;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
|
||||
--echo connection slave
|
||||
connection slave;
|
||||
SET TIME_ZONE="+00:00";
|
||||
SET TIMESTAMP=987654321.123456;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
|
||||
--echo connection master
|
||||
connection master;
|
||||
CREATE TABLE t1 (
|
||||
a TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
b TIMESTAMP(1) NOT NULL DEFAULT CURRENT_TIMESTAMP(1),
|
||||
c TIMESTAMP(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2),
|
||||
d TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
||||
e TIMESTAMP(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4),
|
||||
f TIMESTAMP(5) NOT NULL DEFAULT CURRENT_TIMESTAMP(5),
|
||||
g TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||
h DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
i DATETIME(1) DEFAULT CURRENT_TIMESTAMP(1),
|
||||
j DATETIME(2) DEFAULT CURRENT_TIMESTAMP(2),
|
||||
k DATETIME(3) DEFAULT CURRENT_TIMESTAMP(3),
|
||||
l DATETIME(4) DEFAULT CURRENT_TIMESTAMP(4),
|
||||
m DATETIME(5) DEFAULT CURRENT_TIMESTAMP(5),
|
||||
n DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6),
|
||||
o INT
|
||||
);
|
||||
|
||||
INSERT INTO t1 ( o ) VALUES ( 1 );
|
||||
|
||||
CREATE TABLE t2 (
|
||||
a TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
|
||||
b TIMESTAMP(1) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(1),
|
||||
c TIMESTAMP(2) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(2),
|
||||
d TIMESTAMP(3) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
e TIMESTAMP(4) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(4),
|
||||
f TIMESTAMP(5) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(5),
|
||||
g TIMESTAMP(6) NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
h DATETIME ON UPDATE CURRENT_TIMESTAMP,
|
||||
i DATETIME(1) ON UPDATE CURRENT_TIMESTAMP(1),
|
||||
j DATETIME(2) ON UPDATE CURRENT_TIMESTAMP(2),
|
||||
k DATETIME(3) ON UPDATE CURRENT_TIMESTAMP(3),
|
||||
l DATETIME(4) ON UPDATE CURRENT_TIMESTAMP(4),
|
||||
m DATETIME(5) ON UPDATE CURRENT_TIMESTAMP(5),
|
||||
n DATETIME(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||
o INT
|
||||
);
|
||||
|
||||
INSERT INTO t2 ( o ) VALUES ( 1 );
|
||||
|
||||
--echo sync_slave_with_master
|
||||
sync_slave_with_master;
|
||||
|
||||
--echo connection slave
|
||||
connection slave;
|
||||
|
||||
query_vertical SELECT * FROM t1;
|
||||
query_vertical SELECT * FROM t2;
|
||||
|
||||
--echo connection master
|
||||
connection master;
|
||||
|
||||
SET TIMESTAMP=1234567890.123456;
|
||||
SELECT CURRENT_TIMESTAMP;
|
||||
|
||||
UPDATE t1 SET o = 2;
|
||||
UPDATE t2 SET o = 2;
|
||||
|
||||
--echo sync_slave_with_master
|
||||
sync_slave_with_master;
|
||||
|
||||
--echo connection slave
|
||||
connection slave;
|
||||
|
||||
query_vertical SELECT * FROM t1;
|
||||
query_vertical SELECT * FROM t2;
|
||||
|
||||
--echo connection master
|
||||
connection master;
|
||||
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
--source include/rpl_end.inc
|
@ -19,7 +19,7 @@ MyISAM
|
||||
SET @@global.default_storage_engine = MERGE;
|
||||
SELECT @@global.default_storage_engine;
|
||||
@@global.default_storage_engine
|
||||
MRG_MYISAM
|
||||
MRG_MyISAM
|
||||
SET @@global.default_storage_engine = MEMORY;
|
||||
SELECT @@global.default_storage_engine;
|
||||
@@global.default_storage_engine
|
||||
@ -36,7 +36,7 @@ MyISAM
|
||||
SET @@session.default_storage_engine = MERGE;
|
||||
SELECT @@session.default_storage_engine;
|
||||
@@session.default_storage_engine
|
||||
MRG_MYISAM
|
||||
MRG_MyISAM
|
||||
SET @@session.default_storage_engine = MEMORY;
|
||||
SELECT @@session.default_storage_engine;
|
||||
@@session.default_storage_engine
|
||||
|
@ -0,0 +1 @@
|
||||
XtraDB extension
|
@ -19,7 +19,7 @@ MyISAM
|
||||
SET @@global.storage_engine = MERGE;
|
||||
SELECT @@global.storage_engine;
|
||||
@@global.storage_engine
|
||||
MRG_MYISAM
|
||||
MRG_MyISAM
|
||||
SET @@global.storage_engine = MEMORY;
|
||||
SELECT @@global.storage_engine;
|
||||
@@global.storage_engine
|
||||
@ -36,7 +36,7 @@ MyISAM
|
||||
SET @@session.storage_engine = MERGE;
|
||||
SELECT @@session.storage_engine;
|
||||
@@session.storage_engine
|
||||
MRG_MYISAM
|
||||
MRG_MyISAM
|
||||
SET @@session.storage_engine = MEMORY;
|
||||
SELECT @@session.storage_engine;
|
||||
@@session.storage_engine
|
||||
|
@ -0,0 +1 @@
|
||||
--echo XtraDB extension
|
@ -108,3 +108,44 @@ select * from t1;
|
||||
|
||||
drop table t1,t2;
|
||||
drop procedure p1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug mdev-3845: values of virtual columns are not computed for triggers
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
a INTEGER UNSIGNED NULL DEFAULT NULL,
|
||||
b INTEGER UNSIGNED GENERATED ALWAYS AS (a) VIRTUAL
|
||||
);
|
||||
|
||||
CREATE TABLE t2 (c INTEGER UNSIGNED NOT NULL);
|
||||
|
||||
DELIMITER |;
|
||||
|
||||
CREATE TRIGGER t1_ins_aft
|
||||
AFTER INSERT
|
||||
ON t1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 (c) VALUES (NEW.b);
|
||||
END |
|
||||
|
||||
CREATE TRIGGER t1_del_bef
|
||||
BEFORE DELETE
|
||||
ON t1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 (c) VALUES (OLD.b);
|
||||
END |
|
||||
|
||||
DELIMITER ;|
|
||||
|
||||
INSERT INTO t1 (a) VALUES (1), (2), (3);
|
||||
SELECT * FROM t2;
|
||||
DELETE FROM t1;
|
||||
SELECT * FROM t2;
|
||||
|
||||
DROP TRIGGER t1_ins_aft;
|
||||
DROP TRIGGER t1_del_bef;
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
@ -4,5 +4,5 @@ create table t2 (a int, b int as (a % 10));
|
||||
insert into t1 values (1,default);
|
||||
insert into t2 values (2,default);
|
||||
create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2);
|
||||
ERROR HY000: MRG_MYISAM storage engine does not support computed columns
|
||||
ERROR HY000: MRG_MyISAM storage engine does not support computed columns
|
||||
drop table t1,t2;
|
||||
|
@ -85,3 +85,43 @@ a b c
|
||||
300 30 30
|
||||
drop table t1,t2;
|
||||
drop procedure p1;
|
||||
#
|
||||
# Bug mdev-3845: values of virtual columns are not computed for triggers
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a INTEGER UNSIGNED NULL DEFAULT NULL,
|
||||
b INTEGER UNSIGNED GENERATED ALWAYS AS (a) VIRTUAL
|
||||
);
|
||||
CREATE TABLE t2 (c INTEGER UNSIGNED NOT NULL);
|
||||
CREATE TRIGGER t1_ins_aft
|
||||
AFTER INSERT
|
||||
ON t1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 (c) VALUES (NEW.b);
|
||||
END |
|
||||
CREATE TRIGGER t1_del_bef
|
||||
BEFORE DELETE
|
||||
ON t1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 (c) VALUES (OLD.b);
|
||||
END |
|
||||
INSERT INTO t1 (a) VALUES (1), (2), (3);
|
||||
SELECT * FROM t2;
|
||||
c
|
||||
1
|
||||
2
|
||||
3
|
||||
DELETE FROM t1;
|
||||
SELECT * FROM t2;
|
||||
c
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
DROP TRIGGER t1_ins_aft;
|
||||
DROP TRIGGER t1_del_bef;
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -85,3 +85,43 @@ a b c
|
||||
300 30 30
|
||||
drop table t1,t2;
|
||||
drop procedure p1;
|
||||
#
|
||||
# Bug mdev-3845: values of virtual columns are not computed for triggers
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
a INTEGER UNSIGNED NULL DEFAULT NULL,
|
||||
b INTEGER UNSIGNED GENERATED ALWAYS AS (a) VIRTUAL
|
||||
);
|
||||
CREATE TABLE t2 (c INTEGER UNSIGNED NOT NULL);
|
||||
CREATE TRIGGER t1_ins_aft
|
||||
AFTER INSERT
|
||||
ON t1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 (c) VALUES (NEW.b);
|
||||
END |
|
||||
CREATE TRIGGER t1_del_bef
|
||||
BEFORE DELETE
|
||||
ON t1
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 (c) VALUES (OLD.b);
|
||||
END |
|
||||
INSERT INTO t1 (a) VALUES (1), (2), (3);
|
||||
SELECT * FROM t2;
|
||||
c
|
||||
1
|
||||
2
|
||||
3
|
||||
DELETE FROM t1;
|
||||
SELECT * FROM t2;
|
||||
c
|
||||
1
|
||||
2
|
||||
3
|
||||
1
|
||||
2
|
||||
3
|
||||
DROP TRIGGER t1_ins_aft;
|
||||
DROP TRIGGER t1_del_bef;
|
||||
DROP TABLE t1,t2;
|
||||
|
@ -55,10 +55,10 @@ create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
#
|
||||
# Some wrong defaults, so these creates should fail too (Bug #5902)
|
||||
#
|
||||
--error 1067
|
||||
create table t1 (a datetime default now());
|
||||
--error 1294
|
||||
drop table t1;
|
||||
create table t1 (a datetime on update now());
|
||||
drop table t1;
|
||||
--error 1067
|
||||
create table t1 (a int default 100 auto_increment);
|
||||
--error 1067
|
||||
|
@ -212,5 +212,65 @@ INSERT INTO t1 VALUES ( (SELECT 1 FROM ( SELECT * FROM t1 ) as a) );
|
||||
drop table t1;
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-3801 Reproducible sub select join crash on 5.3.8 and 5.3.9
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
pk int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
a char(2) DEFAULT NULL,
|
||||
PRIMARY KEY (pk),
|
||||
KEY a (a)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t1 (a)
|
||||
VALUES (NULL),(NULL),(NULL),('AB'),(NULL),('CD'),(NULL),(NULL);
|
||||
INSERT INTO t1 SELECT NULL, a1.a FROM t1 a1, t1 a2, t1 a3, t1 a4, t1 a5;
|
||||
|
||||
CREATE TABLE t2 (
|
||||
pk int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t2 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||
INSERT INTO t2 SELECT NULL FROM t2 a1, t2 a2, t2 a3, t2 a4, t2 a5;
|
||||
|
||||
CREATE TABLE t3 (
|
||||
pk int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t3 VALUES (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL);
|
||||
INSERT INTO t3 SELECT NULL FROM t3 a1, t3 a2, t3 a3, t3 a4, t3 a5;
|
||||
|
||||
CREATE TABLE t4 (
|
||||
a char(2) NOT NULL DEFAULT '',
|
||||
PRIMARY KEY (a)
|
||||
) ENGINE=MyISAM;
|
||||
INSERT INTO t4 VALUES ('CD');
|
||||
|
||||
set @@tmp_table_size=8192;
|
||||
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
SELECT * FROM t3 AS tx JOIN t2 AS ty ON (tx.pk = ty.pk)
|
||||
WHERE
|
||||
tx.pk IN
|
||||
(SELECT *
|
||||
FROM (SELECT DISTINCT ta.pk
|
||||
FROM t3 AS ta
|
||||
JOIN t2 AS tb ON (ta.pk = tb.pk)
|
||||
JOIN t1 AS tc ON (tb.pk = tc.pk)
|
||||
JOIN t4 AS td ON tc.a = td.a) tu)
|
||||
limit 10;
|
||||
|
||||
SELECT * FROM t3 AS tX JOIN t2 AS tY ON (tX.pk = tY.pk)
|
||||
WHERE
|
||||
tX.pk IN
|
||||
(SELECT *
|
||||
FROM (SELECT DISTINCT tA.pk
|
||||
FROM t3 AS tA
|
||||
JOIN t2 AS tB ON (tA.pk = tB.pk)
|
||||
JOIN t1 AS tC ON (tB.pk = tC.pk)
|
||||
JOIN t4 AS tD ON tC.a = tD.a) tU)
|
||||
limit 10;
|
||||
|
||||
drop table t1, t2, t3, t4;
|
||||
|
||||
# The following command must be the last one the file
|
||||
set optimizer_switch=@exit_optimizer_switch;
|
||||
|
23
mysql-test/t/function_defaults.test
Normal file
23
mysql-test/t/function_defaults.test
Normal file
@ -0,0 +1,23 @@
|
||||
--echo #
|
||||
--echo # Test of function defaults for any server, including embedded.
|
||||
--echo #
|
||||
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--echo #
|
||||
--echo # Function defaults run 1. No microsecond precision.
|
||||
--echo #
|
||||
let $current_timestamp=CURRENT_TIMESTAMP;
|
||||
let $now=NOW();
|
||||
let $timestamp=TIMESTAMP;
|
||||
let $datetime=DATETIME;
|
||||
source 'include/function_defaults.inc';
|
||||
|
||||
--echo #
|
||||
--echo # Function defaults run 2. Six digits scale on seconds precision.
|
||||
--echo #
|
||||
let $current_timestamp=CURRENT_TIMESTAMP(6);
|
||||
let $now=NOW(6);
|
||||
let $timestamp=TIMESTAMP(6);
|
||||
let $datetime=DATETIME(6);
|
||||
source 'include/function_defaults.inc';
|
18
mysql-test/t/function_defaults_notembedded.test
Normal file
18
mysql-test/t/function_defaults_notembedded.test
Normal file
@ -0,0 +1,18 @@
|
||||
--echo #
|
||||
--echo # Test of function defaults for non-embedded server.
|
||||
--echo #
|
||||
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_debug_sync.inc
|
||||
|
||||
--echo #
|
||||
--echo # Function defaults run 1. No microsecond precision.
|
||||
--echo #
|
||||
let $timestamp=TIMESTAMP;
|
||||
--source include/function_defaults_notembedded.inc
|
||||
|
||||
--echo #
|
||||
--echo # Function defaults run 2. Six digits scale on seconds precision.
|
||||
--echo #
|
||||
let $timestamp=TIMESTAMP(6);
|
||||
--source include/function_defaults_notembedded.inc
|
@ -1469,6 +1469,20 @@ WHERE a = (
|
||||
GROUP BY 1;
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
#
|
||||
# MDEV-736 LP:1004615 - Unexpected warnings "Encountered illegal value '' when converting to DECIMAL" on a query with aggregate functions and GROUP BY
|
||||
#
|
||||
|
||||
FLUSH STATUS; # this test case *must* use Aria temp tables
|
||||
|
||||
CREATE TABLE t1 (f1 INT, f2 decimal(20,1), f3 blob);
|
||||
INSERT INTO t1 values(11,NULL,'blob'),(11,NULL,'blob');
|
||||
SELECT f3, MIN(f2) FROM t1 GROUP BY f1 LIMIT 1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo the value below *must* be 1
|
||||
show status like 'Created_tmp_disk_tables';
|
||||
|
||||
--echo # End of 5.3 tests
|
||||
|
||||
--echo #
|
||||
|
@ -1444,6 +1444,17 @@ SELECT length(CAST(b AS CHAR)) FROM ubig;
|
||||
|
||||
DROP TABLE ubig;
|
||||
|
||||
#
|
||||
# Bug #13889741: HANDLE_FATAL_SIGNAL IN _DB_ENTER_ | HANDLE_FATAL_SIGNAL IN STRNLEN
|
||||
#
|
||||
select 1 from information_schema.tables where table_schema=repeat('a', 2000);
|
||||
grant usage on *.* to mysqltest_1@localhost;
|
||||
connect (con1, localhost, mysqltest_1,,);
|
||||
connection con1;
|
||||
select 1 from information_schema.tables where table_schema=repeat('a', 2000);
|
||||
connection default;
|
||||
disconnect con1;
|
||||
drop user mysqltest_1@localhost;
|
||||
|
||||
--echo End of 5.1 tests.
|
||||
|
||||
|
@ -15,6 +15,7 @@ show tables;
|
||||
# Bug#18925: subqueries with MIN/MAX functions on INFORMATION_SCHEMA
|
||||
#
|
||||
|
||||
--sorted_result
|
||||
SELECT t.table_name, c1.column_name
|
||||
FROM information_schema.tables t
|
||||
INNER JOIN
|
||||
@ -29,6 +30,7 @@ SELECT t.table_name, c1.column_name
|
||||
c2.table_name = t.table_name AND
|
||||
c2.column_name LIKE '%SCHEMA%'
|
||||
) order by t.table_name;
|
||||
--sorted_result
|
||||
SELECT t.table_name, c1.column_name
|
||||
FROM information_schema.tables t
|
||||
INNER JOIN
|
||||
|
@ -287,6 +287,27 @@ select o_orderkey, p_partkey
|
||||
and o_orderkey=l_orderkey and p_partkey=l_partkey;
|
||||
show status like 'handler_read%';
|
||||
|
||||
--echo #
|
||||
--echo # Bug mdev-3851: ref access used instead of expected eq_ref access
|
||||
--echo # when extended_keys=on
|
||||
--echo #
|
||||
|
||||
create table t0 (a int);
|
||||
insert into t0 values (1), (2), (3), (4), (5);
|
||||
create index i_p_size on part(p_size);
|
||||
|
||||
set optimizer_switch='extended_keys=on';
|
||||
|
||||
explain
|
||||
select * from t0, part ignore index (primary)
|
||||
where p_partkey=t0.a and p_size=1;
|
||||
|
||||
select * from t0, part ignore index (primary)
|
||||
where p_partkey=t0.a and p_size=1;
|
||||
|
||||
drop table t0;
|
||||
drop index i_p_size on part;
|
||||
|
||||
DROP DATABASE dbt3_s001;
|
||||
|
||||
use test;
|
||||
@ -407,5 +428,44 @@ set optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug mdev-3888: INSERT with UPDATE on duplicate keys
|
||||
--echo # with extended_keys=on
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
c1 bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
c2 bigint(20) unsigned NOT NULL,
|
||||
c3 bigint(20) unsigned NOT NULL,
|
||||
c4 varchar(128) DEFAULT NULL,
|
||||
PRIMARY KEY (c1),
|
||||
UNIQUE KEY uq (c2,c3),
|
||||
KEY c3 (c3),
|
||||
KEY c4 (c4)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
|
||||
|
||||
|
||||
set @save_optimizer_switch=@@optimizer_switch;
|
||||
|
||||
set session optimizer_switch='extended_keys=off';
|
||||
INSERT INTO t1 (c2, c3, c4) VALUES (58291525, 2580, 'foobar')
|
||||
ON DUPLICATE KEY UPDATE c4 = VALUES(c4);
|
||||
INSERT INTO t1 (c2, c3, c4) VALUES (58291525, 2580, 'foobar')
|
||||
ON DUPLICATE KEY UPDATE c4 = VALUES(c4);
|
||||
|
||||
DELETE FROM t1;
|
||||
|
||||
set session optimizer_switch='extended_keys=on';
|
||||
INSERT INTO t1 (c2, c3, c4) VALUES (58291525, 2580, 'foobar')
|
||||
ON DUPLICATE KEY UPDATE c4 = VALUES(c4);
|
||||
INSERT INTO t1 (c2, c3, c4) VALUES (58291525, 2580, 'foobar')
|
||||
ON DUPLICATE KEY UPDATE c4 = VALUES(c4);
|
||||
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
set optimizer_switch=@save_ext_key_optimizer_switch;
|
||||
SET SESSION STORAGE_ENGINE=DEFAULT;
|
||||
|
||||
|
@ -1851,3 +1851,68 @@ DROP TABLE t1;
|
||||
|
||||
--echo End of 5.3 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug 54599: discarded fast range scan for query with
|
||||
--echo # GROUP BY + ORDER BY + LIMIT
|
||||
--echo #
|
||||
|
||||
create table t0 (a int);
|
||||
insert into t0 values (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);
|
||||
|
||||
create table t1 (a int, b int, index idx1(a,b), index idx2(b,a));
|
||||
insert into t1
|
||||
select 1000*s4.a+100*s3.a+10*s2.a + s1.a, 1000*s4.a+100*s3.a+10*s2.a+s1.a
|
||||
from t0 s1, t0 s2, t0 s3, t0 s4;
|
||||
--disable_result_log
|
||||
analyze table t1;
|
||||
--enable_result_log
|
||||
|
||||
explain
|
||||
select b, count(*) num_cnt from t1
|
||||
where a > 9750 group by b order by num_cnt;
|
||||
flush status;
|
||||
--disable_result_log
|
||||
select b, count(*) num_cnt from t1
|
||||
where a > 9750 group by b order by num_cnt;
|
||||
--enable_result_log
|
||||
show status like '%Handler_read%';
|
||||
|
||||
explain
|
||||
select b, count(*) num_cnt from t1
|
||||
where a > 9750 group by b order by num_cnt limit 1;
|
||||
flush status;
|
||||
--disable_result_log
|
||||
select b, count(*) num_cnt from t1
|
||||
where a > 9750 group by b order by num_cnt limit 1;
|
||||
--enable_result_log
|
||||
show status like '%Handler_read%';
|
||||
|
||||
drop table t0, t1;
|
||||
|
||||
--echo #
|
||||
--echo # LP bug #1002508 : the number of expected rows to be examined is off
|
||||
--echo # (bug #13528826)
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a int PRIMARY KEY, b int) ENGINE=myisam;
|
||||
INSERT INTO t1 VALUES
|
||||
(5, 10), (2, 70), (7, 80), (6, 20), (1, 50), (9, 40), (8, 30), (3, 60);
|
||||
CREATE TABLE t2 (p int, a int, INDEX i_a(a)) ENGINE=myisam;
|
||||
INSERT INTO t2 VALUES
|
||||
(103, 7), (109, 3), (102, 3), (108, 1), (106, 3),
|
||||
(107, 7), (105, 1), (101, 3), (100, 7), (110, 1);
|
||||
|
||||
EXPLAIN
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.a=t2.a ORDER BY t1.a;
|
||||
|
||||
EXPLAIN
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.a=t2.a ORDER BY t1.a LIMIT 8;
|
||||
|
||||
EXPLAIN
|
||||
SELECT t1.a FROM t1 LEFT JOIN t2 ON t1.a=t2.a ORDER BY t1.a LIMIT 100;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
||||
--echo End of 5.5 tests
|
||||
|
||||
|
||||
|
@ -2395,6 +2395,14 @@ SELECT 1 FROM t1 WHERE b < SOME
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
--echo MDEV-612 Valgrind error in ha_maria::check_if_incompatible_data
|
||||
--echo
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a)) ENGINE=Aria PARTITION BY KEY(a) PARTITIONS 2;
|
||||
ALTER TABLE t1 ADD KEY (b);
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
|
@ -676,6 +676,64 @@ $cond;
|
||||
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
--echo #
|
||||
--echo # Bug mdev-585: range vs index-merge with ORDER BY ... LIMIT n
|
||||
--echo # (LP bug #637962)
|
||||
--echo #
|
||||
|
||||
DROP INDEX CountryPopulation ON City;
|
||||
DROP INDEX CountryName ON City;
|
||||
DROP INDEX CityName on City;
|
||||
|
||||
CREATE INDEX Name ON City(Name);
|
||||
CREATE INDEX Population ON City(Population);
|
||||
|
||||
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000);
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000);
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
|
||||
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
|
||||
|
||||
set optimizer_switch='index_merge=off';
|
||||
|
||||
--replace_column 9 #
|
||||
EXPLAIN
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM City
|
||||
WHERE ((Name > 'Ca' AND Name < 'Cf') OR (Country > 'E' AND Country < 'H'))
|
||||
AND (Population >= 100000 AND Population < 120000)
|
||||
ORDER BY Population LIMIT 5;
|
||||
SHOW STATUS LIKE 'Handler_read_%';
|
||||
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
|
||||
DROP DATABASE world;
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user