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
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -67,7 +67,7 @@ IF(NOT "${MAJOR_VERSION}" MATCHES "[0-9]+" OR
|
|||||||
MARK_AS_ADVANCED(VERSION MYSQL_VERSION_ID MYSQL_BASE_VERSION)
|
MARK_AS_ADVANCED(VERSION MYSQL_VERSION_ID MYSQL_BASE_VERSION)
|
||||||
SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
|
SET(CPACK_PACKAGE_VERSION_MAJOR ${MAJOR_VERSION})
|
||||||
SET(CPACK_PACKAGE_VERSION_MINOR ${MINOR_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()
|
ENDMACRO()
|
||||||
|
|
||||||
# Get mysql version and other interesting variables
|
# Get mysql version and other interesting variables
|
||||||
|
@ -41,7 +41,6 @@
|
|||||||
#cmakedefine HAVE_FNMATCH_H 1
|
#cmakedefine HAVE_FNMATCH_H 1
|
||||||
#cmakedefine HAVE_FPU_CONTROL_H 1
|
#cmakedefine HAVE_FPU_CONTROL_H 1
|
||||||
#cmakedefine HAVE_GRP_H 1
|
#cmakedefine HAVE_GRP_H 1
|
||||||
#cmakedefine HAVE_EXPLICIT_TEMPLATE_INSTANTIATION 1
|
|
||||||
#cmakedefine HAVE_IA64INTRIN_H 1
|
#cmakedefine HAVE_IA64INTRIN_H 1
|
||||||
#cmakedefine HAVE_IEEEFP_H 1
|
#cmakedefine HAVE_IEEEFP_H 1
|
||||||
#cmakedefine HAVE_INTTYPES_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
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -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/log.cpp src/socket_wrapper.cpp src/ssl.cpp src/timer.cpp src/yassl_error.cpp
|
||||||
src/yassl_imp.cpp src/yassl_int.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})
|
ADD_CONVENIENCE_LIBRARY(yassl ${YASSL_SOURCES})
|
||||||
RESTRICT_SYMBOL_EXPORTS(yassl)
|
RESTRICT_SYMBOL_EXPORTS(yassl)
|
||||||
|
|
||||||
|
@ -993,25 +993,4 @@ x509* PemToDer(FILE* file, CertType type, EncryptedInfo* info)
|
|||||||
|
|
||||||
} // namespace
|
} // 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
|
#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;
|
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/random.hpp include/ripemd.hpp include/rsa.hpp include/sha.hpp
|
||||||
include/rabbit.hpp include/hc128.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})
|
ADD_CONVENIENCE_LIBRARY(taocrypt ${TAOCRYPT_SOURCES})
|
||||||
RESTRICT_SYMBOL_EXPORTS(taocrypt)
|
RESTRICT_SYMBOL_EXPORTS(taocrypt)
|
||||||
|
|
||||||
|
@ -325,13 +325,3 @@ void AbstractRing::SimultaneousExponentiate(Integer *results,
|
|||||||
|
|
||||||
} // namespace
|
} // 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;
|
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
|
} // 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_USES_BLOCK_SIZE ((uint) 32768)
|
||||||
#define HA_SORT_ALLOWS_SAME 512 /* Intern bit when sorting records */
|
#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 */
|
/* These flags can be added to key-seg-flag */
|
||||||
|
|
||||||
#define HA_SPACE_PACK 1 /* Pack space in key-seg */
|
#define HA_SPACE_PACK 1 /* Pack space in key-seg */
|
||||||
|
@ -47,9 +47,6 @@ extern "C" {
|
|||||||
#ifndef MYSQL_ABI_CHECK
|
#ifndef MYSQL_ABI_CHECK
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef __LCC__
|
|
||||||
#include <winsock2.h> /* For windows */
|
|
||||||
#endif
|
|
||||||
typedef char my_bool;
|
typedef char my_bool;
|
||||||
#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__)
|
#if (defined(_WIN32) || defined(_WIN64)) && !defined(__WIN__)
|
||||||
#define __WIN__
|
#define __WIN__
|
||||||
@ -61,11 +58,13 @@ typedef char my_bool;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef my_socket_defined
|
#ifndef my_socket_defined
|
||||||
#ifdef __WIN__
|
#if defined (_WIN64)
|
||||||
#define my_socket SOCKET
|
#define my_socket unsigned long long
|
||||||
|
#elif defined (_WIN32)
|
||||||
|
#define my_socket unsigned int
|
||||||
#else
|
#else
|
||||||
typedef int my_socket;
|
typedef int my_socket;
|
||||||
#endif /* __WIN__ */
|
#endif /* _WIN64 */
|
||||||
#endif /* my_socket_defined */
|
#endif /* my_socket_defined */
|
||||||
#endif /* MY_GLOBAL_INCLUDED */
|
#endif /* MY_GLOBAL_INCLUDED */
|
||||||
|
|
||||||
|
@ -57,9 +57,6 @@
|
|||||||
#define LOCAL_HOST "localhost"
|
#define LOCAL_HOST "localhost"
|
||||||
#define LOCAL_HOST_NAMEDPIPE "."
|
#define LOCAL_HOST_NAMEDPIPE "."
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <ws2tcpip.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__WIN__) && !defined( _CUSTOMCONFIG_)
|
#if defined(__WIN__) && !defined( _CUSTOMCONFIG_)
|
||||||
#define MYSQL_NAMEDPIPE "MySQL"
|
#define MYSQL_NAMEDPIPE "MySQL"
|
||||||
@ -128,6 +125,8 @@ enum enum_server_command
|
|||||||
reserved by MySQL Cluster */
|
reserved by MySQL Cluster */
|
||||||
#define FIELD_FLAGS_COLUMN_FORMAT 24 /* Field column format, bit 24-25,
|
#define FIELD_FLAGS_COLUMN_FORMAT 24 /* Field column format, bit 24-25,
|
||||||
reserved by MySQL Cluster */
|
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_GRANT 1 /* Refresh grant tables */
|
||||||
#define REFRESH_LOG 2 /* Start on new log file */
|
#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
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -1004,7 +1004,7 @@ bool Protocol::send_result_set_metadata(List<Item> *list, uint flags)
|
|||||||
thd_cs->mbmaxlen);
|
thd_cs->mbmaxlen);
|
||||||
}
|
}
|
||||||
client_field->type= server_field.type;
|
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->decimals= server_field.decimals;
|
||||||
client_field->db_length= strlen(client_field->db);
|
client_field->db_length= strlen(client_field->db);
|
||||||
client_field->table_length= strlen(client_field->table);
|
client_field->table_length= strlen(client_field->table);
|
||||||
|
@ -94,8 +94,10 @@ if (`SELECT @@global.binlog_format = 'STATEMENT'`)
|
|||||||
#flush the logs before the test
|
#flush the logs before the test
|
||||||
connection slave;
|
connection slave;
|
||||||
FLUSH LOGS;
|
FLUSH LOGS;
|
||||||
|
source include/wait_for_binlog_checkpoint.inc;
|
||||||
connection master;
|
connection master;
|
||||||
FLUSH LOGS;
|
FLUSH LOGS;
|
||||||
|
source include/wait_for_binlog_checkpoint.inc;
|
||||||
}
|
}
|
||||||
|
|
||||||
CREATE TABLE t1(a int, UNIQUE(a));
|
CREATE TABLE t1(a int, UNIQUE(a));
|
||||||
|
@ -43,6 +43,7 @@ let $binlog_limit= 1,4;
|
|||||||
source include/show_binlog_events.inc;
|
source include/show_binlog_events.inc;
|
||||||
let $binlog_limit=;
|
let $binlog_limit=;
|
||||||
flush logs;
|
flush logs;
|
||||||
|
--source include/wait_for_binlog_checkpoint.inc
|
||||||
|
|
||||||
# We need an extra update before doing save_master_pos.
|
# We need an extra update before doing save_master_pos.
|
||||||
# Otherwise, an unlikely scenario may occur:
|
# Otherwise, an unlikely scenario may occur:
|
||||||
|
@ -41,8 +41,10 @@ INSERT INTO t1 VALUES (3);
|
|||||||
#
|
#
|
||||||
|
|
||||||
FLUSH LOGS;
|
FLUSH LOGS;
|
||||||
|
--source include/wait_for_binlog_checkpoint.inc
|
||||||
-- connection master
|
-- connection master
|
||||||
FLUSH LOGS;
|
FLUSH LOGS;
|
||||||
|
--source include/wait_for_binlog_checkpoint.inc
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
--let $is_relay_log= 0
|
--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
|
if (`select @@debug_sync not like 'ON %'`) {
|
||||||
disable_query_log;
|
--skip Needs a debug_sync enabled
|
||||||
let $value= query_get_value(SHOW VARIABLES LIKE 'debug_sync', Value, 1);
|
}
|
||||||
eval SELECT ('$value' LIKE 'ON %') AS debug_sync;
|
|
||||||
enable_query_log;
|
|
||||||
|
@ -4,6 +4,9 @@ plugin-load-add=$HA_INNODB_SO
|
|||||||
innodb
|
innodb
|
||||||
innodb-cmpmem
|
innodb-cmpmem
|
||||||
innodb-trx
|
innodb-trx
|
||||||
|
innodb-buffer-pool-stats
|
||||||
|
innodb-buffer-page
|
||||||
|
innodb-buffer-page-lru
|
||||||
|
|
||||||
[xtradb_plugin]
|
[xtradb_plugin]
|
||||||
ignore-builtin-innodb
|
ignore-builtin-innodb
|
||||||
@ -11,9 +14,15 @@ plugin-load-add=$HA_XTRADB_SO
|
|||||||
innodb
|
innodb
|
||||||
innodb-cmpmem
|
innodb-cmpmem
|
||||||
innodb-trx
|
innodb-trx
|
||||||
|
innodb-buffer-pool-stats
|
||||||
|
innodb-buffer-page
|
||||||
|
innodb-buffer-page-lru
|
||||||
|
|
||||||
[xtradb]
|
[xtradb]
|
||||||
innodb
|
innodb
|
||||||
innodb-cmpmem
|
innodb-cmpmem
|
||||||
innodb-trx
|
innodb-trx
|
||||||
innodb-metrics
|
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);
|
create table a (`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa` int);
|
||||||
ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long
|
ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long
|
||||||
create table t1 (a datetime default now());
|
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());
|
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);
|
create table t1 (a int default 100 auto_increment);
|
||||||
ERROR 42000: Invalid default value for 'a'
|
ERROR 42000: Invalid default value for 'a'
|
||||||
create table t1 (a tinyint default 1000);
|
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) );
|
INSERT INTO t1 VALUES ( (SELECT 1 FROM ( SELECT * FROM t1 ) as a) );
|
||||||
drop table t1;
|
drop table t1;
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
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;
|
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;
|
GROUP BY 1;
|
||||||
a
|
a
|
||||||
DROP TABLE t1, t2;
|
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
|
# End of 5.3 tests
|
||||||
#
|
#
|
||||||
# Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00
|
# Bug#49771: Incorrect MIN (date) when minimum value is 0000-00-00
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
debug_sync
|
|
||||||
1
|
|
@ -1678,6 +1678,12 @@ SELECT length(CAST(b AS CHAR)) FROM ubig;
|
|||||||
length(CAST(b AS CHAR))
|
length(CAST(b AS CHAR))
|
||||||
20
|
20
|
||||||
DROP TABLE ubig;
|
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.
|
End of 5.1 tests.
|
||||||
#
|
#
|
||||||
# Additional test for WL#3726 "DDL locking for all metadata objects"
|
# 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 0
|
||||||
Handler_read_rnd_deleted 0
|
Handler_read_rnd_deleted 0
|
||||||
Handler_read_rnd_next 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;
|
DROP DATABASE dbt3_s001;
|
||||||
use test;
|
use test;
|
||||||
#
|
#
|
||||||
@ -724,5 +744,33 @@ SELECT * FROM t1, t2 WHERE b=a;
|
|||||||
a b
|
a b
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
set optimizer_switch=@save_optimizer_switch;
|
||||||
DROP TABLE t1,t2;
|
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 optimizer_switch=@save_ext_key_optimizer_switch;
|
||||||
SET SESSION STORAGE_ENGINE=DEFAULT;
|
SET SESSION STORAGE_ENGINE=DEFAULT;
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
instr(version(), "debug") > 0
|
|
||||||
1
|
|
@ -44,7 +44,7 @@ select @@log_slow_verbosity;
|
|||||||
innodb
|
innodb
|
||||||
show fields from mysql.slow_log;
|
show fields from mysql.slow_log;
|
||||||
Field Type Null Key Default Extra
|
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
|
user_host mediumtext NO NULL
|
||||||
query_time time(6) NO NULL
|
query_time time(6) NO NULL
|
||||||
lock_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;
|
show create table mysql.general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
general_log CREATE TABLE `general_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`thread_id` int(11) NOT NULL,
|
`thread_id` int(11) NOT NULL,
|
||||||
`server_id` int(10) unsigned 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'
|
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='General log'
|
||||||
show fields from mysql.general_log;
|
show fields from mysql.general_log;
|
||||||
Field Type Null Key Default Extra
|
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
|
user_host mediumtext NO NULL
|
||||||
thread_id int(11) NO NULL
|
thread_id int(11) NO NULL
|
||||||
server_id int(10) unsigned NO NULL
|
server_id int(10) unsigned NO NULL
|
||||||
@ -71,7 +71,7 @@ argument mediumtext NO NULL
|
|||||||
show create table mysql.slow_log;
|
show create table mysql.slow_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
slow_log CREATE TABLE `slow_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`query_time` time(6) NOT NULL,
|
`query_time` time(6) NOT NULL,
|
||||||
`lock_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'
|
) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log'
|
||||||
show fields from mysql.slow_log;
|
show fields from mysql.slow_log;
|
||||||
Field Type Null Key Default Extra
|
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
|
user_host mediumtext NO NULL
|
||||||
query_time time(6) NO NULL
|
query_time time(6) NO NULL
|
||||||
lock_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;
|
show create table mysql.general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
general_log CREATE TABLE `general_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`thread_id` int(11) NOT NULL,
|
`thread_id` int(11) NOT NULL,
|
||||||
`server_id` int(10) unsigned 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;
|
show create table mysql.slow_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
slow_log CREATE TABLE `slow_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`query_time` time(6) NOT NULL,
|
`query_time` time(6) NOT NULL,
|
||||||
`lock_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;
|
show create table mysql.general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
general_log CREATE TABLE `general_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`thread_id` int(11) NOT NULL,
|
`thread_id` int(11) NOT NULL,
|
||||||
`server_id` int(10) unsigned 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;
|
show create table mysql.slow_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
slow_log CREATE TABLE `slow_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`query_time` time(6) NOT NULL,
|
`query_time` time(6) NOT NULL,
|
||||||
`lock_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;
|
SHOW CREATE TABLE mysql.general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
general_log CREATE TABLE `general_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`thread_id` int(11) NOT NULL,
|
`thread_id` int(11) NOT NULL,
|
||||||
`server_id` int(10) unsigned 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;
|
SHOW CREATE TABLE mysql.slow_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
slow_log CREATE TABLE `slow_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`query_time` time(6) NOT NULL,
|
`query_time` time(6) NOT NULL,
|
||||||
`lock_time` time(6) NOT NULL,
|
`lock_time` time(6) NOT NULL,
|
||||||
|
@ -83,7 +83,7 @@ Ssl_cipher AES128-SHA
|
|||||||
SHOW STATUS LIKE 'Ssl_cipher';
|
SHOW STATUS LIKE 'Ssl_cipher';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Ssl_cipher AES128-SHA
|
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);
|
CREATE TABLE t1(a int);
|
||||||
INSERT INTO t1 VALUES (1), (2);
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
|
||||||
|
@ -2830,3 +2830,79 @@ f0 f1 f2
|
|||||||
set sort_buffer_size= @save_sort_buffer_size;
|
set sort_buffer_size= @save_sort_buffer_size;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.3 tests
|
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
|
1
|
||||||
DROP TABLE t1;
|
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
|
End of 5.1 tests
|
||||||
#
|
#
|
||||||
# BUG#55385: UPDATE statement throws an error, but still updates
|
# BUG#55385: UPDATE statement throws an error, but still updates
|
||||||
|
@ -1221,6 +1221,153 @@ Lugansk UKR 469000
|
|||||||
Seattle USA 563374
|
Seattle USA 563374
|
||||||
Caracas VEN 1975294
|
Caracas VEN 1975294
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
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;
|
DROP DATABASE world;
|
||||||
use test;
|
use test;
|
||||||
CREATE TABLE t1 (
|
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.result 2012-11-21 19:35:14.000000000 +0100
|
||||||
+++ r/range_vs_index_merge_innodb,innodb_plugin.reject 2012-03-24 18:00:13.647902620 +0100
|
+++ ./r/range_vs_index_merge_innodb,innodb_plugin.reject 2012-11-21 20:56:00.000000000 +0100
|
||||||
@@ -50,14 +50,14 @@
|
@@ -50,14 +50,14 @@
|
||||||
WHERE (Population >= 100000 OR Name LIKE 'P%') AND Country='CAN' OR
|
WHERE (Population >= 100000 OR Name LIKE 'P%') AND Country='CAN' OR
|
||||||
(Population < 100000 OR Name Like 'T%') AND Country='ARG';
|
(Population < 100000 OR Name Like 'T%') AND Country='ARG';
|
||||||
@ -269,3 +269,12 @@
|
|||||||
SELECT Name, Country, Population FROM City WHERE
|
SELECT Name, Country, Population FROM City WHERE
|
||||||
(Name='Manila' AND Country='PHL') OR
|
(Name='Manila' AND Country='PHL') OR
|
||||||
(Name='Addis Abeba' AND Country='ETH') 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
|
Seattle USA 563374
|
||||||
Caracas VEN 1975294
|
Caracas VEN 1975294
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
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;
|
DROP DATABASE world;
|
||||||
use test;
|
use test;
|
||||||
CREATE TABLE t1 (
|
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 '',
|
`email` varchar(60) NOT NULL DEFAULT '',
|
||||||
PRIMARY KEY (`a`),
|
PRIMARY KEY (`a`),
|
||||||
UNIQUE KEY `email` (`email`)
|
UNIQUE KEY `email` (`email`)
|
||||||
) TYPE=HEAP ROW_FORMAT=DYNAMIC
|
) TYPE=MEMORY ROW_FORMAT=DYNAMIC
|
||||||
set sql_mode="postgresql,oracle,mssql,db2,maxdb";
|
set sql_mode="postgresql,oracle,mssql,db2,maxdb";
|
||||||
select @@sql_mode;
|
select @@sql_mode;
|
||||||
@@sql_mode
|
@@sql_mode
|
||||||
|
@ -6060,6 +6060,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
|||||||
col_int_nokey
|
col_int_nokey
|
||||||
1
|
1
|
||||||
DROP TABLE ot,it1,it2;
|
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
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# 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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
|
@ -6059,6 +6059,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
|||||||
col_int_nokey
|
col_int_nokey
|
||||||
1
|
1
|
||||||
DROP TABLE ot,it1,it2;
|
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
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# 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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
set optimizer_switch=default;
|
set optimizer_switch=default;
|
||||||
|
@ -6055,6 +6055,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
|||||||
col_int_nokey
|
col_int_nokey
|
||||||
1
|
1
|
||||||
DROP TABLE ot,it1,it2;
|
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
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# 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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
set @optimizer_switch_for_subselect_test=null;
|
set @optimizer_switch_for_subselect_test=null;
|
||||||
|
@ -6066,6 +6066,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
|||||||
col_int_nokey
|
col_int_nokey
|
||||||
1
|
1
|
||||||
DROP TABLE ot,it1,it2;
|
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
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# 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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
set optimizer_switch=default;
|
set optimizer_switch=default;
|
||||||
|
@ -6055,6 +6055,116 @@ WHERE (col_varchar_nokey, 'x') IN
|
|||||||
col_int_nokey
|
col_int_nokey
|
||||||
1
|
1
|
||||||
DROP TABLE ot,it1,it2;
|
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
|
End of 5.2 tests
|
||||||
#
|
#
|
||||||
# BUG#779885: Crash in eliminate_item_equal with materialization=on in
|
# 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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
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 ) ;
|
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
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
|
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
|
2 SUBQUERY t2 ref b b 5 test.t1.a 2 Using index
|
||||||
DROP TABLE t1,t2;
|
DROP TABLE t1,t2;
|
||||||
set @optimizer_switch_for_subselect_test=null;
|
set @optimizer_switch_for_subselect_test=null;
|
||||||
|
@ -247,7 +247,7 @@ event CREATE TABLE `event` (
|
|||||||
show create table general_log;
|
show create table general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
general_log CREATE TABLE `general_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`thread_id` int(11) NOT NULL,
|
`thread_id` int(11) NOT NULL,
|
||||||
`server_id` int(10) unsigned NOT NULL,
|
`server_id` int(10) unsigned NOT NULL,
|
||||||
@ -257,7 +257,7 @@ general_log CREATE TABLE `general_log` (
|
|||||||
show create table slow_log;
|
show create table slow_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
slow_log CREATE TABLE `slow_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`query_time` time(6) NOT NULL,
|
`query_time` time(6) NOT NULL,
|
||||||
`lock_time` time(6) NOT NULL,
|
`lock_time` time(6) NOT NULL,
|
||||||
|
@ -247,7 +247,7 @@ event CREATE TABLE `event` (
|
|||||||
show create table general_log;
|
show create table general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
general_log CREATE TABLE `general_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`thread_id` int(11) NOT NULL,
|
`thread_id` int(11) NOT NULL,
|
||||||
`server_id` int(10) unsigned NOT NULL,
|
`server_id` int(10) unsigned NOT NULL,
|
||||||
@ -257,7 +257,7 @@ general_log CREATE TABLE `general_log` (
|
|||||||
show create table slow_log;
|
show create table slow_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
slow_log CREATE TABLE `slow_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`query_time` time(6) NOT NULL,
|
`query_time` time(6) NOT NULL,
|
||||||
`lock_time` time(6) NOT NULL,
|
`lock_time` time(6) NOT NULL,
|
||||||
|
@ -247,7 +247,7 @@ event CREATE TABLE `event` (
|
|||||||
show create table general_log;
|
show create table general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
general_log CREATE TABLE `general_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`thread_id` int(11) NOT NULL,
|
`thread_id` int(11) NOT NULL,
|
||||||
`server_id` int(10) unsigned NOT NULL,
|
`server_id` int(10) unsigned NOT NULL,
|
||||||
@ -257,7 +257,7 @@ general_log CREATE TABLE `general_log` (
|
|||||||
show create table slow_log;
|
show create table slow_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
slow_log CREATE TABLE `slow_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`query_time` time(6) NOT NULL,
|
`query_time` time(6) NOT NULL,
|
||||||
`lock_time` time(6) NOT NULL,
|
`lock_time` time(6) NOT NULL,
|
||||||
|
@ -247,7 +247,7 @@ event CREATE TABLE `event` (
|
|||||||
show create table general_log;
|
show create table general_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
general_log CREATE TABLE `general_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`thread_id` int(11) NOT NULL,
|
`thread_id` int(11) NOT NULL,
|
||||||
`server_id` int(10) unsigned NOT NULL,
|
`server_id` int(10) unsigned NOT NULL,
|
||||||
@ -257,7 +257,7 @@ general_log CREATE TABLE `general_log` (
|
|||||||
show create table slow_log;
|
show create table slow_log;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
slow_log CREATE TABLE `slow_log` (
|
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,
|
`user_host` mediumtext NOT NULL,
|
||||||
`query_time` time(6) NOT NULL,
|
`query_time` time(6) NOT NULL,
|
||||||
`lock_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
|
20030101000000
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (t1 timestamp, t2 timestamp default now());
|
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());
|
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());
|
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());
|
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());
|
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);
|
create table t1 (t1 timestamp default '2003-01-01 00:00:00', t2 datetime, t3 timestamp);
|
||||||
SET TIMESTAMP=1000000000;
|
SET TIMESTAMP=1000000000;
|
||||||
insert into t1 values ();
|
insert into t1 values ();
|
||||||
|
@ -63,15 +63,15 @@ a
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
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
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
show columns from t1;
|
show columns from t1;
|
||||||
Field Type Null Key Default Extra
|
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';
|
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
|
table_name t1
|
||||||
column_name a
|
column_name a
|
||||||
column_default CURRENT_TIMESTAMP
|
column_default CURRENT_TIMESTAMP(4)
|
||||||
is_nullable NO
|
is_nullable NO
|
||||||
data_type timestamp
|
data_type timestamp
|
||||||
character_maximum_length NULL
|
character_maximum_length NULL
|
||||||
@ -113,7 +113,7 @@ t2 CREATE TABLE `t2` (
|
|||||||
show create table t3;
|
show create table t3;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t3 CREATE TABLE `t3` (
|
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
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
drop table t2, t3;
|
drop table t2, t3;
|
||||||
insert t1 values ('2010-12-13 14:15:16.222222');
|
insert t1 values ('2010-12-13 14:15:16.222222');
|
||||||
@ -278,3 +278,23 @@ select * from t1;
|
|||||||
a
|
a
|
||||||
2011-01-01 01:01:01.12345
|
2011-01-01 01:01:01.12345
|
||||||
drop table t1;
|
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;
|
SET @bug12408412=1;
|
||||||
SELECT GROUP_CONCAT(@bug12408412 ORDER BY 1) INTO @bug12408412;
|
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
|
End of 5.5 tests
|
||||||
|
@ -211,10 +211,10 @@ VARIABLE_NAME VARIABLE_VALUE
|
|||||||
DEFAULT_STORAGE_ENGINE MEMORY
|
DEFAULT_STORAGE_ENGINE MEMORY
|
||||||
show global variables like 'default_storage_engine';
|
show global variables like 'default_storage_engine';
|
||||||
Variable_name Value
|
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';
|
select * from information_schema.global_variables where variable_name like 'default_storage_engine';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
DEFAULT_STORAGE_ENGINE MRG_MYISAM
|
DEFAULT_STORAGE_ENGINE MRG_MyISAM
|
||||||
set GLOBAL myisam_max_sort_file_size=2000000;
|
set GLOBAL myisam_max_sort_file_size=2000000;
|
||||||
Warnings:
|
Warnings:
|
||||||
Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '2000000'
|
Warning 1292 Truncated incorrect myisam_max_sort_file_size value: '2000000'
|
||||||
|
@ -4825,6 +4825,38 @@ drop tables t1,t2;
|
|||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
# -- End of 5.3 tests.
|
# -- 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
|
# some subqueries in SELECT list test
|
||||||
create table t1 (a int, b int);
|
create table t1 (a int, b int);
|
||||||
create table t2 (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
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
master-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
||||||
master-bin.000003 # Binlog_checkpoint # # master-bin.000001
|
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";
|
SET DEBUG_SYNC= "now SIGNAL con2_continue";
|
||||||
con1 is still pending, no new binlog checkpoint should have been logged.
|
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
|
include/show_binlog_events.inc
|
||||||
Log_name Pos Event_type Server_id End_log_pos Info
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
master-bin.000003 # Format_desc # # SERVER_VERSION, BINLOG_VERSION
|
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 # Write_rows # # table_id: # flags: STMT_END_F
|
||||||
master-bin.000004 # Xid # # COMMIT /* XID */
|
master-bin.000004 # Xid # # COMMIT /* XID */
|
||||||
SET DEBUG_SYNC= "now SIGNAL con10_cont";
|
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 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";
|
SET DEBUG_SYNC= "now SIGNAL con11_cont";
|
||||||
Checking that master-bin.000004 is the last binlog checkpoint
|
Checking that master-bin.000004 is the last binlog checkpoint
|
||||||
include/show_binlog_events.inc
|
include/show_binlog_events.inc
|
||||||
|
@ -71,6 +71,12 @@ SET DEBUG_SYNC= "now WAIT_FOR con2_ready";
|
|||||||
--let $binlog_file= master-bin.000003
|
--let $binlog_file= master-bin.000003
|
||||||
--source include/show_binlog_events.inc
|
--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";
|
SET DEBUG_SYNC= "now SIGNAL con2_continue";
|
||||||
|
|
||||||
connection con2;
|
connection con2;
|
||||||
@ -78,6 +84,12 @@ reap;
|
|||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
--echo con1 is still pending, no new binlog checkpoint should have been logged.
|
--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
|
--let $binlog_file= master-bin.000003
|
||||||
--source include/show_binlog_events.inc
|
--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
|
# Insert some data to force a couple binlog rotations (3), so we get some
|
||||||
# normal binlog checkpoints before starting the test.
|
# normal binlog checkpoints before starting the test.
|
||||||
INSERT INTO t1 VALUES (100, REPEAT("x", 4100));
|
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));
|
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));
|
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
|
# Now start a bunch of transactions that span multiple binlog
|
||||||
# files. Leave then in the state prepared-but-not-committed in the engine
|
# 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;
|
connection con10;
|
||||||
reap;
|
reap;
|
||||||
connection default;
|
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";
|
SET DEBUG_SYNC= "now SIGNAL con12_cont";
|
||||||
connection con12;
|
connection con12;
|
||||||
reap;
|
reap;
|
||||||
connection default;
|
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";
|
SET DEBUG_SYNC= "now SIGNAL con11_cont";
|
||||||
connection con11;
|
connection con11;
|
||||||
reap;
|
reap;
|
||||||
@ -211,7 +236,20 @@ RESET MASTER;
|
|||||||
# crash recovery fails due to the error insert used for previous test.
|
# crash recovery fails due to the error insert used for previous test.
|
||||||
INSERT INTO t1 VALUES (21, REPEAT("x", 4100));
|
INSERT INTO t1 VALUES (21, REPEAT("x", 4100));
|
||||||
INSERT INTO t1 VALUES (22, 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));
|
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
|
--write_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
wait-binlog_xa_recover.test
|
wait-binlog_xa_recover.test
|
||||||
EOF
|
EOF
|
||||||
|
@ -1999,4 +1999,4 @@ connection slave;
|
|||||||
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
|
SET @@GLOBAL.CONCURRENT_INSERT= @OLD_SLAVE_CONCURRENT_INSERT;
|
||||||
|
|
||||||
connection default;
|
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 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 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 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 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 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
|
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 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 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 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 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 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
|
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 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 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 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 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 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
|
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 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 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 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 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 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
|
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
|
SELECT * FROM information_schema.engines
|
||||||
WHERE ENGINE = 'MRG_MYISAM';
|
WHERE ENGINE = 'MRG_MYISAM';
|
||||||
ENGINE MRG_MYISAM
|
ENGINE MRG_MyISAM
|
||||||
SUPPORT YES
|
SUPPORT YES
|
||||||
COMMENT Collection of identical MyISAM tables
|
COMMENT Collection of identical MyISAM tables
|
||||||
TRANSACTIONS NO
|
TRANSACTIONS NO
|
||||||
|
@ -382,6 +382,26 @@ INSERT INTO t1 VALUES('A ', 'A ');
|
|||||||
ERROR 23000: Duplicate entry 'A -A ' for key 'key1'
|
ERROR 23000: Duplicate entry 'A -A ' for key 'key1'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
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
|
# bit index in heap tables
|
||||||
create table t1 (a bit(63) not null) engine=heap;
|
create table t1 (a bit(63) not null) engine=heap;
|
||||||
insert into t1 values (869751),(736494),(226312),(802616),(728912);
|
insert into t1 values (869751),(736494),(226312),(802616),(728912);
|
||||||
|
@ -285,6 +285,23 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
--echo End of 5.0 tests
|
--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
|
-- echo # bit index in heap tables
|
||||||
|
|
||||||
create table t1 (a bit(63) not null) engine=heap;
|
create table t1 (a bit(63) not null) engine=heap;
|
||||||
|
@ -72,6 +72,7 @@ connection con3;
|
|||||||
--echo # Connection con3
|
--echo # Connection con3
|
||||||
COMMIT;
|
COMMIT;
|
||||||
FLUSH LOGS;
|
FLUSH LOGS;
|
||||||
|
--source include/wait_for_binlog_checkpoint.inc
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
--echo # Connection default
|
--echo # Connection default
|
||||||
|
@ -3,11 +3,6 @@
|
|||||||
|
|
||||||
-- source include/have_innodb.inc
|
-- 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
|
-- disable_result_log
|
||||||
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
|
SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS;
|
||||||
|
|
||||||
|
@ -169,6 +169,7 @@ select * from db2.t1;
|
|||||||
|
|
||||||
--connection master1
|
--connection master1
|
||||||
flush logs;
|
flush logs;
|
||||||
|
--source include/wait_for_binlog_checkpoint.inc
|
||||||
--save_master_pos
|
--save_master_pos
|
||||||
--connection slave
|
--connection slave
|
||||||
--sync_with_master 0, 'master1'
|
--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"
|
and event_name not like "%MYSQL_BIN_LOG::update_cond"
|
||||||
order by event_name;
|
order by event_name;
|
||||||
EVENT_NAME COUNT_STAR
|
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_queue_busy NONE
|
||||||
wait/synch/cond/sql/MYSQL_BIN_LOG::COND_xid_list 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_index MANY
|
||||||
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_xid_list MANY
|
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_xid_list MANY
|
||||||
"Expect no slave relay log"
|
"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"
|
and event_name not like "%MYSQL_BIN_LOG::update_cond"
|
||||||
order by event_name;
|
order by event_name;
|
||||||
EVENT_NAME COUNT_STAR
|
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_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_index MANY
|
||||||
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_xid_list MANY
|
wait/synch/mutex/sql/MYSQL_BIN_LOG::LOCK_xid_list MANY
|
||||||
"Expect a slave relay log"
|
"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;
|
SET @@global.default_storage_engine = MERGE;
|
||||||
SELECT @@global.default_storage_engine;
|
SELECT @@global.default_storage_engine;
|
||||||
@@global.default_storage_engine
|
@@global.default_storage_engine
|
||||||
MRG_MYISAM
|
MRG_MyISAM
|
||||||
SET @@global.default_storage_engine = MEMORY;
|
SET @@global.default_storage_engine = MEMORY;
|
||||||
SELECT @@global.default_storage_engine;
|
SELECT @@global.default_storage_engine;
|
||||||
@@global.default_storage_engine
|
@@global.default_storage_engine
|
||||||
@ -36,7 +36,7 @@ MyISAM
|
|||||||
SET @@session.default_storage_engine = MERGE;
|
SET @@session.default_storage_engine = MERGE;
|
||||||
SELECT @@session.default_storage_engine;
|
SELECT @@session.default_storage_engine;
|
||||||
@@session.default_storage_engine
|
@@session.default_storage_engine
|
||||||
MRG_MYISAM
|
MRG_MyISAM
|
||||||
SET @@session.default_storage_engine = MEMORY;
|
SET @@session.default_storage_engine = MEMORY;
|
||||||
SELECT @@session.default_storage_engine;
|
SELECT @@session.default_storage_engine;
|
||||||
@@session.default_storage_engine
|
@@session.default_storage_engine
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
XtraDB extension
|
@ -19,7 +19,7 @@ MyISAM
|
|||||||
SET @@global.storage_engine = MERGE;
|
SET @@global.storage_engine = MERGE;
|
||||||
SELECT @@global.storage_engine;
|
SELECT @@global.storage_engine;
|
||||||
@@global.storage_engine
|
@@global.storage_engine
|
||||||
MRG_MYISAM
|
MRG_MyISAM
|
||||||
SET @@global.storage_engine = MEMORY;
|
SET @@global.storage_engine = MEMORY;
|
||||||
SELECT @@global.storage_engine;
|
SELECT @@global.storage_engine;
|
||||||
@@global.storage_engine
|
@@global.storage_engine
|
||||||
@ -36,7 +36,7 @@ MyISAM
|
|||||||
SET @@session.storage_engine = MERGE;
|
SET @@session.storage_engine = MERGE;
|
||||||
SELECT @@session.storage_engine;
|
SELECT @@session.storage_engine;
|
||||||
@@session.storage_engine
|
@@session.storage_engine
|
||||||
MRG_MYISAM
|
MRG_MyISAM
|
||||||
SET @@session.storage_engine = MEMORY;
|
SET @@session.storage_engine = MEMORY;
|
||||||
SELECT @@session.storage_engine;
|
SELECT @@session.storage_engine;
|
||||||
@@session.storage_engine
|
@@session.storage_engine
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
--echo XtraDB extension
|
@ -108,3 +108,44 @@ select * from t1;
|
|||||||
|
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
drop procedure p1;
|
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 t1 values (1,default);
|
||||||
insert into t2 values (2,default);
|
insert into t2 values (2,default);
|
||||||
create table t3 (a int, b int as (a % 10)) engine=MERGE UNION=(t1,t2);
|
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;
|
drop table t1,t2;
|
||||||
|
@ -85,3 +85,43 @@ a b c
|
|||||||
300 30 30
|
300 30 30
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
drop procedure p1;
|
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
|
300 30 30
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
drop procedure p1;
|
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)
|
# Some wrong defaults, so these creates should fail too (Bug #5902)
|
||||||
#
|
#
|
||||||
--error 1067
|
|
||||||
create table t1 (a datetime default now());
|
create table t1 (a datetime default now());
|
||||||
--error 1294
|
drop table t1;
|
||||||
create table t1 (a datetime on update now());
|
create table t1 (a datetime on update now());
|
||||||
|
drop table t1;
|
||||||
--error 1067
|
--error 1067
|
||||||
create table t1 (a int default 100 auto_increment);
|
create table t1 (a int default 100 auto_increment);
|
||||||
--error 1067
|
--error 1067
|
||||||
|
@ -212,5 +212,65 @@ INSERT INTO t1 VALUES ( (SELECT 1 FROM ( SELECT * FROM t1 ) as a) );
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
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
|
# The following command must be the last one the file
|
||||||
set optimizer_switch=@exit_optimizer_switch;
|
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;
|
GROUP BY 1;
|
||||||
DROP TABLE t1, t2;
|
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 # End of 5.3 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1444,6 +1444,17 @@ SELECT length(CAST(b AS CHAR)) FROM ubig;
|
|||||||
|
|
||||||
DROP TABLE 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.
|
--echo End of 5.1 tests.
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ show tables;
|
|||||||
# Bug#18925: subqueries with MIN/MAX functions on INFORMATION_SCHEMA
|
# Bug#18925: subqueries with MIN/MAX functions on INFORMATION_SCHEMA
|
||||||
#
|
#
|
||||||
|
|
||||||
|
--sorted_result
|
||||||
SELECT t.table_name, c1.column_name
|
SELECT t.table_name, c1.column_name
|
||||||
FROM information_schema.tables t
|
FROM information_schema.tables t
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
@ -29,6 +30,7 @@ SELECT t.table_name, c1.column_name
|
|||||||
c2.table_name = t.table_name AND
|
c2.table_name = t.table_name AND
|
||||||
c2.column_name LIKE '%SCHEMA%'
|
c2.column_name LIKE '%SCHEMA%'
|
||||||
) order by t.table_name;
|
) order by t.table_name;
|
||||||
|
--sorted_result
|
||||||
SELECT t.table_name, c1.column_name
|
SELECT t.table_name, c1.column_name
|
||||||
FROM information_schema.tables t
|
FROM information_schema.tables t
|
||||||
INNER JOIN
|
INNER JOIN
|
||||||
|
@ -287,6 +287,27 @@ select o_orderkey, p_partkey
|
|||||||
and o_orderkey=l_orderkey and p_partkey=l_partkey;
|
and o_orderkey=l_orderkey and p_partkey=l_partkey;
|
||||||
show status like 'handler_read%';
|
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;
|
DROP DATABASE dbt3_s001;
|
||||||
|
|
||||||
use test;
|
use test;
|
||||||
@ -407,5 +428,44 @@ set optimizer_switch=@save_optimizer_switch;
|
|||||||
|
|
||||||
DROP TABLE t1,t2;
|
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 optimizer_switch=@save_ext_key_optimizer_switch;
|
||||||
SET SESSION STORAGE_ENGINE=DEFAULT;
|
SET SESSION STORAGE_ENGINE=DEFAULT;
|
||||||
|
|
||||||
|
@ -1851,3 +1851,68 @@ DROP TABLE t1;
|
|||||||
|
|
||||||
--echo End of 5.3 tests
|
--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;
|
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 End of 5.1 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -675,6 +675,64 @@ SELECT Name, Country, Population FROM City WHERE
|
|||||||
$cond;
|
$cond;
|
||||||
|
|
||||||
set optimizer_switch=@save_optimizer_switch;
|
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;
|
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