mirror of
https://github.com/MariaDB/server.git
synced 2026-04-20 15:25:33 +02:00
merge
This commit is contained in:
commit
3374afe8b0
90 changed files with 1354 additions and 734 deletions
|
|
@ -517,9 +517,14 @@ static int process_all_tables_in_db(char *database)
|
|||
LINT_INIT(res);
|
||||
if (use_db(database))
|
||||
return 1;
|
||||
if (mysql_query(sock, "SHOW /*!50002 FULL*/ TABLES") ||
|
||||
!((res= mysql_store_result(sock))))
|
||||
if ((mysql_query(sock, "SHOW /*!50002 FULL*/ TABLES") &&
|
||||
mysql_query(sock, "SHOW TABLES")) ||
|
||||
!(res= mysql_store_result(sock)))
|
||||
{
|
||||
my_printf_error(0, "Error: Couldn't get table list for database %s: %s",
|
||||
MYF(0), database, mysql_error(sock));
|
||||
return 1;
|
||||
}
|
||||
|
||||
num_columns= mysql_num_fields(res);
|
||||
|
||||
|
|
|
|||
|
|
@ -2407,4 +2407,13 @@ int i_am_a_dummy_function() {
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef __WIN__
|
||||
char _db_doprnt_;
|
||||
char _db_enter_;
|
||||
char _db_pargs_;
|
||||
char _db_process_;
|
||||
char _db_push_;
|
||||
char _db_return_;
|
||||
#endif /*__WIN__*/
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#include "yassl_types.hpp" // SignatureAlgorithm
|
||||
#include "buffer.hpp" // input_buffer
|
||||
#include "asn.hpp" // SignerList
|
||||
#include "openssl/ssl.h" // internal and external use
|
||||
#include STL_LIST_FILE
|
||||
#include STL_ALGORITHM_FILE
|
||||
|
||||
|
|
@ -87,6 +88,7 @@ class CertManager {
|
|||
bool verifyNone_; // no error if verify fails
|
||||
bool failNoCert_;
|
||||
bool sendVerify_;
|
||||
VerifyCallback verifyCallback_; // user verify callback
|
||||
public:
|
||||
CertManager();
|
||||
~CertManager();
|
||||
|
|
@ -118,6 +120,7 @@ public:
|
|||
void setFailNoCert();
|
||||
void setSendVerify();
|
||||
void setPeerX509(X509*);
|
||||
void setVerifyCallback(VerifyCallback);
|
||||
private:
|
||||
CertManager(const CertManager&); // hide copy
|
||||
CertManager& operator=(const CertManager&); // and assign
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@
|
|||
#define SSL_load_error_strings yaSSL_load_error_strings
|
||||
#define SSL_set_session yaSSL_set_session
|
||||
#define SSL_get_session yaSSL_get_session
|
||||
#define SSL_flush_sessions yaSSL_flush_sessions
|
||||
#define SSL_SESSION_set_timeout yaSSL_SESSION_set_timeout
|
||||
#define SSL_CTX_set_session_cache_mode yaSSL_CTX_set_session_cache_mode
|
||||
#define SSL_get_peer_certificate yaSSL_get_peer_certificate
|
||||
|
|
|
|||
|
|
@ -170,8 +170,9 @@ enum { /* X509 Constants */
|
|||
X509_V_ERR_CRL_SIGNATURE_FAILURE = 10,
|
||||
X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 11,
|
||||
X509_V_ERR_CRL_HAS_EXPIRED = 12,
|
||||
X509_V_ERR_CERT_REVOKED = 13
|
||||
|
||||
X509_V_ERR_CERT_REVOKED = 13,
|
||||
X509_V_FLAG_CRL_CHECK = 14,
|
||||
X509_V_FLAG_CRL_CHECK_ALL = 15
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -202,7 +203,8 @@ SSL_CTX* SSL_CTX_new(SSL_METHOD*);
|
|||
SSL* SSL_new(SSL_CTX*);
|
||||
int SSL_set_fd (SSL*, YASSL_SOCKET_T);
|
||||
YASSL_SOCKET_T SSL_get_fd(const SSL*);
|
||||
int SSL_connect(SSL*);
|
||||
int SSL_connect(SSL*); // if you get an error from connect
|
||||
// see note at top of REAMDE
|
||||
int SSL_write(SSL*, const void*, int);
|
||||
int SSL_read(SSL*, void*, int);
|
||||
int SSL_accept(SSL*);
|
||||
|
|
@ -227,6 +229,7 @@ void SSL_load_error_strings(void);
|
|||
|
||||
int SSL_set_session(SSL *ssl, SSL_SESSION *session);
|
||||
SSL_SESSION* SSL_get_session(SSL* ssl);
|
||||
void SSL_flush_sessions(SSL_CTX *ctx, long tm);
|
||||
long SSL_SESSION_set_timeout(SSL_SESSION*, long);
|
||||
long SSL_CTX_set_session_cache_mode(SSL_CTX* ctx, long mode);
|
||||
X509* SSL_get_peer_certificate(SSL*);
|
||||
|
|
|
|||
|
|
@ -667,10 +667,12 @@ struct Parameters {
|
|||
Cipher suites_[MAX_SUITE_SZ];
|
||||
char cipher_name_[MAX_SUITE_NAME];
|
||||
char cipher_list_[MAX_CIPHERS][MAX_SUITE_NAME];
|
||||
bool removeDH_; // for server's later use
|
||||
|
||||
Parameters(ConnectionEnd, const Ciphers&, ProtocolVersion, bool haveDH);
|
||||
|
||||
void SetSuites(ProtocolVersion pv, bool removeDH = false);
|
||||
void SetSuites(ProtocolVersion pv, bool removeDH = false,
|
||||
bool removeRSA = false, bool removeDSA = false);
|
||||
void SetCipherNames();
|
||||
private:
|
||||
Parameters(const Parameters&); // hide copy
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
|
||||
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
|
||||
|
|
@ -268,12 +268,14 @@ class Sessions {
|
|||
STL::list<SSL_SESSION*> list_;
|
||||
RandomPool random_; // for session cleaning
|
||||
Mutex mutex_; // no-op for single threaded
|
||||
int count_; // flush counter
|
||||
|
||||
Sessions() {} // only GetSessions can create
|
||||
Sessions() : count_(0) {} // only GetSessions can create
|
||||
public:
|
||||
SSL_SESSION* lookup(const opaque*, SSL_SESSION* copy = 0);
|
||||
void add(const SSL&);
|
||||
void remove(const opaque*);
|
||||
void Flush();
|
||||
|
||||
~Sessions();
|
||||
|
||||
|
|
@ -425,8 +427,10 @@ private:
|
|||
pem_password_cb passwordCb_;
|
||||
void* userData_;
|
||||
bool sessionCacheOff_;
|
||||
bool sessionCacheFlushOff_;
|
||||
Stats stats_;
|
||||
Mutex mutex_; // for Stats
|
||||
VerifyCallback verifyCallback_;
|
||||
public:
|
||||
explicit SSL_CTX(SSL_METHOD* meth);
|
||||
~SSL_CTX();
|
||||
|
|
@ -437,18 +441,22 @@ public:
|
|||
const Ciphers& GetCiphers() const;
|
||||
const DH_Parms& GetDH_Parms() const;
|
||||
const Stats& GetStats() const;
|
||||
const VerifyCallback getVerifyCallback() const;
|
||||
pem_password_cb GetPasswordCb() const;
|
||||
void* GetUserData() const;
|
||||
bool GetSessionCacheOff() const;
|
||||
bool GetSessionCacheFlushOff() const;
|
||||
|
||||
void setVerifyPeer();
|
||||
void setVerifyNone();
|
||||
void setFailNoCert();
|
||||
void setVerifyCallback(VerifyCallback);
|
||||
bool SetCipherList(const char*);
|
||||
bool SetDH(const DH&);
|
||||
void SetPasswordCb(pem_password_cb cb);
|
||||
void SetUserData(void*);
|
||||
void SetSessionCacheOff();
|
||||
void SetSessionCacheFlushOff();
|
||||
|
||||
void IncrementStats(StatsField);
|
||||
void AddCA(x509* ca);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
|
||||
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
|
||||
|
|
@ -29,6 +29,13 @@
|
|||
#include "type_traits.hpp"
|
||||
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// disable conversion warning
|
||||
// 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
|
||||
#pragma warning(disable:4244 4996)
|
||||
#endif
|
||||
|
||||
|
||||
namespace yaSSL {
|
||||
|
||||
#define YASSL_LIB
|
||||
|
|
@ -163,7 +170,7 @@ const int RMD_LEN = 20; // RIPEMD-160 digest length
|
|||
const int PREFIX = 3; // up to 3 prefix letters for secret rounds
|
||||
const int KEY_PREFIX = 7; // up to 7 prefix letters for key rounds
|
||||
const int FORTEZZA_MAX = 128; // Maximum Fortezza Key length
|
||||
const int MAX_SUITE_SZ = 64; // 32 max suites * sizeof(suite)
|
||||
const int MAX_SUITE_SZ = 128; // 64 max suites * sizeof(suite)
|
||||
const int MAX_SUITE_NAME = 48; // max length of suite name
|
||||
const int MAX_CIPHERS = 32; // max supported ciphers for cipher list
|
||||
const int SIZEOF_ENUM = 1; // SSL considers an enum 1 byte, not 4
|
||||
|
|
@ -205,6 +212,7 @@ const int SEED_LEN = RAN_LEN * 2; // TLS seed, client + server random
|
|||
const int DEFAULT_TIMEOUT = 500; // Default Session timeout in seconds
|
||||
const int MAX_RECORD_SIZE = 16384; // 2^14, max size by standard
|
||||
const int COMPRESS_EXTRA = 1024; // extra compression possible addition
|
||||
const int SESSION_FLUSH_COUNT = 256; // when to flush session cache
|
||||
|
||||
|
||||
typedef uint8 Cipher; // first byte is always 0x00 for SSLv3 & TLS
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
|
||||
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
|
||||
|
|
@ -24,6 +24,7 @@
|
|||
#include "runtime.hpp"
|
||||
#include "cert_wrapper.hpp"
|
||||
#include "yassl_int.hpp"
|
||||
#include "error.hpp"
|
||||
|
||||
#if defined(USE_CML_LIB)
|
||||
#include "cmapi_cpp.h"
|
||||
|
|
@ -90,7 +91,7 @@ opaque* x509::use_buffer()
|
|||
//CertManager
|
||||
CertManager::CertManager()
|
||||
: peerX509_(0), verifyPeer_(false), verifyNone_(false), failNoCert_(false),
|
||||
sendVerify_(false)
|
||||
sendVerify_(false), verifyCallback_(0)
|
||||
{}
|
||||
|
||||
|
||||
|
|
@ -154,6 +155,12 @@ void CertManager::setSendVerify()
|
|||
}
|
||||
|
||||
|
||||
void CertManager::setVerifyCallback(VerifyCallback vc)
|
||||
{
|
||||
verifyCallback_ = vc;
|
||||
}
|
||||
|
||||
|
||||
void CertManager::AddPeerCert(x509* x)
|
||||
{
|
||||
peerList_.push_back(x); // take ownership
|
||||
|
|
@ -236,7 +243,7 @@ uint CertManager::get_privateKeyLength() const
|
|||
int CertManager::Validate()
|
||||
{
|
||||
CertList::reverse_iterator last = peerList_.rbegin();
|
||||
int count = peerList_.size();
|
||||
size_t count = peerList_.size();
|
||||
|
||||
while ( count > 1 ) {
|
||||
TaoCrypt::Source source((*last)->get_buffer(), (*last)->get_length());
|
||||
|
|
@ -257,7 +264,8 @@ int CertManager::Validate()
|
|||
TaoCrypt::Source source((*last)->get_buffer(), (*last)->get_length());
|
||||
TaoCrypt::CertDecoder cert(source, true, &signers_, verifyNone_);
|
||||
|
||||
if (int err = cert.GetError().What())
|
||||
int err = cert.GetError().What();
|
||||
if ( err )
|
||||
return err;
|
||||
|
||||
uint sz = cert.GetPublicKey().size();
|
||||
|
|
@ -269,13 +277,25 @@ int CertManager::Validate()
|
|||
else
|
||||
peerKeyType_ = dsa_sa_algo;
|
||||
|
||||
int iSz = strlen(cert.GetIssuer()) + 1;
|
||||
int sSz = strlen(cert.GetCommonName()) + 1;
|
||||
int bSz = strlen(cert.GetBeforeDate()) + 1;
|
||||
int aSz = strlen(cert.GetAfterDate()) + 1;
|
||||
size_t iSz = strlen(cert.GetIssuer()) + 1;
|
||||
size_t sSz = strlen(cert.GetCommonName()) + 1;
|
||||
int bSz = (int)strlen(cert.GetBeforeDate()) + 1;
|
||||
int aSz = (int)strlen(cert.GetAfterDate()) + 1;
|
||||
peerX509_ = NEW_YS X509(cert.GetIssuer(), iSz, cert.GetCommonName(),
|
||||
sSz, cert.GetBeforeDate(), bSz,
|
||||
cert.GetAfterDate(), aSz);
|
||||
|
||||
if (err == TaoCrypt::SIG_OTHER_E && verifyCallback_) {
|
||||
X509_STORE_CTX store;
|
||||
store.error = err;
|
||||
store.error_depth = static_cast<int>(count) - 1;
|
||||
store.current_cert = peerX509_;
|
||||
|
||||
int ok = verifyCallback_(0, &store);
|
||||
if (ok) return 0;
|
||||
}
|
||||
|
||||
if (err == TaoCrypt::SIG_OTHER_E) return err;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
|
||||
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
|
||||
|
|
@ -245,6 +245,7 @@ YASSL_SOCKET_T SSL_get_fd(const SSL* ssl)
|
|||
}
|
||||
|
||||
|
||||
// if you get an error from connect see note at top of README
|
||||
int SSL_connect(SSL* ssl)
|
||||
{
|
||||
if (ssl->GetError() == YasslError(SSL_ERROR_WANT_READ))
|
||||
|
|
@ -447,6 +448,9 @@ long SSL_CTX_set_session_cache_mode(SSL_CTX* ctx, long mode)
|
|||
if (mode == SSL_SESS_CACHE_OFF)
|
||||
ctx->SetSessionCacheOff();
|
||||
|
||||
if (mode == SSL_SESS_CACHE_NO_AUTO_CLEAR)
|
||||
ctx->SetSessionCacheFlushOff();
|
||||
|
||||
return SSL_SUCCESS;
|
||||
}
|
||||
|
||||
|
|
@ -493,6 +497,15 @@ long SSL_get_default_timeout(SSL* /*ssl*/)
|
|||
}
|
||||
|
||||
|
||||
void SSL_flush_sessions(SSL_CTX *ctx, long /* tm */)
|
||||
{
|
||||
if (ctx->GetSessionCacheOff())
|
||||
return;
|
||||
|
||||
GetSessions().Flush();
|
||||
}
|
||||
|
||||
|
||||
const char* SSL_get_cipher_name(SSL* ssl)
|
||||
{
|
||||
return SSL_get_cipher(ssl);
|
||||
|
|
@ -560,7 +573,7 @@ int SSL_get_error(SSL* ssl, int /*previous*/)
|
|||
only need to turn on for client, becuase server on by default if built in
|
||||
but calling for server will tell you whether it's available or not
|
||||
*/
|
||||
int SSL_set_compression(SSL* ssl)
|
||||
int SSL_set_compression(SSL* ssl) /* Chad didn't rename to ya~ because it is prob. bug. */
|
||||
{
|
||||
return ssl->SetCompression();
|
||||
}
|
||||
|
|
@ -604,7 +617,7 @@ char* X509_NAME_oneline(X509_NAME* name, char* buffer, int sz)
|
|||
{
|
||||
if (!name->GetName()) return buffer;
|
||||
|
||||
int len = strlen(name->GetName()) + 1;
|
||||
int len = (int)strlen(name->GetName()) + 1;
|
||||
int copySz = min(len, sz);
|
||||
|
||||
if (!buffer) {
|
||||
|
|
@ -693,7 +706,7 @@ int SSL_CTX_use_PrivateKey_file(SSL_CTX* ctx, const char* file, int format)
|
|||
}
|
||||
|
||||
|
||||
void SSL_CTX_set_verify(SSL_CTX* ctx, int mode, VerifyCallback /*vc*/)
|
||||
void SSL_CTX_set_verify(SSL_CTX* ctx, int mode, VerifyCallback vc)
|
||||
{
|
||||
if (mode & SSL_VERIFY_PEER)
|
||||
ctx->setVerifyPeer();
|
||||
|
|
@ -703,6 +716,8 @@ void SSL_CTX_set_verify(SSL_CTX* ctx, int mode, VerifyCallback /*vc*/)
|
|||
|
||||
if (mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)
|
||||
ctx->setFailNoCert();
|
||||
|
||||
ctx->setVerifyCallback(vc);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1450,6 +1465,8 @@ unsigned long err_helper(bool peek = false)
|
|||
default :
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0; // shut up compiler
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
|
||||
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
|
||||
|
|
@ -26,6 +26,11 @@
|
|||
#include "openssl/ssl.h" // SSL_ERROR_WANT_READ
|
||||
#include <string.h> // strncpy
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy
|
||||
#pragma warning(disable: 4996)
|
||||
#endif
|
||||
|
||||
namespace yaSSL {
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
|
||||
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
|
||||
|
|
@ -136,9 +136,19 @@ void DH_Server::build(SSL& ssl)
|
|||
const CertManager& cert = ssl.getCrypto().get_certManager();
|
||||
|
||||
if (ssl.getSecurity().get_parms().sig_algo_ == rsa_sa_algo)
|
||||
{
|
||||
if (cert.get_keyType() != rsa_sa_algo) {
|
||||
ssl.SetError(privateKey_error);
|
||||
return;
|
||||
}
|
||||
auth.reset(NEW_YS RSA(cert.get_privateKey(),
|
||||
cert.get_privateKeyLength(), false));
|
||||
}
|
||||
else {
|
||||
if (cert.get_keyType() != dsa_sa_algo) {
|
||||
ssl.SetError(privateKey_error);
|
||||
return;
|
||||
}
|
||||
auth.reset(NEW_YS DSS(cert.get_privateKey(),
|
||||
cert.get_privateKeyLength(), false));
|
||||
sigSz += DSS_ENCODED_EXTRA;
|
||||
|
|
@ -436,18 +446,21 @@ Parameters::Parameters(ConnectionEnd ce, const Ciphers& ciphers,
|
|||
pending_ = true; // suite not set yet
|
||||
strncpy(cipher_name_, "NONE", 5);
|
||||
|
||||
removeDH_ = !haveDH; // only use on server side for set suites
|
||||
|
||||
if (ciphers.setSuites_) { // use user set list
|
||||
suites_size_ = ciphers.suiteSz_;
|
||||
memcpy(suites_, ciphers.suites_, ciphers.suiteSz_);
|
||||
SetCipherNames();
|
||||
}
|
||||
else
|
||||
SetSuites(pv, ce == server_end && !haveDH); // defaults
|
||||
SetSuites(pv, ce == server_end && removeDH_); // defaults
|
||||
|
||||
}
|
||||
|
||||
|
||||
void Parameters::SetSuites(ProtocolVersion pv, bool removeDH)
|
||||
void Parameters::SetSuites(ProtocolVersion pv, bool removeDH, bool removeRSA,
|
||||
bool removeDSA)
|
||||
{
|
||||
int i = 0;
|
||||
// available suites, best first
|
||||
|
|
@ -456,67 +469,87 @@ void Parameters::SetSuites(ProtocolVersion pv, bool removeDH)
|
|||
|
||||
if (isTLS(pv)) {
|
||||
if (!removeDH) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_AES_256_CBC_SHA;
|
||||
if (!removeRSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_AES_256_CBC_SHA;
|
||||
}
|
||||
if (!removeDSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_AES_256_CBC_SHA;
|
||||
}
|
||||
}
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_AES_256_CBC_SHA;
|
||||
|
||||
if (!removeDH) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_AES_128_CBC_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_AES_128_CBC_SHA;
|
||||
if (!removeRSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_AES_256_CBC_SHA;
|
||||
}
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_AES_128_CBC_SHA;
|
||||
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_AES_256_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_AES_128_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_3DES_EDE_CBC_RMD160;
|
||||
|
||||
if (!removeDH) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_AES_256_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_AES_128_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD160;
|
||||
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_AES_256_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_AES_128_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD160;
|
||||
}
|
||||
if (!removeRSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_AES_128_CBC_SHA;
|
||||
}
|
||||
if (!removeDSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_AES_128_CBC_SHA;
|
||||
}
|
||||
}
|
||||
if (!removeRSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_AES_128_CBC_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_AES_256_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_AES_128_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_RSA_WITH_3DES_EDE_CBC_RMD160;
|
||||
}
|
||||
if (!removeDH) {
|
||||
if (!removeRSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_AES_256_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_AES_128_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD160;
|
||||
}
|
||||
if (!removeDSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_AES_256_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_AES_128_CBC_RMD160;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD160;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_RSA_WITH_RC4_128_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_RSA_WITH_RC4_128_MD5;
|
||||
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_RSA_WITH_3DES_EDE_CBC_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_RSA_WITH_DES_CBC_SHA;
|
||||
if (!removeRSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_RSA_WITH_RC4_128_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_RSA_WITH_RC4_128_MD5;
|
||||
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_RSA_WITH_3DES_EDE_CBC_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_RSA_WITH_DES_CBC_SHA;
|
||||
}
|
||||
if (!removeDH) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA;
|
||||
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_DHE_RSA_WITH_DES_CBC_SHA;
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_DHE_DSS_WITH_DES_CBC_SHA;
|
||||
if (!removeRSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA;
|
||||
}
|
||||
if (!removeDSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA;
|
||||
}
|
||||
if (!removeRSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_DHE_RSA_WITH_DES_CBC_SHA;
|
||||
}
|
||||
if (!removeDSA) {
|
||||
suites_[i++] = 0x00;
|
||||
suites_[i++] = SSL_DHE_DSS_WITH_DES_CBC_SHA;
|
||||
}
|
||||
}
|
||||
|
||||
suites_size_ = i;
|
||||
|
|
@ -532,7 +565,7 @@ void Parameters::SetCipherNames()
|
|||
|
||||
for (int j = 0; j < suites; j++) {
|
||||
int index = suites_[j*2 + 1]; // every other suite is suite id
|
||||
int len = strlen(cipher_names[index]) + 1;
|
||||
size_t len = strlen(cipher_names[index]) + 1;
|
||||
strncpy(cipher_list_[pos++], cipher_names[index], len);
|
||||
}
|
||||
cipher_list_[pos][0] = 0;
|
||||
|
|
@ -1469,7 +1502,19 @@ void ClientHello::Process(input_buffer&, SSL& ssl)
|
|||
// downgrade to SSLv3
|
||||
ssl.useSecurity().use_connection().TurnOffTLS();
|
||||
ProtocolVersion pv = ssl.getSecurity().get_connection().version_;
|
||||
ssl.useSecurity().use_parms().SetSuites(pv); // reset w/ SSL suites
|
||||
bool removeDH = ssl.getSecurity().get_parms().removeDH_;
|
||||
bool removeRSA = false;
|
||||
bool removeDSA = false;
|
||||
|
||||
const CertManager& cm = ssl.getCrypto().get_certManager();
|
||||
if (cm.get_keyType() == rsa_sa_algo)
|
||||
removeDSA = true;
|
||||
else
|
||||
removeRSA = true;
|
||||
|
||||
// reset w/ SSL suites
|
||||
ssl.useSecurity().use_parms().SetSuites(pv, removeDH, removeRSA,
|
||||
removeDSA);
|
||||
}
|
||||
else if (ssl.isTLSv1_1() && client_version_.minor_ == 1)
|
||||
// downgrade to TLSv1, but use same suites
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
|
||||
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
|
||||
|
|
@ -40,28 +40,28 @@
|
|||
|
||||
void* operator new(size_t sz, yaSSL::new_t)
|
||||
{
|
||||
void* ptr = malloc(sz ? sz : 1);
|
||||
if (!ptr) abort();
|
||||
void* ptr = malloc(sz ? sz : 1);
|
||||
if (!ptr) abort();
|
||||
|
||||
return ptr;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
|
||||
void operator delete(void* ptr, yaSSL::new_t)
|
||||
{
|
||||
if (ptr) free(ptr);
|
||||
if (ptr) free(ptr);
|
||||
}
|
||||
|
||||
|
||||
void* operator new[](size_t sz, yaSSL::new_t nt)
|
||||
{
|
||||
return ::operator new(sz, nt);
|
||||
return ::operator new(sz, nt);
|
||||
}
|
||||
|
||||
|
||||
void operator delete[](void* ptr, yaSSL::new_t nt)
|
||||
{
|
||||
::operator delete(ptr, nt);
|
||||
::operator delete(ptr, nt);
|
||||
}
|
||||
|
||||
namespace yaSSL {
|
||||
|
|
@ -308,6 +308,20 @@ SSL::SSL(SSL_CTX* ctx)
|
|||
SetError(YasslError(err));
|
||||
return;
|
||||
}
|
||||
else if (serverSide) {
|
||||
// remove RSA or DSA suites depending on cert key type
|
||||
ProtocolVersion pv = secure_.get_connection().version_;
|
||||
|
||||
bool removeDH = secure_.use_parms().removeDH_;
|
||||
bool removeRSA = false;
|
||||
bool removeDSA = false;
|
||||
|
||||
if (cm.get_keyType() == rsa_sa_algo)
|
||||
removeDSA = true;
|
||||
else
|
||||
removeRSA = true;
|
||||
secure_.use_parms().SetSuites(pv, removeDH, removeRSA, removeDSA);
|
||||
}
|
||||
}
|
||||
else if (serverSide) {
|
||||
SetError(no_key_file);
|
||||
|
|
@ -320,6 +334,7 @@ SSL::SSL(SSL_CTX* ctx)
|
|||
cm.setVerifyNone();
|
||||
if (ctx->getMethod()->failNoCert())
|
||||
cm.setFailNoCert();
|
||||
cm.setVerifyCallback(ctx->getVerifyCallback());
|
||||
|
||||
if (serverSide)
|
||||
crypto_.SetDH(ctx->GetDH_Parms());
|
||||
|
|
@ -1034,12 +1049,12 @@ void SSL::fillData(Data& data)
|
|||
{
|
||||
if (GetError()) return;
|
||||
uint dataSz = data.get_length(); // input, data size to fill
|
||||
uint elements = buffers_.getData().size();
|
||||
size_t elements = buffers_.getData().size();
|
||||
|
||||
data.set_length(0); // output, actual data filled
|
||||
dataSz = min(dataSz, bufferedData());
|
||||
|
||||
for (uint i = 0; i < elements; i++) {
|
||||
for (size_t i = 0; i < elements; i++) {
|
||||
input_buffer* front = buffers_.getData().front();
|
||||
uint frontSz = front->get_remaining();
|
||||
uint readSz = min(dataSz - data.get_length(), frontSz);
|
||||
|
|
@ -1063,8 +1078,8 @@ void SSL::fillData(Data& data)
|
|||
void SSL::PeekData(Data& data)
|
||||
{
|
||||
if (GetError()) return;
|
||||
uint dataSz = data.get_length(); // input, data size to fill
|
||||
uint elements = buffers_.getData().size();
|
||||
uint dataSz = data.get_length(); // input, data size to fill
|
||||
size_t elements = buffers_.getData().size();
|
||||
|
||||
data.set_length(0); // output, actual data filled
|
||||
dataSz = min(dataSz, bufferedData());
|
||||
|
|
@ -1098,9 +1113,9 @@ void SSL::flushBuffer()
|
|||
buffers_.getHandShake().end(),
|
||||
SumBuffer()).total_;
|
||||
output_buffer out(sz);
|
||||
uint elements = buffers_.getHandShake().size();
|
||||
size_t elements = buffers_.getHandShake().size();
|
||||
|
||||
for (uint i = 0; i < elements; i++) {
|
||||
for (size_t i = 0; i < elements; i++) {
|
||||
output_buffer* front = buffers_.getHandShake().front();
|
||||
out.write(front->get_buffer(), front->get_size());
|
||||
|
||||
|
|
@ -1276,6 +1291,7 @@ void SSL::matchSuite(const opaque* peer, uint length)
|
|||
if (secure_.use_parms().suites_[i] == peer[j]) {
|
||||
secure_.use_parms().suite_[0] = 0x00;
|
||||
secure_.use_parms().suite_[1] = peer[j];
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1284,7 +1300,7 @@ void SSL::matchSuite(const opaque* peer, uint length)
|
|||
|
||||
|
||||
void SSL::set_session(SSL_SESSION* s)
|
||||
{
|
||||
{
|
||||
if (getSecurity().GetContext()->GetSessionCacheOff())
|
||||
return;
|
||||
|
||||
|
|
@ -1565,13 +1581,19 @@ Errors& GetErrors()
|
|||
|
||||
typedef Mutex::Lock Lock;
|
||||
|
||||
|
||||
|
||||
void Sessions::add(const SSL& ssl)
|
||||
{
|
||||
if (ssl.getSecurity().get_connection().sessionID_Set_) {
|
||||
Lock guard(mutex_);
|
||||
list_.push_back(NEW_YS SSL_SESSION(ssl, random_));
|
||||
Lock guard(mutex_);
|
||||
list_.push_back(NEW_YS SSL_SESSION(ssl, random_));
|
||||
count_++;
|
||||
}
|
||||
|
||||
if (count_ > SESSION_FLUSH_COUNT)
|
||||
if (!ssl.getSecurity().GetContext()->GetSessionCacheFlushOff())
|
||||
Flush();
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1660,6 +1682,25 @@ void Sessions::remove(const opaque* id)
|
|||
}
|
||||
|
||||
|
||||
// flush expired sessions from cache
|
||||
void Sessions::Flush()
|
||||
{
|
||||
Lock guard(mutex_);
|
||||
sess_iterator next = list_.begin();
|
||||
uint current = lowResTimer();
|
||||
|
||||
while (next != list_.end()) {
|
||||
sess_iterator si = next;
|
||||
++next;
|
||||
if ( ((*si)->GetBornOn() + (*si)->GetTimeOut()) < current) {
|
||||
del_ptr_zero()(*si);
|
||||
list_.erase(si);
|
||||
}
|
||||
}
|
||||
count_ = 0; // reset flush counter
|
||||
}
|
||||
|
||||
|
||||
// remove a self thread error
|
||||
void Errors::Remove()
|
||||
{
|
||||
|
|
@ -1764,7 +1805,8 @@ bool SSL_METHOD::multipleProtocol() const
|
|||
|
||||
SSL_CTX::SSL_CTX(SSL_METHOD* meth)
|
||||
: method_(meth), certificate_(0), privateKey_(0), passwordCb_(0),
|
||||
userData_(0), sessionCacheOff_(false)
|
||||
userData_(0), sessionCacheOff_(false), sessionCacheFlushOff_(false),
|
||||
verifyCallback_(0)
|
||||
{}
|
||||
|
||||
|
||||
|
|
@ -1791,6 +1833,12 @@ SSL_CTX::GetCA_List() const
|
|||
}
|
||||
|
||||
|
||||
const VerifyCallback SSL_CTX::getVerifyCallback() const
|
||||
{
|
||||
return verifyCallback_;
|
||||
}
|
||||
|
||||
|
||||
const x509* SSL_CTX::getCert() const
|
||||
{
|
||||
return certificate_;
|
||||
|
|
@ -1851,6 +1899,12 @@ bool SSL_CTX::GetSessionCacheOff() const
|
|||
}
|
||||
|
||||
|
||||
bool SSL_CTX::GetSessionCacheFlushOff() const
|
||||
{
|
||||
return sessionCacheFlushOff_;
|
||||
}
|
||||
|
||||
|
||||
void SSL_CTX::SetUserData(void* data)
|
||||
{
|
||||
userData_ = data;
|
||||
|
|
@ -1863,6 +1917,12 @@ void SSL_CTX::SetSessionCacheOff()
|
|||
}
|
||||
|
||||
|
||||
void SSL_CTX::SetSessionCacheFlushOff()
|
||||
{
|
||||
sessionCacheFlushOff_ = true;
|
||||
}
|
||||
|
||||
|
||||
void SSL_CTX::setVerifyPeer()
|
||||
{
|
||||
method_->setVerifyPeer();
|
||||
|
|
@ -1881,6 +1941,12 @@ void SSL_CTX::setFailNoCert()
|
|||
}
|
||||
|
||||
|
||||
void SSL_CTX::setVerifyCallback(VerifyCallback vc)
|
||||
{
|
||||
verifyCallback_ = vc;
|
||||
}
|
||||
|
||||
|
||||
bool SSL_CTX::SetDH(const DH& dh)
|
||||
{
|
||||
dhParms_.p_ = dh.p->int_;
|
||||
|
|
@ -1906,7 +1972,7 @@ bool SSL_CTX::SetCipherList(const char* list)
|
|||
int idx = 0;
|
||||
|
||||
for(;;) {
|
||||
int len;
|
||||
size_t len;
|
||||
prev = haystack;
|
||||
haystack = strstr(haystack, needle);
|
||||
|
||||
|
|
@ -2316,7 +2382,7 @@ X509::X509(const char* i, size_t iSz, const char* s, size_t sSz,
|
|||
: issuer_(i, iSz), subject_(s, sSz),
|
||||
beforeDate_(b, bSz), afterDate_(a, aSz)
|
||||
{}
|
||||
|
||||
|
||||
|
||||
X509_NAME* X509::GetIssuer()
|
||||
{
|
||||
|
|
@ -2354,10 +2420,10 @@ ASN1_STRING* X509_NAME::GetEntry(int i)
|
|||
memcpy(entry_.data, &name_[i], sz_ - i);
|
||||
if (entry_.data[sz_ -i - 1]) {
|
||||
entry_.data[sz_ - i] = 0;
|
||||
entry_.length = sz_ - i;
|
||||
entry_.length = int(sz_) - i;
|
||||
}
|
||||
else
|
||||
entry_.length = sz_ - i - 1;
|
||||
entry_.length = int(sz_) - i - 1;
|
||||
entry_.type = 0;
|
||||
|
||||
return &entry_;
|
||||
|
|
|
|||
|
|
@ -108,6 +108,22 @@ extern FILE *_db_fp_(void);
|
|||
#define DBUG_EXPLAIN(buf,len)
|
||||
#define DBUG_EXPLAIN_INITIAL(buf,len)
|
||||
#define IF_DBUG(A)
|
||||
|
||||
#ifdef __WIN__
|
||||
/*
|
||||
On windows all the dll export has to be declared in the *.def file
|
||||
so as we export these symbols in DEBUG mode we have to export
|
||||
these in the RELEASE mode also. So below are the dummy symbols
|
||||
for the RELEASE export
|
||||
*/
|
||||
extern char _db_doprnt_;
|
||||
extern char _db_enter_;
|
||||
extern char _db_pargs_;
|
||||
extern char _db_process_;
|
||||
extern char _db_push_;
|
||||
extern char _db_return_;
|
||||
#endif /*__WIN__*/
|
||||
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,11 +18,6 @@
|
|||
#ifndef _global_h
|
||||
#define _global_h
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
#define HAVE_REPLICATION
|
||||
#define HAVE_EXTERNAL_CLIENT
|
||||
#endif
|
||||
|
||||
/*
|
||||
InnoDB depends on some MySQL internals which other plugins should not
|
||||
need. This is because of InnoDB's foreign key support, "safe" binlog
|
||||
|
|
@ -101,6 +96,11 @@
|
|||
#endif
|
||||
#endif /* !EMBEDDED_LIBRARY */
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
#define HAVE_REPLICATION
|
||||
#define HAVE_EXTERNAL_CLIENT
|
||||
#endif
|
||||
|
||||
/* Some defines to avoid ifdefs in the code */
|
||||
#ifndef NETWARE_YIELD
|
||||
#define NETWARE_YIELD
|
||||
|
|
|
|||
|
|
@ -29,13 +29,13 @@ ADD_DEFINITIONS(-DEMBEDDED_LIBRARY)
|
|||
ADD_EXECUTABLE(mysql_embedded ../../client/completion_hash.cc
|
||||
../../client/mysql.cc ../../client/readline.cc
|
||||
../../client/sql_string.cc)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded mysys yassl taocrypt zlib debug dbug regex strings wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysql_embedded wsock32)
|
||||
ADD_DEPENDENCIES(mysql_embedded libmysqld)
|
||||
|
||||
ADD_EXECUTABLE(mysqltest_embedded ../../client/mysqltest.c)
|
||||
TARGET_LINK_LIBRARIES(mysqltest_embedded mysys yassl taocrypt zlib debug dbug regex strings wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysqltest_embedded wsock32)
|
||||
ADD_DEPENDENCIES(mysqltest_embedded libmysqld)
|
||||
|
||||
ADD_EXECUTABLE(mysql_client_test_embedded ../../tests/mysql_client_test.c)
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test_embedded debug dbug mysys yassl taocrypt zlib strings wsock32)
|
||||
TARGET_LINK_LIBRARIES(mysql_client_test_embedded wsock32)
|
||||
ADD_DEPENDENCIES(mysql_client_test_embedded libmysqld)
|
||||
|
|
|
|||
|
|
@ -384,6 +384,7 @@ static void emb_free_embedded_thd(MYSQL *mysql)
|
|||
thd->clear_data_list();
|
||||
thread_count--;
|
||||
thd->store_globals();
|
||||
thd->unlink();
|
||||
delete thd;
|
||||
mysql->thd=0;
|
||||
}
|
||||
|
|
@ -627,6 +628,7 @@ void *create_embedded_thd(int client_flag)
|
|||
bzero((char*) &thd->net, sizeof(thd->net));
|
||||
|
||||
thread_count++;
|
||||
threads.append(thd);
|
||||
return thd;
|
||||
err:
|
||||
delete(thd);
|
||||
|
|
|
|||
|
|
@ -2,6 +2,66 @@ LIBRARY LIBMYSQLD
|
|||
DESCRIPTION 'MySQL 5.1 Embedded Server Library'
|
||||
VERSION 5.1
|
||||
EXPORTS
|
||||
_db_process_
|
||||
_db_enter_
|
||||
_db_return_
|
||||
_db_push_
|
||||
_db_doprnt_
|
||||
_db_pargs_
|
||||
strnmov
|
||||
get_charset
|
||||
my_memmem
|
||||
my_snprintf
|
||||
pthread_exit
|
||||
pthread_cond_signal
|
||||
dynstr_append_mem
|
||||
init_dynamic_string
|
||||
dynstr_free
|
||||
my_hash_free
|
||||
my_vsnprintf
|
||||
dynstr_append
|
||||
my_close
|
||||
my_open
|
||||
dynstr_set
|
||||
dynstr_append_os_quoted
|
||||
my_delete
|
||||
my_seek
|
||||
my_write
|
||||
create_temp_file
|
||||
fn_format
|
||||
dirname_part
|
||||
my_hash_insert
|
||||
my_hash_search
|
||||
test_if_hard_path
|
||||
my_copy
|
||||
my_mkdir
|
||||
my_sleep
|
||||
my_strtod
|
||||
pthread_cond_wait
|
||||
my_strnncoll_simple
|
||||
get_dynamic
|
||||
my_regerror
|
||||
init_dynamic_array2
|
||||
pthread_create
|
||||
pthread_cond_init
|
||||
my_regcomp
|
||||
my_regexec
|
||||
my_regex_end
|
||||
my_regfree
|
||||
longlong2str
|
||||
my_set_exception_pointers
|
||||
my_print_stacktrace
|
||||
my_thread_stack_size
|
||||
my_safe_print_str
|
||||
my_stat
|
||||
_my_hash_init
|
||||
pthread_attr_setstacksize
|
||||
pthread_attr_init
|
||||
my_dirend
|
||||
wild_compare
|
||||
my_dir
|
||||
my_micro_time
|
||||
find_type_or_exit
|
||||
_dig_vec_upper
|
||||
_dig_vec_lower
|
||||
bmove_upp
|
||||
|
|
|
|||
|
|
@ -2436,6 +2436,12 @@ sub setup_vardir() {
|
|||
mkpath("$opt_vardir/tmp");
|
||||
mkpath($opt_tmpdir) if $opt_tmpdir ne "$opt_vardir/tmp";
|
||||
|
||||
if ($master->[0]->{'path_sock'} !~ m/^$opt_tmpdir/)
|
||||
{
|
||||
mtr_report("Symlinking $master->[0]->{'path_sock'}");
|
||||
symlink($master->[0]->{'path_sock'}, "$opt_tmpdir/master.sock");
|
||||
}
|
||||
|
||||
# Create new data dirs
|
||||
foreach my $data_dir (@data_dir_lst)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1754,8 +1754,8 @@ create table t1 like information_schema.character_sets;
|
|||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT '0'
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
|
|
|
|||
|
|
@ -1848,3 +1848,35 @@ select hex(_utf8 B'001111111111');
|
|||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
select (_utf8 X'616263FF');
|
||||
ERROR HY000: Invalid utf8 character string: 'FF'
|
||||
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL);
|
||||
INSERT INTO t1 VALUES (70000, 1092), (70001, 1085), (70002, 1065);
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1 GROUP BY b;
|
||||
CONVERT(a, CHAR) CONVERT(b, CHAR)
|
||||
70002 1065
|
||||
70001 1085
|
||||
70000 1092
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1;
|
||||
CONVERT(a, CHAR) CONVERT(b, CHAR)
|
||||
70000 1092
|
||||
70001 1085
|
||||
70002 1065
|
||||
ALTER TABLE t1 ADD UNIQUE (b);
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1 GROUP BY b;
|
||||
CONVERT(a, CHAR) CONVERT(b, CHAR)
|
||||
70002 1065
|
||||
70001 1085
|
||||
70000 1092
|
||||
DROP INDEX b ON t1;
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1 GROUP BY b;
|
||||
CONVERT(a, CHAR) CONVERT(b, CHAR)
|
||||
70002 1065
|
||||
70001 1085
|
||||
70000 1092
|
||||
ALTER TABLE t1 ADD INDEX (b);
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) from t1 GROUP BY b;
|
||||
CONVERT(a, CHAR) CONVERT(b, CHAR)
|
||||
70002 1065
|
||||
70001 1085
|
||||
70000 1092
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
|
|
|||
|
|
@ -2130,6 +2130,15 @@ Table Checksum
|
|||
test.t1 2465757603
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a TEXT, b TEXT, KEY(b(1)));
|
||||
INSERT INTO t1 VALUES (NULL, NULL), (NULL, NULL), (NULL, NULL), (NULL, NULL);
|
||||
CREATE TABLE t1
|
||||
(a TEXT, b TEXT, KEY(b(1))) ENGINE=FEDERATED
|
||||
CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/test/t1';
|
||||
SELECT t1.a FROM t1, t1 as t2 WHERE t2.b NOT LIKE t1.b;
|
||||
a
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
create server 's1' foreign data wrapper 'mysql' options (port 3306);
|
||||
drop server 's1';
|
||||
|
|
|
|||
|
|
@ -494,3 +494,31 @@ SELECT a FROM t1 WHERE MATCH a AGAINST ('+city* of*' IN BOOLEAN MODE);
|
|||
a
|
||||
City Of God
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a VARCHAR(255), b INT, FULLTEXT(a), KEY(b));
|
||||
INSERT INTO t1 VALUES('test', 1),('test', 1),('test', 1),('test', 1),
|
||||
('test', 1),('test', 2),('test', 3),('test', 4);
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 fulltext b,a a 0 1 Using where
|
||||
EXPLAIN SELECT * FROM t1 USE INDEX(a)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 fulltext a a 0 1 Using where
|
||||
EXPLAIN SELECT * FROM t1 FORCE INDEX(a)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 fulltext a a 0 1 Using where
|
||||
EXPLAIN SELECT * FROM t1 IGNORE INDEX(a)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref b b 5 const 4 Using where
|
||||
EXPLAIN SELECT * FROM t1 USE INDEX(b)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref b b 5 const 4 Using where
|
||||
EXPLAIN SELECT * FROM t1 FORCE INDEX(b)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ref b b 5 const 4 Using where
|
||||
DROP TABLE t1;
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ Warnings:
|
|||
Error 1259 ZLIB: Input data corrupted
|
||||
Error 1256 Uncompressed data size too large; the maximum size is 1048576 (probably, length of uncompressed data was corrupted)
|
||||
drop table t1;
|
||||
set @@max_allowed_packet=1048576*100;
|
||||
set @@global.max_allowed_packet=1048576*100;
|
||||
select compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null;
|
||||
compress(repeat('aaaaaaaaaa', IF(XXX, 10, 10000000))) is null
|
||||
0
|
||||
|
|
|
|||
|
|
@ -517,8 +517,8 @@ drop table t1;
|
|||
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
|
||||
Table Create Table
|
||||
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
|
||||
`CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT '0'
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
|
|
@ -526,8 +526,8 @@ set names latin2;
|
|||
SHOW CREATE TABLE INFORMATION_SCHEMA.character_sets;
|
||||
Table Create Table
|
||||
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
|
||||
`CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT '0'
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
|
|
@ -541,8 +541,8 @@ alter table t1 default character set utf8;
|
|||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT '0'
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8
|
||||
|
|
@ -716,8 +716,8 @@ select column_type from information_schema.columns
|
|||
where table_schema="information_schema" and table_name="COLUMNS" and
|
||||
(column_name="character_set_name" or column_name="collation_name");
|
||||
column_type
|
||||
varchar(64)
|
||||
varchar(64)
|
||||
varchar(32)
|
||||
varchar(32)
|
||||
select TABLE_ROWS from information_schema.tables where
|
||||
table_schema="information_schema" and table_name="COLUMNS";
|
||||
TABLE_ROWS
|
||||
|
|
@ -764,7 +764,6 @@ information_schema PARTITIONS PARTITION_DESCRIPTION
|
|||
information_schema PLUGINS PLUGIN_DESCRIPTION
|
||||
information_schema PROCESSLIST INFO
|
||||
information_schema ROUTINES ROUTINE_DEFINITION
|
||||
information_schema ROUTINES SQL_MODE
|
||||
information_schema TRIGGERS ACTION_CONDITION
|
||||
information_schema TRIGGERS ACTION_STATEMENT
|
||||
information_schema VIEWS VIEW_DEFINITION
|
||||
|
|
@ -1652,4 +1651,60 @@ id select_type table type possible_keys key key_len ref rows Extra
|
|||
explain select count(*) from information_schema.views;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE views ALL NULL NULL NULL NULL NULL Open_frm_only; Scanned all databases
|
||||
set global init_connect="drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;";
|
||||
select * from information_schema.global_variables where variable_name='init_connect';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
INIT_CONNECT drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists t1;
|
||||
drop table if exists t1;drop table if exists
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'VARIABLE_VALUE' at row 1
|
||||
set global init_connect="";
|
||||
create table t0 select * from information_schema.global_status where VARIABLE_NAME='COM_SELECT';
|
||||
SELECT 1;
|
||||
1
|
||||
1
|
||||
select a.VARIABLE_VALUE - b.VARIABLE_VALUE from t0 b, information_schema.global_status a
|
||||
where a.VARIABLE_NAME = b.VARIABLE_NAME;
|
||||
a.VARIABLE_VALUE - b.VARIABLE_VALUE
|
||||
2
|
||||
drop table t0;
|
||||
End of 5.1 tests.
|
||||
|
|
|
|||
|
|
@ -145,3 +145,9 @@ table_schema = "test" AND table_name = "t1";
|
|||
PARTITION_DESCRIPTION
|
||||
10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53
|
||||
drop table t1;
|
||||
drop table if exists t1;
|
||||
create table t1 (f1 int key) partition by key(f1) partitions 2;
|
||||
select create_options from information_schema.tables where table_schema="test";
|
||||
create_options
|
||||
partitioned
|
||||
drop table t1;
|
||||
|
|
|
|||
|
|
@ -2,10 +2,7 @@ SET @start_global_value = @@global.max_allowed_packet;
|
|||
SELECT @start_global_value;
|
||||
@start_global_value
|
||||
1048576
|
||||
SET @start_session_value = @@session.max_allowed_packet;
|
||||
SELECT @start_session_value;
|
||||
@start_session_value
|
||||
1048576
|
||||
SET @@global.max_allowed_packet = DEFAULT;
|
||||
'#--------------------FN_DYNVARS_070_01-------------------------#'
|
||||
SET @@global.max_allowed_packet = 1000;
|
||||
Warnings:
|
||||
|
|
@ -15,7 +12,9 @@ SELECT @@global.max_allowed_packet;
|
|||
@@global.max_allowed_packet
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 20000;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SET @@session.max_allowed_packet = DEFAULT;
|
||||
ERROR 42000: Variable 'max_allowed_packet' doesn't have a default value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1048576
|
||||
|
|
@ -24,10 +23,6 @@ SET @@global.max_allowed_packet = DEFAULT;
|
|||
SELECT @@global.max_allowed_packet = 1048576;
|
||||
@@global.max_allowed_packet = 1048576
|
||||
1
|
||||
SET @@session.max_allowed_packet = DEFAULT;
|
||||
SELECT @@session.max_allowed_packet = 1048576;
|
||||
@@session.max_allowed_packet = 1048576
|
||||
1
|
||||
'#--------------------FN_DYNVARS_070_03-------------------------#'
|
||||
SET @@global.max_allowed_packet = 1024;
|
||||
SELECT @@global.max_allowed_packet;
|
||||
|
|
@ -48,25 +43,30 @@ SELECT @@global.max_allowed_packet;
|
|||
1073740800
|
||||
'#--------------------FN_DYNVARS_070_04-------------------------#'
|
||||
SET @@session.max_allowed_packet = 1024;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 1025;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 65535;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
64512
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 1073741824;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1073741824
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 1073741823;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1073740800
|
||||
1048576
|
||||
'#------------------FN_DYNVARS_070_05-----------------------#'
|
||||
SET @@global.max_allowed_packet = 0;
|
||||
Warnings:
|
||||
|
|
@ -103,37 +103,33 @@ SELECT @@global.max_allowed_packet;
|
|||
@@global.max_allowed_packet
|
||||
1073741824
|
||||
SET @@session.max_allowed_packet = 0;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '0'
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 1023;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '1023'
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = -2;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '0'
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = 65530.34.;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
||||
SET @@session.max_allowed_packet = 10737418241;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '10737418241'
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1073741824
|
||||
1048576
|
||||
'Bug # 34837: Errors are not coming on assigning invalid values to variable';
|
||||
SET @@session.max_allowed_packet = test;
|
||||
ERROR 42000: Incorrect argument type to variable 'max_allowed_packet'
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1073741824
|
||||
1048576
|
||||
'#------------------FN_DYNVARS_070_06-----------------------#'
|
||||
SELECT @@global.max_allowed_packet = VARIABLE_VALUE
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
|
|
@ -166,6 +162,7 @@ SELECT @@max_allowed_packet = @@global.max_allowed_packet;
|
|||
0
|
||||
'#---------------------FN_DYNVARS_070_10----------------------#'
|
||||
SET @@max_allowed_packet = 100000;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@max_allowed_packet = @@local.max_allowed_packet;
|
||||
@@max_allowed_packet = @@local.max_allowed_packet
|
||||
1
|
||||
|
|
@ -174,9 +171,10 @@ SELECT @@local.max_allowed_packet = @@session.max_allowed_packet;
|
|||
1
|
||||
'#---------------------FN_DYNVARS_070_11----------------------#'
|
||||
SET max_allowed_packet = 1024;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@max_allowed_packet;
|
||||
@@max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SELECT local.max_allowed_packet;
|
||||
ERROR 42S02: Unknown table 'local' in field list
|
||||
SELECT session.max_allowed_packet;
|
||||
|
|
@ -187,7 +185,6 @@ SET @@global.max_allowed_packet = @start_global_value;
|
|||
SELECT @@global.max_allowed_packet;
|
||||
@@global.max_allowed_packet
|
||||
1048576
|
||||
SET @@session.max_allowed_packet = @start_session_value;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1048576
|
||||
|
|
|
|||
|
|
@ -10,24 +10,15 @@ name BLOB
|
|||
'#--------------------FN_DYNVARS_070_01-------------------------#'
|
||||
## Setting value of max_allowed packet and net_buffer_length to 1024 ##
|
||||
SET @@session.max_allowed_packet = 1024;
|
||||
SET @@session.net_buffer_length = 1024;
|
||||
ERROR HY000: SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.max_allowed_packet;
|
||||
@@session.max_allowed_packet
|
||||
1024
|
||||
1048576
|
||||
SET @@session.net_buffer_length = 1024;
|
||||
ERROR HY000: SESSION variable 'net_buffer_length' is read-only. Use SET GLOBAL to assign the value
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1024
|
||||
## Inserting and fetching data of length greater than 1024 ##
|
||||
INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
|
||||
SELECT length("aaaaaasssssssssssdddddddfffffgggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk") as len;
|
||||
len
|
||||
1470
|
||||
## Verifying record in table t1 ##
|
||||
SELECT * from t1;
|
||||
id name
|
||||
1 aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
|
||||
'Bug#35381: Error is not coming on inserting and fetching data of length'
|
||||
'greater than max_allowed_packet size at session level';
|
||||
16384
|
||||
'#--------------------FN_DYNVARS_070_02-------------------------#'
|
||||
## Setting value of max_allowed packet and net_buffer_length to 1024 ##
|
||||
SET @@global.max_allowed_packet = 1024;
|
||||
|
|
|
|||
|
|
@ -98,6 +98,19 @@ drop view v_bug25347;
|
|||
drop table t_bug25347;
|
||||
drop database d_bug25347;
|
||||
use test;
|
||||
create view v1 as select * from information_schema.routines;
|
||||
check table v1, information_schema.routines;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 check status OK
|
||||
information_schema.routines check note The storage engine for the table doesn't support check
|
||||
drop view v1;
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(a INT);
|
||||
test.t1
|
||||
Error : Incorrect information in file: './test/t1.frm'
|
||||
error : Corrupt
|
||||
test.t2 OK
|
||||
DROP TABLE t1, t2;
|
||||
End of 5.0 tests
|
||||
create table t1(a int);
|
||||
create view v1 as select * from t1;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
SET @start_global_value = @@global.net_buffer_length;
|
||||
SET @start_session_value = @@session.net_buffer_length;
|
||||
SET @@global.net_buffer_length = DEFAULT;
|
||||
'#--------------------FN_DYNVARS_109_01-------------------------#'
|
||||
SET @@global.net_buffer_length = 10000;
|
||||
SET @@global.net_buffer_length = DEFAULT;
|
||||
|
|
@ -7,7 +7,9 @@ SELECT @@global.net_buffer_length;
|
|||
@@global.net_buffer_length
|
||||
16384
|
||||
SET @@session.net_buffer_length = 20000;
|
||||
ERROR HY000: SESSION variable 'net_buffer_length' is read-only. Use SET GLOBAL to assign the value
|
||||
SET @@session.net_buffer_length = DEFAULT;
|
||||
ERROR 42000: Variable 'net_buffer_length' doesn't have a default value
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
16384
|
||||
|
|
@ -16,10 +18,6 @@ SET @@global.net_buffer_length = DEFAULT;
|
|||
SELECT @@global.net_buffer_length = 16384;
|
||||
@@global.net_buffer_length = 16384
|
||||
1
|
||||
SET @@session.net_buffer_length = DEFAULT;
|
||||
SELECT @@session.net_buffer_length = 16384;
|
||||
@@session.net_buffer_length = 16384
|
||||
1
|
||||
'#--------------------FN_DYNVARS_109_03-------------------------#'
|
||||
SET @@global.net_buffer_length = 1024;
|
||||
SELECT @@global.net_buffer_length;
|
||||
|
|
@ -43,27 +41,6 @@ SELECT @@global.net_buffer_length;
|
|||
64512
|
||||
'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
|
||||
'#--------------------FN_DYNVARS_109_04-------------------------#'
|
||||
SET @@session.net_buffer_length = 1024;
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1024
|
||||
SET @@session.net_buffer_length = 1025;
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1024
|
||||
SET @@session.net_buffer_length = 1048576;
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1048576
|
||||
SET @@session.net_buffer_length = 1048575;
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1047552
|
||||
SET @@session.net_buffer_length = 65535;
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
64512
|
||||
'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
|
||||
'#------------------FN_DYNVARS_109_05-----------------------#'
|
||||
SET @@global.net_buffer_length = 0;
|
||||
Warnings:
|
||||
|
|
@ -105,42 +82,12 @@ ERROR 42000: Incorrect argument type to variable 'net_buffer_length'
|
|||
SELECT @@global.net_buffer_length;
|
||||
@@global.net_buffer_length
|
||||
1048576
|
||||
SET @@session.net_buffer_length = 0;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '0'
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1024
|
||||
SET @@session.net_buffer_length = -2;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '0'
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1024
|
||||
SET @@session.net_buffer_length = 1048577;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '1048577'
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1048576
|
||||
SET @@session.net_buffer_length = 1048576002;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '1048576002'
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
1048576
|
||||
SET @@session.net_buffer_length = 65530.34.;
|
||||
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.' at line 1
|
||||
SET @@session.net_buffer_length = 65550;
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
65536
|
||||
'Bug # 34837: Errors are not coming on assigning invalid values to variable';
|
||||
SET @@session.net_buffer_length = test;
|
||||
ERROR 42000: Incorrect argument type to variable 'net_buffer_length'
|
||||
SELECT @@session.net_buffer_length;
|
||||
@@session.net_buffer_length
|
||||
65536
|
||||
16384
|
||||
'#------------------FN_DYNVARS_109_06-----------------------#'
|
||||
SELECT @@global.net_buffer_length = VARIABLE_VALUE
|
||||
FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
|
||||
|
|
@ -172,18 +119,10 @@ SELECT @@net_buffer_length = @@global.net_buffer_length;
|
|||
@@net_buffer_length = @@global.net_buffer_length
|
||||
0
|
||||
'#---------------------FN_DYNVARS_109_10----------------------#'
|
||||
SET @@net_buffer_length = 100000;
|
||||
SELECT @@net_buffer_length = @@local.net_buffer_length;
|
||||
@@net_buffer_length = @@local.net_buffer_length
|
||||
1
|
||||
SELECT @@local.net_buffer_length = @@session.net_buffer_length;
|
||||
@@local.net_buffer_length = @@session.net_buffer_length
|
||||
1
|
||||
'#---------------------FN_DYNVARS_109_11----------------------#'
|
||||
SET net_buffer_length = 1024;
|
||||
SELECT @@net_buffer_length;
|
||||
@@net_buffer_length
|
||||
1024
|
||||
16384
|
||||
SELECT local.net_buffer_length;
|
||||
ERROR 42S02: Unknown table 'local' in field list
|
||||
SELECT session.net_buffer_length;
|
||||
|
|
@ -191,4 +130,3 @@ ERROR 42S02: Unknown table 'session' in field list
|
|||
SELECT net_buffer_length = @@session.net_buffer_length;
|
||||
ERROR 42S22: Unknown column 'net_buffer_length' in 'field list'
|
||||
SET @@global.net_buffer_length = @start_global_value;
|
||||
SET @@session.net_buffer_length = @start_session_value;
|
||||
|
|
|
|||
|
|
@ -73,11 +73,10 @@ variable_name LIKE 'SSL_CALLBACK_CACHE_HITS';
|
|||
END$$
|
||||
SELECT variable_name, variable_value FROM thread_status;
|
||||
variable_name variable_value
|
||||
SSL_ACCEPTS 0
|
||||
SSL_CALLBACK_CACHE_HITS 0
|
||||
SSL_ACCEPTS #
|
||||
SSL_CALLBACK_CACHE_HITS #
|
||||
DROP TABLE thread_status;
|
||||
SET GLOBAL event_scheduler=0;
|
||||
End of 5.1 tests
|
||||
SHOW STATUS LIKE 'Ssl_cipher';
|
||||
Variable_name Value
|
||||
Ssl_cipher AES128-SHA
|
||||
|
|
@ -192,3 +191,15 @@ UNLOCK TABLES;
|
|||
SSL error: Unable to get private key from 'MYSQL_TEST_DIR/std_data/client-cert.pem'
|
||||
mysqldump: Got error: 2026: SSL connection error when trying to connect
|
||||
DROP TABLE t1;
|
||||
Variable_name Value
|
||||
Ssl_cipher DHE-RSA-AES256-SHA
|
||||
Variable_name Value
|
||||
Ssl_cipher EDH-RSA-DES-CBC3-SHA
|
||||
Variable_name Value
|
||||
Ssl_cipher EDH-RSA-DES-CBC-SHA
|
||||
Variable_name Value
|
||||
Ssl_cipher RC4-SHA
|
||||
select 'is still running; no cipher request crashed the server' as result from dual;
|
||||
result
|
||||
is still running; no cipher request crashed the server
|
||||
End of 5.1 tests
|
||||
|
|
|
|||
|
|
@ -1,32 +1,22 @@
|
|||
set global max_allowed_packet=100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
|
||||
set max_allowed_packet=100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
|
||||
set global net_buffer_length=100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '100'
|
||||
set net_buffer_length=100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '100'
|
||||
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
|
||||
len
|
||||
1024
|
||||
select repeat('a',2000);
|
||||
repeat('a',2000)
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1301 Result of repeat() was larger than max_allowed_packet (1024) - truncated
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
select @@net_buffer_length, @@max_allowed_packet;
|
||||
@@net_buffer_length @@max_allowed_packet
|
||||
1024 1024
|
||||
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
|
||||
ERROR 08S01: Got a packet bigger than 'max_allowed_packet' bytes
|
||||
set global max_allowed_packet=default;
|
||||
set max_allowed_packet=default;
|
||||
set global net_buffer_length=default;
|
||||
set net_buffer_length=default;
|
||||
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
|
||||
len
|
||||
100
|
||||
|
|
|
|||
|
|
@ -1,3 +1,25 @@
|
|||
drop table if exists t1;
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, data INT) ENGINE = InnoDB
|
||||
PARTITION BY RANGE(id) (
|
||||
PARTITION p0 VALUES LESS THAN (5),
|
||||
PARTITION p1 VALUES LESS THAN (10),
|
||||
PARTITION p2 VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8),
|
||||
(9,9), (10,10), (11,11);
|
||||
SET @old_tx_isolation := @@session.tx_isolation;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
SET autocommit = 0;
|
||||
UPDATE t1 SET DATA = data*2 WHERE id = 3;
|
||||
SHOW ENGINE InnoDB STATUS;
|
||||
Type Name Status
|
||||
InnoDB 2 lock struct(s) 1 row lock(s)
|
||||
UPDATE t1 SET data = data*2 WHERE data = 2;
|
||||
SHOW ENGINE InnoDB STATUS;
|
||||
Type Name Status
|
||||
InnoDB 6 lock struct(s) 2 row lock(s)
|
||||
SET @@session.tx_isolation = @old_tx_isolation;
|
||||
DROP TABLE t1;
|
||||
# Bug#37721, test of ORDER BY on PK and WHERE on INDEX
|
||||
CREATE TABLE t1 (
|
||||
a INT,
|
||||
|
|
|
|||
|
|
@ -100,19 +100,19 @@ drop table t1;
|
|||
show variables like "wait_timeout%";
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def VARIABLES VARIABLE_NAME Variable_name 253 64 12 N 1 0 8
|
||||
def VARIABLES VARIABLE_VALUE Value 253 20480 5 Y 0 0 8
|
||||
def VARIABLES VARIABLE_VALUE Value 253 1024 5 Y 0 0 8
|
||||
Variable_name Value
|
||||
wait_timeout 28800
|
||||
show variables like "WAIT_timeout%";
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def VARIABLES VARIABLE_NAME Variable_name 253 64 12 N 1 0 8
|
||||
def VARIABLES VARIABLE_VALUE Value 253 20480 5 Y 0 0 8
|
||||
def VARIABLES VARIABLE_VALUE Value 253 1024 5 Y 0 0 8
|
||||
Variable_name Value
|
||||
wait_timeout 28800
|
||||
show variables like "this_doesn't_exists%";
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def VARIABLES VARIABLE_NAME Variable_name 253 64 0 N 1 0 8
|
||||
def VARIABLES VARIABLE_VALUE Value 253 20480 0 Y 0 0 8
|
||||
def VARIABLES VARIABLE_VALUE Value 253 1024 0 Y 0 0 8
|
||||
Variable_name Value
|
||||
show table status from test like "this_doesn't_exists%";
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
|
|
@ -130,7 +130,7 @@ def TABLES AUTO_INCREMENT Auto_increment 8 21 0 Y 32800 0 63
|
|||
def TABLES CREATE_TIME Create_time 12 19 0 Y 128 0 63
|
||||
def TABLES UPDATE_TIME Update_time 12 19 0 Y 128 0 63
|
||||
def TABLES CHECK_TIME Check_time 12 19 0 Y 128 0 63
|
||||
def TABLES TABLE_COLLATION Collation 253 64 0 Y 0 0 8
|
||||
def TABLES TABLE_COLLATION Collation 253 32 0 Y 0 0 8
|
||||
def TABLES CHECKSUM Checksum 8 21 0 Y 32800 0 63
|
||||
def TABLES CREATE_OPTIONS Create_options 253 255 0 Y 0 0 8
|
||||
def TABLES TABLE_COMMENT Comment 253 80 0 N 1 0 8
|
||||
|
|
@ -858,17 +858,17 @@ set names utf8;
|
|||
----------------------------------------------------------------
|
||||
SHOW CHARACTER SET LIKE 'utf8';
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def CHARACTER_SETS CHARACTER_SET_NAME Charset 253 192 4 N 1 0 33
|
||||
def CHARACTER_SETS CHARACTER_SET_NAME Charset 253 96 4 N 1 0 33
|
||||
def CHARACTER_SETS DESCRIPTION Description 253 180 13 N 1 0 33
|
||||
def CHARACTER_SETS DEFAULT_COLLATE_NAME Default collation 253 192 15 N 1 0 33
|
||||
def CHARACTER_SETS DEFAULT_COLLATE_NAME Default collation 253 96 15 N 1 0 33
|
||||
def CHARACTER_SETS MAXLEN Maxlen 8 3 1 N 32769 0 63
|
||||
Charset Description Default collation Maxlen
|
||||
utf8 UTF-8 Unicode utf8_general_ci 3
|
||||
----------------------------------------------------------------
|
||||
SHOW COLLATION LIKE 'latin1_bin';
|
||||
Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr
|
||||
def COLLATIONS COLLATION_NAME Collation 253 192 10 N 1 0 33
|
||||
def COLLATIONS CHARACTER_SET_NAME Charset 253 192 6 N 1 0 33
|
||||
def COLLATIONS COLLATION_NAME Collation 253 96 10 N 1 0 33
|
||||
def COLLATIONS CHARACTER_SET_NAME Charset 253 96 6 N 1 0 33
|
||||
def COLLATIONS ID Id 8 11 2 N 32769 0 63
|
||||
def COLLATIONS IS_DEFAULT Default 253 9 0 N 1 0 33
|
||||
def COLLATIONS IS_COMPILED Compiled 253 9 3 N 1 0 33
|
||||
|
|
@ -935,7 +935,7 @@ def TABLES TABLE_NAME TABLE_NAME 253 192 2 N 1 0 33
|
|||
def TABLES TABLE_TYPE TABLE_TYPE 253 192 10 N 1 0 33
|
||||
def TABLES ENGINE ENGINE 253 192 6 Y 0 0 33
|
||||
def TABLES ROW_FORMAT ROW_FORMAT 253 30 5 Y 0 0 33
|
||||
def TABLES TABLE_COLLATION TABLE_COLLATION 253 192 17 Y 0 0 33
|
||||
def TABLES TABLE_COLLATION TABLE_COLLATION 253 96 17 Y 0 0 33
|
||||
def TABLES CREATE_OPTIONS CREATE_OPTIONS 253 765 0 Y 0 0 33
|
||||
def TABLES TABLE_COMMENT TABLE_COMMENT 253 240 0 N 1 0 33
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE ENGINE ROW_FORMAT TABLE_COLLATION CREATE_OPTIONS TABLE_COMMENT
|
||||
|
|
@ -966,8 +966,8 @@ def COLUMNS COLUMN_NAME COLUMN_NAME 253 192 1 N 1 0 33
|
|||
def COLUMNS COLUMN_DEFAULT COLUMN_DEFAULT 252 589815 0 Y 16 0 33
|
||||
def COLUMNS IS_NULLABLE IS_NULLABLE 253 9 2 N 1 0 33
|
||||
def COLUMNS DATA_TYPE DATA_TYPE 253 192 3 N 1 0 33
|
||||
def COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 253 192 0 Y 0 0 33
|
||||
def COLUMNS COLLATION_NAME COLLATION_NAME 253 192 0 Y 0 0 33
|
||||
def COLUMNS CHARACTER_SET_NAME CHARACTER_SET_NAME 253 96 0 Y 0 0 33
|
||||
def COLUMNS COLLATION_NAME COLLATION_NAME 253 96 0 Y 0 0 33
|
||||
def COLUMNS COLUMN_TYPE COLUMN_TYPE 252 589815 7 N 17 0 33
|
||||
def COLUMNS COLUMN_KEY COLUMN_KEY 253 9 3 N 1 0 33
|
||||
def COLUMNS EXTRA EXTRA 253 81 0 N 1 0 33
|
||||
|
|
@ -1125,7 +1125,7 @@ def ROUTINES IS_DETERMINISTIC IS_DETERMINISTIC 253 9 2 N 1 0 33
|
|||
def ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 253 192 12 N 1 0 33
|
||||
def ROUTINES SQL_PATH SQL_PATH 253 192 0 Y 0 0 33
|
||||
def ROUTINES SECURITY_TYPE SECURITY_TYPE 253 21 7 N 1 0 33
|
||||
def ROUTINES SQL_MODE SQL_MODE 252 589815 0 N 17 0 33
|
||||
def ROUTINES SQL_MODE SQL_MODE 253 24576 0 N 1 0 33
|
||||
def ROUTINES ROUTINE_COMMENT ROUTINE_COMMENT 253 192 0 N 1 0 33
|
||||
def ROUTINES DEFINER DEFINER 253 231 14 N 1 0 33
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE SQL_MODE ROUTINE_COMMENT DEFINER
|
||||
|
|
@ -1180,7 +1180,7 @@ def ROUTINES IS_DETERMINISTIC IS_DETERMINISTIC 253 9 2 N 1 0 33
|
|||
def ROUTINES SQL_DATA_ACCESS SQL_DATA_ACCESS 253 192 12 N 1 0 33
|
||||
def ROUTINES SQL_PATH SQL_PATH 253 192 0 Y 0 0 33
|
||||
def ROUTINES SECURITY_TYPE SECURITY_TYPE 253 21 7 N 1 0 33
|
||||
def ROUTINES SQL_MODE SQL_MODE 252 589815 0 N 17 0 33
|
||||
def ROUTINES SQL_MODE SQL_MODE 253 24576 0 N 1 0 33
|
||||
def ROUTINES ROUTINE_COMMENT ROUTINE_COMMENT 253 192 0 N 1 0 33
|
||||
def ROUTINES DEFINER DEFINER 253 231 14 N 1 0 33
|
||||
SPECIFIC_NAME ROUTINE_CATALOG ROUTINE_SCHEMA ROUTINE_NAME ROUTINE_TYPE DTD_IDENTIFIER ROUTINE_BODY ROUTINE_DEFINITION EXTERNAL_NAME EXTERNAL_LANGUAGE PARAMETER_STYLE IS_DETERMINISTIC SQL_DATA_ACCESS SQL_PATH SECURITY_TYPE SQL_MODE ROUTINE_COMMENT DEFINER
|
||||
|
|
|
|||
|
|
@ -1534,6 +1534,21 @@ select (1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 *
|
|||
(1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 *
|
||||
1.01500000 * 1.01500000 * 0.99500000)
|
||||
0.812988073953673124592306939480
|
||||
create table t1 as select 5.05 / 0.014;
|
||||
Warnings:
|
||||
Note 1265 Data truncated for column '5.05 / 0.014' at row 1
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Note 1265 Data truncated for column '5.05 / 0.014' at row 1
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`5.05 / 0.014` decimal(10,6) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
select * from t1;
|
||||
5.05 / 0.014
|
||||
360.714286
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
select cast(143.481 as decimal(4,1));
|
||||
cast(143.481 as decimal(4,1))
|
||||
|
|
|
|||
|
|
@ -1343,10 +1343,10 @@ t3 CREATE TABLE `t3` (
|
|||
`left(a,100000000)` longtext
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
drop tables t1,t2,t3;
|
||||
SELECT @tmp_max:= @@max_allowed_packet;
|
||||
@tmp_max:= @@max_allowed_packet
|
||||
SELECT @tmp_max:= @@global.max_allowed_packet;
|
||||
@tmp_max:= @@global.max_allowed_packet
|
||||
1048576
|
||||
SET max_allowed_packet=25000000;
|
||||
SET @@global.max_allowed_packet=25000000;
|
||||
CREATE TABLE t1 (a mediumtext);
|
||||
CREATE TABLE t2 (b varchar(20));
|
||||
INSERT INTO t1 VALUES ('a');
|
||||
|
|
@ -1384,7 +1384,7 @@ t3 CREATE TABLE `t3` (
|
|||
`a` varbinary(510) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
DROP TABLES t1,t2,t3;
|
||||
SET max_allowed_packet:= @tmp_max;
|
||||
SET @@global.max_allowed_packet:= @tmp_max;
|
||||
create table t1 ( id int not null auto_increment, primary key (id), col1 int);
|
||||
insert into t1 (col1) values (2),(3),(4),(5),(6);
|
||||
select 99 union all select id from t1 order by 1;
|
||||
|
|
|
|||
|
|
@ -228,7 +228,6 @@ VARIABLE_NAME VARIABLE_VALUE
|
|||
MYISAM_MAX_SORT_FILE_SIZE FILE_SIZE
|
||||
set global net_retry_count=10, session net_retry_count=10;
|
||||
set global net_buffer_length=1024, net_write_timeout=200, net_read_timeout=300;
|
||||
set session net_buffer_length=2048, net_write_timeout=500, net_read_timeout=600;
|
||||
show global variables like 'net_%';
|
||||
Variable_name Value
|
||||
net_buffer_length 1024
|
||||
|
|
@ -243,57 +242,45 @@ NET_RETRY_COUNT 10
|
|||
NET_WRITE_TIMEOUT 200
|
||||
show session variables like 'net_%';
|
||||
Variable_name Value
|
||||
net_buffer_length 2048
|
||||
net_read_timeout 600
|
||||
net_buffer_length 16384
|
||||
net_read_timeout 30
|
||||
net_retry_count 10
|
||||
net_write_timeout 500
|
||||
net_write_timeout 60
|
||||
select * from information_schema.session_variables where variable_name like 'net_%' order by 1;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
NET_BUFFER_LENGTH 2048
|
||||
NET_READ_TIMEOUT 600
|
||||
NET_BUFFER_LENGTH 16384
|
||||
NET_READ_TIMEOUT 30
|
||||
NET_RETRY_COUNT 10
|
||||
NET_WRITE_TIMEOUT 500
|
||||
set session net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
|
||||
NET_WRITE_TIMEOUT 60
|
||||
set global net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
|
||||
show global variables like 'net_%';
|
||||
Variable_name Value
|
||||
net_buffer_length 1024
|
||||
net_buffer_length 7168
|
||||
net_read_timeout 900
|
||||
net_retry_count 10
|
||||
net_write_timeout 1000
|
||||
select * from information_schema.global_variables where variable_name like 'net_%' order by 1;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
NET_BUFFER_LENGTH 1024
|
||||
NET_BUFFER_LENGTH 7168
|
||||
NET_READ_TIMEOUT 900
|
||||
NET_RETRY_COUNT 10
|
||||
NET_WRITE_TIMEOUT 1000
|
||||
show session variables like 'net_%';
|
||||
Variable_name Value
|
||||
net_buffer_length 7168
|
||||
net_read_timeout 600
|
||||
net_retry_count 10
|
||||
net_write_timeout 500
|
||||
select * from information_schema.session_variables where variable_name like 'net_%' order by 1;
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
NET_BUFFER_LENGTH 7168
|
||||
NET_READ_TIMEOUT 600
|
||||
NET_RETRY_COUNT 10
|
||||
NET_WRITE_TIMEOUT 500
|
||||
set net_buffer_length=1;
|
||||
set global net_buffer_length=1;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '1'
|
||||
show variables like 'net_buffer_length';
|
||||
show global variables like 'net_buffer_length';
|
||||
Variable_name Value
|
||||
net_buffer_length 1024
|
||||
select * from information_schema.session_variables where variable_name like 'net_buffer_length';
|
||||
select * from information_schema.global_variables where variable_name like 'net_buffer_length';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
NET_BUFFER_LENGTH 1024
|
||||
set net_buffer_length=2000000000;
|
||||
set global net_buffer_length=2000000000;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '2000000000'
|
||||
show variables like 'net_buffer_length';
|
||||
show global variables like 'net_buffer_length';
|
||||
Variable_name Value
|
||||
net_buffer_length 1048576
|
||||
select * from information_schema.session_variables where variable_name like 'net_buffer_length';
|
||||
select * from information_schema.global_variables where variable_name like 'net_buffer_length';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
NET_BUFFER_LENGTH 1048576
|
||||
set character set cp1251_koi8;
|
||||
|
|
@ -461,7 +448,7 @@ select @@long_query_time;
|
|||
@@long_query_time
|
||||
100.000001
|
||||
set low_priority_updates=1;
|
||||
set max_allowed_packet=100;
|
||||
set global max_allowed_packet=100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect max_allowed_packet value: '100'
|
||||
set global max_binlog_cache_size=100;
|
||||
|
|
@ -485,7 +472,7 @@ select @@max_user_connections;
|
|||
100
|
||||
set global max_write_lock_count=100;
|
||||
set myisam_sort_buffer_size=100;
|
||||
set net_buffer_length=100;
|
||||
set global net_buffer_length=100;
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect net_buffer_length value: '100'
|
||||
set net_read_timeout=100;
|
||||
|
|
|
|||
|
|
@ -1,30 +1,32 @@
|
|||
drop table if exists t1;
|
||||
## Creating new table t1 ##
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT NOT NULL auto_increment,
|
||||
PRIMARY KEY (id),
|
||||
name VARCHAR(30)
|
||||
);
|
||||
SET @start_value= @@global.wait_timeout;
|
||||
'#--------------------FN_DYNVARS_186_01-------------------------#'
|
||||
## Creating new connection test_con1 ##
|
||||
## Setting value of variable to 5 ##
|
||||
SET @@session.wait_timeout = 5;
|
||||
## Inserting record in table t1 ##
|
||||
INSERT into t1(name) values('Record_1');
|
||||
## Using sleep to check timeout ##
|
||||
'#--------------------FN_DYNVARS_186_02-------------------------#'
|
||||
## Setting value of variable ##
|
||||
SET @@global.wait_timeout = 5;
|
||||
## Creating new connection test_con2 ##
|
||||
INSERT into t1(name) values('Record_2');
|
||||
## Using sleep to check timeout ##
|
||||
SET @start_time= UNIX_TIMESTAMP();
|
||||
connect (test_con1, localhost, root,,);
|
||||
SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';
|
||||
Expect 1
|
||||
1
|
||||
SET @@session.wait_timeout = <session_value>;
|
||||
connect (test_con2, localhost, root,,);
|
||||
SET @@session.wait_timeout = <session_value> - 1;
|
||||
connection default;
|
||||
wait until connections ready
|
||||
SELECT info FROM information_schema.processlist;
|
||||
info
|
||||
SELECT info FROM information_schema.processlist
|
||||
'#--------------------FN_DYNVARS_186_03-------------------------#'
|
||||
## Setting value of variable to 1 ##
|
||||
SET @@global.wait_timeout = 1;
|
||||
## Creating new connection ##
|
||||
INSERT into t1(name) values('Record_3');
|
||||
## Using sleep to check timeout ##
|
||||
## We cannot test it further because the server stops due to wait_timeout ##
|
||||
SELECT * from t1;
|
||||
ERROR HY000: MySQL server has gone away
|
||||
SET @@global.wait_timeout= <global_value>;
|
||||
SELECT @@session.wait_timeout = @start_value AS 'Expect 1';
|
||||
Expect 1
|
||||
1
|
||||
connect (test_con3, localhost, root,,);
|
||||
SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';
|
||||
Expect 1
|
||||
1
|
||||
connection default;
|
||||
SELECT info FROM information_schema.processlist;
|
||||
info
|
||||
SELECT info FROM information_schema.processlist
|
||||
SELECT UNIX_TIMESTAMP() - @start_time >= <global_value> + <session_value>;;
|
||||
UNIX_TIMESTAMP() - @start_time >= <global_value> + <session_value>;
|
||||
1
|
||||
SET @@global.wait_timeout= @start_value;
|
||||
|
|
|
|||
|
|
@ -346,6 +346,7 @@ WHERE table_name = 't1_my_tablex';
|
|||
# Enforce a time difference bigger than the smallest unit (1 second).
|
||||
--real_sleep 1.1
|
||||
INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
|
||||
FLUSH TABLES;
|
||||
SELECT UPDATE_TIME > @UPDATE_TIME
|
||||
AS "Is current UPDATE_TIME bigger than before last INSERT?"
|
||||
FROM information_schema.tables
|
||||
|
|
|
|||
|
|
@ -28,22 +28,22 @@ DROP FUNCTION test.f1;
|
|||
#########################################################################
|
||||
DESCRIBE information_schema.CHARACTER_SETS;
|
||||
Field Type Null Key Default Extra
|
||||
CHARACTER_SET_NAME varchar(64) NO
|
||||
DEFAULT_COLLATE_NAME varchar(64) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
DEFAULT_COLLATE_NAME varchar(32) NO
|
||||
DESCRIPTION varchar(60) NO
|
||||
MAXLEN bigint(3) NO 0
|
||||
SHOW CREATE TABLE information_schema.CHARACTER_SETS;
|
||||
Table Create Table
|
||||
CHARACTER_SETS CREATE TEMPORARY TABLE `CHARACTER_SETS` (
|
||||
`CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATE_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DESCRIPTION` varchar(60) NOT NULL DEFAULT '',
|
||||
`MAXLEN` bigint(3) NOT NULL DEFAULT '0'
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.CHARACTER_SETS;
|
||||
Field Type Null Key Default Extra
|
||||
CHARACTER_SET_NAME varchar(64) NO
|
||||
DEFAULT_COLLATE_NAME varchar(64) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
DEFAULT_COLLATE_NAME varchar(32) NO
|
||||
DESCRIPTION varchar(60) NO
|
||||
MAXLEN bigint(3) NO 0
|
||||
# Testcases 3.2.2.2 and 3.2.2.3 are checked in suite/funcs_1/t/charset_collation*.test
|
||||
|
|
|
|||
|
|
@ -28,18 +28,18 @@ DROP FUNCTION test.f1;
|
|||
#########################################################################
|
||||
DESCRIBE information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
Field Type Null Key Default Extra
|
||||
COLLATION_NAME varchar(64) NO
|
||||
CHARACTER_SET_NAME varchar(64) NO
|
||||
COLLATION_NAME varchar(32) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
SHOW CREATE TABLE information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
Table Create Table
|
||||
COLLATION_CHARACTER_SET_APPLICABILITY CREATE TEMPORARY TABLE `COLLATION_CHARACTER_SET_APPLICABILITY` (
|
||||
`COLLATION_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT ''
|
||||
`COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT ''
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.COLLATION_CHARACTER_SET_APPLICABILITY;
|
||||
Field Type Null Key Default Extra
|
||||
COLLATION_NAME varchar(64) NO
|
||||
CHARACTER_SET_NAME varchar(64) NO
|
||||
COLLATION_NAME varchar(32) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
# Testcases 3.2.4.2 and 3.2.4.3 are checked in suite/funcs_1/t/charset_collation*.test
|
||||
########################################################################
|
||||
# Testcases 3.2.1.3-3.2.1.5 + 3.2.1.8-3.2.1.12: INSERT/UPDATE/DELETE and
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@ DROP FUNCTION test.f1;
|
|||
#########################################################################
|
||||
DESCRIBE information_schema.COLLATIONS;
|
||||
Field Type Null Key Default Extra
|
||||
COLLATION_NAME varchar(64) NO
|
||||
CHARACTER_SET_NAME varchar(64) NO
|
||||
COLLATION_NAME varchar(32) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
ID bigint(11) NO 0
|
||||
IS_DEFAULT varchar(3) NO
|
||||
IS_COMPILED varchar(3) NO
|
||||
|
|
@ -37,8 +37,8 @@ SORTLEN bigint(3) NO 0
|
|||
SHOW CREATE TABLE information_schema.COLLATIONS;
|
||||
Table Create Table
|
||||
COLLATIONS CREATE TEMPORARY TABLE `COLLATIONS` (
|
||||
`COLLATION_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`ID` bigint(11) NOT NULL DEFAULT '0',
|
||||
`IS_DEFAULT` varchar(3) NOT NULL DEFAULT '',
|
||||
`IS_COMPILED` varchar(3) NOT NULL DEFAULT '',
|
||||
|
|
@ -46,8 +46,8 @@ COLLATIONS CREATE TEMPORARY TABLE `COLLATIONS` (
|
|||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.COLLATIONS;
|
||||
Field Type Null Key Default Extra
|
||||
COLLATION_NAME varchar(64) NO
|
||||
CHARACTER_SET_NAME varchar(64) NO
|
||||
COLLATION_NAME varchar(32) NO
|
||||
CHARACTER_SET_NAME varchar(32) NO
|
||||
ID bigint(11) NO 0
|
||||
IS_DEFAULT varchar(3) NO
|
||||
IS_COMPILED varchar(3) NO
|
||||
|
|
|
|||
|
|
@ -40,8 +40,8 @@ CHARACTER_MAXIMUM_LENGTH bigint(21) unsigned YES NULL
|
|||
CHARACTER_OCTET_LENGTH bigint(21) unsigned YES NULL
|
||||
NUMERIC_PRECISION bigint(21) unsigned YES NULL
|
||||
NUMERIC_SCALE bigint(21) unsigned YES NULL
|
||||
CHARACTER_SET_NAME varchar(64) YES NULL
|
||||
COLLATION_NAME varchar(64) YES NULL
|
||||
CHARACTER_SET_NAME varchar(32) YES NULL
|
||||
COLLATION_NAME varchar(32) YES NULL
|
||||
COLUMN_TYPE longtext NO NULL
|
||||
COLUMN_KEY varchar(3) NO
|
||||
EXTRA varchar(27) NO
|
||||
|
|
@ -62,8 +62,8 @@ COLUMNS CREATE TEMPORARY TABLE `COLUMNS` (
|
|||
`CHARACTER_OCTET_LENGTH` bigint(21) unsigned DEFAULT NULL,
|
||||
`NUMERIC_PRECISION` bigint(21) unsigned DEFAULT NULL,
|
||||
`NUMERIC_SCALE` bigint(21) unsigned DEFAULT NULL,
|
||||
`CHARACTER_SET_NAME` varchar(64) DEFAULT NULL,
|
||||
`COLLATION_NAME` varchar(64) DEFAULT NULL,
|
||||
`CHARACTER_SET_NAME` varchar(32) DEFAULT NULL,
|
||||
`COLLATION_NAME` varchar(32) DEFAULT NULL,
|
||||
`COLUMN_TYPE` longtext NOT NULL,
|
||||
`COLUMN_KEY` varchar(3) NOT NULL DEFAULT '',
|
||||
`EXTRA` varchar(27) NOT NULL DEFAULT '',
|
||||
|
|
@ -84,8 +84,8 @@ CHARACTER_MAXIMUM_LENGTH bigint(21) unsigned YES NULL
|
|||
CHARACTER_OCTET_LENGTH bigint(21) unsigned YES NULL
|
||||
NUMERIC_PRECISION bigint(21) unsigned YES NULL
|
||||
NUMERIC_SCALE bigint(21) unsigned YES NULL
|
||||
CHARACTER_SET_NAME varchar(64) YES NULL
|
||||
COLLATION_NAME varchar(64) YES NULL
|
||||
CHARACTER_SET_NAME varchar(32) YES NULL
|
||||
COLLATION_NAME varchar(32) YES NULL
|
||||
COLUMN_TYPE longtext NO NULL
|
||||
COLUMN_KEY varchar(3) NO
|
||||
EXTRA varchar(27) NO
|
||||
|
|
|
|||
|
|
@ -3,22 +3,22 @@ WHERE table_schema = 'information_schema'
|
|||
AND table_name <> 'profiling'
|
||||
ORDER BY table_schema, table_name, column_name;
|
||||
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH NUMERIC_PRECISION NUMERIC_SCALE CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE COLUMN_KEY EXTRA PRIVILEGES COLUMN_COMMENT
|
||||
NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema CHARACTER_SETS CHARACTER_SET_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema CHARACTER_SETS DESCRIPTION 3 NO varchar 60 180 NULL NULL utf8 utf8_general_ci varchar(60) select
|
||||
NULL information_schema CHARACTER_SETS MAXLEN 4 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select
|
||||
NULL information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLLATIONS COLLATION_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLLATIONS CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLLATIONS COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLLATIONS ID 3 0 NO bigint NULL NULL 19 0 NULL NULL bigint(11) select
|
||||
NULL information_schema COLLATIONS IS_COMPILED 5 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema COLLATIONS IS_DEFAULT 4 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
NULL information_schema COLLATIONS SORTLEN 6 0 NO bigint NULL NULL 19 0 NULL NULL bigint(3) select
|
||||
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME 2 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME 1 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH 9 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema COLUMNS CHARACTER_SET_NAME 13 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLUMNS COLLATION_NAME 14 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema COLUMNS COLUMN_COMMENT 19 NO varchar 255 765 NULL NULL utf8 utf8_general_ci varchar(255) select
|
||||
NULL information_schema COLUMNS COLUMN_DEFAULT 6 NULL YES longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema COLUMNS COLUMN_KEY 16 NO varchar 3 9 NULL NULL utf8 utf8_general_ci varchar(3) select
|
||||
|
|
@ -110,9 +110,9 @@ NULL information_schema FILES UPDATE_COUNT 13 NULL YES bigint NULL NULL 19 0 NUL
|
|||
NULL information_schema FILES UPDATE_TIME 34 NULL YES datetime NULL NULL NULL NULL NULL NULL datetime select
|
||||
NULL information_schema FILES VERSION 25 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema GLOBAL_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 20480 61440 NULL NULL utf8 utf8_general_ci varchar(20480) select
|
||||
NULL information_schema GLOBAL_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
|
||||
NULL information_schema GLOBAL_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 20480 61440 NULL NULL utf8 utf8_general_ci varchar(20480) select
|
||||
NULL information_schema GLOBAL_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
|
||||
NULL information_schema KEY_COLUMN_USAGE COLUMN_NAME 7 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
|
|
@ -200,11 +200,11 @@ NULL information_schema ROUTINES ROUTINE_TYPE 5 NO varchar 9 27 NULL NULL utf8
|
|||
NULL information_schema ROUTINES SECURITY_TYPE 15 NO varchar 7 21 NULL NULL utf8 utf8_general_ci varchar(7) select
|
||||
NULL information_schema ROUTINES SPECIFIC_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES SQL_DATA_ACCESS 13 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema ROUTINES SQL_MODE 18 NULL NO longtext 4294967295 4294967295 NULL NULL utf8 utf8_general_ci longtext select
|
||||
NULL information_schema ROUTINES SQL_MODE 18 NO varchar 8192 24576 NULL NULL utf8 utf8_general_ci varchar(8192) select
|
||||
NULL information_schema ROUTINES SQL_PATH 14 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SCHEMATA CATALOG_NAME 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME 3 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema SCHEMATA DEFAULT_COLLATION_NAME 4 NO varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema SCHEMATA SCHEMA_NAME 2 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SCHEMATA SQL_PATH 5 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema SCHEMA_PRIVILEGES GRANTEE 1 NO varchar 81 243 NULL NULL utf8 utf8_general_ci varchar(81) select
|
||||
|
|
@ -213,9 +213,9 @@ NULL information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE 4 NO varchar 64 192 NU
|
|||
NULL information_schema SCHEMA_PRIVILEGES TABLE_CATALOG 2 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema SCHEMA_PRIVILEGES TABLE_SCHEMA 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SESSION_STATUS VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL YES varchar 20480 61440 NULL NULL utf8 utf8_general_ci varchar(20480) select
|
||||
NULL information_schema SESSION_STATUS VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
|
||||
NULL information_schema SESSION_VARIABLES VARIABLE_NAME 1 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 20480 61440 NULL NULL utf8 utf8_general_ci varchar(20480) select
|
||||
NULL information_schema SESSION_VARIABLES VARIABLE_VALUE 2 NULL YES varchar 1024 3072 NULL NULL utf8 utf8_general_ci varchar(1024) select
|
||||
NULL information_schema STATISTICS CARDINALITY 10 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) select
|
||||
NULL information_schema STATISTICS COLLATION 9 NULL YES varchar 1 3 NULL NULL utf8 utf8_general_ci varchar(1) select
|
||||
NULL information_schema STATISTICS COLUMN_NAME 8 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
|
|
@ -244,7 +244,7 @@ NULL information_schema TABLES INDEX_LENGTH 12 NULL YES bigint NULL NULL 19 0 NU
|
|||
NULL information_schema TABLES MAX_DATA_LENGTH 11 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
|
||||
NULL information_schema TABLES ROW_FORMAT 7 NULL YES varchar 10 30 NULL NULL utf8 utf8_general_ci varchar(10) select
|
||||
NULL information_schema TABLES TABLE_CATALOG 1 NULL YES varchar 512 1536 NULL NULL utf8 utf8_general_ci varchar(512) select
|
||||
NULL information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLES TABLE_COLLATION 18 NULL YES varchar 32 96 NULL NULL utf8 utf8_general_ci varchar(32) select
|
||||
NULL information_schema TABLES TABLE_COMMENT 21 NO varchar 80 240 NULL NULL utf8 utf8_general_ci varchar(80) select
|
||||
NULL information_schema TABLES TABLE_NAME 3 NO varchar 64 192 NULL NULL utf8 utf8_general_ci varchar(64) select
|
||||
NULL information_schema TABLES TABLE_ROWS 8 NULL YES bigint NULL NULL 19 0 NULL NULL bigint(21) unsigned select
|
||||
|
|
@ -357,18 +357,18 @@ WHERE table_schema = 'information_schema'
|
|||
AND table_name <> 'profiling'
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION;
|
||||
COL_CML TABLE_SCHEMA TABLE_NAME COLUMN_NAME DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH CHARACTER_SET_NAME COLLATION_NAME COLUMN_TYPE
|
||||
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema CHARACTER_SETS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema CHARACTER_SETS DEFAULT_COLLATE_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema CHARACTER_SETS DESCRIPTION varchar 60 180 utf8 utf8_general_ci varchar(60)
|
||||
NULL information_schema CHARACTER_SETS MAXLEN bigint NULL NULL NULL NULL bigint(3)
|
||||
3.0000 information_schema COLLATIONS COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLLATIONS COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLLATIONS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema COLLATIONS ID bigint NULL NULL NULL NULL bigint(11)
|
||||
3.0000 information_schema COLLATIONS IS_DEFAULT varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema COLLATIONS IS_COMPILED varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
NULL information_schema COLLATIONS SORTLEN bigint NULL NULL NULL NULL bigint(3)
|
||||
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLLATION_CHARACTER_SET_APPLICABILITY CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLUMNS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema COLUMNS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMNS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
|
|
@ -381,8 +381,8 @@ NULL information_schema COLUMNS CHARACTER_MAXIMUM_LENGTH bigint NULL NULL NULL N
|
|||
NULL information_schema COLUMNS CHARACTER_OCTET_LENGTH bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS NUMERIC_PRECISION bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
NULL information_schema COLUMNS NUMERIC_SCALE bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMNS COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema COLUMNS CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema COLUMNS COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
1.0000 information_schema COLUMNS COLUMN_TYPE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema COLUMNS COLUMN_KEY varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema COLUMNS EXTRA varchar 27 81 utf8 utf8_general_ci varchar(27)
|
||||
|
|
@ -464,9 +464,9 @@ NULL information_schema FILES CHECKSUM bigint NULL NULL NULL NULL bigint(21) uns
|
|||
3.0000 information_schema FILES STATUS varchar 20 60 utf8 utf8_general_ci varchar(20)
|
||||
3.0000 information_schema FILES EXTRA varchar 255 765 utf8 utf8_general_ci varchar(255)
|
||||
3.0000 information_schema GLOBAL_STATUS VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE varchar 20480 61440 utf8 utf8_general_ci varchar(20480)
|
||||
3.0000 information_schema GLOBAL_STATUS VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE varchar 20480 61440 utf8 utf8_general_ci varchar(20480)
|
||||
3.0000 information_schema GLOBAL_VARIABLES VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema KEY_COLUMN_USAGE CONSTRAINT_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
|
|
@ -550,7 +550,7 @@ NULL information_schema PROCESSLIST TIME bigint NULL NULL NULL NULL bigint(7)
|
|||
3.0000 information_schema ROUTINES SECURITY_TYPE varchar 7 21 utf8 utf8_general_ci varchar(7)
|
||||
NULL information_schema ROUTINES CREATED datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datetime
|
||||
1.0000 information_schema ROUTINES SQL_MODE longtext 4294967295 4294967295 utf8 utf8_general_ci longtext
|
||||
3.0000 information_schema ROUTINES SQL_MODE varchar 8192 24576 utf8 utf8_general_ci varchar(8192)
|
||||
3.0000 information_schema ROUTINES ROUTINE_COMMENT varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema ROUTINES DEFINER varchar 77 231 utf8 utf8_general_ci varchar(77)
|
||||
3.0000 information_schema ROUTINES CHARACTER_SET_CLIENT varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
|
|
@ -558,8 +558,8 @@ NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datet
|
|||
3.0000 information_schema ROUTINES DATABASE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema SCHEMATA CATALOG_NAME varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema SCHEMATA SCHEMA_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SCHEMATA DEFAULT_CHARACTER_SET_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema SCHEMATA DEFAULT_COLLATION_NAME varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
3.0000 information_schema SCHEMATA SQL_PATH varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema SCHEMA_PRIVILEGES GRANTEE varchar 81 243 utf8 utf8_general_ci varchar(81)
|
||||
3.0000 information_schema SCHEMA_PRIVILEGES TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
|
|
@ -567,9 +567,9 @@ NULL information_schema ROUTINES LAST_ALTERED datetime NULL NULL NULL NULL datet
|
|||
3.0000 information_schema SCHEMA_PRIVILEGES PRIVILEGE_TYPE varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SCHEMA_PRIVILEGES IS_GRANTABLE varchar 3 9 utf8 utf8_general_ci varchar(3)
|
||||
3.0000 information_schema SESSION_STATUS VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SESSION_STATUS VARIABLE_VALUE varchar 20480 61440 utf8 utf8_general_ci varchar(20480)
|
||||
3.0000 information_schema SESSION_STATUS VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema SESSION_VARIABLES VARIABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema SESSION_VARIABLES VARIABLE_VALUE varchar 20480 61440 utf8 utf8_general_ci varchar(20480)
|
||||
3.0000 information_schema SESSION_VARIABLES VARIABLE_VALUE varchar 1024 3072 utf8 utf8_general_ci varchar(1024)
|
||||
3.0000 information_schema STATISTICS TABLE_CATALOG varchar 512 1536 utf8 utf8_general_ci varchar(512)
|
||||
3.0000 information_schema STATISTICS TABLE_SCHEMA varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema STATISTICS TABLE_NAME varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
|
|
@ -602,7 +602,7 @@ NULL information_schema TABLES AUTO_INCREMENT bigint NULL NULL NULL NULL bigint(
|
|||
NULL information_schema TABLES CREATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES UPDATE_TIME datetime NULL NULL NULL NULL datetime
|
||||
NULL information_schema TABLES CHECK_TIME datetime NULL NULL NULL NULL datetime
|
||||
3.0000 information_schema TABLES TABLE_COLLATION varchar 64 192 utf8 utf8_general_ci varchar(64)
|
||||
3.0000 information_schema TABLES TABLE_COLLATION varchar 32 96 utf8 utf8_general_ci varchar(32)
|
||||
NULL information_schema TABLES CHECKSUM bigint NULL NULL NULL NULL bigint(21) unsigned
|
||||
3.0000 information_schema TABLES CREATE_OPTIONS varchar 255 765 utf8 utf8_general_ci varchar(255)
|
||||
3.0000 information_schema TABLES TABLE_COMMENT varchar 80 240 utf8 utf8_general_ci varchar(80)
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ SQL_PATH varchar(64) YES NULL
|
|||
SECURITY_TYPE varchar(7) NO
|
||||
CREATED datetime NO 0000-00-00 00:00:00
|
||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||
SQL_MODE longtext NO NULL
|
||||
SQL_MODE varchar(8192) NO
|
||||
ROUTINE_COMMENT varchar(64) NO
|
||||
DEFINER varchar(77) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
|
|
@ -71,7 +71,7 @@ ROUTINES CREATE TEMPORARY TABLE `ROUTINES` (
|
|||
`SECURITY_TYPE` varchar(7) NOT NULL DEFAULT '',
|
||||
`CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
`SQL_MODE` longtext NOT NULL,
|
||||
`SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
|
||||
`ROUTINE_COMMENT` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFINER` varchar(77) NOT NULL DEFAULT '',
|
||||
`CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
|
||||
|
|
@ -97,7 +97,7 @@ SQL_PATH varchar(64) YES NULL
|
|||
SECURITY_TYPE varchar(7) NO
|
||||
CREATED datetime NO 0000-00-00 00:00:00
|
||||
LAST_ALTERED datetime NO 0000-00-00 00:00:00
|
||||
SQL_MODE longtext NO NULL
|
||||
SQL_MODE varchar(8192) NO
|
||||
ROUTINE_COMMENT varchar(64) NO
|
||||
DEFINER varchar(77) NO
|
||||
CHARACTER_SET_CLIENT varchar(32) NO
|
||||
|
|
|
|||
|
|
@ -30,24 +30,24 @@ DESCRIBE information_schema.SCHEMATA;
|
|||
Field Type Null Key Default Extra
|
||||
CATALOG_NAME varchar(512) YES NULL
|
||||
SCHEMA_NAME varchar(64) NO
|
||||
DEFAULT_CHARACTER_SET_NAME varchar(64) NO
|
||||
DEFAULT_COLLATION_NAME varchar(64) NO
|
||||
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
||||
DEFAULT_COLLATION_NAME varchar(32) NO
|
||||
SQL_PATH varchar(512) YES NULL
|
||||
SHOW CREATE TABLE information_schema.SCHEMATA;
|
||||
Table Create Table
|
||||
SCHEMATA CREATE TEMPORARY TABLE `SCHEMATA` (
|
||||
`CATALOG_NAME` varchar(512) DEFAULT NULL,
|
||||
`SCHEMA_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_CHARACTER_SET_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATION_NAME` varchar(64) NOT NULL DEFAULT '',
|
||||
`DEFAULT_CHARACTER_SET_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`DEFAULT_COLLATION_NAME` varchar(32) NOT NULL DEFAULT '',
|
||||
`SQL_PATH` varchar(512) DEFAULT NULL
|
||||
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
||||
SHOW COLUMNS FROM information_schema.SCHEMATA;
|
||||
Field Type Null Key Default Extra
|
||||
CATALOG_NAME varchar(512) YES NULL
|
||||
SCHEMA_NAME varchar(64) NO
|
||||
DEFAULT_CHARACTER_SET_NAME varchar(64) NO
|
||||
DEFAULT_COLLATION_NAME varchar(64) NO
|
||||
DEFAULT_CHARACTER_SET_NAME varchar(32) NO
|
||||
DEFAULT_COLLATION_NAME varchar(32) NO
|
||||
SQL_PATH varchar(512) YES NULL
|
||||
SELECT catalog_name, schema_name, sql_path
|
||||
FROM information_schema.schemata
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL
|
|||
CREATE_TIME datetime YES NULL
|
||||
UPDATE_TIME datetime YES NULL
|
||||
CHECK_TIME datetime YES NULL
|
||||
TABLE_COLLATION varchar(64) YES NULL
|
||||
TABLE_COLLATION varchar(32) YES NULL
|
||||
CHECKSUM bigint(21) unsigned YES NULL
|
||||
CREATE_OPTIONS varchar(255) YES NULL
|
||||
TABLE_COMMENT varchar(80) NO
|
||||
|
|
@ -69,7 +69,7 @@ TABLES CREATE TEMPORARY TABLE `TABLES` (
|
|||
`CREATE_TIME` datetime DEFAULT NULL,
|
||||
`UPDATE_TIME` datetime DEFAULT NULL,
|
||||
`CHECK_TIME` datetime DEFAULT NULL,
|
||||
`TABLE_COLLATION` varchar(64) DEFAULT NULL,
|
||||
`TABLE_COLLATION` varchar(32) DEFAULT NULL,
|
||||
`CHECKSUM` bigint(21) unsigned DEFAULT NULL,
|
||||
`CREATE_OPTIONS` varchar(255) DEFAULT NULL,
|
||||
`TABLE_COMMENT` varchar(80) NOT NULL DEFAULT ''
|
||||
|
|
@ -93,7 +93,7 @@ AUTO_INCREMENT bigint(21) unsigned YES NULL
|
|||
CREATE_TIME datetime YES NULL
|
||||
UPDATE_TIME datetime YES NULL
|
||||
CHECK_TIME datetime YES NULL
|
||||
TABLE_COLLATION varchar(64) YES NULL
|
||||
TABLE_COLLATION varchar(32) YES NULL
|
||||
CHECKSUM bigint(21) unsigned YES NULL
|
||||
CREATE_OPTIONS varchar(255) YES NULL
|
||||
TABLE_COMMENT varchar(80) NO
|
||||
|
|
@ -310,6 +310,7 @@ SELECT UPDATE_TIME, checksum INTO @UPDATE_TIME, @checksum
|
|||
FROM information_schema.tables
|
||||
WHERE table_name = 't1_my_tablex';
|
||||
INSERT INTO db_datadict.t1_my_tablex SET f1 = 3;
|
||||
FLUSH TABLES;
|
||||
SELECT UPDATE_TIME > @UPDATE_TIME
|
||||
AS "Is current UPDATE_TIME bigger than before last INSERT?"
|
||||
FROM information_schema.tables
|
||||
|
|
|
|||
|
|
@ -1439,3 +1439,20 @@ select hex(_utf8 X'616263FF');
|
|||
select hex(_utf8 B'001111111111');
|
||||
--error ER_INVALID_CHARACTER_STRING
|
||||
select (_utf8 X'616263FF');
|
||||
|
||||
#
|
||||
# Bug #36772: When using UTF8, CONVERT with GROUP BY returns truncated results
|
||||
#
|
||||
CREATE TABLE t1 (a INT NOT NULL, b INT NOT NULL);
|
||||
INSERT INTO t1 VALUES (70000, 1092), (70001, 1085), (70002, 1065);
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1 GROUP BY b;
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1;
|
||||
ALTER TABLE t1 ADD UNIQUE (b);
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1 GROUP BY b;
|
||||
DROP INDEX b ON t1;
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) FROM t1 GROUP BY b;
|
||||
ALTER TABLE t1 ADD INDEX (b);
|
||||
SELECT CONVERT(a, CHAR), CONVERT(b, CHAR) from t1 GROUP BY b;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
|||
|
|
@ -1923,6 +1923,25 @@ DROP TABLE t1;
|
|||
connection master;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Bug #34774 key prefix on text field in federated tables can cause
|
||||
# server to crash!
|
||||
#
|
||||
connection slave;
|
||||
CREATE TABLE t1 (a TEXT, b TEXT, KEY(b(1)));
|
||||
INSERT INTO t1 VALUES (NULL, NULL), (NULL, NULL), (NULL, NULL), (NULL, NULL);
|
||||
connection master;
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
eval CREATE TABLE t1
|
||||
(a TEXT, b TEXT, KEY(b(1))) ENGINE=FEDERATED
|
||||
CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/test/t1';
|
||||
SELECT t1.a FROM t1, t1 as t2 WHERE t2.b NOT LIKE t1.b;
|
||||
connection slave;
|
||||
DROP TABLE t1;
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
|
||||
connection default;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
source include/federated.inc;
|
||||
# NOTE: Keep any include/ files that will kill / skip a test BEFORE any others
|
||||
# having federated.inc before have_innodb.inc allows for an orphaned database
|
||||
# that can cause other tests to fail.
|
||||
# See Bug #40645 Test main.federated_innodb does not always clean up after itself
|
||||
|
||||
source include/have_innodb.inc;
|
||||
source include/federated.inc;
|
||||
|
||||
#
|
||||
# Bug#25513 Federated transaction failures
|
||||
|
|
|
|||
|
|
@ -418,3 +418,30 @@ SELECT a FROM t1 WHERE MATCH a AGAINST ('+city* of*' IN BOOLEAN MODE);
|
|||
DROP TABLE t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
#
|
||||
# BUG#38842 - Fix for 25951 seems incorrect
|
||||
#
|
||||
CREATE TABLE t1 (a VARCHAR(255), b INT, FULLTEXT(a), KEY(b));
|
||||
INSERT INTO t1 VALUES('test', 1),('test', 1),('test', 1),('test', 1),
|
||||
('test', 1),('test', 2),('test', 3),('test', 4);
|
||||
|
||||
EXPLAIN SELECT * FROM t1
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
|
||||
EXPLAIN SELECT * FROM t1 USE INDEX(a)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
|
||||
EXPLAIN SELECT * FROM t1 FORCE INDEX(a)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
|
||||
EXPLAIN SELECT * FROM t1 IGNORE INDEX(a)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
|
||||
EXPLAIN SELECT * FROM t1 USE INDEX(b)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
|
||||
EXPLAIN SELECT * FROM t1 FORCE INDEX(b)
|
||||
WHERE MATCH(a) AGAINST('test' IN BOOLEAN MODE) AND b=1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
|
|
|||
|
|
@ -43,8 +43,11 @@ drop table t1;
|
|||
# note that when LOW_MEMORY is set the "test" below is meaningless
|
||||
#
|
||||
|
||||
set @@max_allowed_packet=1048576*100;
|
||||
set @@global.max_allowed_packet=1048576*100;
|
||||
--replace_result "''" XXX "'1'" XXX
|
||||
|
||||
# reconnect to make the new max packet size take effect
|
||||
--connect (newconn, localhost, root,,)
|
||||
eval select compress(repeat('aaaaaaaaaa', IF('$LOW_MEMORY', 10, 10000000))) is null;
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -1346,4 +1346,41 @@ explain select count(*) from information_schema.tables;
|
|||
explain select count(*) from information_schema.columns;
|
||||
explain select count(*) from information_schema.views;
|
||||
|
||||
#
|
||||
# Bug#39955 SELECT on INFORMATION_SCHEMA.GLOBAL_VARIABLES takes too long
|
||||
#
|
||||
set global init_connect="drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;\
|
||||
drop table if exists t1;drop table if exists t1;";
|
||||
select * from information_schema.global_variables where variable_name='init_connect';
|
||||
set global init_connect="";
|
||||
|
||||
#
|
||||
# Bug #34517 SHOW GLOBAL STATUS does not work properly in embedded server.
|
||||
#
|
||||
|
||||
create table t0 select * from information_schema.global_status where VARIABLE_NAME='COM_SELECT';
|
||||
SELECT 1;
|
||||
select a.VARIABLE_VALUE - b.VARIABLE_VALUE from t0 b, information_schema.global_status a
|
||||
where a.VARIABLE_NAME = b.VARIABLE_NAME;
|
||||
drop table t0;
|
||||
|
||||
--echo End of 5.1 tests.
|
||||
|
|
|
|||
|
|
@ -121,3 +121,13 @@ SHOW CREATE TABLE t1;
|
|||
SELECT PARTITION_DESCRIPTION FROM information_schema.partitions WHERE
|
||||
table_schema = "test" AND table_name = "t1";
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug#38909 CREATE_OPTIONS in information_schema produces wrong results
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
create table t1 (f1 int key) partition by key(f1) partitions 2;
|
||||
select create_options from information_schema.tables where table_schema="test";
|
||||
drop table t1;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,9 @@
|
|||
-- disable_query_log
|
||||
-- disable_result_log
|
||||
|
||||
SET @@max_allowed_packet=16777216;
|
||||
# set packet size and reconnect
|
||||
SET @@global.max_allowed_packet=16777216;
|
||||
--connect (newconn, localhost, root,,)
|
||||
|
||||
DROP TABLE IF EXISTS bug34300;
|
||||
CREATE TABLE bug34300 (
|
||||
|
|
|
|||
|
|
@ -36,8 +36,13 @@
|
|||
|
||||
SET @start_global_value = @@global.max_allowed_packet;
|
||||
SELECT @start_global_value;
|
||||
SET @start_session_value = @@session.max_allowed_packet;
|
||||
SELECT @start_session_value;
|
||||
|
||||
# give a known value to @@session.max_allowed_packet by assigning to
|
||||
# @@global and setting up a new connection (for deterministic result
|
||||
# file diffing)
|
||||
SET @@global.max_allowed_packet = DEFAULT;
|
||||
connect (conn1, localhost, root,,);
|
||||
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_070_01-------------------------#'
|
||||
|
|
@ -49,7 +54,9 @@ SET @@global.max_allowed_packet = 1000;
|
|||
SET @@global.max_allowed_packet = DEFAULT;
|
||||
SELECT @@global.max_allowed_packet;
|
||||
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 20000;
|
||||
--Error ER_NO_DEFAULT
|
||||
SET @@session.max_allowed_packet = DEFAULT;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
|
||||
|
|
@ -62,9 +69,6 @@ SELECT @@session.max_allowed_packet;
|
|||
SET @@global.max_allowed_packet = DEFAULT;
|
||||
SELECT @@global.max_allowed_packet = 1048576;
|
||||
|
||||
SET @@session.max_allowed_packet = DEFAULT;
|
||||
SELECT @@session.max_allowed_packet = 1048576;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_070_03-------------------------#'
|
||||
############################################################################
|
||||
|
|
@ -86,14 +90,19 @@ SELECT @@global.max_allowed_packet;
|
|||
# Change the value of max_allowed_packet to a valid value for SESSION Scope #
|
||||
#############################################################################
|
||||
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 1024;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 1025;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 65535;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 1073741824;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 1073741823;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
|
||||
|
|
@ -118,14 +127,18 @@ SELECT @@global.max_allowed_packet;
|
|||
SET @@global.max_allowed_packet = test;
|
||||
SELECT @@global.max_allowed_packet;
|
||||
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 0;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 1023;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = -2;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
--Error ER_PARSE_ERROR
|
||||
SET @@session.max_allowed_packet = 65530.34.;
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 10737418241;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
|
||||
|
|
@ -180,6 +193,7 @@ SELECT @@max_allowed_packet = @@global.max_allowed_packet;
|
|||
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable #
|
||||
########################################################################################################
|
||||
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@max_allowed_packet = 100000;
|
||||
SELECT @@max_allowed_packet = @@local.max_allowed_packet;
|
||||
SELECT @@local.max_allowed_packet = @@session.max_allowed_packet;
|
||||
|
|
@ -190,6 +204,7 @@ SELECT @@local.max_allowed_packet = @@session.max_allowed_packet;
|
|||
# Check if max_allowed_packet can be accessed with and without @@ sign #
|
||||
#############################################################################
|
||||
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET max_allowed_packet = 1024;
|
||||
SELECT @@max_allowed_packet;
|
||||
--Error ER_UNKNOWN_TABLE
|
||||
|
|
@ -204,9 +219,9 @@ SELECT max_allowed_packet = @@session.max_allowed_packet;
|
|||
# Restore initial value #
|
||||
####################################
|
||||
|
||||
connection default;
|
||||
SET @@global.max_allowed_packet = @start_global_value;
|
||||
SELECT @@global.max_allowed_packet;
|
||||
SET @@session.max_allowed_packet = @start_session_value;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -43,26 +43,19 @@ name BLOB
|
|||
|
||||
--echo '#--------------------FN_DYNVARS_070_01-------------------------#'
|
||||
###############################################################################
|
||||
# Setting initial value of max_allowed_packet to 1024 at session level and
|
||||
# verifying its behavior after inserting data greater than 1024 bytes
|
||||
# Setting initial value of max_allowed_packet to 1024 at session level
|
||||
# should result in an error (session variable is readonly)
|
||||
###############################################################################
|
||||
|
||||
--echo ## Setting value of max_allowed packet and net_buffer_length to 1024 ##
|
||||
--error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.max_allowed_packet = 1024;
|
||||
SET @@session.net_buffer_length = 1024;
|
||||
SELECT @@session.max_allowed_packet;
|
||||
|
||||
--error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.net_buffer_length = 1024;
|
||||
SELECT @@session.net_buffer_length;
|
||||
|
||||
--echo ## Inserting and fetching data of length greater than 1024 ##
|
||||
INSERT into t1(name) values("aaassssssssddddddddffffffgggggggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk");
|
||||
|
||||
SELECT length("aaaaaasssssssssssdddddddfffffgggg, askdlfjalsdkjfalksdjflaksdjfalkjdflaksjdflakjdflajsflajflajdfalsjfdlajfladjslfajdflajdsflajsflakjsdfla;kjflsdjkf;aljfa;lkdsfjla;sjlkajffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllakjsdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa;;;;;;;;;;;;;;;;;;;;;;;;;;;dsklfjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjkljffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdkskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk") as len;
|
||||
|
||||
--echo ## Verifying record in table t1 ##
|
||||
SELECT * from t1;
|
||||
|
||||
--echo 'Bug#35381: Error is not coming on inserting and fetching data of length'
|
||||
--echo 'greater than max_allowed_packet size at session level';
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_070_02-------------------------#'
|
||||
###############################################################################
|
||||
|
|
|
|||
|
|
@ -71,6 +71,33 @@ drop table t_bug25347;
|
|||
drop database d_bug25347;
|
||||
use test;
|
||||
|
||||
#
|
||||
# Bug#39541 CHECK TABLE on information_schema myisam tables produces error
|
||||
#
|
||||
create view v1 as select * from information_schema.routines;
|
||||
check table v1, information_schema.routines;
|
||||
drop view v1;
|
||||
|
||||
|
||||
#
|
||||
# Bug#37527: mysqlcheck fails to report entire database
|
||||
# when frm file corruption
|
||||
#
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(a INT);
|
||||
# backup then null t1.frm
|
||||
--copy_file $MYSQLTEST_VARDIR/master-data/test/t1.frm $MYSQLTEST_VARDIR/master-data/test/t1.frm.bak
|
||||
--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.frm
|
||||
--write_file $MYSQLTEST_VARDIR/master-data/test/t1.frm
|
||||
EOF
|
||||
--exec $MYSQL_CHECK test
|
||||
# restore t1.frm
|
||||
--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.frm
|
||||
--copy_file $MYSQLTEST_VARDIR/master-data/test/t1.frm.bak $MYSQLTEST_VARDIR/master-data/test/t1.frm
|
||||
--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.frm.bak
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -38,9 +38,13 @@
|
|||
SET @start_global_value = @@global.net_buffer_length;
|
||||
# Due to differences in results of linux and windows
|
||||
#SELECT @start_global_value;
|
||||
SET @start_session_value = @@session.net_buffer_length;
|
||||
#SELECT @start_session_value;
|
||||
|
||||
# give a known value to @@session.net_buffer_length by assigning to
|
||||
# @@global and setting up a new connection (for deterministic result
|
||||
# file diffing)
|
||||
SET @@global.net_buffer_length = DEFAULT;
|
||||
connect(con1,localhost,root,,);
|
||||
connection con1;
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_109_01-------------------------#'
|
||||
#################################################################
|
||||
|
|
@ -51,7 +55,9 @@ SET @@global.net_buffer_length = 10000;
|
|||
SET @@global.net_buffer_length = DEFAULT;
|
||||
SELECT @@global.net_buffer_length;
|
||||
|
||||
--Error ER_VARIABLE_IS_READONLY
|
||||
SET @@session.net_buffer_length = 20000;
|
||||
--Error ER_NO_DEFAULT
|
||||
SET @@session.net_buffer_length = DEFAULT;
|
||||
SELECT @@session.net_buffer_length;
|
||||
|
||||
|
|
@ -64,9 +70,6 @@ SELECT @@session.net_buffer_length;
|
|||
SET @@global.net_buffer_length = DEFAULT;
|
||||
SELECT @@global.net_buffer_length = 16384;
|
||||
|
||||
SET @@session.net_buffer_length = DEFAULT;
|
||||
SELECT @@session.net_buffer_length = 16384;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_109_03-------------------------#'
|
||||
###########################################################################
|
||||
|
|
@ -91,17 +94,7 @@ SELECT @@global.net_buffer_length;
|
|||
# Change the value of net_buffer_length to a valid value for SESSION Scope #
|
||||
############################################################################
|
||||
|
||||
SET @@session.net_buffer_length = 1024;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1025;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1048576;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1048575;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 65535;
|
||||
SELECT @@session.net_buffer_length;
|
||||
--echo 'Bug# 34877: Invalid Values are coming in variable on assigning valid values';
|
||||
# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
|
||||
|
||||
|
||||
--echo '#------------------FN_DYNVARS_109_05-----------------------#'
|
||||
|
|
@ -126,18 +119,8 @@ SELECT @@global.net_buffer_length;
|
|||
SET @@global.net_buffer_length = test;
|
||||
SELECT @@global.net_buffer_length;
|
||||
|
||||
SET @@session.net_buffer_length = 0;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = -2;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1048577;
|
||||
SELECT @@session.net_buffer_length;
|
||||
SET @@session.net_buffer_length = 1048576002;
|
||||
SELECT @@session.net_buffer_length;
|
||||
--Error ER_PARSE_ERROR
|
||||
SET @@session.net_buffer_length = 65530.34.;
|
||||
SET @@session.net_buffer_length = 65550;
|
||||
SELECT @@session.net_buffer_length;
|
||||
# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
|
||||
|
||||
--echo 'Bug # 34837: Errors are not coming on assigning invalid values to variable';
|
||||
|
||||
--Error ER_WRONG_TYPE_FOR_VAR
|
||||
|
|
@ -190,9 +173,7 @@ SELECT @@net_buffer_length = @@global.net_buffer_length;
|
|||
# Check if accessing variable with SESSION,LOCAL and without SCOPE points to same session variable #
|
||||
########################################################################################################
|
||||
|
||||
SET @@net_buffer_length = 100000;
|
||||
SELECT @@net_buffer_length = @@local.net_buffer_length;
|
||||
SELECT @@local.net_buffer_length = @@session.net_buffer_length;
|
||||
# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
|
||||
|
||||
|
||||
--echo '#---------------------FN_DYNVARS_109_11----------------------#'
|
||||
|
|
@ -200,7 +181,7 @@ SELECT @@local.net_buffer_length = @@session.net_buffer_length;
|
|||
# Check if net_buffer_length can be accessed with and without @@ sign #
|
||||
############################################################################
|
||||
|
||||
SET net_buffer_length = 1024;
|
||||
# Bug#22891: SESSION net_buffer_length is now read-only; assignments skipped
|
||||
SELECT @@net_buffer_length;
|
||||
--Error ER_UNKNOWN_TABLE
|
||||
SELECT local.net_buffer_length;
|
||||
|
|
@ -214,11 +195,11 @@ SELECT net_buffer_length = @@session.net_buffer_length;
|
|||
# Restore initial value #
|
||||
####################################
|
||||
|
||||
connection default;
|
||||
|
||||
SET @@global.net_buffer_length = @start_global_value;
|
||||
# Due to differences in results of linux and windows
|
||||
#SELECT @@global.net_buffer_length;
|
||||
SET @@session.net_buffer_length = @start_session_value;
|
||||
#SELECT @@session.net_buffer_length;
|
||||
|
||||
|
||||
######################################################
|
||||
|
|
|
|||
|
|
@ -145,12 +145,12 @@ DELIMITER ;$$
|
|||
let $wait_condition=select count(*) = 0 from information_schema.events where event_name='event_status';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
# The actual value doesn't matter and can vary based on test ordering and on ssl library.
|
||||
--replace_column 2 #
|
||||
SELECT variable_name, variable_value FROM thread_status;
|
||||
|
||||
DROP TABLE thread_status;
|
||||
SET GLOBAL event_scheduler=0;
|
||||
--echo End of 5.1 tests
|
||||
|
||||
|
||||
#
|
||||
# Test to connect using a list of ciphers
|
||||
|
|
@ -190,3 +190,42 @@ INSERT INTO t1 VALUES (1), (2);
|
|||
--exec $MYSQL_DUMP --skip-create --skip-comments --ssl --ssl-cert=$MYSQL_TEST_DIR/std_data/client-cert.pem test 2>&1
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug#39172: Asking for DH+non-RSA key with server set to use other key caused
|
||||
# YaSSL to crash the server.
|
||||
#
|
||||
|
||||
# Common ciphers to openssl and yassl
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=DHE-RSA-AES256-SHA
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=EDH-RSA-DES-CBC3-SHA
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=EDH-RSA-DES-CBC-SHA
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl_cipher';" --ssl-cipher=RC4-SHA
|
||||
--disable_output
|
||||
|
||||
# Below here caused crashes. ################
|
||||
--error 1,0
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=NOT----EXIST
|
||||
# These probably exist but the server's keys can't be used to accept these kinds of connections.
|
||||
--error 1,0
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-AES128-RMD
|
||||
--error 1,0
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-AES128-SHA
|
||||
--error 1,0
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-AES256-RMD
|
||||
--error 1,0
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-AES256-SHA
|
||||
--error 1,0
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=DHE-DSS-DES-CBC3-RMD
|
||||
--error 1,0
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=EDH-DSS-DES-CBC3-SHA
|
||||
--error 1,0
|
||||
--exec $MYSQL --host=localhost -e "SHOW STATUS LIKE 'Ssl-cipher';" --ssl-cipher=EDH-DSS-DES-CBC-SHA
|
||||
# End of crashers. ##########################
|
||||
|
||||
# If this gives a result, then the bug is fixed.
|
||||
--enable_output
|
||||
select 'is still running; no cipher request crashed the server' as result from dual;
|
||||
|
||||
##
|
||||
--echo End of 5.1 tests
|
||||
|
|
|
|||
|
|
@ -8,30 +8,30 @@
|
|||
# Check protocol handling
|
||||
#
|
||||
|
||||
connect (con1,localhost,root,,);
|
||||
|
||||
connection con1;
|
||||
# setting values below minimum threshold of 1024 will cause truncating
|
||||
set global max_allowed_packet=100;
|
||||
set max_allowed_packet=100;
|
||||
set global net_buffer_length=100;
|
||||
set net_buffer_length=100;
|
||||
# Have to be > 1024 as min value of net_buffer_length is 1024
|
||||
|
||||
# is not yet in effect
|
||||
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
|
||||
# Should return NULL as 2000 is bigger than max_allowed_packet
|
||||
select repeat('a',2000);
|
||||
|
||||
#
|
||||
# Connection 2 should get error for too big packets
|
||||
# Connection 1 should get error for too big packets
|
||||
#
|
||||
connect (con2,localhost,root,,);
|
||||
connection con2;
|
||||
connect (con1,localhost,root,,);
|
||||
connection con1;
|
||||
select @@net_buffer_length, @@max_allowed_packet;
|
||||
--error 1153
|
||||
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
|
||||
|
||||
#
|
||||
# Reset to default values and reconnect
|
||||
#
|
||||
set global max_allowed_packet=default;
|
||||
set max_allowed_packet=default;
|
||||
set global net_buffer_length=default;
|
||||
set net_buffer_length=default;
|
||||
connect (con2,localhost,root,,);
|
||||
connection con2;
|
||||
SELECT length("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") as len;
|
||||
select length(repeat('a',2000));
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,46 @@
|
|||
--source include/have_partition.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
#
|
||||
# Bug#40595: Non-matching rows not released with READ-COMMITTED on tables
|
||||
# with partitions
|
||||
CREATE TABLE t1 (id INT PRIMARY KEY, data INT) ENGINE = InnoDB
|
||||
PARTITION BY RANGE(id) (
|
||||
PARTITION p0 VALUES LESS THAN (5),
|
||||
PARTITION p1 VALUES LESS THAN (10),
|
||||
PARTITION p2 VALUES LESS THAN MAXVALUE
|
||||
);
|
||||
|
||||
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4), (5,5), (6,6), (7,7), (8,8),
|
||||
(9,9), (10,10), (11,11);
|
||||
|
||||
SET @old_tx_isolation := @@session.tx_isolation;
|
||||
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
|
||||
SET autocommit = 0;
|
||||
|
||||
UPDATE t1 SET DATA = data*2 WHERE id = 3;
|
||||
|
||||
# grouping/referencing in replace_regex is very slow on long strings,
|
||||
# removing all before/after the interesting row before grouping/referencing
|
||||
--replace_regex /.*---TRANSACTION [0-9]+ [0-9]+, .*, OS thread id [0-9]+// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/
|
||||
SHOW ENGINE InnoDB STATUS;
|
||||
|
||||
UPDATE t1 SET data = data*2 WHERE data = 2;
|
||||
|
||||
# grouping/referencing in replace_regex is very slow on long strings,
|
||||
# removing all before/after the interesting row before grouping/referencing
|
||||
--replace_regex /.*---TRANSACTION [0-9]+ [0-9]+, .*, OS thread id [0-9]+// /MySQL thread id [0-9]+, query id [0-9]+ .*// /.*([0-9]+ lock struct\(s\)), heap size [0-9]+, ([0-9]+ row lock\(s\)).*/\1 \2/
|
||||
SHOW ENGINE InnoDB STATUS;
|
||||
|
||||
SET @@session.tx_isolation = @old_tx_isolation;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug37721: ORDER BY when WHERE contains non-partitioned index column
|
||||
# wrong order since it did not use pk as second compare
|
||||
|
|
|
|||
|
|
@ -1235,6 +1235,16 @@ DROP TABLE t1;
|
|||
select (1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 *
|
||||
1.01500000 * 1.01500000 * 0.99500000);
|
||||
|
||||
#
|
||||
# Bug #31616 div_precision_increment description looks wrong
|
||||
#
|
||||
|
||||
create table t1 as select 5.05 / 0.014;
|
||||
show warnings;
|
||||
show create table t1;
|
||||
select * from t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -861,8 +861,10 @@ drop tables t1,t2,t3;
|
|||
# exceeds mediumtext maximum length
|
||||
#
|
||||
|
||||
SELECT @tmp_max:= @@max_allowed_packet;
|
||||
SET max_allowed_packet=25000000;
|
||||
SELECT @tmp_max:= @@global.max_allowed_packet;
|
||||
SET @@global.max_allowed_packet=25000000;
|
||||
# switching connection to allow the new max_allowed_packet take effect
|
||||
--connect (newconn, localhost, root,,)
|
||||
CREATE TABLE t1 (a mediumtext);
|
||||
CREATE TABLE t2 (b varchar(20));
|
||||
INSERT INTO t1 VALUES ('a');
|
||||
|
|
@ -884,7 +886,9 @@ INSERT INTO t1 VALUES ('a');
|
|||
CREATE TABLE t3 SELECT REPEAT(a,2) AS a FROM t1 UNION SELECT b FROM t2;
|
||||
SHOW CREATE TABLE t3;
|
||||
DROP TABLES t1,t2,t3;
|
||||
SET max_allowed_packet:= @tmp_max;
|
||||
--connection default
|
||||
SET @@global.max_allowed_packet:= @tmp_max;
|
||||
--disconnect newconn
|
||||
|
||||
#
|
||||
# Bug #10032 Bug in parsing UNION with ORDER BY when one node does not use FROM
|
||||
|
|
|
|||
|
|
@ -146,25 +146,23 @@ show global variables like 'myisam_max_sort_file_size';
|
|||
--replace_result 9223372036853727232 FILE_SIZE 2146435072 FILE_SIZE
|
||||
select * from information_schema.global_variables where variable_name like 'myisam_max_sort_file_size';
|
||||
|
||||
# bug#22891: modified to take read-only SESSION net_buffer_length into account
|
||||
set global net_retry_count=10, session net_retry_count=10;
|
||||
set global net_buffer_length=1024, net_write_timeout=200, net_read_timeout=300;
|
||||
set session net_buffer_length=2048, net_write_timeout=500, net_read_timeout=600;
|
||||
show global variables like 'net_%';
|
||||
select * from information_schema.global_variables where variable_name like 'net_%' order by 1;
|
||||
show session variables like 'net_%';
|
||||
select * from information_schema.session_variables where variable_name like 'net_%' order by 1;
|
||||
set session net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
|
||||
set global net_buffer_length=8000, global net_read_timeout=900, net_write_timeout=1000;
|
||||
show global variables like 'net_%';
|
||||
select * from information_schema.global_variables where variable_name like 'net_%' order by 1;
|
||||
show session variables like 'net_%';
|
||||
select * from information_schema.session_variables where variable_name like 'net_%' order by 1;
|
||||
set net_buffer_length=1;
|
||||
show variables like 'net_buffer_length';
|
||||
select * from information_schema.session_variables where variable_name like 'net_buffer_length';
|
||||
set global net_buffer_length=1;
|
||||
show global variables like 'net_buffer_length';
|
||||
select * from information_schema.global_variables where variable_name like 'net_buffer_length';
|
||||
#warning 1292
|
||||
set net_buffer_length=2000000000;
|
||||
show variables like 'net_buffer_length';
|
||||
select * from information_schema.session_variables where variable_name like 'net_buffer_length';
|
||||
set global net_buffer_length=2000000000;
|
||||
show global variables like 'net_buffer_length';
|
||||
select * from information_schema.global_variables where variable_name like 'net_buffer_length';
|
||||
|
||||
set character set cp1251_koi8;
|
||||
show variables like "character_set_client";
|
||||
|
|
@ -274,7 +272,7 @@ select @@long_query_time;
|
|||
set long_query_time=100.000001;
|
||||
select @@long_query_time;
|
||||
set low_priority_updates=1;
|
||||
set max_allowed_packet=100;
|
||||
set global max_allowed_packet=100;
|
||||
set global max_binlog_cache_size=100;
|
||||
set global max_binlog_size=100;
|
||||
set global max_connect_errors=100;
|
||||
|
|
@ -288,7 +286,7 @@ set global max_user_connections=100;
|
|||
select @@max_user_connections;
|
||||
set global max_write_lock_count=100;
|
||||
set myisam_sort_buffer_size=100;
|
||||
set net_buffer_length=100;
|
||||
set global net_buffer_length=100;
|
||||
set net_read_timeout=100;
|
||||
set net_write_timeout=100;
|
||||
set global query_cache_limit=100;
|
||||
|
|
|
|||
|
|
@ -11,93 +11,87 @@
|
|||
# Creation Date: 2008-03-07 #
|
||||
# Author: Salman Rawala #
|
||||
# #
|
||||
# Modified: HHunger 2008-08-27 Simplified the test and replaced the sleeps. #
|
||||
# #
|
||||
# Description: Test Cases of Dynamic System Variable wait_timeout #
|
||||
# that checks the functionality of this variable #
|
||||
# #
|
||||
# Reference: http://dev.mysql.com/doc/refman/5.1/en/ #
|
||||
# server-system-variables.html#option_mysqld_wait_timeouts #
|
||||
# Reference: #
|
||||
# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html #
|
||||
# #
|
||||
###############################################################################
|
||||
|
||||
--source include/not_embedded.inc
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
##############################
|
||||
# Creating two new tables #
|
||||
##############################
|
||||
|
||||
--echo ## Creating new table t1 ##
|
||||
CREATE TABLE t1
|
||||
(
|
||||
id INT NOT NULL auto_increment,
|
||||
PRIMARY KEY (id),
|
||||
name VARCHAR(30)
|
||||
);
|
||||
SET @start_value= @@global.wait_timeout;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_186_01-------------------------#'
|
||||
#######################################################################
|
||||
# Setting initial value of interactive_timeout greater than sleep and
|
||||
# verifying its behavior on session scope
|
||||
# 1. test of scope session
|
||||
#######################################################################
|
||||
|
||||
--echo ## Creating new connection test_con1 ##
|
||||
SET @start_time= UNIX_TIMESTAMP();
|
||||
--echo connect (test_con1, localhost, root,,);
|
||||
connect (test_con1, localhost, root,,);
|
||||
connection test_con1;
|
||||
|
||||
--echo ## Setting value of variable to 5 ##
|
||||
SET @@session.wait_timeout = 5;
|
||||
# If not explicitly changed, @@session.wait_timeout equals @@global.wait_timeout.
|
||||
SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';
|
||||
|
||||
--echo ## Inserting record in table t1 ##
|
||||
INSERT into t1(name) values('Record_1');
|
||||
# Find a small value <> @@global.wait_timeout.
|
||||
let $session_value =
|
||||
`SELECT IF(@@global.wait_timeout <> 2 OR @@global.wait_timeout IS NULL, 2, 3)`;
|
||||
--replace_result $session_value <session_value>
|
||||
eval SET @@session.wait_timeout = $session_value;
|
||||
|
||||
--echo ## Using sleep to check timeout ##
|
||||
sleep 4;
|
||||
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_186_02-------------------------#'
|
||||
#######################################################################
|
||||
# Setting initial value of interactive_timeout greater than sleep and
|
||||
# verifying its behavior on global scope
|
||||
#######################################################################
|
||||
|
||||
--echo ## Setting value of variable ##
|
||||
SET @@global.wait_timeout = 5;
|
||||
|
||||
--echo ## Creating new connection test_con2 ##
|
||||
--echo connect (test_con2, localhost, root,,);
|
||||
connect (test_con2, localhost, root,,);
|
||||
connection test_con2;
|
||||
|
||||
INSERT into t1(name) values('Record_2');
|
||||
|
||||
--echo ## Using sleep to check timeout ##
|
||||
sleep 4;
|
||||
|
||||
--replace_result $session_value <session_value>
|
||||
eval SET @@session.wait_timeout = $session_value - 1;
|
||||
|
||||
--echo connection default;
|
||||
connection default;
|
||||
|
||||
--echo wait until connections ready
|
||||
let $wait_condition= SELECT COUNT(*) = 1 FROM information_schema.processlist;
|
||||
--source include/wait_condition.inc
|
||||
SELECT info FROM information_schema.processlist;
|
||||
|
||||
--echo '#--------------------FN_DYNVARS_186_03-------------------------#'
|
||||
#######################################################################
|
||||
# Setting initial value of interactive_timeout less than sleep and
|
||||
# verifying its behavior on global scope
|
||||
# 2. test of scope global
|
||||
#######################################################################
|
||||
|
||||
--echo ## Setting value of variable to 1 ##
|
||||
SET @@global.wait_timeout = 1;
|
||||
# Find a small value <> @@global.wait_timeout.
|
||||
let $global_value = $session_value + 1;
|
||||
--replace_result $global_value <global_value>
|
||||
eval SET @@global.wait_timeout= $global_value;
|
||||
|
||||
--echo ## Creating new connection ##
|
||||
# Changing the @@global.wait_timeout has no influence on the
|
||||
# @@session.wait_timeout of already established sessions.
|
||||
SELECT @@session.wait_timeout = @start_value AS 'Expect 1';
|
||||
|
||||
--echo connect (test_con3, localhost, root,,);
|
||||
connect (test_con3, localhost, root,,);
|
||||
connection test_con3;
|
||||
|
||||
INSERT into t1(name) values('Record_3');
|
||||
# If not explicitly changed, @@session.wait_timeout equals @@global.wait_timeout.
|
||||
SELECT @@session.wait_timeout = @@global.wait_timeout AS 'Expect 1';
|
||||
|
||||
--echo ## Using sleep to check timeout ##
|
||||
sleep 5;
|
||||
--echo connection default;
|
||||
connection default;
|
||||
# We can be sure that the connections test_con1 and test_con2 must be
|
||||
# established because both have already executed a SET @@session.wait_timeout.
|
||||
# This means they are or at least were visible within the processlist.
|
||||
# Therefore we can now simply wait till both disappear from the processlist.
|
||||
let $wait_condition= SELECT COUNT(*) = 1 FROM information_schema.processlist;
|
||||
--source include/wait_condition.inc
|
||||
SELECT info FROM information_schema.processlist;
|
||||
|
||||
--echo ## We cannot test it further because the server stops due to wait_timeout ##
|
||||
--Error 2006
|
||||
SELECT * from t1;
|
||||
--replace_result $global_value <global_value> $session_value <session_value>;
|
||||
eval SELECT UNIX_TIMESTAMP() - @start_time >= $global_value + $session_value;
|
||||
SET @@global.wait_timeout= @start_value;
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,8 @@ char *my_tmpdir(MY_TMPDIR *tmpdir)
|
|||
void free_tmpdir(MY_TMPDIR *tmpdir)
|
||||
{
|
||||
uint i;
|
||||
if (!tmpdir->full_list.elements)
|
||||
return;
|
||||
for (i=0; i<=tmpdir->max; i++)
|
||||
my_free(tmpdir->list[i], MYF(0));
|
||||
delete_dynamic(&tmpdir->full_list);
|
||||
|
|
|
|||
|
|
@ -397,9 +397,10 @@ invalid value '%s'",
|
|||
my_progname, optp->name, optend);
|
||||
continue;
|
||||
}
|
||||
get_one_option(optp->id, optp,
|
||||
*((my_bool*) value) ?
|
||||
(char*) "1" : disabled_my_option);
|
||||
if (get_one_option(optp->id, optp,
|
||||
*((my_bool*) value) ?
|
||||
(char*) "1" : disabled_my_option))
|
||||
return EXIT_ARGUMENT_INVALID;
|
||||
continue;
|
||||
}
|
||||
argument= optend;
|
||||
|
|
@ -457,7 +458,8 @@ invalid value '%s'",
|
|||
optp->arg_type == NO_ARG)
|
||||
{
|
||||
*((my_bool*) optp->value)= (my_bool) 1;
|
||||
get_one_option(optp->id, optp, argument);
|
||||
if (get_one_option(optp->id, optp, argument))
|
||||
return EXIT_UNSPECIFIED_ERROR;
|
||||
continue;
|
||||
}
|
||||
else if (optp->arg_type == REQUIRED_ARG ||
|
||||
|
|
@ -476,7 +478,8 @@ invalid value '%s'",
|
|||
{
|
||||
if (optp->var_type == GET_BOOL)
|
||||
*((my_bool*) optp->value)= (my_bool) 1;
|
||||
get_one_option(optp->id, optp, argument);
|
||||
if (get_one_option(optp->id, optp, argument))
|
||||
return EXIT_UNSPECIFIED_ERROR;
|
||||
continue;
|
||||
}
|
||||
/* Check if there are more arguments after this one */
|
||||
|
|
@ -501,7 +504,8 @@ invalid value '%s'",
|
|||
my_progname, argument, optp->name);
|
||||
return error;
|
||||
}
|
||||
get_one_option(optp->id, optp, argument);
|
||||
if (get_one_option(optp->id, optp, argument))
|
||||
return EXIT_UNSPECIFIED_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -524,7 +528,8 @@ invalid value '%s'",
|
|||
my_progname, argument, optp->name);
|
||||
return error;
|
||||
}
|
||||
get_one_option(optp->id, optp, argument);
|
||||
if (get_one_option(optp->id, optp, argument))
|
||||
return EXIT_UNSPECIFIED_ERROR;
|
||||
|
||||
(*argc)--; /* option handled (short or long), decrease argument count */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -162,6 +162,7 @@ SUFFIXES = .sh
|
|||
-e 's!@''CFLAGS''@!@CFLAGS@!'\
|
||||
-e 's!@''CXXFLAGS''@!@CXXFLAGS@!'\
|
||||
-e 's!@''LDFLAGS''@!@LDFLAGS@!'\
|
||||
-e 's!@''LIBDL''@!@LIBDL@!'\
|
||||
-e 's!@''CLIENT_LIBS''@!@CLIENT_LIBS@!' \
|
||||
-e 's!@''ZLIB_LIBS''@!@ZLIB_LIBS@!' \
|
||||
-e 's!@''LIBS''@!@LIBS@!' \
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ $flags->{libs} =
|
|||
$flags->{libs_r} =
|
||||
[@ldflags,@lib_r_opts,'@ZLIB_DEPS@','@LIBS@','@openssl_libs@'];
|
||||
$flags->{embedded_libs} =
|
||||
[@ldflags,@lib_e_opts,'@ZLIB_DEPS@','@LIBS@','@WRAPLIBS@','@innodb_system_libs@','@openssl_libs@'];
|
||||
[@ldflags,@lib_e_opts,'@LIBDL@','@ZLIB_DEPS@','@LIBS@','@WRAPLIBS@','@innodb_system_libs@','@openssl_libs@'];
|
||||
|
||||
$flags->{include} = ["-I$pkgincludedir"];
|
||||
$flags->{cflags} = [@{$flags->{include}},split(" ",'@CFLAGS@')];
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ fi
|
|||
libs=" $ldflags -L$pkglibdir -lmysqlclient @ZLIB_DEPS@ @NON_THREADED_LIBS@"
|
||||
libs="$libs @openssl_libs@ @STATIC_NSS_FLAGS@ "
|
||||
libs_r=" $ldflags -L$pkglibdir -lmysqlclient_r @ZLIB_DEPS@ @LIBS@ @openssl_libs@ "
|
||||
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
|
||||
embedded_libs=" $ldflags -L$pkglibdir -lmysqld @LIBDL@ @ZLIB_DEPS@ @LIBS@ @WRAPLIBS@ @innodb_system_libs@ @openssl_libs@ "
|
||||
|
||||
if [ -r "$pkglibdir/libmygcc.a" ]; then
|
||||
# When linking against the static library with a different version of GCC
|
||||
|
|
|
|||
|
|
@ -2813,8 +2813,42 @@ uint ha_partition::lock_count() const
|
|||
|
||||
void ha_partition::unlock_row()
|
||||
{
|
||||
DBUG_ENTER("ha_partition::unlock_row");
|
||||
m_file[m_last_part]->unlock_row();
|
||||
return;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Use semi consistent read if possible
|
||||
|
||||
SYNOPSIS
|
||||
try_semi_consistent_read()
|
||||
yes Turn on semi consistent read
|
||||
|
||||
RETURN VALUE
|
||||
NONE
|
||||
|
||||
DESCRIPTION
|
||||
See handler.h:
|
||||
Tell the engine whether it should avoid unnecessary lock waits.
|
||||
If yes, in an UPDATE or DELETE, if the row under the cursor was locked
|
||||
by another transaction, the engine may try an optimistic read of
|
||||
the last committed row value under the cursor.
|
||||
Note: prune_partitions are already called before this call, so using
|
||||
pruning is OK.
|
||||
*/
|
||||
void ha_partition::try_semi_consistent_read(bool yes)
|
||||
{
|
||||
handler **file;
|
||||
DBUG_ENTER("ha_partition::try_semi_consistent_read");
|
||||
|
||||
for (file= m_file; *file; file++)
|
||||
{
|
||||
if (bitmap_is_set(&(m_part_info->used_partitions), (file - m_file)))
|
||||
(*file)->try_semi_consistent_read(yes);
|
||||
}
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -325,6 +325,10 @@ public:
|
|||
Call to unlock rows not to be updated in transaction
|
||||
*/
|
||||
virtual void unlock_row();
|
||||
/*
|
||||
Call to hint about semi consistent read
|
||||
*/
|
||||
virtual void try_semi_consistent_read(bool);
|
||||
|
||||
/*
|
||||
-------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -3627,7 +3627,7 @@ int ha_init_key_cache(const char *name, KEY_CACHE *key_cache)
|
|||
if (!key_cache->key_cache_inited)
|
||||
{
|
||||
pthread_mutex_lock(&LOCK_global_system_variables);
|
||||
ulong tmp_buff_size= (ulong) key_cache->param_buff_size;
|
||||
size_t tmp_buff_size= (size_t) key_cache->param_buff_size;
|
||||
uint tmp_block_size= (uint) key_cache->param_block_size;
|
||||
uint division_limit= key_cache->param_division_limit;
|
||||
uint age_threshold= key_cache->param_age_threshold;
|
||||
|
|
@ -3651,7 +3651,7 @@ int ha_resize_key_cache(KEY_CACHE *key_cache)
|
|||
if (key_cache->key_cache_inited)
|
||||
{
|
||||
pthread_mutex_lock(&LOCK_global_system_variables);
|
||||
long tmp_buff_size= (long) key_cache->param_buff_size;
|
||||
size_t tmp_buff_size= (size_t) key_cache->param_buff_size;
|
||||
long tmp_block_size= (long) key_cache->param_block_size;
|
||||
uint division_limit= key_cache->param_division_limit;
|
||||
uint age_threshold= key_cache->param_age_threshold;
|
||||
|
|
|
|||
|
|
@ -1301,8 +1301,10 @@ my_decimal *Item_func_div::decimal_op(my_decimal *decimal_value)
|
|||
|
||||
void Item_func_div::result_precision()
|
||||
{
|
||||
uint arg_prec= args[0]->decimal_precision() + prec_increment;
|
||||
uint precision=min(arg_prec, DECIMAL_MAX_PRECISION);
|
||||
uint precision=min(args[0]->decimal_precision() +
|
||||
args[1]->decimals + prec_increment,
|
||||
DECIMAL_MAX_PRECISION);
|
||||
|
||||
/* Integer operations keep unsigned_flag if one of arguments is unsigned */
|
||||
if (result_type() == INT_RESULT)
|
||||
unsigned_flag= args[0]->unsigned_flag | args[1]->unsigned_flag;
|
||||
|
|
@ -3808,11 +3810,14 @@ static user_var_entry *get_variable(HASH *hash, LEX_STRING &name,
|
|||
|
||||
bool Item_func_set_user_var::set_entry(THD *thd, bool create_if_not_exists)
|
||||
{
|
||||
if (thd == entry_thd && entry)
|
||||
if (entry && thd->thread_id == entry_thread_id)
|
||||
goto end; // update entry->update_query_id for PS
|
||||
entry_thd= thd;
|
||||
if (!(entry= get_variable(&thd->user_vars, name, create_if_not_exists)))
|
||||
{
|
||||
entry_thread_id= 0;
|
||||
return TRUE;
|
||||
}
|
||||
entry_thread_id= thd->thread_id;
|
||||
/*
|
||||
Remember the last query which updated it, this way a query can later know
|
||||
if this variable is a constant item in the query (it is if update_query_id
|
||||
|
|
@ -5381,7 +5386,9 @@ bool Item_func_match::fix_index()
|
|||
for (keynr=0 ; keynr < table->s->keys ; keynr++)
|
||||
{
|
||||
if ((table->key_info[keynr].flags & HA_FULLTEXT) &&
|
||||
(table->s->keys_in_use.is_set(keynr)))
|
||||
(flags & FT_BOOL ? table->keys_in_use_for_query.is_set(keynr) :
|
||||
table->s->keys_in_use.is_set(keynr)))
|
||||
|
||||
{
|
||||
ft_to_key[fts]=keynr;
|
||||
ft_cnt[fts]=0;
|
||||
|
|
|
|||
|
|
@ -1295,16 +1295,16 @@ class Item_func_set_user_var :public Item_func
|
|||
enum Item_result cached_result_type;
|
||||
user_var_entry *entry;
|
||||
/*
|
||||
The entry_thd variable is used:
|
||||
The entry_thread_id variable is used:
|
||||
1) to skip unnecessary updates of the entry field (see above);
|
||||
2) to reset the entry field that was initialized in the other thread
|
||||
(for example, an item tree of a trigger that updates user variables
|
||||
may be shared between several connections, and the entry_thd field
|
||||
may be shared between several connections, and the entry_thread_id field
|
||||
prevents updates of one connection user variables from a concurrent
|
||||
connection calling the same trigger that initially updated some
|
||||
user variable it the first connection context).
|
||||
*/
|
||||
THD *entry_thd;
|
||||
my_thread_id entry_thread_id;
|
||||
char buffer[MAX_FIELD_WIDTH];
|
||||
String value;
|
||||
my_decimal decimal_buff;
|
||||
|
|
@ -1321,7 +1321,7 @@ public:
|
|||
LEX_STRING name; // keep it public
|
||||
Item_func_set_user_var(LEX_STRING a,Item *b)
|
||||
:Item_func(b), cached_result_type(INT_RESULT),
|
||||
entry(NULL), entry_thd(NULL), name(a)
|
||||
entry(NULL), entry_thread_id(0), name(a)
|
||||
{}
|
||||
enum Functype functype() const { return SUSERVAR_FUNC; }
|
||||
double val_real();
|
||||
|
|
|
|||
|
|
@ -2504,6 +2504,8 @@ void Item_char_typecast::fix_length_and_dec()
|
|||
and thus avoid unnecessary character set conversion.
|
||||
- If the argument is not a number, then from_cs is set to
|
||||
the argument's charset.
|
||||
|
||||
Note (TODO): we could use repertoire technique here.
|
||||
*/
|
||||
from_cs= (args[0]->result_type() == INT_RESULT ||
|
||||
args[0]->result_type() == DECIMAL_RESULT ||
|
||||
|
|
@ -2511,12 +2513,13 @@ void Item_char_typecast::fix_length_and_dec()
|
|||
(cast_cs->mbminlen == 1 ? cast_cs : &my_charset_latin1) :
|
||||
args[0]->collation.collation;
|
||||
charset_conversion= (cast_cs->mbmaxlen > 1) ||
|
||||
!my_charset_same(from_cs, cast_cs) &&
|
||||
from_cs != &my_charset_bin &&
|
||||
cast_cs != &my_charset_bin;
|
||||
(!my_charset_same(from_cs, cast_cs) &&
|
||||
from_cs != &my_charset_bin &&
|
||||
cast_cs != &my_charset_bin);
|
||||
collation.set(cast_cs, DERIVATION_IMPLICIT);
|
||||
char_length= (cast_length >= 0) ? cast_length :
|
||||
args[0]->max_length/from_cs->mbmaxlen;
|
||||
char_length= (cast_length >= 0) ?
|
||||
cast_length :
|
||||
args[0]->max_length / args[0]->collation.collation->mbmaxlen;
|
||||
max_length= char_length * cast_cs->mbmaxlen;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -733,7 +733,7 @@ uint connection_count= 0;
|
|||
/* Function declarations */
|
||||
|
||||
pthread_handler_t signal_hand(void *arg);
|
||||
static void mysql_init_variables(void);
|
||||
static int mysql_init_variables(void);
|
||||
static void get_options(int *argc,char **argv);
|
||||
extern "C" my_bool mysqld_get_one_option(int, const struct my_option *, char *);
|
||||
static void set_server_version(void);
|
||||
|
|
@ -3141,12 +3141,12 @@ static int init_common_variables(const char *conf_file_name, int argc,
|
|||
if (!rpl_filter || !binlog_filter)
|
||||
{
|
||||
sql_perror("Could not allocate replication and binlog filters");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (init_thread_environment())
|
||||
if (init_thread_environment() ||
|
||||
mysql_init_variables())
|
||||
return 1;
|
||||
mysql_init_variables();
|
||||
|
||||
#ifdef HAVE_TZNAME
|
||||
{
|
||||
|
|
@ -3745,7 +3745,10 @@ version 5.0 and above. It is replaced by the binary log.");
|
|||
{
|
||||
/* as opt_bin_log==0, no need to free opt_bin_logname */
|
||||
if (!(opt_bin_logname= my_strdup(opt_update_logname, MYF(MY_WME))))
|
||||
exit(EXIT_OUT_OF_MEMORY);
|
||||
{
|
||||
sql_print_error("Out of memory");
|
||||
return EXIT_OUT_OF_MEMORY;
|
||||
}
|
||||
sql_print_error("The update log is no longer supported by MySQL in \
|
||||
version 5.0 and above. It is replaced by the binary log. Now starting MySQL \
|
||||
with --log-bin='%s' instead.",opt_bin_logname);
|
||||
|
|
@ -7351,6 +7354,7 @@ SHOW_VAR status_vars[]= {
|
|||
{NullS, NullS, SHOW_LONG}
|
||||
};
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
static void print_version(void)
|
||||
{
|
||||
set_server_version();
|
||||
|
|
@ -7362,7 +7366,6 @@ static void print_version(void)
|
|||
server_version,SYSTEM_TYPE,MACHINE_TYPE, MYSQL_COMPILATION_COMMENT);
|
||||
}
|
||||
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
static void usage(void)
|
||||
{
|
||||
if (!(default_charset_info= get_charset_by_csname(default_character_set_name,
|
||||
|
|
@ -7427,7 +7430,7 @@ To see what values a running MySQL server is using, type\n\
|
|||
as these are initialized by my_getopt.
|
||||
*/
|
||||
|
||||
static void mysql_init_variables(void)
|
||||
static int mysql_init_variables(void)
|
||||
{
|
||||
/* Things reset to zero */
|
||||
opt_skip_slave_start= opt_reckless_slave = 0;
|
||||
|
|
@ -7508,7 +7511,10 @@ static void mysql_init_variables(void)
|
|||
key_caches.empty();
|
||||
if (!(dflt_key_cache= get_or_create_key_cache(default_key_cache_base.str,
|
||||
default_key_cache_base.length)))
|
||||
exit(1);
|
||||
{
|
||||
sql_print_error("Cannot allocate the keycache");
|
||||
return 1;
|
||||
}
|
||||
/* set key_cache_hash.default_value = dflt_key_cache */
|
||||
multi_keycache_init();
|
||||
|
||||
|
|
@ -7651,6 +7657,7 @@ static void mysql_init_variables(void)
|
|||
tmpenv = DEFAULT_MYSQL_HOME;
|
||||
(void) strmake(mysql_home, tmpenv, sizeof(mysql_home)-1);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -7711,9 +7718,11 @@ mysqld_get_one_option(int optid,
|
|||
#endif
|
||||
break;
|
||||
#include <sslopt-case.h>
|
||||
#ifndef EMBEDDED_LIBRARY
|
||||
case 'V':
|
||||
print_version();
|
||||
exit(0);
|
||||
#endif /*EMBEDDED_LIBRARY*/
|
||||
case 'W':
|
||||
if (!argument)
|
||||
global_system_variables.log_warnings++;
|
||||
|
|
@ -7942,14 +7951,14 @@ mysqld_get_one_option(int optid,
|
|||
if (gethostname(myhostname,sizeof(myhostname)) < 0)
|
||||
{
|
||||
sql_perror("Can't start server: cannot get my own hostname!");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
ent=gethostbyname(myhostname);
|
||||
}
|
||||
if (!ent)
|
||||
{
|
||||
sql_perror("Can't start server: cannot resolve hostname!");
|
||||
exit(1);
|
||||
return 1;
|
||||
}
|
||||
my_bind_addr = (ulong) ((in_addr*)ent->h_addr_list[0])->s_addr;
|
||||
}
|
||||
|
|
@ -8146,8 +8155,8 @@ mysqld_get_one_option(int optid,
|
|||
case OPT_FT_BOOLEAN_SYNTAX:
|
||||
if (ft_boolean_check_syntax_string((uchar*) argument))
|
||||
{
|
||||
fprintf(stderr, "Invalid ft-boolean-syntax string: %s\n", argument);
|
||||
exit(1);
|
||||
sql_print_error("Invalid ft-boolean-syntax string: %s\n", argument);
|
||||
return 1;
|
||||
}
|
||||
strmake(ft_boolean_syntax, argument, sizeof(ft_boolean_syntax)-1);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -90,7 +90,6 @@ write_escaped_string(IO_CACHE *file, LEX_STRING *val_s)
|
|||
@param file pointer to IO_CACHE structure for writing
|
||||
@param base pointer to data structure
|
||||
@param parameter pointer to parameter descriptor
|
||||
@param old_version for returning back old version number value
|
||||
|
||||
@retval
|
||||
FALSE OK
|
||||
|
|
@ -100,8 +99,7 @@ write_escaped_string(IO_CACHE *file, LEX_STRING *val_s)
|
|||
|
||||
|
||||
static my_bool
|
||||
write_parameter(IO_CACHE *file, uchar* base, File_option *parameter,
|
||||
ulonglong *old_version)
|
||||
write_parameter(IO_CACHE *file, uchar* base, File_option *parameter)
|
||||
{
|
||||
char num_buf[20]; // buffer for numeric operations
|
||||
// string for numeric operations
|
||||
|
|
@ -129,15 +127,6 @@ write_parameter(IO_CACHE *file, uchar* base, File_option *parameter,
|
|||
DBUG_RETURN(TRUE);
|
||||
break;
|
||||
}
|
||||
case FILE_OPTIONS_REV:
|
||||
{
|
||||
ulonglong *val_i= (ulonglong *)(base + parameter->offset);
|
||||
*old_version= (*val_i)++;
|
||||
num.set(*val_i, &my_charset_bin);
|
||||
if (my_b_append(file, (const uchar *)num.ptr(), num.length()))
|
||||
DBUG_RETURN(TRUE);
|
||||
break;
|
||||
}
|
||||
case FILE_OPTIONS_TIMESTAMP:
|
||||
{
|
||||
/* string have to be allocated already */
|
||||
|
|
@ -207,7 +196,6 @@ write_parameter(IO_CACHE *file, uchar* base, File_option *parameter,
|
|||
@param base base address for parameter reading (structure like
|
||||
TABLE)
|
||||
@param parameters parameters description
|
||||
@param max_versions number of versions to save
|
||||
|
||||
@retval
|
||||
FALSE OK
|
||||
|
|
@ -219,13 +207,11 @@ write_parameter(IO_CACHE *file, uchar* base, File_option *parameter,
|
|||
my_bool
|
||||
sql_create_definition_file(const LEX_STRING *dir, const LEX_STRING *file_name,
|
||||
const LEX_STRING *type,
|
||||
uchar* base, File_option *parameters,
|
||||
uint max_versions)
|
||||
uchar* base, File_option *parameters)
|
||||
{
|
||||
File handler;
|
||||
IO_CACHE file;
|
||||
char path[FN_REFLEN+1]; // +1 to put temporary file name for sure
|
||||
ulonglong old_version= ULONGLONG_MAX;
|
||||
int path_end;
|
||||
File_option *param;
|
||||
DBUG_ENTER("sql_create_definition_file");
|
||||
|
|
@ -272,7 +258,7 @@ sql_create_definition_file(const LEX_STRING *dir, const LEX_STRING *file_name,
|
|||
if (my_b_append(&file, (const uchar *)param->name.str,
|
||||
param->name.length) ||
|
||||
my_b_append(&file, (const uchar *)STRING_WITH_LEN("=")) ||
|
||||
write_parameter(&file, base, param, &old_version) ||
|
||||
write_parameter(&file, base, param) ||
|
||||
my_b_append(&file, (const uchar *)STRING_WITH_LEN("\n")))
|
||||
goto err_w_cache;
|
||||
}
|
||||
|
|
@ -286,55 +272,6 @@ sql_create_definition_file(const LEX_STRING *dir, const LEX_STRING *file_name,
|
|||
}
|
||||
|
||||
path[path_end]='\0';
|
||||
#ifdef FRM_ARCHIVE
|
||||
// archive copies management: disabled unused feature (see bug #17823).
|
||||
if (!access(path, F_OK))
|
||||
{
|
||||
if (old_version != ULONGLONG_MAX && max_versions != 0)
|
||||
{
|
||||
// save backup
|
||||
char path_arc[FN_REFLEN];
|
||||
// backup old version
|
||||
char path_to[FN_REFLEN];
|
||||
|
||||
// check archive directory existence
|
||||
fn_format(path_arc, "arc", dir->str, "", MY_UNPACK_FILENAME);
|
||||
if (access(path_arc, F_OK))
|
||||
{
|
||||
if (my_mkdir(path_arc, 0777, MYF(MY_WME)))
|
||||
{
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
my_snprintf(path_to, FN_REFLEN, "%s/%s-%04lu",
|
||||
path_arc, file_name->str, (ulong) old_version);
|
||||
if (my_rename(path, path_to, MYF(MY_WME)))
|
||||
{
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
|
||||
// remove very old version
|
||||
if (old_version > max_versions)
|
||||
{
|
||||
my_snprintf(path_to, FN_REFLEN, "%s/%s-%04lu",
|
||||
path_arc, file_name->str,
|
||||
(ulong)(old_version - max_versions));
|
||||
if (!access(path_arc, F_OK) && my_delete(path_to, MYF(MY_WME)))
|
||||
{
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (my_delete(path, MYF(MY_WME))) // no backups
|
||||
{
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif//FRM_ARCHIVE
|
||||
|
||||
{
|
||||
// rename temporary file
|
||||
|
|
@ -361,8 +298,6 @@ err_w_file:
|
|||
@param schema name of given schema
|
||||
@param old_name original file name
|
||||
@param new_name new file name
|
||||
@param revision revision number
|
||||
@param num_view_backups number of backups
|
||||
|
||||
@retval
|
||||
0 OK
|
||||
|
|
@ -371,8 +306,7 @@ err_w_file:
|
|||
*/
|
||||
my_bool rename_in_schema_file(THD *thd,
|
||||
const char *schema, const char *old_name,
|
||||
const char *new_name, ulonglong revision,
|
||||
uint num_view_backups)
|
||||
const char *new_name)
|
||||
{
|
||||
char old_path[FN_REFLEN], new_path[FN_REFLEN], arc_path[FN_REFLEN];
|
||||
|
||||
|
|
@ -387,28 +321,6 @@ my_bool rename_in_schema_file(THD *thd,
|
|||
/* check if arc_dir exists: disabled unused feature (see bug #17823). */
|
||||
build_table_filename(arc_path, sizeof(arc_path) - 1, schema, "arc", "", 0);
|
||||
|
||||
#ifdef FRM_ARCHIVE
|
||||
if (revision > 0 && !access(arc_path, F_OK))
|
||||
{
|
||||
char old_name_buf[FN_REFLEN], new_name_buf[FN_REFLEN];
|
||||
ulonglong limit= ((revision > num_view_backups) ?
|
||||
revision - num_view_backups : 0);
|
||||
|
||||
VOID(tablename_to_filename(old_name, old_name_buf, sizeof(old_name_buf)));
|
||||
VOID(tablename_to_filename(new_name, new_name_buf, sizeof(new_name_buf)));
|
||||
|
||||
for (; revision > limit ; revision--)
|
||||
{
|
||||
my_snprintf(old_path, FN_REFLEN, "%s/%s%s-%04lu",
|
||||
arc_path, old_name_buf, reg_ext, (ulong) revision);
|
||||
(void) unpack_filename(old_path, old_path);
|
||||
my_snprintf(new_path, FN_REFLEN, "%s/%s%s-%04lu",
|
||||
arc_path, new_name_buf, reg_ext, (ulong) revision);
|
||||
(void) unpack_filename(new_path, new_path);
|
||||
my_rename(old_path, new_path, MYF(0));
|
||||
}
|
||||
}
|
||||
#else//FRM_ARCHIVE
|
||||
{ // remove obsolete 'arc' directory and files if any
|
||||
MY_DIR *new_dirp;
|
||||
if ((new_dirp = my_dir(arc_path, MYF(MY_DONT_SORT))))
|
||||
|
|
@ -417,7 +329,6 @@ my_bool rename_in_schema_file(THD *thd,
|
|||
(void) mysql_rm_arc_files(thd, new_dirp, arc_path);
|
||||
}
|
||||
}
|
||||
#endif//FRM_ARCHIVE
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -846,7 +757,6 @@ File_parser::parse(uchar* base, MEM_ROOT *mem_root,
|
|||
break;
|
||||
}
|
||||
case FILE_OPTIONS_ULONGLONG:
|
||||
case FILE_OPTIONS_REV:
|
||||
if (!(eol= strchr(ptr, '\n')))
|
||||
{
|
||||
my_error(ER_FPARSER_ERROR_IN_PARAMETER, MYF(0),
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ enum file_opt_type {
|
|||
FILE_OPTIONS_STRING, /**< String (LEX_STRING) */
|
||||
FILE_OPTIONS_ESTRING, /**< Escaped string (LEX_STRING) */
|
||||
FILE_OPTIONS_ULONGLONG, /**< ulonglong parameter (ulonglong) */
|
||||
FILE_OPTIONS_REV, /**< Revision version number (ulonglong) */
|
||||
FILE_OPTIONS_TIMESTAMP, /**< timestamp (LEX_STRING have to be
|
||||
allocated with length 20 (19+1) */
|
||||
FILE_OPTIONS_STRLIST, /**< list of escaped strings
|
||||
|
|
@ -81,11 +80,10 @@ File_parser *sql_parse_prepare(const LEX_STRING *file_name,
|
|||
my_bool
|
||||
sql_create_definition_file(const LEX_STRING *dir, const LEX_STRING *file_name,
|
||||
const LEX_STRING *type,
|
||||
uchar* base, File_option *parameters, uint versions);
|
||||
uchar* base, File_option *parameters);
|
||||
my_bool rename_in_schema_file(THD *thd,
|
||||
const char *schema, const char *old_name,
|
||||
const char *new_name, ulonglong revision,
|
||||
uint num_view_backups);
|
||||
const char *new_name);
|
||||
|
||||
class File_parser: public Sql_alloc
|
||||
{
|
||||
|
|
|
|||
|
|
@ -296,7 +296,7 @@ static sys_var_thd_bool sys_sql_low_priority_updates(&vars, "sql_low_priority_up
|
|||
&SV::low_priority_updates,
|
||||
fix_low_priority_updates);
|
||||
#endif
|
||||
static sys_var_thd_ulong sys_max_allowed_packet(&vars, "max_allowed_packet",
|
||||
static sys_var_thd_ulong_session_readonly sys_max_allowed_packet(&vars, "max_allowed_packet",
|
||||
&SV::max_allowed_packet);
|
||||
static sys_var_long_ptr sys_max_binlog_cache_size(&vars, "max_binlog_cache_size",
|
||||
&max_binlog_cache_size);
|
||||
|
|
@ -369,7 +369,7 @@ static sys_var_thd_enum sys_myisam_stats_method(&vars, "myisam_stats_met
|
|||
&myisam_stats_method_typelib,
|
||||
NULL);
|
||||
|
||||
static sys_var_thd_ulong sys_net_buffer_length(&vars, "net_buffer_length",
|
||||
static sys_var_thd_ulong_session_readonly sys_net_buffer_length(&vars, "net_buffer_length",
|
||||
&SV::net_buffer_length);
|
||||
static sys_var_thd_ulong sys_net_read_timeout(&vars, "net_read_timeout",
|
||||
&SV::net_read_timeout,
|
||||
|
|
@ -2734,6 +2734,18 @@ uchar *sys_var_max_user_conn::value_ptr(THD *thd, enum_var_type type,
|
|||
}
|
||||
|
||||
|
||||
bool sys_var_thd_ulong_session_readonly::check(THD *thd, set_var *var)
|
||||
{
|
||||
if (var->type != OPT_GLOBAL)
|
||||
{
|
||||
my_error(ER_VARIABLE_IS_READONLY, MYF(0), "SESSION", name, "GLOBAL");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return sys_var_thd_ulong::check(thd, var);
|
||||
}
|
||||
|
||||
|
||||
bool sys_var_thd_lc_time_names::check(THD *thd, set_var *var)
|
||||
{
|
||||
MY_LOCALE *locale_match;
|
||||
|
|
|
|||
|
|
@ -1024,6 +1024,29 @@ public:
|
|||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief This is a specialization of sys_var_thd_ulong that implements a
|
||||
read-only session variable. The class overrides check() and check_default()
|
||||
to achieve the read-only property for the session part of the variable.
|
||||
*/
|
||||
class sys_var_thd_ulong_session_readonly : public sys_var_thd_ulong
|
||||
{
|
||||
public:
|
||||
sys_var_thd_ulong_session_readonly(sys_var_chain *chain_arg,
|
||||
const char *name_arg, ulong SV::*offset_arg,
|
||||
sys_check_func c_func= NULL,
|
||||
sys_after_update_func au_func= NULL,
|
||||
Binlog_status_enum bl_status_arg= NOT_IN_BINLOG):
|
||||
sys_var_thd_ulong(chain_arg, name_arg, offset_arg, c_func, au_func, bl_status_arg)
|
||||
{ }
|
||||
bool check(THD *thd, set_var *var);
|
||||
bool check_default(enum_var_type type)
|
||||
{
|
||||
return type != OPT_GLOBAL || !option_limits;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class sys_var_microseconds :public sys_var_thd
|
||||
{
|
||||
ulonglong SV::*offset;
|
||||
|
|
|
|||
|
|
@ -6151,3 +6151,6 @@ WARN_PLUGIN_DELETE_BUILTIN
|
|||
|
||||
WARN_PLUGIN_BUSY
|
||||
eng "Plugin is busy and will be uninstalled on shutdown"
|
||||
|
||||
ER_VARIABLE_IS_READONLY
|
||||
eng "%s variable '%s' is read-only. Use SET %s to assign the value"
|
||||
|
|
|
|||
|
|
@ -311,7 +311,7 @@ void thd_inc_row_count(THD *thd)
|
|||
Dumps a text description of a thread, its security context
|
||||
(user, host) and the current query.
|
||||
|
||||
@param thd current thread context
|
||||
@param thd thread context
|
||||
@param buffer pointer to preferred result buffer
|
||||
@param length length of buffer
|
||||
@param max_query_len how many chars of query to copy (0 for all)
|
||||
|
|
@ -385,7 +385,17 @@ char *thd_security_context(THD *thd, char *buffer, unsigned int length,
|
|||
}
|
||||
if (str.c_ptr_safe() == buffer)
|
||||
return buffer;
|
||||
return thd->strmake(str.ptr(), str.length());
|
||||
|
||||
/*
|
||||
We have to copy the new string to the destination buffer because the string
|
||||
was reallocated to a larger buffer to be able to fit.
|
||||
*/
|
||||
DBUG_ASSERT(buffer != NULL);
|
||||
length= min(str.length(), length-1);
|
||||
memcpy(buffer, str.c_ptr_quick(), length);
|
||||
/* Make sure that the new string is null terminated */
|
||||
buffer[length]= '\0';
|
||||
return buffer;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1099,7 +1099,6 @@ static long mysql_rm_known_files(THD *thd, MY_DIR *dirp, const char *db,
|
|||
/* .frm archive:
|
||||
Those archives are obsolete, but following code should
|
||||
exist to remove existent "arc" directories.
|
||||
See #ifdef FRM_ARCHIVE directives for obsolete code.
|
||||
*/
|
||||
char newpath[FN_REFLEN];
|
||||
MY_DIR *new_dirp;
|
||||
|
|
@ -1268,7 +1267,6 @@ static my_bool rm_dir_w_symlink(const char *org_path, my_bool send_error)
|
|||
NOTE
|
||||
A support of "arc" directories is obsolete, however this
|
||||
function should exist to remove existent "arc" directories.
|
||||
See #ifdef FRM_ARCHIVE directives for obsolete code.
|
||||
*/
|
||||
long mysql_rm_arc_files(THD *thd, MY_DIR *dirp, const char *org_path)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -83,6 +83,7 @@ static void store_key_options(THD *thd, String *packet, TABLE *table,
|
|||
static void
|
||||
append_algorithm(TABLE_LIST *table, String *buff);
|
||||
|
||||
static COND * make_cond_for_info_schema(COND *cond, TABLE_LIST *table);
|
||||
|
||||
/***************************************************************************
|
||||
** List all table types supported
|
||||
|
|
@ -2072,7 +2073,8 @@ static bool show_status_array(THD *thd, const char *wild,
|
|||
enum enum_var_type value_type,
|
||||
struct system_status_var *status_var,
|
||||
const char *prefix, TABLE *table,
|
||||
bool ucase_names)
|
||||
bool ucase_names,
|
||||
COND *cond)
|
||||
{
|
||||
MY_ALIGNED_BYTE_ARRAY(buff_data, SHOW_VAR_FUNC_BUFF_SIZE, long);
|
||||
char * const buff= (char *) &buff_data;
|
||||
|
|
@ -2082,8 +2084,12 @@ static bool show_status_array(THD *thd, const char *wild,
|
|||
int len;
|
||||
LEX_STRING null_lex_str;
|
||||
SHOW_VAR tmp, *var;
|
||||
COND *partial_cond= 0;
|
||||
enum_check_fields save_count_cuted_fields= thd->count_cuted_fields;
|
||||
bool res= FALSE;
|
||||
DBUG_ENTER("show_status_array");
|
||||
|
||||
thd->count_cuted_fields= CHECK_FIELD_WARN;
|
||||
null_lex_str.str= 0; // For sys_var->value_ptr()
|
||||
null_lex_str.length= 0;
|
||||
|
||||
|
|
@ -2091,6 +2097,7 @@ static bool show_status_array(THD *thd, const char *wild,
|
|||
if (*prefix)
|
||||
*prefix_end++= '_';
|
||||
len=name_buffer + sizeof(name_buffer) - prefix_end;
|
||||
partial_cond= make_cond_for_info_schema(cond, table->pos_in_table_list);
|
||||
|
||||
for (; variables->name; variables++)
|
||||
{
|
||||
|
|
@ -2099,6 +2106,9 @@ static bool show_status_array(THD *thd, const char *wild,
|
|||
if (ucase_names)
|
||||
make_upper(name_buffer);
|
||||
|
||||
restore_record(table, s->default_values);
|
||||
table->field[0]->store(name_buffer, strlen(name_buffer),
|
||||
system_charset_info);
|
||||
/*
|
||||
if var->type is SHOW_FUNC, call the function.
|
||||
Repeat as necessary, if new var is again SHOW_FUNC
|
||||
|
|
@ -2110,12 +2120,13 @@ static bool show_status_array(THD *thd, const char *wild,
|
|||
if (show_type == SHOW_ARRAY)
|
||||
{
|
||||
show_status_array(thd, wild, (SHOW_VAR *) var->value, value_type,
|
||||
status_var, name_buffer, table, ucase_names);
|
||||
status_var, name_buffer, table, ucase_names, partial_cond);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(wild && wild[0] && wild_case_compare(system_charset_info,
|
||||
name_buffer, wild)))
|
||||
name_buffer, wild)) &&
|
||||
(!partial_cond || partial_cond->val_int()))
|
||||
{
|
||||
char *value=var->value;
|
||||
const char *pos, *end; // We assign a lot of const's
|
||||
|
|
@ -2202,21 +2213,23 @@ static bool show_status_array(THD *thd, const char *wild,
|
|||
DBUG_ASSERT(0);
|
||||
break;
|
||||
}
|
||||
restore_record(table, s->default_values);
|
||||
table->field[0]->store(name_buffer, strlen(name_buffer),
|
||||
system_charset_info);
|
||||
table->field[1]->store(pos, (uint32) (end - pos), system_charset_info);
|
||||
thd->count_cuted_fields= CHECK_FIELD_IGNORE;
|
||||
table->field[1]->set_notnull();
|
||||
|
||||
pthread_mutex_unlock(&LOCK_global_system_variables);
|
||||
|
||||
if (schema_table_store_record(thd, table))
|
||||
DBUG_RETURN(TRUE);
|
||||
{
|
||||
res= TRUE;
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DBUG_RETURN(FALSE);
|
||||
end:
|
||||
thd->count_cuted_fields= save_count_cuted_fields;
|
||||
DBUG_RETURN(res);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -3498,6 +3511,7 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
|
|||
TABLE_SHARE *share= show_table->s;
|
||||
handler *file= show_table->file;
|
||||
handlerton *tmp_db_type= share->db_type();
|
||||
bool is_partitioned= FALSE;
|
||||
if (share->tmp_table == SYSTEM_TMP_TABLE)
|
||||
table->field[3]->store(STRING_WITH_LEN("SYSTEM VIEW"), cs);
|
||||
else if (share->tmp_table)
|
||||
|
|
@ -3514,7 +3528,10 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
|
|||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||
if (share->db_type() == partition_hton &&
|
||||
share->partition_info_len)
|
||||
{
|
||||
tmp_db_type= share->default_part_db_type;
|
||||
is_partitioned= TRUE;
|
||||
}
|
||||
#endif
|
||||
tmp_buff= (char *) ha_resolve_storage_engine_name(tmp_db_type);
|
||||
table->field[4]->store(tmp_buff, strlen(tmp_buff), cs);
|
||||
|
|
@ -3559,9 +3576,7 @@ static int get_schema_tables_record(THD *thd, TABLE_LIST *tables,
|
|||
NullS);
|
||||
}
|
||||
#ifdef WITH_PARTITION_STORAGE_ENGINE
|
||||
if (show_table->s->db_type() == partition_hton &&
|
||||
show_table->part_info != NULL &&
|
||||
show_table->part_info->no_parts > 0)
|
||||
if (is_partitioned)
|
||||
ptr= strmov(ptr, " partitioned");
|
||||
#endif
|
||||
if (share->transactional != HA_CHOICE_UNDEF)
|
||||
|
|
@ -5244,7 +5259,7 @@ int fill_variables(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||
|
||||
rw_rdlock(&LOCK_system_variables_hash);
|
||||
res= show_status_array(thd, wild, enumerate_sys_vars(thd, sorted_vars),
|
||||
option_type, NULL, "", tables->table, upper_case_names);
|
||||
option_type, NULL, "", tables->table, upper_case_names, cond);
|
||||
rw_unlock(&LOCK_system_variables_hash);
|
||||
DBUG_RETURN(res);
|
||||
}
|
||||
|
|
@ -5287,7 +5302,7 @@ int fill_status(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||
res= show_status_array(thd, wild,
|
||||
(SHOW_VAR *)all_status_vars.buffer,
|
||||
option_type, tmp1, "", tables->table,
|
||||
upper_case_names);
|
||||
upper_case_names, cond);
|
||||
pthread_mutex_unlock(&LOCK_status);
|
||||
DBUG_RETURN(res);
|
||||
}
|
||||
|
|
@ -6013,9 +6028,10 @@ ST_FIELD_INFO schema_fields_info[]=
|
|||
{"CATALOG_NAME", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
|
||||
{"SCHEMA_NAME", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Database",
|
||||
SKIP_OPEN_TABLE},
|
||||
{"DEFAULT_CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0,
|
||||
{"DEFAULT_CHARACTER_SET_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0,
|
||||
SKIP_OPEN_TABLE},
|
||||
{"DEFAULT_COLLATION_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0,
|
||||
SKIP_OPEN_TABLE},
|
||||
{"DEFAULT_COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
|
||||
{"SQL_PATH", FN_REFLEN, MYSQL_TYPE_STRING, 0, 1, 0, SKIP_OPEN_TABLE},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
|
||||
};
|
||||
|
|
@ -6049,7 +6065,8 @@ ST_FIELD_INFO tables_fields_info[]=
|
|||
{"CREATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Create_time", OPEN_FULL_TABLE},
|
||||
{"UPDATE_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Update_time", OPEN_FULL_TABLE},
|
||||
{"CHECK_TIME", 0, MYSQL_TYPE_DATETIME, 0, 1, "Check_time", OPEN_FULL_TABLE},
|
||||
{"TABLE_COLLATION", 64, MYSQL_TYPE_STRING, 0, 1, "Collation", OPEN_FRM_ONLY},
|
||||
{"TABLE_COLLATION", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 1, "Collation",
|
||||
OPEN_FRM_ONLY},
|
||||
{"CHECKSUM", MY_INT64_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0,
|
||||
(MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), "Checksum", OPEN_FULL_TABLE},
|
||||
{"CREATE_OPTIONS", 255, MYSQL_TYPE_STRING, 0, 1, "Create_options",
|
||||
|
|
@ -6080,8 +6097,10 @@ ST_FIELD_INFO columns_fields_info[]=
|
|||
0, (MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0, OPEN_FRM_ONLY},
|
||||
{"NUMERIC_SCALE", MY_INT64_NUM_DECIMAL_DIGITS , MYSQL_TYPE_LONGLONG,
|
||||
0, (MY_I_S_MAYBE_NULL | MY_I_S_UNSIGNED), 0, OPEN_FRM_ONLY},
|
||||
{"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 1, 0, OPEN_FRM_ONLY},
|
||||
{"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 1, "Collation", OPEN_FRM_ONLY},
|
||||
{"CHARACTER_SET_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 1, 0,
|
||||
OPEN_FRM_ONLY},
|
||||
{"COLLATION_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 1, "Collation",
|
||||
OPEN_FRM_ONLY},
|
||||
{"COLUMN_TYPE", 65535, MYSQL_TYPE_STRING, 0, 0, "Type", OPEN_FRM_ONLY},
|
||||
{"COLUMN_KEY", 3, MYSQL_TYPE_STRING, 0, 0, "Key", OPEN_FRM_ONLY},
|
||||
{"EXTRA", 27, MYSQL_TYPE_STRING, 0, 0, "Extra", OPEN_FRM_ONLY},
|
||||
|
|
@ -6093,10 +6112,10 @@ ST_FIELD_INFO columns_fields_info[]=
|
|||
|
||||
ST_FIELD_INFO charsets_fields_info[]=
|
||||
{
|
||||
{"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Charset",
|
||||
SKIP_OPEN_TABLE},
|
||||
{"DEFAULT_COLLATE_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Default collation",
|
||||
{"CHARACTER_SET_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, "Charset",
|
||||
SKIP_OPEN_TABLE},
|
||||
{"DEFAULT_COLLATE_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0,
|
||||
"Default collation", SKIP_OPEN_TABLE},
|
||||
{"DESCRIPTION", 60, MYSQL_TYPE_STRING, 0, 0, "Description",
|
||||
SKIP_OPEN_TABLE},
|
||||
{"MAXLEN", 3, MYSQL_TYPE_LONGLONG, 0, 0, "Maxlen", SKIP_OPEN_TABLE},
|
||||
|
|
@ -6106,8 +6125,9 @@ ST_FIELD_INFO charsets_fields_info[]=
|
|||
|
||||
ST_FIELD_INFO collation_fields_info[]=
|
||||
{
|
||||
{"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Collation", SKIP_OPEN_TABLE},
|
||||
{"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Charset",
|
||||
{"COLLATION_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, "Collation",
|
||||
SKIP_OPEN_TABLE},
|
||||
{"CHARACTER_SET_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, "Charset",
|
||||
SKIP_OPEN_TABLE},
|
||||
{"ID", MY_INT32_NUM_DECIMAL_DIGITS, MYSQL_TYPE_LONGLONG, 0, 0, "Id",
|
||||
SKIP_OPEN_TABLE},
|
||||
|
|
@ -6170,8 +6190,10 @@ ST_FIELD_INFO events_fields_info[]=
|
|||
|
||||
ST_FIELD_INFO coll_charset_app_fields_info[]=
|
||||
{
|
||||
{"COLLATION_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
|
||||
{"CHARACTER_SET_NAME", 64, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
|
||||
{"COLLATION_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0,
|
||||
SKIP_OPEN_TABLE},
|
||||
{"CHARACTER_SET_NAME", MY_CS_NAME_SIZE, MYSQL_TYPE_STRING, 0, 0, 0,
|
||||
SKIP_OPEN_TABLE},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
|
||||
};
|
||||
|
||||
|
|
@ -6200,7 +6222,7 @@ ST_FIELD_INFO proc_fields_info[]=
|
|||
SKIP_OPEN_TABLE},
|
||||
{"CREATED", 0, MYSQL_TYPE_DATETIME, 0, 0, "Created", SKIP_OPEN_TABLE},
|
||||
{"LAST_ALTERED", 0, MYSQL_TYPE_DATETIME, 0, 0, "Modified", SKIP_OPEN_TABLE},
|
||||
{"SQL_MODE", 65535, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
|
||||
{"SQL_MODE", 32*256, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE},
|
||||
{"ROUTINE_COMMENT", NAME_CHAR_LEN, MYSQL_TYPE_STRING, 0, 0, "Comment",
|
||||
SKIP_OPEN_TABLE},
|
||||
{"DEFINER", 77, MYSQL_TYPE_STRING, 0, 0, "Definer", SKIP_OPEN_TABLE},
|
||||
|
|
@ -6449,7 +6471,7 @@ ST_FIELD_INFO variables_fields_info[]=
|
|||
{
|
||||
{"VARIABLE_NAME", 64, MYSQL_TYPE_STRING, 0, 0, "Variable_name",
|
||||
SKIP_OPEN_TABLE},
|
||||
{"VARIABLE_VALUE", 20480, MYSQL_TYPE_STRING, 0, 1, "Value", SKIP_OPEN_TABLE},
|
||||
{"VARIABLE_VALUE", 1024, MYSQL_TYPE_STRING, 0, 1, "Value", SKIP_OPEN_TABLE},
|
||||
{0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
|
||||
};
|
||||
|
||||
|
|
@ -6608,9 +6630,9 @@ ST_SCHEMA_TABLE schema_tables[]=
|
|||
{"FILES", files_fields_info, create_schema_table,
|
||||
fill_schema_files, 0, 0, -1, -1, 0, 0},
|
||||
{"GLOBAL_STATUS", variables_fields_info, create_schema_table,
|
||||
fill_status, make_old_format, 0, -1, -1, 0, 0},
|
||||
fill_status, make_old_format, 0, 0, -1, 0, 0},
|
||||
{"GLOBAL_VARIABLES", variables_fields_info, create_schema_table,
|
||||
fill_variables, make_old_format, 0, -1, -1, 0, 0},
|
||||
fill_variables, make_old_format, 0, 0, -1, 0, 0},
|
||||
{"KEY_COLUMN_USAGE", key_column_usage_fields_info, create_schema_table,
|
||||
get_all_tables, 0, get_schema_key_column_usage_record, 4, 5, 0,
|
||||
OPEN_TABLE_ONLY},
|
||||
|
|
@ -6635,14 +6657,14 @@ ST_SCHEMA_TABLE schema_tables[]=
|
|||
{"SCHEMA_PRIVILEGES", schema_privileges_fields_info, create_schema_table,
|
||||
fill_schema_schema_privileges, 0, 0, -1, -1, 0, 0},
|
||||
{"SESSION_STATUS", variables_fields_info, create_schema_table,
|
||||
fill_status, make_old_format, 0, -1, -1, 0, 0},
|
||||
fill_status, make_old_format, 0, 0, -1, 0, 0},
|
||||
{"SESSION_VARIABLES", variables_fields_info, create_schema_table,
|
||||
fill_variables, make_old_format, 0, -1, -1, 0, 0},
|
||||
fill_variables, make_old_format, 0, 0, -1, 0, 0},
|
||||
{"STATISTICS", stat_fields_info, create_schema_table,
|
||||
get_all_tables, make_old_format, get_schema_stat_record, 1, 2, 0,
|
||||
OPEN_TABLE_ONLY|OPTIMIZE_I_S_TABLE},
|
||||
{"STATUS", variables_fields_info, create_schema_table, fill_status,
|
||||
make_old_format, 0, -1, -1, 1, 0},
|
||||
make_old_format, 0, 0, -1, 1, 0},
|
||||
{"TABLES", tables_fields_info, create_schema_table,
|
||||
get_all_tables, make_old_format, get_schema_tables_record, 1, 2, 0,
|
||||
OPTIMIZE_I_S_TABLE},
|
||||
|
|
@ -6658,7 +6680,7 @@ ST_SCHEMA_TABLE schema_tables[]=
|
|||
{"USER_PRIVILEGES", user_privileges_fields_info, create_schema_table,
|
||||
fill_schema_user_privileges, 0, 0, -1, -1, 0, 0},
|
||||
{"VARIABLES", variables_fields_info, create_schema_table, fill_variables,
|
||||
make_old_format, 0, -1, -1, 1, 0},
|
||||
make_old_format, 0, 0, -1, 1, 0},
|
||||
{"VIEWS", view_fields_info, create_schema_table,
|
||||
get_all_tables, 0, get_schema_views_record, 1, 2, 0,
|
||||
OPEN_VIEW_ONLY|OPTIMIZE_I_S_TABLE},
|
||||
|
|
|
|||
|
|
@ -4293,6 +4293,12 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
|
|||
goto send_result;
|
||||
}
|
||||
|
||||
if (table->schema_table)
|
||||
{
|
||||
result_code= HA_ADMIN_NOT_IMPLEMENTED;
|
||||
goto send_result;
|
||||
}
|
||||
|
||||
if ((table->table->db_stat & HA_READ_ONLY) && open_for_modify)
|
||||
{
|
||||
/* purecov: begin inspected */
|
||||
|
|
|
|||
|
|
@ -682,7 +682,7 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables,
|
|||
trigname.trigger_table.length= tables->table_name_length;
|
||||
|
||||
if (sql_create_definition_file(NULL, &trigname_file, &trigname_file_type,
|
||||
(uchar*)&trigname, trigname_file_parameters, 0))
|
||||
(uchar*)&trigname, trigname_file_parameters))
|
||||
return 1;
|
||||
|
||||
/*
|
||||
|
|
@ -800,7 +800,7 @@ bool Table_triggers_list::create_trigger(THD *thd, TABLE_LIST *tables,
|
|||
/* Create trigger definition file. */
|
||||
|
||||
if (!sql_create_definition_file(NULL, &file, &triggers_file_type,
|
||||
(uchar*)this, triggers_file_parameters, 0))
|
||||
(uchar*)this, triggers_file_parameters))
|
||||
return 0;
|
||||
|
||||
err_with_cleanup:
|
||||
|
|
@ -876,8 +876,7 @@ static bool save_trigger_file(Table_triggers_list *triggers, const char *db,
|
|||
TRG_EXT, 0);
|
||||
file.str= file_buff;
|
||||
return sql_create_definition_file(NULL, &file, &triggers_file_type,
|
||||
(uchar*)triggers, triggers_file_parameters,
|
||||
0);
|
||||
(uchar*)triggers, triggers_file_parameters);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1806,8 +1805,7 @@ Table_triggers_list::change_table_name_in_trignames(const char *db_name,
|
|||
trigname.trigger_table= *new_table_name;
|
||||
|
||||
if (sql_create_definition_file(NULL, &trigname_file, &trigname_file_type,
|
||||
(uchar*)&trigname, trigname_file_parameters,
|
||||
0))
|
||||
(uchar*)&trigname, trigname_file_parameters))
|
||||
return trigger;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -655,7 +655,7 @@ bool mysql_create_view(THD *thd, TABLE_LIST *views,
|
|||
}
|
||||
|
||||
VOID(pthread_mutex_unlock(&LOCK_open));
|
||||
if (view->revision != 1)
|
||||
if (mode != VIEW_CREATE_NEW)
|
||||
query_cache_invalidate3(thd, view, 0);
|
||||
start_waiting_global_read_lock(thd);
|
||||
if (res)
|
||||
|
|
@ -673,12 +673,8 @@ err:
|
|||
}
|
||||
|
||||
|
||||
/* index of revision number in following table */
|
||||
static const int revision_number_position= 8;
|
||||
/* number of required parameters for making view */
|
||||
static const int required_view_parameters= 16;
|
||||
/* number of backups */
|
||||
static const int num_view_backups= 3;
|
||||
static const int required_view_parameters= 14;
|
||||
|
||||
/*
|
||||
table of VIEW .frm field descriptors
|
||||
|
|
@ -711,9 +707,6 @@ static File_option view_parameters[]=
|
|||
{{ C_STRING_WITH_LEN("with_check_option")},
|
||||
my_offsetof(TABLE_LIST, with_check),
|
||||
FILE_OPTIONS_ULONGLONG},
|
||||
{{ C_STRING_WITH_LEN("revision")},
|
||||
my_offsetof(TABLE_LIST, revision),
|
||||
FILE_OPTIONS_REV},
|
||||
{{ C_STRING_WITH_LEN("timestamp")},
|
||||
my_offsetof(TABLE_LIST, timestamp),
|
||||
FILE_OPTIONS_TIMESTAMP},
|
||||
|
|
@ -921,18 +914,9 @@ loop_out:
|
|||
}
|
||||
|
||||
/*
|
||||
read revision number
|
||||
|
||||
TODO: read dependence list, too, to process cascade/restrict
|
||||
TODO: special cascade/restrict procedure for alter?
|
||||
*/
|
||||
if (parser->parse((uchar*)view, thd->mem_root,
|
||||
view_parameters + revision_number_position, 1,
|
||||
&file_parser_dummy_hook))
|
||||
{
|
||||
error= thd->is_error() ? -1 : 0;
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -997,7 +981,7 @@ loop_out:
|
|||
}
|
||||
|
||||
if (sql_create_definition_file(&dir, &file, view_file_type,
|
||||
(uchar*)view, view_parameters, num_view_backups))
|
||||
(uchar*)view, view_parameters))
|
||||
{
|
||||
error= thd->is_error() ? -1 : 1;
|
||||
goto err;
|
||||
|
|
@ -1963,8 +1947,7 @@ mysql_rename_view(THD *thd,
|
|||
goto err;
|
||||
|
||||
/* rename view and it's backups */
|
||||
if (rename_in_schema_file(thd, view->db, view->table_name, new_name,
|
||||
view_def.revision - 1, num_view_backups))
|
||||
if (rename_in_schema_file(thd, view->db, view->table_name, new_name))
|
||||
goto err;
|
||||
|
||||
dir.str= dir_buff;
|
||||
|
|
@ -1979,12 +1962,10 @@ mysql_rename_view(THD *thd,
|
|||
file.length= pathstr.length - dir.length;
|
||||
|
||||
if (sql_create_definition_file(&dir, &file, view_file_type,
|
||||
(uchar*)&view_def, view_parameters,
|
||||
num_view_backups))
|
||||
(uchar*)&view_def, view_parameters))
|
||||
{
|
||||
/* restore renamed view in case of error */
|
||||
rename_in_schema_file(thd, view->db, new_name, view->table_name,
|
||||
view_def.revision - 1, num_view_backups);
|
||||
rename_in_schema_file(thd, view->db, new_name, view->table_name);
|
||||
goto err;
|
||||
}
|
||||
} else
|
||||
|
|
|
|||
|
|
@ -1244,7 +1244,6 @@ struct TABLE_LIST
|
|||
st_lex_user definer; /* definer of view */
|
||||
ulonglong file_version; /* version of file's field set */
|
||||
ulonglong updatable_view; /* VIEW can be updated */
|
||||
ulonglong revision; /* revision control number */
|
||||
/**
|
||||
@brief The declared algorithm, if this is a view.
|
||||
@details One of
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue