Merge branch '5.5' into 10.0
This commit is contained in:
commit
cfeedbfd3e
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -51,6 +51,7 @@ MYSQL_ADD_EXECUTABLE(mysqldump mysqldump.c ../sql-common/my_user.c)
|
|||||||
TARGET_LINK_LIBRARIES(mysqldump mysqlclient)
|
TARGET_LINK_LIBRARIES(mysqldump mysqlclient)
|
||||||
|
|
||||||
MYSQL_ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
MYSQL_ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||||
|
SET_SOURCE_FILES_PROPERTIES(mysqlimport.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient)
|
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient)
|
||||||
|
|
||||||
MYSQL_ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c COMPONENT Server)
|
MYSQL_ADD_EXECUTABLE(mysql_upgrade mysql_upgrade.c COMPONENT Server)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||||
|
Copyright (c) 2011, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -30,7 +31,6 @@
|
|||||||
|
|
||||||
#include "client_priv.h"
|
#include "client_priv.h"
|
||||||
#include "mysql_version.h"
|
#include "mysql_version.h"
|
||||||
#include <my_pthread.h>
|
|
||||||
|
|
||||||
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
|
#include <welcome_copyright_notice.h> /* ORACLE_WELCOME_COPYRIGHT_NOTICE */
|
||||||
|
|
||||||
@ -484,7 +484,6 @@ static void db_disconnect(char *host, MYSQL *mysql)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void safe_exit(int error, MYSQL *mysql)
|
static void safe_exit(int error, MYSQL *mysql)
|
||||||
{
|
{
|
||||||
if (error && ignore_errors)
|
if (error && ignore_errors)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -50,10 +50,12 @@ IF(CMAKE_C_COMPILER MATCHES "icl")
|
|||||||
SET(MSVC TRUE)
|
SET(MSVC TRUE)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
ADD_DEFINITIONS(-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE)
|
||||||
ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
|
ADD_DEFINITIONS(-D_WIN32_WINNT=0x0501)
|
||||||
|
# We do not want the windows.h macros min/max
|
||||||
|
ADD_DEFINITIONS(-DNOMINMAX)
|
||||||
# Speed up build process excluding unused header files
|
# Speed up build process excluding unused header files
|
||||||
ADD_DEFINITIONS("-DWIN32_LEAN_AND_MEAN")
|
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN)
|
||||||
|
|
||||||
# Adjust compiler and linker flags
|
# Adjust compiler and linker flags
|
||||||
IF(MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
IF(MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||||
|
@ -12,6 +12,35 @@ before calling SSL_new();
|
|||||||
|
|
||||||
*** end Note ***
|
*** end Note ***
|
||||||
|
|
||||||
|
yaSSL Release notes, version 2.3.8 (9/17/2015)
|
||||||
|
This release of yaSSL fixes a high security vulnerability. All users
|
||||||
|
SHOULD update. If using yaSSL for TLS on the server side with private
|
||||||
|
RSA keys allowing ephemeral key exchange you MUST update and regenerate
|
||||||
|
the RSA private keys. This report is detailed in:
|
||||||
|
https://people.redhat.com/~fweimer/rsa-crt-leaks.pdf
|
||||||
|
yaSSL now detects RSA signature faults and returns an error.
|
||||||
|
|
||||||
|
yaSSL Patch notes, version 2.3.7e (6/26/2015)
|
||||||
|
This release of yaSSL includes a fix for Date less than comparison.
|
||||||
|
Previously yaSSL would return true on less than comparisons if the Dates
|
||||||
|
were equal. Reported by Oracle. No security problem, but if a cert was
|
||||||
|
generated right now, a server started using it in the same second, and a
|
||||||
|
client tried to verify it in the same second it would report not yet valid.
|
||||||
|
|
||||||
|
yaSSL Patch notes, version 2.3.7d (6/22/2015)
|
||||||
|
This release of yaSSL includes a fix for input_buffer set_current with
|
||||||
|
index 0. SSL_peek() at front of waiting data could trigger. Robert
|
||||||
|
Golebiowski of Oracle identified and suggested a fix, thanks!
|
||||||
|
|
||||||
|
yaSSL Patch notes, version 2.3.7c (6/12/2015)
|
||||||
|
This release of yaSSL does certificate DATE comparisons to the second
|
||||||
|
instead of to the minute, helpful when using freshly generated certs.
|
||||||
|
Though keep in mind that time sync differences could still show up.
|
||||||
|
|
||||||
|
yaSSL Patch notes, version 2.3.7b (3/18/2015)
|
||||||
|
This release of yaSSL fixes a potential crash with corrupted private keys.
|
||||||
|
Also detects bad keys earlier for user.
|
||||||
|
|
||||||
yaSSL Release notes, version 2.3.7 (12/10/2014)
|
yaSSL Release notes, version 2.3.7 (12/10/2014)
|
||||||
This release of yaSSL fixes the potential to process duplicate handshake
|
This release of yaSSL fixes the potential to process duplicate handshake
|
||||||
messages by explicitly marking/checking received handshake messages.
|
messages by explicitly marking/checking received handshake messages.
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
#include "rsa.h"
|
#include "rsa.h"
|
||||||
|
|
||||||
|
|
||||||
#define YASSL_VERSION "2.3.7"
|
#define YASSL_VERSION "2.3.8"
|
||||||
|
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
|
@ -53,7 +53,8 @@ enum YasslError {
|
|||||||
compress_error = 118,
|
compress_error = 118,
|
||||||
decompress_error = 119,
|
decompress_error = 119,
|
||||||
pms_version_error = 120,
|
pms_version_error = 120,
|
||||||
sanityCipher_error = 121
|
sanityCipher_error = 121,
|
||||||
|
rsaSignFault_error = 122
|
||||||
|
|
||||||
// !!!! add error message to .cpp !!!!
|
// !!!! add error message to .cpp !!!!
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ void input_buffer::set_error()
|
|||||||
|
|
||||||
void input_buffer::set_current(uint i)
|
void input_buffer::set_current(uint i)
|
||||||
{
|
{
|
||||||
if (error_ == 0 && (i == 0 || check(i - 1, size_) == 0))
|
if (error_ == 0 && check(i ? i - 1 : 0, size_) == 0)
|
||||||
current_ = i;
|
current_ = i;
|
||||||
else
|
else
|
||||||
error_ = -1;
|
error_ = -1;
|
||||||
|
@ -1173,6 +1173,8 @@ void sendCertificateVerify(SSL& ssl, BufferOutput buffer)
|
|||||||
|
|
||||||
CertificateVerify verify;
|
CertificateVerify verify;
|
||||||
verify.Build(ssl);
|
verify.Build(ssl);
|
||||||
|
if (ssl.GetError()) return;
|
||||||
|
|
||||||
RecordLayerHeader rlHeader;
|
RecordLayerHeader rlHeader;
|
||||||
HandShakeHeader hsHeader;
|
HandShakeHeader hsHeader;
|
||||||
mySTL::auto_ptr<output_buffer> out(NEW_YS output_buffer);
|
mySTL::auto_ptr<output_buffer> out(NEW_YS output_buffer);
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#include "file.hpp" // for TaoCrypt Source
|
#include "file.hpp" // for TaoCrypt Source
|
||||||
#include "coding.hpp" // HexDecoder
|
#include "coding.hpp" // HexDecoder
|
||||||
#include "helpers.hpp" // for placement new hack
|
#include "helpers.hpp" // for placement new hack
|
||||||
|
#include "rsa.hpp" // for TaoCrypt RSA key decode
|
||||||
|
#include "dsa.hpp" // for TaoCrypt DSA key decode
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
@ -55,6 +57,8 @@ namespace yaSSL {
|
|||||||
|
|
||||||
int read_file(SSL_CTX* ctx, const char* file, int format, CertType type)
|
int read_file(SSL_CTX* ctx, const char* file, int format, CertType type)
|
||||||
{
|
{
|
||||||
|
int ret = SSL_SUCCESS;
|
||||||
|
|
||||||
if (format != SSL_FILETYPE_ASN1 && format != SSL_FILETYPE_PEM)
|
if (format != SSL_FILETYPE_ASN1 && format != SSL_FILETYPE_PEM)
|
||||||
return SSL_BAD_FILETYPE;
|
return SSL_BAD_FILETYPE;
|
||||||
|
|
||||||
@ -142,8 +146,31 @@ int read_file(SSL_CTX* ctx, const char* file, int format, CertType type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type == PrivateKey && ctx->privateKey_) {
|
||||||
|
// see if key is valid early
|
||||||
|
TaoCrypt::Source rsaSource(ctx->privateKey_->get_buffer(),
|
||||||
|
ctx->privateKey_->get_length());
|
||||||
|
TaoCrypt::RSA_PrivateKey rsaKey;
|
||||||
|
rsaKey.Initialize(rsaSource);
|
||||||
|
|
||||||
|
if (rsaSource.GetError().What()) {
|
||||||
|
// rsa failed see if DSA works
|
||||||
|
|
||||||
|
TaoCrypt::Source dsaSource(ctx->privateKey_->get_buffer(),
|
||||||
|
ctx->privateKey_->get_length());
|
||||||
|
TaoCrypt::DSA_PrivateKey dsaKey;
|
||||||
|
dsaKey.Initialize(dsaSource);
|
||||||
|
|
||||||
|
if (rsaSource.GetError().What()) {
|
||||||
|
// neither worked
|
||||||
|
ret = SSL_FAILURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fclose(input);
|
fclose(input);
|
||||||
return SSL_SUCCESS;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -148,6 +148,10 @@ void SetErrorString(YasslError error, char* buffer)
|
|||||||
strncpy(buffer, "sanity check on cipher text size error", max);
|
strncpy(buffer, "sanity check on cipher text size error", max);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case rsaSignFault_error:
|
||||||
|
strncpy(buffer, "rsa signature fault error", max);
|
||||||
|
break;
|
||||||
|
|
||||||
// openssl errors
|
// openssl errors
|
||||||
case SSL_ERROR_WANT_READ :
|
case SSL_ERROR_WANT_READ :
|
||||||
strncpy(buffer, "the read operation would block", max);
|
strncpy(buffer, "the read operation would block", max);
|
||||||
|
@ -196,9 +196,16 @@ void DH_Server::build(SSL& ssl)
|
|||||||
sha.update(tmp.get_buffer(), tmp.get_size());
|
sha.update(tmp.get_buffer(), tmp.get_size());
|
||||||
sha.get_digest(&hash[MD5_LEN]);
|
sha.get_digest(&hash[MD5_LEN]);
|
||||||
|
|
||||||
if (ssl.getSecurity().get_parms().sig_algo_ == rsa_sa_algo)
|
if (ssl.getSecurity().get_parms().sig_algo_ == rsa_sa_algo) {
|
||||||
auth->sign(signature_, hash, sizeof(hash),
|
auth->sign(signature_, hash, sizeof(hash),
|
||||||
ssl.getCrypto().get_random());
|
ssl.getCrypto().get_random());
|
||||||
|
// check for rsa signautre fault
|
||||||
|
if (!auth->verify(hash, sizeof(hash), signature_,
|
||||||
|
auth->get_signatureLength())) {
|
||||||
|
ssl.SetError(rsaSignFault_error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
auth->sign(signature_, &hash[MD5_LEN], SHA_LEN,
|
auth->sign(signature_, &hash[MD5_LEN], SHA_LEN,
|
||||||
ssl.getCrypto().get_random());
|
ssl.getCrypto().get_random());
|
||||||
@ -2159,6 +2166,12 @@ void CertificateVerify::Build(SSL& ssl)
|
|||||||
memcpy(sig.get(), len, VERIFY_HEADER);
|
memcpy(sig.get(), len, VERIFY_HEADER);
|
||||||
rsa.sign(sig.get() + VERIFY_HEADER, hashes_.md5_, sizeof(Hashes),
|
rsa.sign(sig.get() + VERIFY_HEADER, hashes_.md5_, sizeof(Hashes),
|
||||||
ssl.getCrypto().get_random());
|
ssl.getCrypto().get_random());
|
||||||
|
// check for rsa signautre fault
|
||||||
|
if (!rsa.verify(hashes_.md5_, sizeof(Hashes), sig.get() + VERIFY_HEADER,
|
||||||
|
rsa.get_cipherLength())) {
|
||||||
|
ssl.SetError(rsaSignFault_error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else { // DSA
|
else { // DSA
|
||||||
DSS dss(cert.get_privateKey(), cert.get_privateKeyLength(), false);
|
DSS dss(cert.get_privateKey(), cert.get_privateKeyLength(), false);
|
||||||
|
@ -84,7 +84,7 @@ void ASN1_TIME_extract(const unsigned char* date, unsigned char format,
|
|||||||
namespace { // locals
|
namespace { // locals
|
||||||
|
|
||||||
|
|
||||||
// to the minute
|
// to the second
|
||||||
bool operator>(tm& a, tm& b)
|
bool operator>(tm& a, tm& b)
|
||||||
{
|
{
|
||||||
if (a.tm_year > b.tm_year)
|
if (a.tm_year > b.tm_year)
|
||||||
@ -105,13 +105,18 @@ bool operator>(tm& a, tm& b)
|
|||||||
a.tm_min > b.tm_min)
|
a.tm_min > b.tm_min)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (a.tm_year == b.tm_year && a.tm_mon == b.tm_mon &&
|
||||||
|
a.tm_mday == b.tm_mday && a.tm_hour == b.tm_hour &&
|
||||||
|
a.tm_min == b.tm_min && a.tm_sec > b.tm_sec)
|
||||||
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool operator<(tm& a, tm&b)
|
bool operator<(tm& a, tm&b)
|
||||||
{
|
{
|
||||||
return !(a>b);
|
return (b>a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -140,6 +140,10 @@ word32 RSA_BlockType2::UnPad(const byte *pkcsBlock, unsigned int pkcsBlockLen,
|
|||||||
void RSA_BlockType1::Pad(const byte* input, word32 inputLen, byte* pkcsBlock,
|
void RSA_BlockType1::Pad(const byte* input, word32 inputLen, byte* pkcsBlock,
|
||||||
word32 pkcsBlockLen, RandomNumberGenerator&) const
|
word32 pkcsBlockLen, RandomNumberGenerator&) const
|
||||||
{
|
{
|
||||||
|
// sanity checks
|
||||||
|
if (input == NULL || pkcsBlock == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
// convert from bit length to byte length
|
// convert from bit length to byte length
|
||||||
if (pkcsBlockLen % 8 != 0)
|
if (pkcsBlockLen % 8 != 0)
|
||||||
{
|
{
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
no_pid=-1
|
||||||
server_pid=$no_pid
|
server_pid=$no_pid
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,9 +11,7 @@
|
|||||||
##############################################################################
|
##############################################################################
|
||||||
tablespace : disabled in MariaDB (no TABLESPACE table attribute)
|
tablespace : disabled in MariaDB (no TABLESPACE table attribute)
|
||||||
events_time_zone : Test is not predictable as it depends on precise timing.
|
events_time_zone : Test is not predictable as it depends on precise timing.
|
||||||
lowercase_table3 : Bug#11762269 2010-06-30 alik main.lowercase_table3 on Mac OSX
|
|
||||||
read_many_rows_innodb : Bug#11748886 2010-11-15 mattiasj report already exists
|
read_many_rows_innodb : Bug#11748886 2010-11-15 mattiasj report already exists
|
||||||
archive-big : Bug#11817185 2011-03-10 Anitha Disabled since this leads to timeout on Solaris Sparc
|
|
||||||
log_tables-big : Bug#11756699 2010-11-15 mattiasj report already exists
|
log_tables-big : Bug#11756699 2010-11-15 mattiasj report already exists
|
||||||
mysql_embedded : Bug#12561297 2011-05-14 Anitha Dependent on PB2 changes - eventum#41836
|
mysql_embedded : Bug#12561297 2011-05-14 Anitha Dependent on PB2 changes - eventum#41836
|
||||||
#show_explain : Psergey: random timeout in range-checked-for-each record query.
|
#show_explain : Psergey: random timeout in range-checked-for-each record query.
|
||||||
@ -21,3 +19,4 @@ ssl_crl_clients_valid : broken upstream
|
|||||||
ssl_crl : broken upstream
|
ssl_crl : broken upstream
|
||||||
ssl_crl_clrpath : broken upstream
|
ssl_crl_clrpath : broken upstream
|
||||||
file_contents : MDEV-6526 these files are not installed anymore
|
file_contents : MDEV-6526 these files are not installed anymore
|
||||||
|
lowercase_fs_on : lower_case_table_names=0 is not an error until 10.1
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
# ==== Usage ====
|
||||||
|
#
|
||||||
|
# [--let $shutdown_timeout= 30]
|
||||||
|
# [--let $allow_rpl_inited= 1]
|
||||||
|
# --source include/restart_mysqld.inc
|
||||||
|
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
if ($rpl_inited)
|
if ($rpl_inited)
|
||||||
@ -8,6 +14,16 @@ if ($rpl_inited)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
--let $server_shutdown_timeout= 60
|
||||||
|
if ($shutdown_timeout)
|
||||||
|
{
|
||||||
|
--let $server_shutdown_timeout= $shutdown_timeout
|
||||||
|
}
|
||||||
|
if ($shutdown_timeout == 0)
|
||||||
|
{
|
||||||
|
--let $server_shutdown_timeout= 0
|
||||||
|
}
|
||||||
|
|
||||||
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
# Write file to make mysql-test-run.pl expect the "crash", but don't start
|
||||||
# it until it's told to
|
# it until it's told to
|
||||||
--let $_server_id= `SELECT @@server_id`
|
--let $_server_id= `SELECT @@server_id`
|
||||||
@ -15,8 +31,8 @@ if ($rpl_inited)
|
|||||||
--exec echo "wait" > $_expect_file_name
|
--exec echo "wait" > $_expect_file_name
|
||||||
|
|
||||||
# Send shutdown to the connected server and give
|
# Send shutdown to the connected server and give
|
||||||
# it 60 seconds to die before zapping it
|
# it 10 seconds to die before zapping it
|
||||||
shutdown_server 60;
|
shutdown_server $server_shutdown_timeout;
|
||||||
|
|
||||||
# Write file to make mysql-test-run.pl start up the server again
|
# Write file to make mysql-test-run.pl start up the server again
|
||||||
--exec echo "restart" > $_expect_file_name
|
--exec echo "restart" > $_expect_file_name
|
||||||
|
@ -234,3 +234,20 @@ SELECT if(1, NULL, (SELECT min('hello')));
|
|||||||
if(1, NULL, (SELECT min('hello')))
|
if(1, NULL, (SELECT min('hello')))
|
||||||
NULL
|
NULL
|
||||||
End of 5.2 tests
|
End of 5.2 tests
|
||||||
|
#
|
||||||
|
# MDEV-8663: IF Statement returns multiple values erroneously
|
||||||
|
# (or Assertion `!null_value' failed in Item::send(Protocol*, String*)
|
||||||
|
#
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`datas` VARCHAR(25) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
Warnings:
|
||||||
|
Warning 1286 Unknown storage engine 'InnoDB'
|
||||||
|
Warning 1266 Using storage engine MyISAM for table 't1'
|
||||||
|
INSERT INTO `t1` VALUES ('1,2'), ('2,3'), ('3,4');
|
||||||
|
SELECT IF(FIND_IN_SET('1', `datas`), 1.5, IF(FIND_IN_SET('2', `datas`), 2, NULL)) AS `First`, '1' AS `Second`, '2' AS `Third` FROM `t1`;
|
||||||
|
First Second Third
|
||||||
|
1.5 1 2
|
||||||
|
2.0 1 2
|
||||||
|
NULL 1 2
|
||||||
|
drop table t1;
|
||||||
|
@ -374,6 +374,207 @@ NULL
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 1411 Incorrect timeout value: '-1' for function get_lock
|
Warning 1411 Incorrect timeout value: '-1' for function get_lock
|
||||||
#
|
#
|
||||||
|
# MDEV-8624 MariaDB hangs on query with many logical condition
|
||||||
|
#
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`submitdate` datetime DEFAULT NULL,
|
||||||
|
`lastpage` int(11) DEFAULT NULL,
|
||||||
|
`startlanguage` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`token` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`datestamp` datetime NOT NULL,
|
||||||
|
`startdate` datetime NOT NULL,
|
||||||
|
`ipaddr` text COLLATE utf8_unicode_ci,
|
||||||
|
`refurl` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X540X1723` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X540X1724` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X540X1725` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X540X1726` double DEFAULT NULL,
|
||||||
|
`57813X540X1909` double DEFAULT NULL,
|
||||||
|
`57813X541X17271` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17272` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17273` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17274` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17275` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17276` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17281` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17282` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17283` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17284` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17285` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17286` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18131` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18132` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18133` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18134` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18135` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18136` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18137` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18138` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18139` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18141` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18142` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18143` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18144` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18145` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18146` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18147` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18148` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18149` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18451` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18452` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18453` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18454` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18455` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18456` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18461` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18462` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18463` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18464` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18465` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18466` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18711` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18712` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18713` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18714` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18715` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18716` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18717` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18718` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18721` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18722` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18723` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18724` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18725` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18726` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18727` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18728` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X546X1902` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X546X1903` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X546X1904` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X545X1901` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `lime_survey_57813_idx` (`token`),
|
||||||
|
KEY `57813X540X1723` (`57813X540X1723`(100)),
|
||||||
|
KEY `57813X540X1724` (`57813X540X1724`(100)),
|
||||||
|
KEY `57813X540X1726` (`57813X540X1726`),
|
||||||
|
KEY `57813X540X1725` (`57813X540X1725`(100)),
|
||||||
|
KEY `57813X546X1902` (`57813X546X1902`),
|
||||||
|
KEY `57813X546X1903` (`57813X546X1903`),
|
||||||
|
KEY `57813X546X1904` (`57813X546X1904`)
|
||||||
|
);
|
||||||
|
SELECT
|
||||||
|
COUNT(*) as `N`,
|
||||||
|
ROUND(
|
||||||
|
(
|
||||||
|
SUM(
|
||||||
|
(
|
||||||
|
(
|
||||||
|
IF( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99', 57813X541X17271, 0 ) +
|
||||||
|
IF( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99', 57813X541X17272, 0 ) +
|
||||||
|
IF( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99', 57813X541X17273, 0 ) +
|
||||||
|
IF( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99', 57813X541X17274, 0 ) +
|
||||||
|
IF( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99', 57813X541X17275, 0 ) +
|
||||||
|
IF( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99', 57813X541X17276, 0 ) +
|
||||||
|
IF( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99', 57813X542X18131, 0 ) +
|
||||||
|
IF( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99', 57813X542X18132, 0 ) +
|
||||||
|
IF( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99', 57813X542X18133, 0 ) +
|
||||||
|
IF( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99', 57813X542X18134, 0 ) +
|
||||||
|
IF( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99', 57813X542X18135, 0 ) +
|
||||||
|
IF( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99', 57813X542X18136, 0 ) +
|
||||||
|
IF( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99', 57813X542X18137, 0 ) +
|
||||||
|
IF( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99', 57813X542X18138, 0 ) +
|
||||||
|
IF( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99', 57813X542X18139, 0 ) +
|
||||||
|
IF( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99', 57813X543X18451, 0 ) +
|
||||||
|
IF( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99', 57813X543X18452, 0 ) +
|
||||||
|
IF( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99', 57813X543X18453, 0 ) +
|
||||||
|
IF( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99', 57813X543X18454, 0 ) +
|
||||||
|
IF( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99', 57813X543X18455, 0 ) +
|
||||||
|
IF( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99', 57813X543X18456, 0 ) +
|
||||||
|
IF( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99', 57813X544X18711, 0 ) +
|
||||||
|
IF( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99', 57813X544X18712, 0 ) +
|
||||||
|
IF( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99', 57813X544X18713, 0 ) +
|
||||||
|
IF( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99', 57813X544X18714, 0 ) +
|
||||||
|
IF( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99', 57813X544X18715, 0 ) +
|
||||||
|
IF( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99', 57813X544X18716, 0 ) +
|
||||||
|
IF( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99', 57813X544X18717, 0 ) +
|
||||||
|
IF( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99', 57813X544X18718, 0 )
|
||||||
|
)
|
||||||
|
/
|
||||||
|
(
|
||||||
|
IF( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99', 1, 0 )
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
/ COUNT(*) ), 4) as `AVG`
|
||||||
|
FROM `t1`
|
||||||
|
WHERE `submitdate` IS NOT NULL
|
||||||
|
AND (
|
||||||
|
( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99' ) OR
|
||||||
|
( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99' ) OR
|
||||||
|
( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99' ) OR
|
||||||
|
( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99' ) OR
|
||||||
|
( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99' ) OR
|
||||||
|
( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99' ) OR
|
||||||
|
( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99' ) OR
|
||||||
|
( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99' ) OR
|
||||||
|
( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99' ) OR
|
||||||
|
( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99' ) OR
|
||||||
|
( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99' ) OR
|
||||||
|
( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99' ) OR
|
||||||
|
( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99' ) OR
|
||||||
|
( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99' ) OR
|
||||||
|
( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99' ) OR
|
||||||
|
( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99' ) OR
|
||||||
|
( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99' ) OR
|
||||||
|
( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99' ) OR
|
||||||
|
( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99' ) OR
|
||||||
|
( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99' ) OR
|
||||||
|
( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99' ) OR
|
||||||
|
( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99' ) OR
|
||||||
|
( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99' ) OR
|
||||||
|
( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99' ) OR
|
||||||
|
( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99' ) OR
|
||||||
|
( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99' ) OR
|
||||||
|
( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99' ) OR
|
||||||
|
( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99' ) OR
|
||||||
|
( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99' ) )
|
||||||
|
AND 57813X540X1723 = 'Test';
|
||||||
|
N AVG
|
||||||
|
0 NULL
|
||||||
|
drop table t1;
|
||||||
|
#
|
||||||
|
# End of 5.5 tests
|
||||||
|
#
|
||||||
|
#
|
||||||
# GET_LOCK, RELEASE_LOCK, IS_USED_LOCK functions test
|
# GET_LOCK, RELEASE_LOCK, IS_USED_LOCK functions test
|
||||||
#
|
#
|
||||||
# IS_USED_LOCK, IS_FREE_LOCK: the lock is not acquired
|
# IS_USED_LOCK, IS_FREE_LOCK: the lock is not acquired
|
||||||
@ -594,9 +795,6 @@ select is_free_lock(repeat('a', 193));
|
|||||||
ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long
|
ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long
|
||||||
select release_lock(repeat('a', 193));
|
select release_lock(repeat('a', 193));
|
||||||
ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long
|
ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long
|
||||||
#
|
|
||||||
# End of 5.5 tests
|
|
||||||
#
|
|
||||||
|
|
||||||
# --
|
# --
|
||||||
# -- WL#5787: IPv6-capable INET_ATON and INET_NTOA functions.
|
# -- WL#5787: IPv6-capable INET_ATON and INET_NTOA functions.
|
||||||
|
@ -6,15 +6,15 @@ select variable_name from information_schema.session_variables where variable_na
|
|||||||
(select variable_name from information_schema.session_variables where variable_name = 'basedir');
|
(select variable_name from information_schema.session_variables where variable_name = 'basedir');
|
||||||
variable_name
|
variable_name
|
||||||
BASEDIR
|
BASEDIR
|
||||||
create table t1 (a char);
|
create table t1 (x int);
|
||||||
insert t1 values ('a'),('t'),('z');
|
create table t2 (x int);
|
||||||
flush status;
|
create table t3 (x int);
|
||||||
select a, exists (select 1 from information_schema.columns where table_schema=concat('tes',a)) from t1;
|
create table t4 AS select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE' ;
|
||||||
a exists (select 1 from information_schema.columns where table_schema=concat('tes',a))
|
delete from t4 where table_name not in (select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE');
|
||||||
a 0
|
select * from t4;
|
||||||
t 1
|
table_name
|
||||||
z 0
|
t1
|
||||||
show status like 'created_tmp_tables';
|
t2
|
||||||
Variable_name Value
|
t3
|
||||||
Created_tmp_tables 43
|
t4
|
||||||
drop table t1;
|
drop table t1, t2, t3, t4;
|
||||||
|
@ -93,3 +93,30 @@ a b
|
|||||||
216 !&bb b;
|
216 !&bb b;
|
||||||
3 !b3
|
3 !b3
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# Bug#16171518 LOAD XML DOES NOT HANDLE EMPTY ELEMENTS
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (col1 VARCHAR(3), col2 VARCHAR(3), col3 VARCHAR(3), col4 VARCHAR(4));
|
||||||
|
LOAD XML INFILE '../../std_data/bug16171518_1.dat' INTO TABLE t1;
|
||||||
|
SELECT * FROM t1 ORDER BY col1, col2, col3, col4;
|
||||||
|
col1 col2 col3 col4
|
||||||
|
0bc def ghi jkl
|
||||||
|
1no NULL pqr stu
|
||||||
|
2BC DEF GHI JKL
|
||||||
|
3NO NULL PQR STU
|
||||||
|
4bc def ghi jkl
|
||||||
|
5no pqr stu vwx
|
||||||
|
6BC DEF NULL JKL
|
||||||
|
7NO PQR STU VWX
|
||||||
|
8bc def ghi NULL
|
||||||
|
9kl NULL mno pqr
|
||||||
|
ABC DEF NULL JKL
|
||||||
|
MNO NULL STU VWX
|
||||||
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (col1 VARCHAR(3), col2 VARCHAR(3), col3 INTEGER);
|
||||||
|
LOAD XML INFILE '../../std_data/bug16171518_2.dat' INTO TABLE t1;
|
||||||
|
SELECT * FROM t1 ORDER BY col1, col2, col3;
|
||||||
|
col1 col2 col3
|
||||||
|
ABC DEF NULL
|
||||||
|
GHI NULL 123
|
||||||
|
DROP TABLE t1;
|
||||||
|
3
mysql-test/r/lowercase_fs_on.result
Normal file
3
mysql-test/r/lowercase_fs_on.result
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#
|
||||||
|
# Bug#20198490 : LOWER_CASE_TABLE_NAMES=0 ON WINDOWS LEADS TO PROBLEMS
|
||||||
|
#
|
@ -1,11 +0,0 @@
|
|||||||
call mtr.add_suppression("Cannot find or open table test/BUG29839 from");
|
|
||||||
DROP TABLE IF EXISTS t1,T1;
|
|
||||||
CREATE TABLE t1 (a INT);
|
|
||||||
SELECT * FROM T1;
|
|
||||||
a
|
|
||||||
FLUSH TABLES;
|
|
||||||
DROP TABLE t1;
|
|
||||||
CREATE TABLE bug29839 (a INT) ENGINE=INNODB;
|
|
||||||
SELECT * FROM BUG29839;
|
|
||||||
ERROR 42S02: Table 'test.BUG29839' doesn't exist
|
|
||||||
DROP TABLE bug29839;
|
|
@ -4292,7 +4292,6 @@ Abernathy
|
|||||||
aberrant
|
aberrant
|
||||||
aberration
|
aberration
|
||||||
drop table words;
|
drop table words;
|
||||||
mysqlimport: Error: 1146, Table 'test.words' doesn't exist, when using table: words
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
drop table words2;
|
drop table words2;
|
||||||
@ -5286,6 +5285,34 @@ drop table t1, t2;
|
|||||||
#
|
#
|
||||||
# End of 5.1 tests
|
# End of 5.1 tests
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Bug #20772273 : MYSQLIMPORT --USE-THREADS DOESN'T USE MULTIPLE THREADS
|
||||||
|
#
|
||||||
|
CREATE DATABASE db_20772273;
|
||||||
|
USE db_20772273;
|
||||||
|
CREATE TABLE t1(a INT);
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
CREATE TABLE t2(a INT);
|
||||||
|
INSERT INTO t2 VALUES (3), (4);
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SELECT * FROM t2;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
4
|
||||||
|
SELECT * FROM t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
SELECT * FROM t2;
|
||||||
|
a
|
||||||
|
3
|
||||||
|
4
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP DATABASE db_20772273;
|
||||||
Usage: mysqldump [OPTIONS] database [tables]
|
Usage: mysqldump [OPTIONS] database [tables]
|
||||||
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
|
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
|
||||||
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
|
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
|
||||||
|
@ -1099,7 +1099,7 @@ partition by key (a)
|
|||||||
subpartition by hash (sin(a+b))
|
subpartition by hash (sin(a+b))
|
||||||
(partition x1 (subpartition x11, subpartition x12),
|
(partition x1 (subpartition x11, subpartition x12),
|
||||||
partition x2 (subpartition x21, subpartition x22));
|
partition x2 (subpartition x21, subpartition x22));
|
||||||
ERROR HY000: It is only possible to mix RANGE/LIST partitioning with HASH/KEY partitioning for subpartitioning
|
ERROR HY000: This partition function is not allowed
|
||||||
select load_file('$MYSQLD_DATADIR/test/t1.par');
|
select load_file('$MYSQLD_DATADIR/test/t1.par');
|
||||||
load_file('$MYSQLD_DATADIR/test/t1.par')
|
load_file('$MYSQLD_DATADIR/test/t1.par')
|
||||||
NULL
|
NULL
|
||||||
|
@ -81,7 +81,7 @@ SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
|||||||
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
||||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||||
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
||||||
ERROR HY000: Incorrect parameters to procedure 'ANALYSE'
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT 1))' at line 1
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
||||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
||||||
@ -3591,7 +3591,7 @@ delete from t1 where c <= 1140006215 and (select b from t2 where a = 2) = 1;
|
|||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'IN/ALL/ANY subquery'
|
||||||
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||||
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
@ -7019,3 +7019,69 @@ select exists(select 1 from t1 group by `c` in (select `c` from t1));
|
|||||||
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
||||||
0
|
0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-7565: Server crash with Signal 6 (part 2)
|
||||||
|
#
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# MDEV-7445:Server crash with Signal 6
|
||||||
|
#
|
||||||
|
CREATE PROCEDURE procedure2()
|
||||||
|
BEGIN
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
END |
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
drop procedure procedure2;
|
||||||
|
SELECT
|
||||||
|
(SELECT user FROM mysql.user
|
||||||
|
WHERE h.host in (SELECT host FROM mysql.user)
|
||||||
|
) AS sq
|
||||||
|
FROM mysql.host h GROUP BY h.host;
|
||||||
|
sq
|
||||||
|
#
|
||||||
|
# MDEV-7846:Server crashes in Item_subselect::fix
|
||||||
|
#_fields or fails with Thread stack overrun
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (column1 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (3),(9);
|
||||||
|
CREATE TABLE t2 (column2 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1),(4);
|
||||||
|
CREATE TABLE t3 (column3 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t3 VALUES (6),(8);
|
||||||
|
CREATE TABLE t4 (column4 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t4 VALUES (2),(5);
|
||||||
|
PREPARE stmt FROM "
|
||||||
|
SELECT (
|
||||||
|
SELECT MAX( table1.column1 ) AS field1
|
||||||
|
FROM t1 AS table1
|
||||||
|
WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 )
|
||||||
|
) AS sq
|
||||||
|
FROM t3 AS table3, t4 AS table4 GROUP BY sq
|
||||||
|
";
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
@ -88,7 +88,7 @@ SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
|||||||
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
||||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||||
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
||||||
ERROR HY000: Incorrect parameters to procedure 'ANALYSE'
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT 1))' at line 1
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
||||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
||||||
@ -3594,7 +3594,7 @@ delete from t1 where c <= 1140006215 and (select b from t2 where a = 2) = 1;
|
|||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'IN/ALL/ANY subquery'
|
||||||
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||||
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
@ -7012,6 +7012,72 @@ select exists(select 1 from t1 group by `c` in (select `c` from t1));
|
|||||||
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
||||||
0
|
0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-7565: Server crash with Signal 6 (part 2)
|
||||||
|
#
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# MDEV-7445:Server crash with Signal 6
|
||||||
|
#
|
||||||
|
CREATE PROCEDURE procedure2()
|
||||||
|
BEGIN
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
END |
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
drop procedure procedure2;
|
||||||
|
SELECT
|
||||||
|
(SELECT user FROM mysql.user
|
||||||
|
WHERE h.host in (SELECT host FROM mysql.user)
|
||||||
|
) AS sq
|
||||||
|
FROM mysql.host h GROUP BY h.host;
|
||||||
|
sq
|
||||||
|
#
|
||||||
|
# MDEV-7846:Server crashes in Item_subselect::fix
|
||||||
|
#_fields or fails with Thread stack overrun
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (column1 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (3),(9);
|
||||||
|
CREATE TABLE t2 (column2 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1),(4);
|
||||||
|
CREATE TABLE t3 (column3 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t3 VALUES (6),(8);
|
||||||
|
CREATE TABLE t4 (column4 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t4 VALUES (2),(5);
|
||||||
|
PREPARE stmt FROM "
|
||||||
|
SELECT (
|
||||||
|
SELECT MAX( table1.column1 ) AS field1
|
||||||
|
FROM t1 AS table1
|
||||||
|
WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 )
|
||||||
|
) AS sq
|
||||||
|
FROM t3 AS table3, t4 AS table4 GROUP BY sq
|
||||||
|
";
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
set optimizer_switch=default;
|
set optimizer_switch=default;
|
||||||
select @@optimizer_switch like '%materialization=on%';
|
select @@optimizer_switch like '%materialization=on%';
|
||||||
@@optimizer_switch like '%materialization=on%'
|
@@optimizer_switch like '%materialization=on%'
|
||||||
|
@ -84,7 +84,7 @@ SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
|||||||
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
||||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||||
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
||||||
ERROR HY000: Incorrect parameters to procedure 'ANALYSE'
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT 1))' at line 1
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
||||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
||||||
@ -3590,7 +3590,7 @@ delete from t1 where c <= 1140006215 and (select b from t2 where a = 2) = 1;
|
|||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'IN/ALL/ANY subquery'
|
||||||
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||||
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
@ -7010,4 +7010,70 @@ select exists(select 1 from t1 group by `c` in (select `c` from t1));
|
|||||||
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
||||||
0
|
0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-7565: Server crash with Signal 6 (part 2)
|
||||||
|
#
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# MDEV-7445:Server crash with Signal 6
|
||||||
|
#
|
||||||
|
CREATE PROCEDURE procedure2()
|
||||||
|
BEGIN
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
END |
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
drop procedure procedure2;
|
||||||
|
SELECT
|
||||||
|
(SELECT user FROM mysql.user
|
||||||
|
WHERE h.host in (SELECT host FROM mysql.user)
|
||||||
|
) AS sq
|
||||||
|
FROM mysql.host h GROUP BY h.host;
|
||||||
|
sq
|
||||||
|
#
|
||||||
|
# MDEV-7846:Server crashes in Item_subselect::fix
|
||||||
|
#_fields or fails with Thread stack overrun
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (column1 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (3),(9);
|
||||||
|
CREATE TABLE t2 (column2 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1),(4);
|
||||||
|
CREATE TABLE t3 (column3 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t3 VALUES (6),(8);
|
||||||
|
CREATE TABLE t4 (column4 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t4 VALUES (2),(5);
|
||||||
|
PREPARE stmt FROM "
|
||||||
|
SELECT (
|
||||||
|
SELECT MAX( table1.column1 ) AS field1
|
||||||
|
FROM t1 AS table1
|
||||||
|
WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 )
|
||||||
|
) AS sq
|
||||||
|
FROM t3 AS table3, t4 AS table4 GROUP BY sq
|
||||||
|
";
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
set @optimizer_switch_for_subselect_test=null;
|
set @optimizer_switch_for_subselect_test=null;
|
||||||
|
@ -87,7 +87,7 @@ SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
|||||||
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
||||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||||
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
||||||
ERROR HY000: Incorrect parameters to procedure 'ANALYSE'
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT 1))' at line 1
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
||||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
||||||
@ -3597,7 +3597,7 @@ delete from t1 where c <= 1140006215 and (select b from t2 where a = 2) = 1;
|
|||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'IN/ALL/ANY subquery'
|
||||||
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||||
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
@ -7025,6 +7025,72 @@ select exists(select 1 from t1 group by `c` in (select `c` from t1));
|
|||||||
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
||||||
0
|
0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-7565: Server crash with Signal 6 (part 2)
|
||||||
|
#
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# MDEV-7445:Server crash with Signal 6
|
||||||
|
#
|
||||||
|
CREATE PROCEDURE procedure2()
|
||||||
|
BEGIN
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
END |
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
drop procedure procedure2;
|
||||||
|
SELECT
|
||||||
|
(SELECT user FROM mysql.user
|
||||||
|
WHERE h.host in (SELECT host FROM mysql.user)
|
||||||
|
) AS sq
|
||||||
|
FROM mysql.host h GROUP BY h.host;
|
||||||
|
sq
|
||||||
|
#
|
||||||
|
# MDEV-7846:Server crashes in Item_subselect::fix
|
||||||
|
#_fields or fails with Thread stack overrun
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (column1 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (3),(9);
|
||||||
|
CREATE TABLE t2 (column2 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1),(4);
|
||||||
|
CREATE TABLE t3 (column3 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t3 VALUES (6),(8);
|
||||||
|
CREATE TABLE t4 (column4 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t4 VALUES (2),(5);
|
||||||
|
PREPARE stmt FROM "
|
||||||
|
SELECT (
|
||||||
|
SELECT MAX( table1.column1 ) AS field1
|
||||||
|
FROM t1 AS table1
|
||||||
|
WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 )
|
||||||
|
) AS sq
|
||||||
|
FROM t3 AS table3, t4 AS table4 GROUP BY sq
|
||||||
|
";
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
set optimizer_switch=default;
|
set optimizer_switch=default;
|
||||||
select @@optimizer_switch like '%subquery_cache=on%';
|
select @@optimizer_switch like '%subquery_cache=on%';
|
||||||
@@optimizer_switch like '%subquery_cache=on%'
|
@@optimizer_switch like '%subquery_cache=on%'
|
||||||
|
@ -84,7 +84,7 @@ SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
|||||||
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
||||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||||
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
||||||
ERROR HY000: Incorrect parameters to procedure 'ANALYSE'
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT 1))' at line 1
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
||||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
|
||||||
@ -3590,7 +3590,7 @@ delete from t1 where c <= 1140006215 and (select b from t2 where a = 2) = 1;
|
|||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
CREATE TABLE t1 (a INT);
|
CREATE TABLE t1 (a INT);
|
||||||
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
CREATE VIEW v1 AS SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'IN/ALL/ANY subquery'
|
||||||
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
CREATE VIEW v2 AS SELECT * FROM t1 WHERE no_such_column = (SELECT 1);
|
||||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||||
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
SELECT * FROM t1 WHERE no_such_column = ANY (SELECT 1);
|
||||||
@ -7010,5 +7010,71 @@ select exists(select 1 from t1 group by `c` in (select `c` from t1));
|
|||||||
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
exists(select 1 from t1 group by `c` in (select `c` from t1))
|
||||||
0
|
0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
#
|
||||||
|
# MDEV-7565: Server crash with Signal 6 (part 2)
|
||||||
|
#
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
#
|
||||||
|
# MDEV-7445:Server crash with Signal 6
|
||||||
|
#
|
||||||
|
CREATE PROCEDURE procedure2()
|
||||||
|
BEGIN
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
END |
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
call procedure2();
|
||||||
|
ControlRev
|
||||||
|
NULL
|
||||||
|
drop procedure procedure2;
|
||||||
|
SELECT
|
||||||
|
(SELECT user FROM mysql.user
|
||||||
|
WHERE h.host in (SELECT host FROM mysql.user)
|
||||||
|
) AS sq
|
||||||
|
FROM mysql.host h GROUP BY h.host;
|
||||||
|
sq
|
||||||
|
#
|
||||||
|
# MDEV-7846:Server crashes in Item_subselect::fix
|
||||||
|
#_fields or fails with Thread stack overrun
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (column1 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (3),(9);
|
||||||
|
CREATE TABLE t2 (column2 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t2 VALUES (1),(4);
|
||||||
|
CREATE TABLE t3 (column3 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t3 VALUES (6),(8);
|
||||||
|
CREATE TABLE t4 (column4 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t4 VALUES (2),(5);
|
||||||
|
PREPARE stmt FROM "
|
||||||
|
SELECT (
|
||||||
|
SELECT MAX( table1.column1 ) AS field1
|
||||||
|
FROM t1 AS table1
|
||||||
|
WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 )
|
||||||
|
) AS sq
|
||||||
|
FROM t3 AS table3, t4 AS table4 GROUP BY sq
|
||||||
|
";
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
EXECUTE stmt;
|
||||||
|
sq
|
||||||
|
NULL
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
set @optimizer_switch_for_subselect_test=null;
|
set @optimizer_switch_for_subselect_test=null;
|
||||||
set @join_cache_level_for_subselect_test=NULL;
|
set @join_cache_level_for_subselect_test=NULL;
|
||||||
|
@ -561,6 +561,21 @@ ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function
|
|||||||
DROP VIEW v1;
|
DROP VIEW v1;
|
||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
# Bug #21143080: UPDATE ON VARCHAR AND TEXT COLUMNS PRODUCE INCORRECT
|
||||||
|
# RESULTS
|
||||||
|
CREATE TABLE t1 (a VARCHAR(50), b TEXT, c CHAR(50)) ENGINE=INNODB;
|
||||||
|
INSERT INTO t1 (a, b, c) VALUES ('start trail', '', 'even longer string');
|
||||||
|
UPDATE t1 SET b = a, a = 'inject';
|
||||||
|
SELECT a, b FROM t1;
|
||||||
|
a b
|
||||||
|
inject start trail
|
||||||
|
UPDATE t1 SET b = c, c = 'inject';
|
||||||
|
SELECT c, b FROM t1;
|
||||||
|
c b
|
||||||
|
inject even longer string
|
||||||
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-3948 Assertion `records_are_comparable(table)' fails in compare_record(const TABLE*) on UPDATE with simple AND condition, index_merge+index_merge_intersection, InnoDB
|
||||||
#
|
#
|
||||||
# Verify that UPDATE does the same number of handler_update
|
# Verify that UPDATE does the same number of handler_update
|
||||||
# operations, no matter if there is ORDER BY or not.
|
# operations, no matter if there is ORDER BY or not.
|
||||||
|
@ -4828,6 +4828,41 @@ View Create View character_set_client collation_connection
|
|||||||
v4 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v4` AS (select 'BUG#14117018' AS `col1`) union all (select '' AS `col2`) union all (select '' AS `Name_exp_1`) latin1 latin1_swedish_ci
|
v4 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v4` AS (select 'BUG#14117018' AS `col1`) union all (select '' AS `col2`) union all (select '' AS `Name_exp_1`) latin1 latin1_swedish_ci
|
||||||
DROP VIEW v1, v2, v3, v4, v5;
|
DROP VIEW v1, v2, v3, v4, v5;
|
||||||
#
|
#
|
||||||
|
# BUG#19886430: VIEW CREATION WITH NAMED COLUMNS, OVER UNION,
|
||||||
|
# IS REJECTED
|
||||||
|
# Without the patch, reports an error.
|
||||||
|
CREATE VIEW v1 (fld1, fld2) AS
|
||||||
|
SELECT 1 AS a, 2 AS b
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
# The column names are explicitly specified and not duplicates, hence
|
||||||
|
# succeeds.
|
||||||
|
CREATE VIEW v2 (fld1, fld2) AS
|
||||||
|
SELECT 1 AS a, 2 AS a
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
# The column name in the first SELECT are not duplicates, hence succeeds.
|
||||||
|
CREATE VIEW v3 AS
|
||||||
|
SELECT 1 AS a, 2 AS b
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
# Should report an error, since the explicitly specified column names are
|
||||||
|
# duplicates.
|
||||||
|
CREATE VIEW v4 (fld1, fld1) AS
|
||||||
|
SELECT 1 AS a, 2 AS b
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
ERROR 42S21: Duplicate column name 'fld1'
|
||||||
|
# Should report an error, since duplicate column name is specified in the
|
||||||
|
# First SELECT.
|
||||||
|
CREATE VIEW v4 AS
|
||||||
|
SELECT 1 AS a, 2 AS a
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
ERROR 42S21: Duplicate column name 'a'
|
||||||
|
# Cleanup
|
||||||
|
DROP VIEW v1, v2, v3;
|
||||||
|
#
|
||||||
# lp:833600 Wrong result with view + outer join + uncorrelated subquery (non-semijoin)
|
# lp:833600 Wrong result with view + outer join + uncorrelated subquery (non-semijoin)
|
||||||
#
|
#
|
||||||
CREATE TABLE t1 ( a int, b int );
|
CREATE TABLE t1 ( a int, b int );
|
||||||
|
59
mysql-test/std_data/bug16171518_1.dat
Normal file
59
mysql-test/std_data/bug16171518_1.dat
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<test_rows>
|
||||||
|
<row>
|
||||||
|
<col1>0bc</col1>
|
||||||
|
<col2>def</col2>
|
||||||
|
<col3>ghi</col3>
|
||||||
|
<col4>jkl</col4>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<col1>1no</col1>
|
||||||
|
<col2/>
|
||||||
|
<col3>pqr</col3>
|
||||||
|
<col4>stu</col4>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<col1>2BC</col1>
|
||||||
|
<col2>DEF</col2>
|
||||||
|
<col3>GHI</col3>
|
||||||
|
<col4>JKL</col4>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<col1>3NO</col1>
|
||||||
|
<col2 />
|
||||||
|
<col3>PQR</col3>
|
||||||
|
<col4>STU</col4>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row col1="4bc" col2="def" col3="ghi" col4="jkl"/>
|
||||||
|
<row col1="5no" col2="pqr" col3="stu" col4="vwx" />
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<field name='col1'>6BC</field>
|
||||||
|
<field name='col2'>DEF</field>
|
||||||
|
<field name='col3'></field>
|
||||||
|
<field name='col4'>JKL</field>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<field name='col1'>7NO</field>
|
||||||
|
<field name='col2'>PQR</field>
|
||||||
|
<field name='col3'>STU</field>
|
||||||
|
<field name='col4'>VWX</field>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row>
|
||||||
|
<col1>8bc</col1>
|
||||||
|
<col2>def</col2>
|
||||||
|
<col3>ghi</col3>
|
||||||
|
<col4 />
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<col1>9kl</col1>
|
||||||
|
<col2/>
|
||||||
|
<col3>mno</col3>
|
||||||
|
<col4>pqr</col4>
|
||||||
|
</row>
|
||||||
|
|
||||||
|
<row col1="ABC" col2="DEF" col3="" col4="JKL"/>
|
||||||
|
<row col1="MNO" col2="" col3="STU" col4="VWX"/>
|
||||||
|
</test_rows>
|
12
mysql-test/std_data/bug16171518_2.dat
Normal file
12
mysql-test/std_data/bug16171518_2.dat
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<test_rows>
|
||||||
|
<row>
|
||||||
|
<col1>ABC</col1>
|
||||||
|
<col2>DEF</col2>
|
||||||
|
<col3 />
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<col1>GHI</col1>
|
||||||
|
<col2 />
|
||||||
|
<col3>123</col3>
|
||||||
|
</row>
|
||||||
|
</test_rows>
|
@ -1520,7 +1520,7 @@ BEGIN
|
|||||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||||
### INSERT INTO `test`.`t1`
|
### INSERT INTO `test`.`t1`
|
||||||
### SET
|
### SET
|
||||||
### @1=000000124.450000000 /* DECIMAL(10,5) meta=2565 nullable=1 is_null=0 */
|
### @1=124.45000 /* DECIMAL(10,5) meta=2565 nullable=1 is_null=0 */
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
@ -1537,7 +1537,7 @@ BEGIN
|
|||||||
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
#010909 4:46:40 server id 1 end_log_pos # Write_rows: table id # flags: STMT_END_F
|
||||||
### INSERT INTO `test`.`t1`
|
### INSERT INTO `test`.`t1`
|
||||||
### SET
|
### SET
|
||||||
### @1=-000000543.210000000 /* DECIMAL(10,5) meta=2565 nullable=1 is_null=0 */
|
### @1=-543.21000 /* DECIMAL(10,5) meta=2565 nullable=1 is_null=0 */
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
@ -1554,7 +1554,7 @@ BEGIN
|
|||||||
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
#010909 4:46:40 server id 1 end_log_pos # Delete_rows: table id # flags: STMT_END_F
|
||||||
### DELETE FROM `test`.`t1`
|
### DELETE FROM `test`.`t1`
|
||||||
### WHERE
|
### WHERE
|
||||||
### @1=000000124.450000000 /* DECIMAL(10,5) meta=2565 nullable=1 is_null=0 */
|
### @1=124.45000 /* DECIMAL(10,5) meta=2565 nullable=1 is_null=0 */
|
||||||
# at #
|
# at #
|
||||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||||
SET TIMESTAMP=1000000000/*!*/;
|
SET TIMESTAMP=1000000000/*!*/;
|
||||||
|
@ -2398,9 +2398,9 @@ BEGIN
|
|||||||
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2491,9 +2491,9 @@ BEGIN
|
|||||||
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2667,9 +2667,9 @@ BEGIN
|
|||||||
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=1 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2760,9 +2760,9 @@ BEGIN
|
|||||||
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2840,9 +2840,9 @@ BEGIN
|
|||||||
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2933,9 +2933,9 @@ BEGIN
|
|||||||
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3013,9 +3013,9 @@ BEGIN
|
|||||||
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3186,9 +3186,9 @@ BEGIN
|
|||||||
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=1 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3279,9 +3279,9 @@ BEGIN
|
|||||||
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=1 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3452,9 +3452,9 @@ BEGIN
|
|||||||
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3545,9 +3545,9 @@ BEGIN
|
|||||||
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3638,9 +3638,9 @@ BEGIN
|
|||||||
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=1 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
|
@ -2398,9 +2398,9 @@ BEGIN
|
|||||||
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2494,9 +2494,9 @@ BEGIN
|
|||||||
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2672,9 +2672,9 @@ BEGIN
|
|||||||
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=1 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2767,9 +2767,9 @@ BEGIN
|
|||||||
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2847,9 +2847,9 @@ BEGIN
|
|||||||
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -2942,9 +2942,9 @@ BEGIN
|
|||||||
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3022,9 +3022,9 @@ BEGIN
|
|||||||
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3197,9 +3197,9 @@ BEGIN
|
|||||||
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=1 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3292,9 +3292,9 @@ BEGIN
|
|||||||
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=1 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3467,9 +3467,9 @@ BEGIN
|
|||||||
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='9999:12:31' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=9999-12-31 23:59:59 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=2146522447 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3562,9 +3562,9 @@ BEGIN
|
|||||||
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-1.797... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=0 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=0 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='1000:01:01' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=1000-01-01 00:00:00 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=75601 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
@ -3657,9 +3657,9 @@ BEGIN
|
|||||||
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @22=-2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @23=2.225... /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
### @24=1 /* DOUBLE meta=8 nullable=1 is_null=0 */
|
||||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @26=9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
### @27=1 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||||
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
### @28='2008:08:04' /* DATE meta=0 nullable=1 is_null=0 */
|
||||||
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
### @29=2008-08-04 16:18:06 /* DATETIME meta=0 nullable=1 is_null=0 */
|
||||||
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
### @30=1217855904 /* TIMESTAMP meta=0 nullable=0 is_null=0 */
|
||||||
|
36
mysql-test/suite/innodb/r/innodb_bug68148.result
Normal file
36
mysql-test/suite/innodb/r/innodb_bug68148.result
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
set global innodb_file_per_table=1;
|
||||||
|
CREATE TABLE ref_table1 (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE ref_table2 (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||||
|
CREATE TABLE `main` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`ref_id1` int(11) NOT NULL,
|
||||||
|
`ref_id2` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `idx_1` (`ref_id1`,`ref_id2`),
|
||||||
|
KEY `FK_set_out_analysis_route_id` (`ref_id2`),
|
||||||
|
CONSTRAINT `FK_1` FOREIGN KEY (`ref_id1`) REFERENCES `ref_table1` (`id`) ,
|
||||||
|
CONSTRAINT `FK_2` FOREIGN KEY (`ref_id2`) REFERENCES `ref_table2` (`id`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
SET FOREIGN_KEY_CHECKS=0;
|
||||||
|
DROP INDEX `idx_1` ON `main`;
|
||||||
|
SHOW TABLES;
|
||||||
|
Tables_in_test
|
||||||
|
main
|
||||||
|
ref_table1
|
||||||
|
ref_table2
|
||||||
|
# restart and see if we can still access the main table
|
||||||
|
SET FOREIGN_KEY_CHECKS=0;
|
||||||
|
ALTER TABLE `main` ADD INDEX `idx_1` (`ref_id1`);
|
||||||
|
SHOW CREATE TABLE `main`;
|
||||||
|
Table Create Table
|
||||||
|
main CREATE TABLE `main` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`ref_id1` int(11) NOT NULL,
|
||||||
|
`ref_id2` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `FK_set_out_analysis_route_id` (`ref_id2`),
|
||||||
|
KEY `idx_1` (`ref_id1`),
|
||||||
|
CONSTRAINT `FK_1` FOREIGN KEY (`ref_id1`) REFERENCES `ref_table1` (`id`),
|
||||||
|
CONSTRAINT `FK_2` FOREIGN KEY (`ref_id2`) REFERENCES `ref_table2` (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
||||||
|
DROP TABLE main, ref_table1, ref_table2;
|
@ -1 +0,0 @@
|
|||||||
--lower_case_table_names=0
|
|
@ -2,6 +2,10 @@
|
|||||||
# Bug #13083023 - 60229: BROKEN COMPATIBILITY: ERROR WHILE CREATE TABLE
|
# Bug #13083023 - 60229: BROKEN COMPATIBILITY: ERROR WHILE CREATE TABLE
|
||||||
# WITH FOREIGN KEY CONSTRAINT.
|
# WITH FOREIGN KEY CONSTRAINT.
|
||||||
|
|
||||||
|
#Server variable option 'lower_case_table_names' sets '0' as default value
|
||||||
|
#in case sensitive filesystem. Using 'lower_case_table_names=0' in case of
|
||||||
|
#insensitive filsystem is not allowed.
|
||||||
|
-- source include/have_case_sensitive_file_system.inc
|
||||||
-- source include/have_innodb.inc
|
-- source include/have_innodb.inc
|
||||||
|
|
||||||
CREATE TABLE PERSON (
|
CREATE TABLE PERSON (
|
||||||
|
41
mysql-test/suite/innodb/t/innodb_bug68148.test
Normal file
41
mysql-test/suite/innodb/t/innodb_bug68148.test
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
-- source include/have_innodb.inc
|
||||||
|
-- source include/not_embedded.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #68148: drop index on a foreign key column leads to missing table
|
||||||
|
# MDEV-8845: Table disappear after modifying FK
|
||||||
|
#
|
||||||
|
|
||||||
|
set global innodb_file_per_table=1;
|
||||||
|
|
||||||
|
CREATE TABLE ref_table1 (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE ref_table2 (id int(11) NOT NULL, PRIMARY KEY(id)) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
CREATE TABLE `main` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`ref_id1` int(11) NOT NULL,
|
||||||
|
`ref_id2` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `idx_1` (`ref_id1`,`ref_id2`),
|
||||||
|
KEY `FK_set_out_analysis_route_id` (`ref_id2`),
|
||||||
|
CONSTRAINT `FK_1` FOREIGN KEY (`ref_id1`) REFERENCES `ref_table1` (`id`) ,
|
||||||
|
CONSTRAINT `FK_2` FOREIGN KEY (`ref_id2`) REFERENCES `ref_table2` (`id`)
|
||||||
|
) ENGINE=InnoDB;
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS=0;
|
||||||
|
|
||||||
|
DROP INDEX `idx_1` ON `main`;
|
||||||
|
SHOW TABLES;
|
||||||
|
|
||||||
|
--echo # restart and see if we can still access the main table
|
||||||
|
--source include/restart_mysqld.inc
|
||||||
|
|
||||||
|
# This is required to access the table
|
||||||
|
SET FOREIGN_KEY_CHECKS=0;
|
||||||
|
ALTER TABLE `main` ADD INDEX `idx_1` (`ref_id1`);
|
||||||
|
SHOW CREATE TABLE `main`;
|
||||||
|
|
||||||
|
DROP TABLE main, ref_table1, ref_table2;
|
||||||
|
|
||||||
|
|
@ -6,6 +6,12 @@ if (`select plugin_auth_version <= "5.6.24" from information_schema.plugins wher
|
|||||||
# Embedded server does not support restarting.
|
# Embedded server does not support restarting.
|
||||||
--source include/not_embedded.inc
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
|
# MDEV-8841 - close tables opened by previous tests,
|
||||||
|
# so they don't get marked crashed when the server gets crashed
|
||||||
|
--disable_query_log
|
||||||
|
FLUSH TABLES;
|
||||||
|
--enable_query_log
|
||||||
|
|
||||||
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
CREATE TABLE t1 (a INT) ENGINE=InnoDB;
|
||||||
INSERT INTO t1 VALUES (1);
|
INSERT INTO t1 VALUES (1);
|
||||||
connect (con1,localhost,root);
|
connect (con1,localhost,root);
|
||||||
|
@ -1 +0,0 @@
|
|||||||
--lower_case_table_names=0
|
|
@ -1,3 +1,7 @@
|
|||||||
|
#Server variable option 'lower_case_table_names' sets '0' as default value
|
||||||
|
#in case sensitive filesystem. Using 'lower_case_table_names=0' in case of
|
||||||
|
#insensitive filsystem is not allowed.
|
||||||
|
-- source include/have_case_sensitive_file_system.inc
|
||||||
--source include/have_sjis.inc
|
--source include/have_sjis.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--character_set sjis
|
--character_set sjis
|
||||||
|
@ -1 +0,0 @@
|
|||||||
--lower_case_table_names=0
|
|
@ -1,3 +1,7 @@
|
|||||||
|
#Server variable option 'lower_case_table_names' sets '0' as default value
|
||||||
|
#in case sensitive filesystem. Using 'lower_case_table_names=0' in case of
|
||||||
|
#insensitive filsystem is not allowed.
|
||||||
|
-- source include/have_case_sensitive_file_system.inc
|
||||||
--source include/have_ucs2.inc
|
--source include/have_ucs2.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
--lower_case_table_names=0
|
|
@ -1,3 +1,7 @@
|
|||||||
|
#Server variable option 'lower_case_table_names' sets '0' as default value
|
||||||
|
#in case sensitive filesystem. Using 'lower_case_table_names=0' in case of
|
||||||
|
#insensitive filsystem is not allowed.
|
||||||
|
-- source include/have_case_sensitive_file_system.inc
|
||||||
--source include/have_ujis.inc
|
--source include/have_ujis.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
--lower_case_table_names=0
|
|
@ -1,3 +1,7 @@
|
|||||||
|
#Server variable option 'lower_case_table_names' sets '0' as default value
|
||||||
|
#in case sensitive filesystem. Using 'lower_case_table_names=0' in case of
|
||||||
|
#insensitive filsystem is not allowed.
|
||||||
|
-- source include/have_case_sensitive_file_system.inc
|
||||||
--source include/have_utf8.inc
|
--source include/have_utf8.inc
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
|
@ -38,7 +38,7 @@ spins
|
|||||||
NULL
|
NULL
|
||||||
select * from performance_schema.setup_timers where name='wait';
|
select * from performance_schema.setup_timers where name='wait';
|
||||||
NAME TIMER_NAME
|
NAME TIMER_NAME
|
||||||
wait CYCLE
|
wait {CYCLE_OR_NANOSECOND}
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_queries_in_cache 1
|
Qcache_queries_in_cache 1
|
||||||
@ -53,7 +53,7 @@ spins
|
|||||||
NULL
|
NULL
|
||||||
select * from performance_schema.setup_timers where name='wait';
|
select * from performance_schema.setup_timers where name='wait';
|
||||||
NAME TIMER_NAME
|
NAME TIMER_NAME
|
||||||
wait CYCLE
|
wait {CYCLE_OR_NANOSECOND}
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
Qcache_queries_in_cache 1
|
Qcache_queries_in_cache 1
|
||||||
|
@ -34,6 +34,7 @@ show status like "Qcache_hits";
|
|||||||
|
|
||||||
select spins from performance_schema.events_waits_current order by event_name limit 1;
|
select spins from performance_schema.events_waits_current order by event_name limit 1;
|
||||||
|
|
||||||
|
--replace_result CYCLE {CYCLE_OR_NANOSECOND} NANOSECOND {CYCLE_OR_NANOSECOND}
|
||||||
select * from performance_schema.setup_timers where name='wait';
|
select * from performance_schema.setup_timers where name='wait';
|
||||||
|
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
@ -42,6 +43,7 @@ show status like "Qcache_hits";
|
|||||||
|
|
||||||
select spins from performance_schema.events_waits_current order by event_name limit 1;
|
select spins from performance_schema.events_waits_current order by event_name limit 1;
|
||||||
|
|
||||||
|
--replace_result CYCLE {CYCLE_OR_NANOSECOND} NANOSECOND {CYCLE_OR_NANOSECOND}
|
||||||
select * from performance_schema.setup_timers where name='wait';
|
select * from performance_schema.setup_timers where name='wait';
|
||||||
|
|
||||||
show status like "Qcache_queries_in_cache";
|
show status like "Qcache_queries_in_cache";
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
select plugin_status from information_schema.plugins where plugin_name='feedback';
|
select plugin_status from information_schema.plugins where plugin_name='feedback';
|
||||||
plugin_status
|
plugin_status
|
||||||
ACTIVE
|
ACTIVE
|
||||||
|
SELECT variable_value INTO @feedback_used FROM information_schema.feedback where variable_name = 'FEEDBACK used';
|
||||||
|
SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback where variable_name = 'FEEDBACK used';
|
||||||
|
variable_value = @feedback_used + 1
|
||||||
|
1
|
||||||
select * from information_schema.feedback where variable_name like 'feed%'
|
select * from information_schema.feedback where variable_name like 'feed%'
|
||||||
and variable_name not like '%_uid';
|
and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
FEEDBACK used 1
|
|
||||||
FEEDBACK version 1.1
|
FEEDBACK version 1.1
|
||||||
FEEDBACK_SEND_RETRY_WAIT 60
|
FEEDBACK_SEND_RETRY_WAIT 60
|
||||||
FEEDBACK_SEND_TIMEOUT 60
|
FEEDBACK_SEND_TIMEOUT 60
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
select plugin_status from information_schema.plugins where plugin_name='feedback';
|
select plugin_status from information_schema.plugins where plugin_name='feedback';
|
||||||
plugin_status
|
plugin_status
|
||||||
ACTIVE
|
ACTIVE
|
||||||
|
SELECT variable_value INTO @feedback_used FROM information_schema.feedback where variable_name = 'FEEDBACK used';
|
||||||
|
SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback where variable_name = 'FEEDBACK used';
|
||||||
|
variable_value = @feedback_used + 1
|
||||||
|
1
|
||||||
select * from information_schema.feedback where variable_name like 'feed%'
|
select * from information_schema.feedback where variable_name like 'feed%'
|
||||||
and variable_name not like '%_uid';
|
and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
FEEDBACK used 3
|
|
||||||
FEEDBACK version 1.1
|
FEEDBACK version 1.1
|
||||||
FEEDBACK_SEND_RETRY_WAIT 60
|
FEEDBACK_SEND_RETRY_WAIT 60
|
||||||
FEEDBACK_SEND_TIMEOUT 60
|
FEEDBACK_SEND_TIMEOUT 60
|
||||||
|
@ -4,11 +4,27 @@ if (`select count(*) = 0 from information_schema.plugins where plugin_name = 'fe
|
|||||||
}
|
}
|
||||||
|
|
||||||
select plugin_status from information_schema.plugins where plugin_name='feedback';
|
select plugin_status from information_schema.plugins where plugin_name='feedback';
|
||||||
|
|
||||||
|
# Every SELECT from INFORMATION_SCHEMA.FEEDBACK increases the value of 'FEEDBACK used'.
|
||||||
|
# We cannot record the actual value, because the test can be executed more than once,
|
||||||
|
# but we can check that the value indeed increases as expected.
|
||||||
|
# There is still a room for some race condition, e.g. if at the very moment
|
||||||
|
# between first SELECT to store the value and the next SELECT to check that it increases,
|
||||||
|
# the feedback plugin is activated. But the probability of it is close to 0,
|
||||||
|
# so lets get back to it if it ever happens.
|
||||||
|
|
||||||
|
# Lets say the plugin was used X times before this SELECT
|
||||||
|
SELECT variable_value INTO @feedback_used FROM information_schema.feedback where variable_name = 'FEEDBACK used';
|
||||||
|
|
||||||
|
# Now $feedback_used == X+1, and 'FEEDBACK used' is also X+1. And variable_value is increased again when we run the next SELECT
|
||||||
|
SELECT variable_value = @feedback_used + 1 FROM information_schema.feedback where variable_name = 'FEEDBACK used';
|
||||||
|
|
||||||
|
# Now when we are happy with 'FEEDBACK used', we can check everything else
|
||||||
|
|
||||||
--replace_result https http
|
--replace_result https http
|
||||||
--sorted_result
|
--sorted_result
|
||||||
select * from information_schema.feedback where variable_name like 'feed%'
|
select * from information_schema.feedback where variable_name like 'feed%'
|
||||||
and variable_name not like '%_uid';
|
and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used';
|
||||||
|
|
||||||
|
|
||||||
# Embedded server does not use the table mysqld.user and thus
|
# Embedded server does not use the table mysqld.user and thus
|
||||||
# does not automatically use latin1_bin on startup. Use it manually.
|
# does not automatically use latin1_bin on startup. Use it manually.
|
||||||
|
@ -14,6 +14,15 @@ if (!$MTR_FEEDBACK_PLUGIN) {
|
|||||||
# is doing some work in other workers.
|
# is doing some work in other workers.
|
||||||
#
|
#
|
||||||
sleep 310;
|
sleep 310;
|
||||||
|
|
||||||
|
# The test expects that the plugin will send a report at least 2 times,
|
||||||
|
# now (5 min after loading) and on server shutdown which happens below.
|
||||||
|
# Since we have already waited for 5 min, let's be generous
|
||||||
|
# and make sure the server has enough time to shut down properly.
|
||||||
|
# We won't lose anything if the shutdown is fast, but if it's slow, the plugin
|
||||||
|
# will still be able to finish the job and write about it in the error log.
|
||||||
|
|
||||||
|
--let $shutdown_timeout= 60
|
||||||
source include/restart_mysqld.inc;
|
source include/restart_mysqld.inc;
|
||||||
|
|
||||||
replace_result https http;
|
replace_result https http;
|
||||||
|
1
mysql-test/suite/rpl/t/rpl_innodb_bug30888.opt
Normal file
1
mysql-test/suite/rpl/t/rpl_innodb_bug30888.opt
Normal file
@ -0,0 +1 @@
|
|||||||
|
--innodb-flush-log-at-trx-commit=2
|
@ -206,6 +206,20 @@ SELECT if(1, NULL, (SELECT min('hello')));
|
|||||||
|
|
||||||
--echo End of 5.2 tests
|
--echo End of 5.2 tests
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-8663: IF Statement returns multiple values erroneously
|
||||||
|
--echo # (or Assertion `!null_value' failed in Item::send(Protocol*, String*)
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`datas` VARCHAR(25) NOT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
INSERT INTO `t1` VALUES ('1,2'), ('2,3'), ('3,4');
|
||||||
|
|
||||||
|
SELECT IF(FIND_IN_SET('1', `datas`), 1.5, IF(FIND_IN_SET('2', `datas`), 2, NULL)) AS `First`, '1' AS `Second`, '2' AS `Third` FROM `t1`;
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--disable_query_log
|
--disable_query_log
|
||||||
# Restore timezone to default
|
# Restore timezone to default
|
||||||
set time_zone= @@global.time_zone;
|
set time_zone= @@global.time_zone;
|
||||||
|
@ -397,6 +397,209 @@ drop table t1,tv;
|
|||||||
SELECT GET_LOCK('ul1', NULL);
|
SELECT GET_LOCK('ul1', NULL);
|
||||||
SELECT GET_LOCK('ul1', -1);
|
SELECT GET_LOCK('ul1', -1);
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-8624 MariaDB hangs on query with many logical condition
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE `t1` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`submitdate` datetime DEFAULT NULL,
|
||||||
|
`lastpage` int(11) DEFAULT NULL,
|
||||||
|
`startlanguage` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
|
||||||
|
`token` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`datestamp` datetime NOT NULL,
|
||||||
|
`startdate` datetime NOT NULL,
|
||||||
|
`ipaddr` text COLLATE utf8_unicode_ci,
|
||||||
|
`refurl` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X540X1723` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X540X1724` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X540X1725` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X540X1726` double DEFAULT NULL,
|
||||||
|
`57813X540X1909` double DEFAULT NULL,
|
||||||
|
`57813X541X17271` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17272` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17273` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17274` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17275` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17276` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X541X17281` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17282` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17283` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17284` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17285` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X541X17286` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18131` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18132` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18133` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18134` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18135` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18136` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18137` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18138` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18139` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X542X18141` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18142` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18143` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18144` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18145` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18146` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18147` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18148` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X542X18149` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18451` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18452` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18453` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18454` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18455` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18456` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X543X18461` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18462` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18463` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18464` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18465` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X543X18466` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18711` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18712` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18713` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18714` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18715` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18716` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18717` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18718` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X544X18721` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18722` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18723` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18724` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18725` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18726` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18727` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X544X18728` text COLLATE utf8_unicode_ci,
|
||||||
|
`57813X546X1902` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X546X1903` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X546X1904` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
`57813X545X1901` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
KEY `lime_survey_57813_idx` (`token`),
|
||||||
|
KEY `57813X540X1723` (`57813X540X1723`(100)),
|
||||||
|
KEY `57813X540X1724` (`57813X540X1724`(100)),
|
||||||
|
KEY `57813X540X1726` (`57813X540X1726`),
|
||||||
|
KEY `57813X540X1725` (`57813X540X1725`(100)),
|
||||||
|
KEY `57813X546X1902` (`57813X546X1902`),
|
||||||
|
KEY `57813X546X1903` (`57813X546X1903`),
|
||||||
|
KEY `57813X546X1904` (`57813X546X1904`)
|
||||||
|
);
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
COUNT(*) as `N`,
|
||||||
|
ROUND(
|
||||||
|
(
|
||||||
|
SUM(
|
||||||
|
(
|
||||||
|
(
|
||||||
|
IF( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99', 57813X541X17271, 0 ) +
|
||||||
|
IF( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99', 57813X541X17272, 0 ) +
|
||||||
|
IF( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99', 57813X541X17273, 0 ) +
|
||||||
|
IF( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99', 57813X541X17274, 0 ) +
|
||||||
|
IF( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99', 57813X541X17275, 0 ) +
|
||||||
|
IF( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99', 57813X541X17276, 0 ) +
|
||||||
|
IF( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99', 57813X542X18131, 0 ) +
|
||||||
|
IF( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99', 57813X542X18132, 0 ) +
|
||||||
|
IF( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99', 57813X542X18133, 0 ) +
|
||||||
|
IF( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99', 57813X542X18134, 0 ) +
|
||||||
|
IF( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99', 57813X542X18135, 0 ) +
|
||||||
|
IF( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99', 57813X542X18136, 0 ) +
|
||||||
|
IF( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99', 57813X542X18137, 0 ) +
|
||||||
|
IF( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99', 57813X542X18138, 0 ) +
|
||||||
|
IF( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99', 57813X542X18139, 0 ) +
|
||||||
|
IF( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99', 57813X543X18451, 0 ) +
|
||||||
|
IF( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99', 57813X543X18452, 0 ) +
|
||||||
|
IF( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99', 57813X543X18453, 0 ) +
|
||||||
|
IF( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99', 57813X543X18454, 0 ) +
|
||||||
|
IF( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99', 57813X543X18455, 0 ) +
|
||||||
|
IF( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99', 57813X543X18456, 0 ) +
|
||||||
|
IF( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99', 57813X544X18711, 0 ) +
|
||||||
|
IF( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99', 57813X544X18712, 0 ) +
|
||||||
|
IF( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99', 57813X544X18713, 0 ) +
|
||||||
|
IF( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99', 57813X544X18714, 0 ) +
|
||||||
|
IF( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99', 57813X544X18715, 0 ) +
|
||||||
|
IF( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99', 57813X544X18716, 0 ) +
|
||||||
|
IF( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99', 57813X544X18717, 0 ) +
|
||||||
|
IF( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99', 57813X544X18718, 0 )
|
||||||
|
)
|
||||||
|
/
|
||||||
|
(
|
||||||
|
IF( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99', 1, 0 ) +
|
||||||
|
IF( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99', 1, 0 )
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
/ COUNT(*) ), 4) as `AVG`
|
||||||
|
FROM `t1`
|
||||||
|
WHERE `submitdate` IS NOT NULL
|
||||||
|
AND (
|
||||||
|
( 57813X541X17271 IS NOT NULL AND 57813X541X17271 != '' AND 57813X541X17271 != '99' ) OR
|
||||||
|
( 57813X541X17272 IS NOT NULL AND 57813X541X17272 != '' AND 57813X541X17272 != '99' ) OR
|
||||||
|
( 57813X541X17273 IS NOT NULL AND 57813X541X17273 != '' AND 57813X541X17273 != '99' ) OR
|
||||||
|
( 57813X541X17274 IS NOT NULL AND 57813X541X17274 != '' AND 57813X541X17274 != '99' ) OR
|
||||||
|
( 57813X541X17275 IS NOT NULL AND 57813X541X17275 != '' AND 57813X541X17275 != '99' ) OR
|
||||||
|
( 57813X541X17276 IS NOT NULL AND 57813X541X17276 != '' AND 57813X541X17276 != '99' ) OR
|
||||||
|
( 57813X542X18131 IS NOT NULL AND 57813X542X18131 != '' AND 57813X542X18131 != '99' ) OR
|
||||||
|
( 57813X542X18132 IS NOT NULL AND 57813X542X18132 != '' AND 57813X542X18132 != '99' ) OR
|
||||||
|
( 57813X542X18133 IS NOT NULL AND 57813X542X18133 != '' AND 57813X542X18133 != '99' ) OR
|
||||||
|
( 57813X542X18134 IS NOT NULL AND 57813X542X18134 != '' AND 57813X542X18134 != '99' ) OR
|
||||||
|
( 57813X542X18135 IS NOT NULL AND 57813X542X18135 != '' AND 57813X542X18135 != '99' ) OR
|
||||||
|
( 57813X542X18136 IS NOT NULL AND 57813X542X18136 != '' AND 57813X542X18136 != '99' ) OR
|
||||||
|
( 57813X542X18137 IS NOT NULL AND 57813X542X18137 != '' AND 57813X542X18137 != '99' ) OR
|
||||||
|
( 57813X542X18138 IS NOT NULL AND 57813X542X18138 != '' AND 57813X542X18138 != '99' ) OR
|
||||||
|
( 57813X542X18139 IS NOT NULL AND 57813X542X18139 != '' AND 57813X542X18139 != '99' ) OR
|
||||||
|
( 57813X543X18451 IS NOT NULL AND 57813X543X18451 != '' AND 57813X543X18451 != '99' ) OR
|
||||||
|
( 57813X543X18452 IS NOT NULL AND 57813X543X18452 != '' AND 57813X543X18452 != '99' ) OR
|
||||||
|
( 57813X543X18453 IS NOT NULL AND 57813X543X18453 != '' AND 57813X543X18453 != '99' ) OR
|
||||||
|
( 57813X543X18454 IS NOT NULL AND 57813X543X18454 != '' AND 57813X543X18454 != '99' ) OR
|
||||||
|
( 57813X543X18455 IS NOT NULL AND 57813X543X18455 != '' AND 57813X543X18455 != '99' ) OR
|
||||||
|
( 57813X543X18456 IS NOT NULL AND 57813X543X18456 != '' AND 57813X543X18456 != '99' ) OR
|
||||||
|
( 57813X544X18711 IS NOT NULL AND 57813X544X18711 != '' AND 57813X544X18711 != '99' ) OR
|
||||||
|
( 57813X544X18712 IS NOT NULL AND 57813X544X18712 != '' AND 57813X544X18712 != '99' ) OR
|
||||||
|
( 57813X544X18713 IS NOT NULL AND 57813X544X18713 != '' AND 57813X544X18713 != '99' ) OR
|
||||||
|
( 57813X544X18714 IS NOT NULL AND 57813X544X18714 != '' AND 57813X544X18714 != '99' ) OR
|
||||||
|
( 57813X544X18715 IS NOT NULL AND 57813X544X18715 != '' AND 57813X544X18715 != '99' ) OR
|
||||||
|
( 57813X544X18716 IS NOT NULL AND 57813X544X18716 != '' AND 57813X544X18716 != '99' ) OR
|
||||||
|
( 57813X544X18717 IS NOT NULL AND 57813X544X18717 != '' AND 57813X544X18717 != '99' ) OR
|
||||||
|
( 57813X544X18718 IS NOT NULL AND 57813X544X18718 != '' AND 57813X544X18718 != '99' ) )
|
||||||
|
AND 57813X540X1723 = 'Test';
|
||||||
|
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # End of 5.5 tests
|
||||||
|
--echo #
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # GET_LOCK, RELEASE_LOCK, IS_USED_LOCK functions test
|
--echo # GET_LOCK, RELEASE_LOCK, IS_USED_LOCK functions test
|
||||||
--echo #
|
--echo #
|
||||||
@ -574,10 +777,6 @@ select is_free_lock(repeat('a', 193));
|
|||||||
--error ER_TOO_LONG_IDENT
|
--error ER_TOO_LONG_IDENT
|
||||||
select release_lock(repeat('a', 193));
|
select release_lock(repeat('a', 193));
|
||||||
|
|
||||||
--echo #
|
|
||||||
--echo # End of 5.5 tests
|
|
||||||
--echo #
|
|
||||||
|
|
||||||
|
|
||||||
--echo
|
--echo
|
||||||
--echo # --
|
--echo # --
|
||||||
|
@ -8,15 +8,12 @@ select variable_name from information_schema.session_variables where variable_na
|
|||||||
(select variable_name from information_schema.session_variables where variable_name = 'basedir');
|
(select variable_name from information_schema.session_variables where variable_name = 'basedir');
|
||||||
|
|
||||||
#
|
#
|
||||||
# information_schema tables inside subqueries, they should not be re-populated
|
# MDEV-8796 Delete with sub query with information_schema.TABLES deletes too many rows
|
||||||
# (i_s.columns needs to scan i_s itself, creating a tmp table for every i_s
|
|
||||||
# table. if it's re-populated, it'll do that multiple times)
|
|
||||||
#
|
#
|
||||||
create table t1 (a char);
|
create table t1 (x int);
|
||||||
insert t1 values ('a'),('t'),('z');
|
create table t2 (x int);
|
||||||
flush status;
|
create table t3 (x int);
|
||||||
select a, exists (select 1 from information_schema.columns where table_schema=concat('tes',a)) from t1;
|
create table t4 AS select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE' ;
|
||||||
# fix the result in ps-protocol
|
delete from t4 where table_name not in (select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE');
|
||||||
--replace_result 44 43
|
select * from t4;
|
||||||
show status like 'created_tmp_tables';
|
drop table t1, t2, t3, t4;
|
||||||
drop table t1;
|
|
||||||
|
@ -116,3 +116,17 @@ LOAD XML INFILE '../../std_data/loadxml.dat' INTO TABLE t1
|
|||||||
ROWS IDENTIFIED BY '<row>' (a,@b) SET b=concat('!',@b);
|
ROWS IDENTIFIED BY '<row>' (a,@b) SET b=concat('!',@b);
|
||||||
SELECT * FROM t1 ORDER BY a;
|
SELECT * FROM t1 ORDER BY a;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#16171518 LOAD XML DOES NOT HANDLE EMPTY ELEMENTS
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (col1 VARCHAR(3), col2 VARCHAR(3), col3 VARCHAR(3), col4 VARCHAR(4));
|
||||||
|
LOAD XML INFILE '../../std_data/bug16171518_1.dat' INTO TABLE t1;
|
||||||
|
SELECT * FROM t1 ORDER BY col1, col2, col3, col4;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (col1 VARCHAR(3), col2 VARCHAR(3), col3 INTEGER);
|
||||||
|
LOAD XML INFILE '../../std_data/bug16171518_2.dat' INTO TABLE t1;
|
||||||
|
SELECT * FROM t1 ORDER BY col1, col2, col3;
|
||||||
|
DROP TABLE t1;
|
||||||
|
38
mysql-test/t/lowercase_fs_on.test
Normal file
38
mysql-test/t/lowercase_fs_on.test
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#
|
||||||
|
# Specific tests for case-insensitive file systems
|
||||||
|
# i.e. lower_case_filesystem=ON
|
||||||
|
#
|
||||||
|
-- source include/have_case_insensitive_file_system.inc
|
||||||
|
# Embedded server does not support restarting.
|
||||||
|
--source include/not_embedded.inc
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug#20198490 : LOWER_CASE_TABLE_NAMES=0 ON WINDOWS LEADS TO PROBLEMS
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/my_restart.err;
|
||||||
|
|
||||||
|
--error 0,1
|
||||||
|
--remove_file $SEARCH_FILE
|
||||||
|
|
||||||
|
#Shutdown the server
|
||||||
|
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
|
--shutdown_server
|
||||||
|
--source include/wait_until_disconnected.inc
|
||||||
|
|
||||||
|
#Start the server with --lower_case_table_names=0 in Windows.
|
||||||
|
--enable_reconnect
|
||||||
|
--error 1
|
||||||
|
--exec $MYSQLD_CMD --lower_case_table_names=0 > $SEARCH_FILE 2>&1
|
||||||
|
|
||||||
|
#Search for the error messege in the server error log.
|
||||||
|
let SEARCH_PATTERN= \[ERROR\] The server option \'lower_case_table_names\' is configured to use case sensitive table names but the data directory is on a case-insensitive file system which is an unsupported combination\. Please consider either using a case sensitive file system for your data directory or switching to a case-insensitive table name mode\.;
|
||||||
|
--source include/search_pattern_in_file.inc
|
||||||
|
|
||||||
|
#Restart the server
|
||||||
|
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||||
|
--source include/wait_until_connected_again.inc
|
||||||
|
|
||||||
|
#Cleanup
|
||||||
|
--error 0,1
|
||||||
|
--remove_file $SEARCH_FILE
|
@ -1 +0,0 @@
|
|||||||
--lower_case_table_names=0
|
|
@ -1,37 +0,0 @@
|
|||||||
#
|
|
||||||
# Test of force of lower-case-table-names=0
|
|
||||||
# (User has case insensitive file system and wants to preserve case of
|
|
||||||
# table names)
|
|
||||||
#
|
|
||||||
|
|
||||||
--source include/have_innodb.inc
|
|
||||||
--source include/have_lowercase0.inc
|
|
||||||
--source include/have_case_insensitive_file_system.inc
|
|
||||||
--source include/not_windows.inc
|
|
||||||
|
|
||||||
call mtr.add_suppression("Cannot find or open table test/BUG29839 from");
|
|
||||||
|
|
||||||
--disable_warnings
|
|
||||||
DROP TABLE IF EXISTS t1,T1;
|
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
#
|
|
||||||
# This is actually an error, but ok as the user has forced this
|
|
||||||
# by using --lower-case-table-names=0
|
|
||||||
CREATE TABLE t1 (a INT);
|
|
||||||
SELECT * FROM T1;
|
|
||||||
FLUSH TABLES;
|
|
||||||
DROP TABLE t1;
|
|
||||||
|
|
||||||
#
|
|
||||||
# InnoDB should in this case be case sensitive
|
|
||||||
# Note that this is not true on windows as no this OS, InnoDB is always
|
|
||||||
# storing things in lower case.
|
|
||||||
#
|
|
||||||
|
|
||||||
CREATE TABLE bug29839 (a INT) ENGINE=INNODB;
|
|
||||||
--error ER_NO_SUCH_TABLE
|
|
||||||
SELECT * FROM BUG29839;
|
|
||||||
DROP TABLE bug29839;
|
|
||||||
|
|
||||||
# End of 4.1 tests
|
|
@ -904,13 +904,8 @@ select * from t1;
|
|||||||
create view v1 as
|
create view v1 as
|
||||||
select * from v3 where b in (1, 2, 3, 4, 5, 6, 7);
|
select * from v3 where b in (1, 2, 3, 4, 5, 6, 7);
|
||||||
|
|
||||||
# Disable warnings since LIMIT warning for unsafe statement if
|
|
||||||
# binlog_format = STATEMENT. Note: after BUG#45832, the warning should
|
|
||||||
# not be issued.
|
|
||||||
--disable_warnings
|
|
||||||
create view v2 as
|
create view v2 as
|
||||||
select v3.a from v3, v1 where v1.a=v3.a and v3.b=3 limit 1;
|
select v3.a from v3, v1 where v1.a=v3.a and v3.b=3 limit 1;
|
||||||
--enable_warnings
|
|
||||||
|
|
||||||
--exec $MYSQL_DUMP --skip-comments test
|
--exec $MYSQL_DUMP --skip-comments test
|
||||||
|
|
||||||
@ -1780,7 +1775,7 @@ drop table words;
|
|||||||
--replace_regex /.*mysqlimport(\.exe)*/mysqlimport/
|
--replace_regex /.*mysqlimport(\.exe)*/mysqlimport/
|
||||||
--replace_result mysqldump.exe mysqldump
|
--replace_result mysqldump.exe mysqldump
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_IMPORT --silent --use-threads=2 test $MYSQLTEST_VARDIR/tmp/t1.txt $MYSQLTEST_VARDIR/tmp/t2.txt $MYSQLTEST_VARDIR/std_data/words.dat $MYSQLTEST_VARDIR/std_data/words2.dat 2>&1
|
--exec $MYSQL_IMPORT --silent --use-threads=2 test $MYSQLTEST_VARDIR/tmp/t1.txt $MYSQLTEST_VARDIR/tmp/t2.txt $MYSQLTEST_VARDIR/std_data/words.dat $MYSQLTEST_VARDIR/std_data/words2.dat
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
@ -2459,6 +2454,35 @@ drop table t1, t2;
|
|||||||
--echo # End of 5.1 tests
|
--echo # End of 5.1 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # Bug #20772273 : MYSQLIMPORT --USE-THREADS DOESN'T USE MULTIPLE THREADS
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE DATABASE db_20772273;
|
||||||
|
USE db_20772273;
|
||||||
|
CREATE TABLE t1(a INT);
|
||||||
|
INSERT INTO t1 VALUES (1), (2);
|
||||||
|
CREATE TABLE t2(a INT);
|
||||||
|
INSERT INTO t2 VALUES (3), (4);
|
||||||
|
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
|
||||||
|
--exec $MYSQL_DUMP --tab=$MYSQLTEST_VARDIR/tmp/ db_20772273
|
||||||
|
--exec $MYSQL db_20772273 < $MYSQLTEST_VARDIR/tmp/t1.sql
|
||||||
|
--exec $MYSQL db_20772273 < $MYSQLTEST_VARDIR/tmp/t2.sql
|
||||||
|
|
||||||
|
# Test mysqlimport with multiple threads
|
||||||
|
--exec $MYSQL_IMPORT --silent --use-threads=2 db_20772273 $MYSQLTEST_VARDIR/tmp/t1.txt $MYSQLTEST_VARDIR/tmp/t2.txt
|
||||||
|
|
||||||
|
SELECT * FROM t1;
|
||||||
|
SELECT * FROM t2;
|
||||||
|
|
||||||
|
#Cleanup
|
||||||
|
DROP TABLE t1;
|
||||||
|
DROP TABLE t2;
|
||||||
|
DROP DATABASE db_20772273;
|
||||||
|
|
||||||
#
|
#
|
||||||
# MDEV-6091 mysqldump goes in a loop and segfaults if --dump-slave is specified and it cannot connect to the server
|
# MDEV-6091 mysqldump goes in a loop and segfaults if --dump-slave is specified and it cannot connect to the server
|
||||||
#
|
#
|
||||||
|
@ -1157,7 +1157,7 @@ subpartition by hash (rand(a+b));
|
|||||||
#
|
#
|
||||||
# Subpartition by hash, wrong subpartition function
|
# Subpartition by hash, wrong subpartition function
|
||||||
#
|
#
|
||||||
--error ER_SUBPARTITION_ERROR
|
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||||
CREATE TABLE t1 (
|
CREATE TABLE t1 (
|
||||||
a int not null,
|
a int not null,
|
||||||
b int not null,
|
b int not null,
|
||||||
|
@ -53,7 +53,7 @@ SELECT 1 IN (SELECT 1);
|
|||||||
SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
|
||||||
-- error ER_WRONG_USAGE
|
-- error ER_WRONG_USAGE
|
||||||
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
|
||||||
-- error ER_WRONG_PARAMETERS_TO_PROCEDURE
|
-- error ER_PARSE_ERROR
|
||||||
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
|
||||||
-- error ER_BAD_FIELD_ERROR
|
-- error ER_BAD_FIELD_ERROR
|
||||||
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
|
||||||
@ -5890,3 +5890,77 @@ DROP TABLE t1,t2;
|
|||||||
create table t1 (c int);
|
create table t1 (c int);
|
||||||
select exists(select 1 from t1 group by `c` in (select `c` from t1));
|
select exists(select 1 from t1 group by `c` in (select `c` from t1));
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-7565: Server crash with Signal 6 (part 2)
|
||||||
|
--echo #
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-7445:Server crash with Signal 6
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
--delimiter |
|
||||||
|
CREATE PROCEDURE procedure2()
|
||||||
|
BEGIN
|
||||||
|
Select
|
||||||
|
(Select Sum(`TestCase`.Revenue) From mysql.slow_log E
|
||||||
|
Where TestCase.TemplateID not in (Select 1 from mysql.slow_log where 2=2)
|
||||||
|
) As `ControlRev`
|
||||||
|
From
|
||||||
|
(Select 3 as Revenue, 4 as TemplateID) As `TestCase`
|
||||||
|
Group By TestCase.Revenue, TestCase.TemplateID;
|
||||||
|
|
||||||
|
END |
|
||||||
|
--delimiter ;
|
||||||
|
call procedure2();
|
||||||
|
call procedure2();
|
||||||
|
|
||||||
|
drop procedure procedure2;
|
||||||
|
|
||||||
|
|
||||||
|
SELECT
|
||||||
|
(SELECT user FROM mysql.user
|
||||||
|
WHERE h.host in (SELECT host FROM mysql.user)
|
||||||
|
) AS sq
|
||||||
|
FROM mysql.host h GROUP BY h.host;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-7846:Server crashes in Item_subselect::fix
|
||||||
|
--echo #_fields or fails with Thread stack overrun
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (column1 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t1 VALUES (3),(9);
|
||||||
|
|
||||||
|
CREATE TABLE t2 (column2 INT) ENGINE=MyISAM;
|
||||||
|
|
||||||
|
INSERT INTO t2 VALUES (1),(4);
|
||||||
|
|
||||||
|
CREATE TABLE t3 (column3 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t3 VALUES (6),(8);
|
||||||
|
|
||||||
|
CREATE TABLE t4 (column4 INT) ENGINE=MyISAM;
|
||||||
|
INSERT INTO t4 VALUES (2),(5);
|
||||||
|
|
||||||
|
|
||||||
|
PREPARE stmt FROM "
|
||||||
|
SELECT (
|
||||||
|
SELECT MAX( table1.column1 ) AS field1
|
||||||
|
FROM t1 AS table1
|
||||||
|
WHERE table3.column3 IN ( SELECT table2.column2 AS field2 FROM t2 AS table2 )
|
||||||
|
) AS sq
|
||||||
|
FROM t3 AS table3, t4 AS table4 GROUP BY sq
|
||||||
|
";
|
||||||
|
|
||||||
|
EXECUTE stmt;
|
||||||
|
EXECUTE stmt;
|
||||||
|
|
||||||
|
deallocate prepare stmt;
|
||||||
|
drop table t1,t2,t3,t4;
|
||||||
|
@ -506,6 +506,21 @@ DROP VIEW v1;
|
|||||||
DROP FUNCTION f1;
|
DROP FUNCTION f1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo # Bug #21143080: UPDATE ON VARCHAR AND TEXT COLUMNS PRODUCE INCORRECT
|
||||||
|
--echo # RESULTS
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a VARCHAR(50), b TEXT, c CHAR(50)) ENGINE=INNODB;
|
||||||
|
|
||||||
|
INSERT INTO t1 (a, b, c) VALUES ('start trail', '', 'even longer string');
|
||||||
|
UPDATE t1 SET b = a, a = 'inject';
|
||||||
|
SELECT a, b FROM t1;
|
||||||
|
UPDATE t1 SET b = c, c = 'inject';
|
||||||
|
SELECT c, b FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-3948 Assertion `records_are_comparable(table)' fails in compare_record(const TABLE*) on UPDATE with simple AND condition, index_merge+index_merge_intersection, InnoDB
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Verify that UPDATE does the same number of handler_update
|
--echo # Verify that UPDATE does the same number of handler_update
|
||||||
--echo # operations, no matter if there is ORDER BY or not.
|
--echo # operations, no matter if there is ORDER BY or not.
|
||||||
|
@ -4741,6 +4741,50 @@ SHOW CREATE VIEW v4;
|
|||||||
|
|
||||||
DROP VIEW v1, v2, v3, v4, v5;
|
DROP VIEW v1, v2, v3, v4, v5;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # BUG#19886430: VIEW CREATION WITH NAMED COLUMNS, OVER UNION,
|
||||||
|
--echo # IS REJECTED
|
||||||
|
|
||||||
|
--echo # Without the patch, reports an error.
|
||||||
|
CREATE VIEW v1 (fld1, fld2) AS
|
||||||
|
SELECT 1 AS a, 2 AS b
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
|
||||||
|
--echo # The column names are explicitly specified and not duplicates, hence
|
||||||
|
--echo # succeeds.
|
||||||
|
CREATE VIEW v2 (fld1, fld2) AS
|
||||||
|
SELECT 1 AS a, 2 AS a
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
|
||||||
|
--echo # The column name in the first SELECT are not duplicates, hence succeeds.
|
||||||
|
CREATE VIEW v3 AS
|
||||||
|
SELECT 1 AS a, 2 AS b
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
|
||||||
|
--echo # Should report an error, since the explicitly specified column names are
|
||||||
|
--echo # duplicates.
|
||||||
|
--error ER_DUP_FIELDNAME
|
||||||
|
CREATE VIEW v4 (fld1, fld1) AS
|
||||||
|
SELECT 1 AS a, 2 AS b
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
|
||||||
|
--echo # Should report an error, since duplicate column name is specified in the
|
||||||
|
--echo # First SELECT.
|
||||||
|
--error ER_DUP_FIELDNAME
|
||||||
|
CREATE VIEW v4 AS
|
||||||
|
SELECT 1 AS a, 2 AS a
|
||||||
|
UNION ALL
|
||||||
|
SELECT 1 AS a, 1 AS a;
|
||||||
|
|
||||||
|
--echo # Cleanup
|
||||||
|
DROP VIEW v1, v2, v3;
|
||||||
|
|
||||||
|
|
||||||
# Check that all connections opened by test cases in this file are really
|
# Check that all connections opened by test cases in this file are really
|
||||||
# gone so execution of other tests won't be affected by their presence.
|
# gone so execution of other tests won't be affected by their presence.
|
||||||
--source include/wait_until_count_sessions.inc
|
--source include/wait_until_count_sessions.inc
|
||||||
|
17
sql/field.h
17
sql/field.h
@ -1,6 +1,6 @@
|
|||||||
#ifndef FIELD_INCLUDED
|
#ifndef FIELD_INCLUDED
|
||||||
#define FIELD_INCLUDED
|
#define FIELD_INCLUDED
|
||||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2008, 2015, MariaDB
|
Copyright (c) 2008, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
@ -977,6 +977,16 @@ public:
|
|||||||
/* Hash value */
|
/* Hash value */
|
||||||
virtual void hash(ulong *nr, ulong *nr2);
|
virtual void hash(ulong *nr, ulong *nr2);
|
||||||
|
|
||||||
|
/**
|
||||||
|
Checks whether a string field is part of write_set.
|
||||||
|
|
||||||
|
@return
|
||||||
|
FALSE - If field is not char/varchar/....
|
||||||
|
- If field is char/varchar/.. and is not part of write set.
|
||||||
|
TRUE - If field is char/varchar/.. and is part of write set.
|
||||||
|
*/
|
||||||
|
virtual bool is_updatable() const { return FALSE; }
|
||||||
|
|
||||||
/* Check whether the field can be used as a join attribute in hash join */
|
/* Check whether the field can be used as a join attribute in hash join */
|
||||||
virtual bool hash_join_is_possible() { return TRUE; }
|
virtual bool hash_join_is_possible() { return TRUE; }
|
||||||
virtual bool eq_cmp_as_binary() { return TRUE; }
|
virtual bool eq_cmp_as_binary() { return TRUE; }
|
||||||
@ -1174,6 +1184,11 @@ public:
|
|||||||
|
|
||||||
int store_decimal(const my_decimal *d);
|
int store_decimal(const my_decimal *d);
|
||||||
uint32 max_data_length() const;
|
uint32 max_data_length() const;
|
||||||
|
bool is_updatable() const
|
||||||
|
{
|
||||||
|
DBUG_ASSERT(table && table->write_set);
|
||||||
|
return bitmap_is_set(table->write_set, field_index);
|
||||||
|
}
|
||||||
bool match_collation_to_optimize_range() const { return true; }
|
bool match_collation_to_optimize_range() const { return true; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2010, 2012, Monty Program Ab
|
Copyright (c) 2010, 2015, MariaDB
|
||||||
|
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -905,15 +904,10 @@ int field_conv_incompatible(Field *to, Field *from)
|
|||||||
{ // Be sure the value is stored
|
{ // Be sure the value is stored
|
||||||
Field_blob *blob=(Field_blob*) to;
|
Field_blob *blob=(Field_blob*) to;
|
||||||
from->val_str(&blob->value);
|
from->val_str(&blob->value);
|
||||||
/*
|
|
||||||
Copy value if copy_blobs is set, or source is not a string and
|
if (!blob->value.is_alloced() && from->is_updatable())
|
||||||
we have a pointer to its internal string conversion buffer.
|
|
||||||
*/
|
|
||||||
if (to->table->copy_blobs ||
|
|
||||||
(!blob->value.is_alloced() &&
|
|
||||||
from_real_type != MYSQL_TYPE_STRING &&
|
|
||||||
from_real_type != MYSQL_TYPE_VARCHAR))
|
|
||||||
blob->value.copy();
|
blob->value.copy();
|
||||||
|
|
||||||
return blob->store(blob->value.ptr(),blob->value.length(),from->charset());
|
return blob->store(blob->value.ptr(),blob->value.length(),from->charset());
|
||||||
}
|
}
|
||||||
if (from_real_type == MYSQL_TYPE_ENUM &&
|
if (from_real_type == MYSQL_TYPE_ENUM &&
|
||||||
|
@ -1466,9 +1466,36 @@ bool Item_in_optimizer::eval_not_null_tables(uchar *opt_arg)
|
|||||||
bool Item_in_optimizer::fix_left(THD *thd)
|
bool Item_in_optimizer::fix_left(THD *thd)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("Item_in_optimizer::fix_left");
|
DBUG_ENTER("Item_in_optimizer::fix_left");
|
||||||
if ((!args[0]->fixed && args[0]->fix_fields(thd, args)) ||
|
/*
|
||||||
(!cache && !(cache= Item_cache::get_cache(args[0]))))
|
Here we will store pointer on place of main storage of left expression.
|
||||||
|
For usual IN (ALL/ANY) it is subquery left_expr.
|
||||||
|
For other cases (MAX/MIN optimization, non-transformed EXISTS (10.0))
|
||||||
|
it is args[0].
|
||||||
|
*/
|
||||||
|
Item **ref0= args;
|
||||||
|
if (args[1]->type() == Item::SUBSELECT_ITEM &&
|
||||||
|
((Item_subselect *)args[1])->is_in_predicate())
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
left_expr->fix_fields() may cause left_expr to be substituted for
|
||||||
|
another item. (e.g. an Item_field may be changed into Item_ref). This
|
||||||
|
transformation is undone at the end of statement execution (e.g. the
|
||||||
|
Item_ref is deleted). However, Item_in_optimizer::args[0] may keep
|
||||||
|
the pointer to the post-transformation item. Because of that, on the
|
||||||
|
next execution we need to copy args[1]->left_expr again.
|
||||||
|
*/
|
||||||
|
ref0= &(((Item_in_subselect *)args[1])->left_expr);
|
||||||
|
args[0]= ((Item_in_subselect *)args[1])->left_expr;
|
||||||
|
}
|
||||||
|
if ((!(*ref0)->fixed && (*ref0)->fix_fields(thd, ref0)) ||
|
||||||
|
(!cache && !(cache= Item_cache::get_cache(*ref0))))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
|
/*
|
||||||
|
During fix_field() expression could be substituted.
|
||||||
|
So we copy changes before use
|
||||||
|
*/
|
||||||
|
if (args[0] != (*ref0))
|
||||||
|
args[0]= (*ref0);
|
||||||
DBUG_PRINT("info", ("actual fix fields"));
|
DBUG_PRINT("info", ("actual fix fields"));
|
||||||
|
|
||||||
cache->setup(args[0]);
|
cache->setup(args[0]);
|
||||||
@ -1531,6 +1558,16 @@ bool Item_in_optimizer::fix_left(THD *thd)
|
|||||||
bool Item_in_optimizer::fix_fields(THD *thd, Item **ref)
|
bool Item_in_optimizer::fix_fields(THD *thd, Item **ref)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == 0);
|
DBUG_ASSERT(fixed == 0);
|
||||||
|
Item_subselect *sub= 0;
|
||||||
|
uint col;
|
||||||
|
|
||||||
|
/*
|
||||||
|
MAX/MIN optimization can convert the subquery into
|
||||||
|
expr + Item_singlerow_subselect
|
||||||
|
*/
|
||||||
|
if (args[1]->type() == Item::SUBSELECT_ITEM)
|
||||||
|
sub= (Item_subselect *)args[1];
|
||||||
|
|
||||||
if (fix_left(thd))
|
if (fix_left(thd))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
if (args[0]->maybe_null)
|
if (args[0]->maybe_null)
|
||||||
@ -1538,12 +1575,11 @@ bool Item_in_optimizer::fix_fields(THD *thd, Item **ref)
|
|||||||
|
|
||||||
if (!args[1]->fixed && args[1]->fix_fields(thd, args+1))
|
if (!args[1]->fixed && args[1]->fix_fields(thd, args+1))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
Item_in_subselect * sub= (Item_in_subselect *)args[1];
|
|
||||||
if (!invisible_mode() &&
|
if (!invisible_mode() &&
|
||||||
args[0]->cols() != sub->engine->cols())
|
((sub && ((col= args[0]->cols()) != sub->engine->cols())) ||
|
||||||
|
(!sub && (args[1]->cols() != (col= 1)))))
|
||||||
{
|
{
|
||||||
my_error(ER_OPERAND_COLUMNS, MYF(0), args[0]->cols());
|
my_error(ER_OPERAND_COLUMNS, MYF(0), col);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
if (args[1]->maybe_null)
|
if (args[1]->maybe_null)
|
||||||
@ -2756,7 +2792,8 @@ Item_func_if::str_op(String *str)
|
|||||||
String *res=arg->val_str(str);
|
String *res=arg->val_str(str);
|
||||||
if (res)
|
if (res)
|
||||||
res->set_charset(collation.collation);
|
res->set_charset(collation.collation);
|
||||||
null_value=arg->null_value;
|
if ((null_value=arg->null_value))
|
||||||
|
res= NULL;
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2767,7 +2804,8 @@ Item_func_if::decimal_op(my_decimal *decimal_value)
|
|||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
Item *arg= args[0]->val_bool() ? args[1] : args[2];
|
Item *arg= args[0]->val_bool() ? args[1] : args[2];
|
||||||
my_decimal *value= arg->val_decimal(decimal_value);
|
my_decimal *value= arg->val_decimal(decimal_value);
|
||||||
null_value= arg->null_value;
|
if ((null_value= arg->null_value))
|
||||||
|
value= NULL;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -885,7 +885,7 @@ String *Item_func_hybrid_result_type::val_str(String *str)
|
|||||||
case DECIMAL_RESULT:
|
case DECIMAL_RESULT:
|
||||||
{
|
{
|
||||||
my_decimal decimal_value, *val;
|
my_decimal decimal_value, *val;
|
||||||
if (!(val= decimal_op(&decimal_value)))
|
if (!(val= decimal_op_with_null_check(&decimal_value)))
|
||||||
return 0; // null is set
|
return 0; // null is set
|
||||||
my_decimal_round(E_DEC_FATAL_ERROR, val, decimals, FALSE, val);
|
my_decimal_round(E_DEC_FATAL_ERROR, val, decimals, FALSE, val);
|
||||||
str->set_charset(collation.collation);
|
str->set_charset(collation.collation);
|
||||||
@ -912,24 +912,22 @@ String *Item_func_hybrid_result_type::val_str(String *str)
|
|||||||
if (is_temporal_type(field_type()))
|
if (is_temporal_type(field_type()))
|
||||||
{
|
{
|
||||||
MYSQL_TIME ltime;
|
MYSQL_TIME ltime;
|
||||||
if (date_op(<ime,
|
if (date_op_with_null_check(<ime) ||
|
||||||
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0) ||
|
(null_value= str->alloc(MAX_DATE_STRING_REP_LENGTH)))
|
||||||
str->alloc(MAX_DATE_STRING_REP_LENGTH))
|
|
||||||
{
|
|
||||||
null_value= 1;
|
|
||||||
return (String *) 0;
|
return (String *) 0;
|
||||||
}
|
|
||||||
ltime.time_type= mysql_type_to_time_type(field_type());
|
ltime.time_type= mysql_type_to_time_type(field_type());
|
||||||
str->length(my_TIME_to_str(<ime, const_cast<char*>(str->ptr()), decimals));
|
str->length(my_TIME_to_str(<ime, const_cast<char*>(str->ptr()), decimals));
|
||||||
str->set_charset(&my_charset_bin);
|
str->set_charset(&my_charset_bin);
|
||||||
|
DBUG_ASSERT(!null_value);
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
return str_op(&str_value);
|
return str_op_with_null_check(&str_value);
|
||||||
case TIME_RESULT:
|
case TIME_RESULT:
|
||||||
case ROW_RESULT:
|
case ROW_RESULT:
|
||||||
case IMPOSSIBLE_RESULT:
|
case IMPOSSIBLE_RESULT:
|
||||||
DBUG_ASSERT(0);
|
DBUG_ASSERT(0);
|
||||||
}
|
}
|
||||||
|
DBUG_ASSERT(!null_value || (str == NULL));
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -942,7 +940,7 @@ double Item_func_hybrid_result_type::val_real()
|
|||||||
{
|
{
|
||||||
my_decimal decimal_value, *val;
|
my_decimal decimal_value, *val;
|
||||||
double result;
|
double result;
|
||||||
if (!(val= decimal_op(&decimal_value)))
|
if (!(val= decimal_op_with_null_check(&decimal_value)))
|
||||||
return 0.0; // null is set
|
return 0.0; // null is set
|
||||||
my_decimal2double(E_DEC_FATAL_ERROR, val, &result);
|
my_decimal2double(E_DEC_FATAL_ERROR, val, &result);
|
||||||
return result;
|
return result;
|
||||||
@ -959,18 +957,14 @@ double Item_func_hybrid_result_type::val_real()
|
|||||||
if (is_temporal_type(field_type()))
|
if (is_temporal_type(field_type()))
|
||||||
{
|
{
|
||||||
MYSQL_TIME ltime;
|
MYSQL_TIME ltime;
|
||||||
if (date_op(<ime,
|
if (date_op_with_null_check(<ime))
|
||||||
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0 ))
|
|
||||||
{
|
|
||||||
null_value= 1;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
ltime.time_type= mysql_type_to_time_type(field_type());
|
ltime.time_type= mysql_type_to_time_type(field_type());
|
||||||
return TIME_to_double(<ime);
|
return TIME_to_double(<ime);
|
||||||
}
|
}
|
||||||
char *end_not_used;
|
char *end_not_used;
|
||||||
int err_not_used;
|
int err_not_used;
|
||||||
String *res= str_op(&str_value);
|
String *res= str_op_with_null_check(&str_value);
|
||||||
return (res ? my_strntod(res->charset(), (char*) res->ptr(), res->length(),
|
return (res ? my_strntod(res->charset(), (char*) res->ptr(), res->length(),
|
||||||
&end_not_used, &err_not_used) : 0.0);
|
&end_not_used, &err_not_used) : 0.0);
|
||||||
}
|
}
|
||||||
@ -990,7 +984,7 @@ longlong Item_func_hybrid_result_type::val_int()
|
|||||||
case DECIMAL_RESULT:
|
case DECIMAL_RESULT:
|
||||||
{
|
{
|
||||||
my_decimal decimal_value, *val;
|
my_decimal decimal_value, *val;
|
||||||
if (!(val= decimal_op(&decimal_value)))
|
if (!(val= decimal_op_with_null_check(&decimal_value)))
|
||||||
return 0; // null is set
|
return 0; // null is set
|
||||||
longlong result;
|
longlong result;
|
||||||
my_decimal2int(E_DEC_FATAL_ERROR, val, unsigned_flag, &result);
|
my_decimal2int(E_DEC_FATAL_ERROR, val, unsigned_flag, &result);
|
||||||
@ -1005,18 +999,14 @@ longlong Item_func_hybrid_result_type::val_int()
|
|||||||
if (is_temporal_type(field_type()))
|
if (is_temporal_type(field_type()))
|
||||||
{
|
{
|
||||||
MYSQL_TIME ltime;
|
MYSQL_TIME ltime;
|
||||||
if (date_op(<ime,
|
if (date_op_with_null_check(<ime))
|
||||||
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0))
|
|
||||||
{
|
|
||||||
null_value= 1;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
ltime.time_type= mysql_type_to_time_type(field_type());
|
ltime.time_type= mysql_type_to_time_type(field_type());
|
||||||
return TIME_to_ulonglong(<ime);
|
return TIME_to_ulonglong(<ime);
|
||||||
}
|
}
|
||||||
int err_not_used;
|
int err_not_used;
|
||||||
String *res;
|
String *res;
|
||||||
if (!(res= str_op(&str_value)))
|
if (!(res= str_op_with_null_check(&str_value)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
char *end= (char*) res->ptr() + res->length();
|
char *end= (char*) res->ptr() + res->length();
|
||||||
@ -1038,17 +1028,21 @@ my_decimal *Item_func_hybrid_result_type::val_decimal(my_decimal *decimal_value)
|
|||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
switch (cached_result_type) {
|
switch (cached_result_type) {
|
||||||
case DECIMAL_RESULT:
|
case DECIMAL_RESULT:
|
||||||
val= decimal_op(decimal_value);
|
val= decimal_op_with_null_check(decimal_value);
|
||||||
break;
|
break;
|
||||||
case INT_RESULT:
|
case INT_RESULT:
|
||||||
{
|
{
|
||||||
longlong result= int_op();
|
longlong result= int_op();
|
||||||
|
if (null_value)
|
||||||
|
return NULL;
|
||||||
int2my_decimal(E_DEC_FATAL_ERROR, result, unsigned_flag, decimal_value);
|
int2my_decimal(E_DEC_FATAL_ERROR, result, unsigned_flag, decimal_value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case REAL_RESULT:
|
case REAL_RESULT:
|
||||||
{
|
{
|
||||||
double result= (double)real_op();
|
double result= (double)real_op();
|
||||||
|
if (null_value)
|
||||||
|
return NULL;
|
||||||
double2my_decimal(E_DEC_FATAL_ERROR, result, decimal_value);
|
double2my_decimal(E_DEC_FATAL_ERROR, result, decimal_value);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1057,19 +1051,20 @@ my_decimal *Item_func_hybrid_result_type::val_decimal(my_decimal *decimal_value)
|
|||||||
if (is_temporal_type(field_type()))
|
if (is_temporal_type(field_type()))
|
||||||
{
|
{
|
||||||
MYSQL_TIME ltime;
|
MYSQL_TIME ltime;
|
||||||
if (date_op(<ime,
|
if (date_op_with_null_check(<ime))
|
||||||
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0))
|
|
||||||
{
|
{
|
||||||
my_decimal_set_zero(decimal_value);
|
my_decimal_set_zero(decimal_value);
|
||||||
null_value= 1;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
ltime.time_type= mysql_type_to_time_type(field_type());
|
ltime.time_type= mysql_type_to_time_type(field_type());
|
||||||
return date2my_decimal(<ime, decimal_value);
|
return date2my_decimal(<ime, decimal_value);
|
||||||
}
|
}
|
||||||
String *res;
|
String *res;
|
||||||
if (!(res= str_op(&str_value)))
|
if (!(res= str_op_with_null_check(&str_value)))
|
||||||
|
{
|
||||||
|
null_value= 1;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
str2my_decimal(E_DEC_FATAL_ERROR, (char*) res->ptr(),
|
str2my_decimal(E_DEC_FATAL_ERROR, (char*) res->ptr(),
|
||||||
res->length(), res->charset(), decimal_value);
|
res->length(), res->charset(), decimal_value);
|
||||||
@ -1092,7 +1087,7 @@ bool Item_func_hybrid_result_type::get_date(MYSQL_TIME *ltime,
|
|||||||
case DECIMAL_RESULT:
|
case DECIMAL_RESULT:
|
||||||
{
|
{
|
||||||
my_decimal value, *res;
|
my_decimal value, *res;
|
||||||
if (!(res= decimal_op(&value)) ||
|
if (!(res= decimal_op_with_null_check(&value)) ||
|
||||||
decimal_to_datetime_with_warn(res, ltime, fuzzydate,
|
decimal_to_datetime_with_warn(res, ltime, fuzzydate,
|
||||||
field_name_or_null()))
|
field_name_or_null()))
|
||||||
goto err;
|
goto err;
|
||||||
@ -1122,7 +1117,7 @@ bool Item_func_hybrid_result_type::get_date(MYSQL_TIME *ltime,
|
|||||||
return date_op(ltime, fuzzydate);
|
return date_op(ltime, fuzzydate);
|
||||||
char buff[40];
|
char buff[40];
|
||||||
String tmp(buff,sizeof(buff), &my_charset_bin),*res;
|
String tmp(buff,sizeof(buff), &my_charset_bin),*res;
|
||||||
if (!(res= str_op(&tmp)) ||
|
if (!(res= str_op_with_null_check(&tmp)) ||
|
||||||
str_to_datetime_with_warn(res->charset(), res->ptr(), res->length(),
|
str_to_datetime_with_warn(res->charset(), res->ptr(), res->length(),
|
||||||
ltime, fuzzydate))
|
ltime, fuzzydate))
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -385,17 +385,17 @@ public:
|
|||||||
|
|
||||||
void no_rows_in_result()
|
void no_rows_in_result()
|
||||||
{
|
{
|
||||||
bool_func_call_args info;
|
for (uint i= 0; i < arg_count; i++)
|
||||||
info.original_func_item= this;
|
{
|
||||||
info.bool_function= &Item::no_rows_in_result;
|
args[i]->no_rows_in_result();
|
||||||
walk(&Item::call_bool_func_processor, FALSE, (uchar*) &info);
|
}
|
||||||
}
|
}
|
||||||
void restore_to_before_no_rows_in_result()
|
void restore_to_before_no_rows_in_result()
|
||||||
{
|
{
|
||||||
bool_func_call_args info;
|
for (uint i= 0; i < arg_count; i++)
|
||||||
info.original_func_item= this;
|
{
|
||||||
info.bool_function= &Item::restore_to_before_no_rows_in_result;
|
args[i]->no_rows_in_result();
|
||||||
walk(&Item::call_bool_func_processor, FALSE, (uchar*) &info);
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -419,6 +419,29 @@ public:
|
|||||||
|
|
||||||
class Item_func_hybrid_result_type: public Item_func
|
class Item_func_hybrid_result_type: public Item_func
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
Helper methods to make sure that the result of
|
||||||
|
decimal_op(), str_op() and date_op() is properly synched with null_value.
|
||||||
|
*/
|
||||||
|
bool date_op_with_null_check(MYSQL_TIME *ltime)
|
||||||
|
{
|
||||||
|
bool rc= date_op(ltime,
|
||||||
|
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0);
|
||||||
|
DBUG_ASSERT(!rc ^ null_value);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
String *str_op_with_null_check(String *str)
|
||||||
|
{
|
||||||
|
String *res= str_op(str);
|
||||||
|
DBUG_ASSERT((res != NULL) ^ null_value);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
my_decimal *decimal_op_with_null_check(my_decimal *decimal_buffer)
|
||||||
|
{
|
||||||
|
my_decimal *res= decimal_op(decimal_buffer);
|
||||||
|
DBUG_ASSERT((res != NULL) ^ null_value);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
protected:
|
protected:
|
||||||
Item_result cached_result_type;
|
Item_result cached_result_type;
|
||||||
|
|
||||||
|
@ -1378,7 +1378,7 @@ Item_in_subselect::Item_in_subselect(Item * left_exp,
|
|||||||
{
|
{
|
||||||
DBUG_ENTER("Item_in_subselect::Item_in_subselect");
|
DBUG_ENTER("Item_in_subselect::Item_in_subselect");
|
||||||
DBUG_PRINT("info", ("in_strategy: %u", (uint)in_strategy));
|
DBUG_PRINT("info", ("in_strategy: %u", (uint)in_strategy));
|
||||||
left_expr= left_exp;
|
left_expr_orig= left_expr= left_exp;
|
||||||
func= &eq_creator;
|
func= &eq_creator;
|
||||||
init(select_lex, new select_exists_subselect(this));
|
init(select_lex, new select_exists_subselect(this));
|
||||||
max_columns= UINT_MAX;
|
max_columns= UINT_MAX;
|
||||||
@ -1401,7 +1401,7 @@ Item_allany_subselect::Item_allany_subselect(Item * left_exp,
|
|||||||
:Item_in_subselect(), func_creator(fc), all(all_arg)
|
:Item_in_subselect(), func_creator(fc), all(all_arg)
|
||||||
{
|
{
|
||||||
DBUG_ENTER("Item_allany_subselect::Item_allany_subselect");
|
DBUG_ENTER("Item_allany_subselect::Item_allany_subselect");
|
||||||
left_expr= left_exp;
|
left_expr_orig= left_expr= left_exp;
|
||||||
func= func_creator(all_arg);
|
func= func_creator(all_arg);
|
||||||
init(select_lex, new select_exists_subselect(this));
|
init(select_lex, new select_exists_subselect(this));
|
||||||
max_columns= 1;
|
max_columns= 1;
|
||||||
@ -3032,15 +3032,13 @@ Item_in_subselect::select_in_like_transformer(JOIN *join)
|
|||||||
arena= thd->activate_stmt_arena_if_needed(&backup);
|
arena= thd->activate_stmt_arena_if_needed(&backup);
|
||||||
if (!optimizer)
|
if (!optimizer)
|
||||||
{
|
{
|
||||||
result= (!(optimizer= new Item_in_optimizer(left_expr, this)));
|
result= (!(optimizer= new Item_in_optimizer(left_expr_orig, this)));
|
||||||
if (result)
|
if (result)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
thd->lex->current_select= current->return_after_parsing();
|
thd->lex->current_select= current->return_after_parsing();
|
||||||
result= optimizer->fix_left(thd);
|
result= optimizer->fix_left(thd);
|
||||||
/* fix_fields can change reference to left_expr, we need reassign it */
|
|
||||||
left_expr= optimizer->arguments()[0];
|
|
||||||
thd->lex->current_select= current;
|
thd->lex->current_select= current;
|
||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
@ -3107,11 +3105,13 @@ bool Item_in_subselect::fix_fields(THD *thd_arg, Item **ref)
|
|||||||
{
|
{
|
||||||
uint outer_cols_num;
|
uint outer_cols_num;
|
||||||
List<Item> *inner_cols;
|
List<Item> *inner_cols;
|
||||||
|
char const *save_where= thd->where;
|
||||||
DBUG_ENTER("Item_in_subselect::fix_fields");
|
DBUG_ENTER("Item_in_subselect::fix_fields");
|
||||||
|
|
||||||
if (test_strategy(SUBS_SEMI_JOIN))
|
if (test_strategy(SUBS_SEMI_JOIN))
|
||||||
DBUG_RETURN( !( (*ref)= new Item_int(1)) );
|
DBUG_RETURN( !( (*ref)= new Item_int(1)) );
|
||||||
|
|
||||||
|
thd->where= "IN/ALL/ANY subquery";
|
||||||
/*
|
/*
|
||||||
Check if the outer and inner IN operands match in those cases when we
|
Check if the outer and inner IN operands match in those cases when we
|
||||||
will not perform IN=>EXISTS transformation. Currently this is when we
|
will not perform IN=>EXISTS transformation. Currently this is when we
|
||||||
@ -3142,7 +3142,7 @@ bool Item_in_subselect::fix_fields(THD *thd_arg, Item **ref)
|
|||||||
if (outer_cols_num != inner_cols->elements)
|
if (outer_cols_num != inner_cols->elements)
|
||||||
{
|
{
|
||||||
my_error(ER_OPERAND_COLUMNS, MYF(0), outer_cols_num);
|
my_error(ER_OPERAND_COLUMNS, MYF(0), outer_cols_num);
|
||||||
DBUG_RETURN(TRUE);
|
goto err;
|
||||||
}
|
}
|
||||||
if (outer_cols_num > 1)
|
if (outer_cols_num > 1)
|
||||||
{
|
{
|
||||||
@ -3152,20 +3152,24 @@ bool Item_in_subselect::fix_fields(THD *thd_arg, Item **ref)
|
|||||||
{
|
{
|
||||||
inner_col= inner_col_it++;
|
inner_col= inner_col_it++;
|
||||||
if (inner_col->check_cols(left_expr->element_index(i)->cols()))
|
if (inner_col->check_cols(left_expr->element_index(i)->cols()))
|
||||||
DBUG_RETURN(TRUE);
|
goto err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (thd_arg->lex->is_view_context_analysis() &&
|
if (left_expr && !left_expr->fixed &&
|
||||||
left_expr && !left_expr->fixed &&
|
|
||||||
left_expr->fix_fields(thd_arg, &left_expr))
|
left_expr->fix_fields(thd_arg, &left_expr))
|
||||||
DBUG_RETURN(TRUE);
|
goto err;
|
||||||
else
|
else
|
||||||
if (Item_subselect::fix_fields(thd_arg, ref))
|
if (Item_subselect::fix_fields(thd_arg, ref))
|
||||||
DBUG_RETURN(TRUE);
|
goto err;
|
||||||
fixed= TRUE;
|
fixed= TRUE;
|
||||||
|
thd->where= save_where;
|
||||||
DBUG_RETURN(FALSE);
|
DBUG_RETURN(FALSE);
|
||||||
|
|
||||||
|
err:
|
||||||
|
thd->where= save_where;
|
||||||
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -482,6 +482,12 @@ protected:
|
|||||||
Item **having_item);
|
Item **having_item);
|
||||||
public:
|
public:
|
||||||
Item *left_expr;
|
Item *left_expr;
|
||||||
|
/*
|
||||||
|
Important for PS/SP: left_expr_orig is the item that left_expr originally
|
||||||
|
pointed at. That item is allocated on the statement arena, while
|
||||||
|
left_expr could later be changed to something on the execution arena.
|
||||||
|
*/
|
||||||
|
Item *left_expr_orig;
|
||||||
/* Priority of this predicate in the convert-to-semi-join-nest process. */
|
/* Priority of this predicate in the convert-to-semi-join-nest process. */
|
||||||
int sj_convert_priority;
|
int sj_convert_priority;
|
||||||
/*
|
/*
|
||||||
|
@ -2224,20 +2224,13 @@ log_event_print_value(IO_CACHE *file, const uchar *ptr,
|
|||||||
uint precision= meta >> 8;
|
uint precision= meta >> 8;
|
||||||
uint decimals= meta & 0xFF;
|
uint decimals= meta & 0xFF;
|
||||||
uint bin_size= my_decimal_get_binary_size(precision, decimals);
|
uint bin_size= my_decimal_get_binary_size(precision, decimals);
|
||||||
uint length;
|
|
||||||
my_decimal dec;
|
my_decimal dec;
|
||||||
binary2my_decimal(E_DEC_FATAL_ERROR, (uchar*) ptr, &dec,
|
binary2my_decimal(E_DEC_FATAL_ERROR, (uchar*) ptr, &dec,
|
||||||
precision, decimals);
|
precision, decimals);
|
||||||
int i, end;
|
int length= DECIMAL_MAX_STR_LENGTH;
|
||||||
char buff[512], *pos;
|
char buff[DECIMAL_MAX_STR_LENGTH + 1];
|
||||||
pos= buff;
|
decimal2string(&dec, buff, &length, 0, 0, 0);
|
||||||
pos+= sprintf(buff, "%s", dec.sign() ? "-" : "");
|
my_b_write(file, (uchar*)buff, length);
|
||||||
end= ROUND_UP(dec.frac) + ROUND_UP(dec.intg)-1;
|
|
||||||
for (i=0; i < end; i++)
|
|
||||||
pos+= sprintf(pos, "%09d.", dec.buf[i]);
|
|
||||||
pos+= sprintf(pos, "%09d", dec.buf[i]);
|
|
||||||
length= (uint) (pos - buff);
|
|
||||||
my_b_write(file, buff, length);
|
|
||||||
my_snprintf(typestr, typestr_length, "DECIMAL(%d,%d)",
|
my_snprintf(typestr, typestr_length, "DECIMAL(%d,%d)",
|
||||||
precision, decimals);
|
precision, decimals);
|
||||||
return bin_size;
|
return bin_size;
|
||||||
|
@ -4344,14 +4344,24 @@ static int init_common_variables()
|
|||||||
{
|
{
|
||||||
if (lower_case_table_names_used)
|
if (lower_case_table_names_used)
|
||||||
{
|
{
|
||||||
|
#if MYSQL_VERSION_ID < 100100
|
||||||
if (global_system_variables.log_warnings)
|
if (global_system_variables.log_warnings)
|
||||||
sql_print_warning("You have forced lower_case_table_names to 0 through "
|
sql_print_warning("You have forced lower_case_table_names to 0 through "
|
||||||
"a command-line option, even though your file system "
|
"a command-line option, even though your file system "
|
||||||
"'%s' is case insensitive. This means that you can "
|
"'%s' is case insensitive. This means that you can "
|
||||||
"corrupt a MyISAM table by accessing it with "
|
"corrupt your tables if you access them using names "
|
||||||
"different cases. You should consider changing "
|
"with different letter case. You should consider "
|
||||||
"lower_case_table_names to 1 or 2",
|
"changing lower_case_table_names to 1 or 2",
|
||||||
mysql_real_data_home);
|
mysql_real_data_home);
|
||||||
|
#else
|
||||||
|
sql_print_error("The server option 'lower_case_table_names' is "
|
||||||
|
"configured to use case sensitive table names but the "
|
||||||
|
"data directory resides on a case-insensitive file system. "
|
||||||
|
"Please use a case sensitive file system for your data "
|
||||||
|
"directory or switch to a case-insensitive table name "
|
||||||
|
"mode.");
|
||||||
|
#endif
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2014, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2008, 2014, Monty Program Ab.
|
Copyright (c) 2008, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -4634,7 +4634,16 @@ int find_used_partitions(PART_PRUNE_PARAM *ppar, SEL_ARG *key_tree)
|
|||||||
key_tree->min_flag |
|
key_tree->min_flag |
|
||||||
key_tree->max_flag,
|
key_tree->max_flag,
|
||||||
&subpart_iter);
|
&subpart_iter);
|
||||||
DBUG_ASSERT(res); /* We can't get "no satisfying subpartitions" */
|
if (res == 0)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
The only case where we can get "no satisfying subpartitions"
|
||||||
|
returned from the above call is when an error has occurred.
|
||||||
|
*/
|
||||||
|
DBUG_ASSERT(range_par->thd->is_error());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (res == -1)
|
if (res == -1)
|
||||||
goto pop_and_go_right; /* all subpartitions satisfy */
|
goto pop_and_go_right; /* all subpartitions satisfy */
|
||||||
|
|
||||||
|
@ -617,6 +617,18 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
|||||||
thd->stmt_arena->state != Query_arena::PREPARED)
|
thd->stmt_arena->state != Query_arena::PREPARED)
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
SELECT_LEX *current= thd->lex->current_select;
|
||||||
|
thd->lex->current_select= current->return_after_parsing();
|
||||||
|
char const *save_where= thd->where;
|
||||||
|
thd->where= "IN/ALL/ANY subquery";
|
||||||
|
|
||||||
|
bool failure= !in_subs->left_expr->fixed &&
|
||||||
|
in_subs->left_expr->fix_fields(thd, &in_subs->left_expr);
|
||||||
|
thd->lex->current_select= current;
|
||||||
|
thd->where= save_where;
|
||||||
|
if (failure)
|
||||||
|
DBUG_RETURN(-1); /* purecov: deadcode */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Check if the left and right expressions have the same # of
|
Check if the left and right expressions have the same # of
|
||||||
columns, i.e. we don't have a case like
|
columns, i.e. we don't have a case like
|
||||||
@ -630,18 +642,6 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
|||||||
my_error(ER_OPERAND_COLUMNS, MYF(0), in_subs->left_expr->cols());
|
my_error(ER_OPERAND_COLUMNS, MYF(0), in_subs->left_expr->cols());
|
||||||
DBUG_RETURN(-1);
|
DBUG_RETURN(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
SELECT_LEX *current= thd->lex->current_select;
|
|
||||||
thd->lex->current_select= current->return_after_parsing();
|
|
||||||
char const *save_where= thd->where;
|
|
||||||
thd->where= "IN/ALL/ANY subquery";
|
|
||||||
|
|
||||||
bool failure= !in_subs->left_expr->fixed &&
|
|
||||||
in_subs->left_expr->fix_fields(thd, &in_subs->left_expr);
|
|
||||||
thd->lex->current_select= current;
|
|
||||||
thd->where= save_where;
|
|
||||||
if (failure)
|
|
||||||
DBUG_RETURN(-1); /* purecov: deadcode */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DBUG_PRINT("info", ("Checking if subq can be converted to semi-join"));
|
DBUG_PRINT("info", ("Checking if subq can be converted to semi-join"));
|
||||||
@ -704,6 +704,12 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
|||||||
if (!optimizer_flag(thd, OPTIMIZER_SWITCH_IN_TO_EXISTS) &&
|
if (!optimizer_flag(thd, OPTIMIZER_SWITCH_IN_TO_EXISTS) &&
|
||||||
!optimizer_flag(thd, OPTIMIZER_SWITCH_MATERIALIZATION))
|
!optimizer_flag(thd, OPTIMIZER_SWITCH_MATERIALIZATION))
|
||||||
my_error(ER_ILLEGAL_SUBQUERY_OPTIMIZER_SWITCHES, MYF(0));
|
my_error(ER_ILLEGAL_SUBQUERY_OPTIMIZER_SWITCHES, MYF(0));
|
||||||
|
/*
|
||||||
|
Transform each subquery predicate according to its overloaded
|
||||||
|
transformer.
|
||||||
|
*/
|
||||||
|
if (subselect->select_transformer(join))
|
||||||
|
DBUG_RETURN(-1);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
If the subquery predicate is IN/=ANY, analyse and set all possible
|
If the subquery predicate is IN/=ANY, analyse and set all possible
|
||||||
@ -755,12 +761,6 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
|||||||
allany_subs->add_strategy(strategy);
|
allany_subs->add_strategy(strategy);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
Transform each subquery predicate according to its overloaded
|
|
||||||
transformer.
|
|
||||||
*/
|
|
||||||
if (subselect->select_transformer(join))
|
|
||||||
DBUG_RETURN(-1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
@ -1593,8 +1593,19 @@ static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred)
|
|||||||
if (subq_pred->left_expr->cols() == 1)
|
if (subq_pred->left_expr->cols() == 1)
|
||||||
{
|
{
|
||||||
nested_join->sj_outer_expr_list.push_back(subq_pred->left_expr);
|
nested_join->sj_outer_expr_list.push_back(subq_pred->left_expr);
|
||||||
|
/*
|
||||||
|
Create Item_func_eq. Note that
|
||||||
|
1. this is done on the statement, not execution, arena
|
||||||
|
2. if it's a PS then this happens only once - on the first execution.
|
||||||
|
On following re-executions, the item will be fix_field-ed normally.
|
||||||
|
3. Thus it should be created as if it was fix_field'ed, in particular
|
||||||
|
all pointers to items in the execution arena should be protected
|
||||||
|
with thd->change_item_tree
|
||||||
|
*/
|
||||||
Item_func_eq *item_eq=
|
Item_func_eq *item_eq=
|
||||||
new Item_func_eq(subq_pred->left_expr, subq_lex->ref_pointer_array[0]);
|
new Item_func_eq(subq_pred->left_expr_orig, subq_lex->ref_pointer_array[0]);
|
||||||
|
if (subq_pred->left_expr_orig != subq_pred->left_expr)
|
||||||
|
thd->change_item_tree(item_eq->arguments(), subq_pred->left_expr);
|
||||||
item_eq->in_equality_no= 0;
|
item_eq->in_equality_no= 0;
|
||||||
sj_nest->sj_on_expr= and_items(sj_nest->sj_on_expr, item_eq);
|
sj_nest->sj_on_expr= and_items(sj_nest->sj_on_expr, item_eq);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
/* Copyright (c) 2006, 2013, Oracle and/or its affiliates.
|
/* Copyright (c) 2006, 2015, Oracle and/or its affiliates.
|
||||||
|
Copyright (c) 2010, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -1665,15 +1666,22 @@ bool partition_info::check_partition_info(THD *thd, handlerton **eng_type,
|
|||||||
{
|
{
|
||||||
int err= 0;
|
int err= 0;
|
||||||
|
|
||||||
|
/* Check for partition expression. */
|
||||||
if (!list_of_part_fields)
|
if (!list_of_part_fields)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(part_expr);
|
DBUG_ASSERT(part_expr);
|
||||||
err= part_expr->walk(&Item::check_partition_func_processor, 0,
|
err= part_expr->walk(&Item::check_partition_func_processor, 0,
|
||||||
NULL);
|
NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check for sub partition expression. */
|
||||||
if (!err && is_sub_partitioned() && !list_of_subpart_fields)
|
if (!err && is_sub_partitioned() && !list_of_subpart_fields)
|
||||||
|
{
|
||||||
|
DBUG_ASSERT(subpart_expr);
|
||||||
err= subpart_expr->walk(&Item::check_partition_func_processor, 0,
|
err= subpart_expr->walk(&Item::check_partition_func_processor, 0,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0));
|
my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0));
|
||||||
|
@ -6720,16 +6720,18 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
|
|||||||
|
|
||||||
for (tl= tables; number-- ; tl= tl->next_global)
|
for (tl= tables; number-- ; tl= tl->next_global)
|
||||||
{
|
{
|
||||||
sctx= MY_TEST(tl->security_ctx) ? tl->security_ctx : thd->security_ctx;
|
TABLE_LIST *const t_ref=
|
||||||
|
tl->correspondent_table ? tl->correspondent_table : tl;
|
||||||
|
sctx= t_ref->security_ctx ? t_ref->security_ctx : thd->security_ctx;
|
||||||
|
|
||||||
const ACL_internal_table_access *access=
|
const ACL_internal_table_access *access=
|
||||||
get_cached_table_access(&tl->grant.m_internal,
|
get_cached_table_access(&t_ref->grant.m_internal,
|
||||||
tl->get_db_name(),
|
t_ref->get_db_name(),
|
||||||
tl->get_table_name());
|
t_ref->get_table_name());
|
||||||
|
|
||||||
if (access)
|
if (access)
|
||||||
{
|
{
|
||||||
switch(access->check(orig_want_access, &tl->grant.privilege))
|
switch(access->check(orig_want_access, &t_ref->grant.privilege))
|
||||||
{
|
{
|
||||||
case ACL_INTERNAL_ACCESS_GRANTED:
|
case ACL_INTERNAL_ACCESS_GRANTED:
|
||||||
/*
|
/*
|
||||||
@ -6753,26 +6755,26 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
|
|||||||
if (!want_access)
|
if (!want_access)
|
||||||
continue; // ok
|
continue; // ok
|
||||||
|
|
||||||
if (!(~tl->grant.privilege & want_access) ||
|
if (!(~t_ref->grant.privilege & want_access) ||
|
||||||
tl->is_anonymous_derived_table() || tl->schema_table)
|
t_ref->is_anonymous_derived_table() || t_ref->schema_table)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
It is subquery in the FROM clause. VIEW set tl->derived after
|
It is subquery in the FROM clause. VIEW set t_ref->derived after
|
||||||
table opening, but this function always called before table opening.
|
table opening, but this function always called before table opening.
|
||||||
*/
|
*/
|
||||||
if (!tl->referencing_view)
|
if (!t_ref->referencing_view)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
If it's a temporary table created for a subquery in the FROM
|
If it's a temporary table created for a subquery in the FROM
|
||||||
clause, or an INFORMATION_SCHEMA table, drop the request for
|
clause, or an INFORMATION_SCHEMA table, drop the request for
|
||||||
a privilege.
|
a privilege.
|
||||||
*/
|
*/
|
||||||
tl->grant.want_privilege= 0;
|
t_ref->grant.want_privilege= 0;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_temporary_table(tl))
|
if (is_temporary_table(t_ref))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
If this table list element corresponds to a pre-opened temporary
|
If this table list element corresponds to a pre-opened temporary
|
||||||
@ -6780,8 +6782,8 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
|
|||||||
Note that during creation of temporary table we still need to check
|
Note that during creation of temporary table we still need to check
|
||||||
if user has CREATE_TMP_ACL.
|
if user has CREATE_TMP_ACL.
|
||||||
*/
|
*/
|
||||||
tl->grant.privilege|= TMP_TABLE_ACLS;
|
t_ref->grant.privilege|= TMP_TABLE_ACLS;
|
||||||
tl->grant.want_privilege= 0;
|
t_ref->grant.want_privilege= 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6792,20 +6794,20 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
|
|||||||
}
|
}
|
||||||
|
|
||||||
grant_table= table_hash_search(sctx->host, sctx->ip,
|
grant_table= table_hash_search(sctx->host, sctx->ip,
|
||||||
tl->get_db_name(),
|
t_ref->get_db_name(),
|
||||||
sctx->priv_user,
|
sctx->priv_user,
|
||||||
tl->get_table_name(),
|
t_ref->get_table_name(),
|
||||||
FALSE);
|
FALSE);
|
||||||
if (sctx->priv_role[0])
|
if (sctx->priv_role[0])
|
||||||
grant_table_role= table_hash_search("", NULL, tl->get_db_name(),
|
grant_table_role= table_hash_search("", NULL, t_ref->get_db_name(),
|
||||||
sctx->priv_role,
|
sctx->priv_role,
|
||||||
tl->get_table_name(),
|
t_ref->get_table_name(),
|
||||||
TRUE);
|
TRUE);
|
||||||
|
|
||||||
if (!grant_table && !grant_table_role)
|
if (!grant_table && !grant_table_role)
|
||||||
{
|
{
|
||||||
want_access&= ~tl->grant.privilege;
|
want_access&= ~t_ref->grant.privilege;
|
||||||
goto err;
|
goto err; // No grants
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -6815,19 +6817,19 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
|
|||||||
if (any_combination_will_do)
|
if (any_combination_will_do)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
tl->grant.grant_table_user= grant_table; // Remember for column test
|
t_ref->grant.grant_table_user= grant_table; // Remember for column test
|
||||||
tl->grant.grant_table_role= grant_table_role;
|
t_ref->grant.grant_table_role= grant_table_role;
|
||||||
tl->grant.version= grant_version;
|
t_ref->grant.version= grant_version;
|
||||||
tl->grant.privilege|= grant_table ? grant_table->privs : 0;
|
t_ref->grant.privilege|= grant_table ? grant_table->privs : 0;
|
||||||
tl->grant.privilege|= grant_table_role ? grant_table_role->privs : 0;
|
t_ref->grant.privilege|= grant_table_role ? grant_table_role->privs : 0;
|
||||||
tl->grant.want_privilege= ((want_access & COL_ACLS) & ~tl->grant.privilege);
|
t_ref->grant.want_privilege= ((want_access & COL_ACLS) & ~t_ref->grant.privilege);
|
||||||
|
|
||||||
if (!(~tl->grant.privilege & want_access))
|
if (!(~t_ref->grant.privilege & want_access))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ((want_access&= ~((grant_table ? grant_table->cols : 0) |
|
if ((want_access&= ~((grant_table ? grant_table->cols : 0) |
|
||||||
(grant_table_role ? grant_table_role->cols : 0) |
|
(grant_table_role ? grant_table_role->cols : 0) |
|
||||||
tl->grant.privilege)))
|
t_ref->grant.privilege)))
|
||||||
{
|
{
|
||||||
goto err; // impossible
|
goto err; // impossible
|
||||||
}
|
}
|
||||||
|
@ -1094,13 +1094,20 @@ bool close_temporary_tables(THD *thd)
|
|||||||
DBUG_RETURN(FALSE);
|
DBUG_RETURN(FALSE);
|
||||||
DBUG_ASSERT(!thd->rgi_slave);
|
DBUG_ASSERT(!thd->rgi_slave);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Ensure we don't have open HANDLERs for tables we are about to close.
|
||||||
|
This is necessary when close_temporary_tables() is called as part
|
||||||
|
of execution of BINLOG statement (e.g. for format description event).
|
||||||
|
*/
|
||||||
|
mysql_ha_rm_temporary_tables(thd);
|
||||||
if (!mysql_bin_log.is_open())
|
if (!mysql_bin_log.is_open())
|
||||||
{
|
{
|
||||||
TABLE *tmp_next;
|
TABLE *tmp_next;
|
||||||
for (table= thd->temporary_tables; table; table= tmp_next)
|
for (TABLE *t= thd->temporary_tables; t; t= tmp_next)
|
||||||
{
|
{
|
||||||
tmp_next= table->next;
|
tmp_next= t->next;
|
||||||
close_temporary(table, 1, 1);
|
mysql_lock_remove(thd, thd->lock, t);
|
||||||
|
close_temporary(t, 1, 1);
|
||||||
}
|
}
|
||||||
thd->temporary_tables= 0;
|
thd->temporary_tables= 0;
|
||||||
DBUG_RETURN(FALSE);
|
DBUG_RETURN(FALSE);
|
||||||
@ -1196,6 +1203,7 @@ bool close_temporary_tables(THD *thd)
|
|||||||
strlen(table->s->table_name.str));
|
strlen(table->s->table_name.str));
|
||||||
s_query.append(',');
|
s_query.append(',');
|
||||||
next= table->next;
|
next= table->next;
|
||||||
|
mysql_lock_remove(thd, thd->lock, table);
|
||||||
close_temporary(table, 1, 1);
|
close_temporary(table, 1, 1);
|
||||||
}
|
}
|
||||||
thd->clear_error();
|
thd->clear_error();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2001, 2013, Oracle and/or its affiliates.
|
/* Copyright (c) 2001, 2015, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2011, 2013, Monty Program Ab.
|
Copyright (c) 2011, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -1190,3 +1190,36 @@ void mysql_ha_set_explicit_lock_duration(THD *thd)
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
Remove temporary tables from the HANDLER's hash table. The reason
|
||||||
|
for having a separate function, rather than calling
|
||||||
|
mysql_ha_rm_tables() is that it is not always feasible (e.g. in
|
||||||
|
close_temporary_tables) to obtain a TABLE_LIST containing the
|
||||||
|
temporary tables.
|
||||||
|
|
||||||
|
@See close_temporary_tables
|
||||||
|
@param thd Thread identifier.
|
||||||
|
*/
|
||||||
|
void mysql_ha_rm_temporary_tables(THD *thd)
|
||||||
|
{
|
||||||
|
DBUG_ENTER("mysql_ha_rm_temporary_tables");
|
||||||
|
|
||||||
|
TABLE_LIST *tmp_handler_tables= NULL;
|
||||||
|
for (uint i= 0; i < thd->handler_tables_hash.records; i++)
|
||||||
|
{
|
||||||
|
TABLE_LIST *handler_table= reinterpret_cast<TABLE_LIST*>
|
||||||
|
(my_hash_element(&thd->handler_tables_hash, i));
|
||||||
|
|
||||||
|
if (handler_table->table && handler_table->table->s->tmp_table)
|
||||||
|
{
|
||||||
|
handler_table->next_local= tmp_handler_tables;
|
||||||
|
tmp_handler_tables= handler_table;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tmp_handler_tables)
|
||||||
|
mysql_ha_rm_tables(thd, tmp_handler_tables);
|
||||||
|
|
||||||
|
DBUG_VOID_RETURN;
|
||||||
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#ifndef SQL_HANDLER_INCLUDED
|
#ifndef SQL_HANDLER_INCLUDED
|
||||||
#define SQL_HANDLER_INCLUDED
|
#define SQL_HANDLER_INCLUDED
|
||||||
/* Copyright (C) 2010 Monty Program Ab
|
/* Copyright (c) 2006, 2015, Oracle and/or its affiliates.
|
||||||
|
Copyright (C) 2010, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; version 2 of the License.
|
the Free Software Foundation; version 2 of the License.
|
||||||
@ -73,6 +75,7 @@ void mysql_ha_flush_tables(THD *thd, TABLE_LIST *all_tables);
|
|||||||
void mysql_ha_rm_tables(THD *thd, TABLE_LIST *tables);
|
void mysql_ha_rm_tables(THD *thd, TABLE_LIST *tables);
|
||||||
void mysql_ha_cleanup(THD *thd);
|
void mysql_ha_cleanup(THD *thd);
|
||||||
void mysql_ha_set_explicit_lock_duration(THD *thd);
|
void mysql_ha_set_explicit_lock_duration(THD *thd);
|
||||||
|
void mysql_ha_rm_temporary_tables(THD *thd);
|
||||||
|
|
||||||
SQL_HANDLER *mysql_ha_read_prepare(THD *thd, TABLE_LIST *tables,
|
SQL_HANDLER *mysql_ha_read_prepare(THD *thd, TABLE_LIST *tables,
|
||||||
enum enum_ha_read_modes mode, char *keyname,
|
enum enum_ha_read_modes mode, char *keyname,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2010, 2014, SkySQL Ab.
|
Copyright (c) 2010, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -3852,7 +3852,6 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
|
|||||||
/* Add selected items to field list */
|
/* Add selected items to field list */
|
||||||
List_iterator_fast<Item> it(*items);
|
List_iterator_fast<Item> it(*items);
|
||||||
Item *item;
|
Item *item;
|
||||||
Field *tmp_field;
|
|
||||||
DBUG_ENTER("create_table_from_items");
|
DBUG_ENTER("create_table_from_items");
|
||||||
|
|
||||||
tmp_table.alias= 0;
|
tmp_table.alias= 0;
|
||||||
@ -3867,24 +3866,49 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
|
|||||||
|
|
||||||
while ((item=it++))
|
while ((item=it++))
|
||||||
{
|
{
|
||||||
Create_field *cr_field;
|
Field *tmp_table_field;
|
||||||
Field *field, *def_field;
|
|
||||||
if (item->type() == Item::FUNC_ITEM)
|
if (item->type() == Item::FUNC_ITEM)
|
||||||
{
|
{
|
||||||
if (item->result_type() != STRING_RESULT)
|
if (item->result_type() != STRING_RESULT)
|
||||||
field= item->tmp_table_field(&tmp_table);
|
tmp_table_field= item->tmp_table_field(&tmp_table);
|
||||||
else
|
else
|
||||||
field= item->tmp_table_field_from_field_type(&tmp_table, 0);
|
tmp_table_field= item->tmp_table_field_from_field_type(&tmp_table,
|
||||||
|
false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
field= create_tmp_field(thd, &tmp_table, item, item->type(),
|
{
|
||||||
(Item ***) 0, &tmp_field, &def_field, 0, 0, 0, 0,
|
Field *from_field, * default_field;
|
||||||
0);
|
tmp_table_field= create_tmp_field(thd, &tmp_table, item, item->type(),
|
||||||
if (!field ||
|
(Item ***) NULL, &from_field, &default_field,
|
||||||
!(cr_field=new Create_field(field,(item->type() == Item::FIELD_ITEM ?
|
0, 0, 0, 0, 0);
|
||||||
((Item_field *)item)->field :
|
}
|
||||||
(Field*) 0))))
|
|
||||||
DBUG_RETURN(0);
|
if (!tmp_table_field)
|
||||||
|
DBUG_RETURN(NULL);
|
||||||
|
|
||||||
|
Field *table_field;
|
||||||
|
|
||||||
|
switch (item->type())
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
We have to take into account both the real table's fields and
|
||||||
|
pseudo-fields used in trigger's body. These fields are used
|
||||||
|
to copy defaults values later inside constructor of
|
||||||
|
the class Create_field.
|
||||||
|
*/
|
||||||
|
case Item::FIELD_ITEM:
|
||||||
|
case Item::TRIGGER_FIELD_ITEM:
|
||||||
|
table_field= ((Item_field *) item)->field;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
table_field= NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Create_field *cr_field= new Create_field(tmp_table_field, table_field);
|
||||||
|
|
||||||
|
if (!cr_field)
|
||||||
|
DBUG_RETURN(NULL);
|
||||||
|
|
||||||
if (item->maybe_null)
|
if (item->maybe_null)
|
||||||
cr_field->flags &= ~NOT_NULL_FLAG;
|
cr_field->flags &= ~NOT_NULL_FLAG;
|
||||||
alter_info->create_list.push_back(cr_field);
|
alter_info->create_list.push_back(cr_field);
|
||||||
@ -3974,7 +3998,7 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
|
|||||||
{
|
{
|
||||||
if (!thd->is_error()) // CREATE ... IF NOT EXISTS
|
if (!thd->is_error()) // CREATE ... IF NOT EXISTS
|
||||||
my_ok(thd); // succeed, but did nothing
|
my_ok(thd); // succeed, but did nothing
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
DEBUG_SYNC(thd,"create_table_select_before_lock");
|
DEBUG_SYNC(thd,"create_table_select_before_lock");
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates.
|
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2010, 2014, SkySQL Ab.
|
Copyright (c) 2010, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -2028,8 +2028,15 @@ int READ_INFO::read_xml()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case '/': /* close tag */
|
case '/': /* close tag */
|
||||||
level--;
|
|
||||||
chr= my_tospace(GET);
|
chr= my_tospace(GET);
|
||||||
|
/* Decrease the 'level' only when (i) It's not an */
|
||||||
|
/* (without space) empty tag i.e. <tag/> or, (ii) */
|
||||||
|
/* It is of format <row col="val" .../> */
|
||||||
|
if(chr != '>' || in_tag)
|
||||||
|
{
|
||||||
|
level--;
|
||||||
|
in_tag= false;
|
||||||
|
}
|
||||||
if(chr != '>') /* if this is an empty tag <tag /> */
|
if(chr != '>') /* if this is an empty tag <tag /> */
|
||||||
tag.length(0); /* we should keep tag value */
|
tag.length(0); /* we should keep tag value */
|
||||||
while(chr != '>' && chr != my_b_EOF)
|
while(chr != '>' && chr != my_b_EOF)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2008, 2014, SkySQL Ab.
|
Copyright (c) 2008, 2015, MariaDB
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -5825,9 +5825,12 @@ check_table_access(THD *thd, ulong requirements,TABLE_LIST *tables,
|
|||||||
for (; i < number && tables != first_not_own_table && tables;
|
for (; i < number && tables != first_not_own_table && tables;
|
||||||
tables= tables->next_global, i++)
|
tables= tables->next_global, i++)
|
||||||
{
|
{
|
||||||
|
TABLE_LIST *const table_ref= tables->correspondent_table ?
|
||||||
|
tables->correspondent_table : tables;
|
||||||
|
|
||||||
ulong want_access= requirements;
|
ulong want_access= requirements;
|
||||||
if (tables->security_ctx)
|
if (table_ref->security_ctx)
|
||||||
sctx= tables->security_ctx;
|
sctx= table_ref->security_ctx;
|
||||||
else
|
else
|
||||||
sctx= backup_ctx;
|
sctx= backup_ctx;
|
||||||
|
|
||||||
@ -5835,26 +5838,26 @@ check_table_access(THD *thd, ulong requirements,TABLE_LIST *tables,
|
|||||||
Register access for view underlying table.
|
Register access for view underlying table.
|
||||||
Remove SHOW_VIEW_ACL, because it will be checked during making view
|
Remove SHOW_VIEW_ACL, because it will be checked during making view
|
||||||
*/
|
*/
|
||||||
tables->grant.orig_want_privilege= (want_access & ~SHOW_VIEW_ACL);
|
table_ref->grant.orig_want_privilege= (want_access & ~SHOW_VIEW_ACL);
|
||||||
|
|
||||||
if (tables->schema_table_reformed)
|
if (table_ref->schema_table_reformed)
|
||||||
{
|
{
|
||||||
if (check_show_access(thd, tables))
|
if (check_show_access(thd, table_ref))
|
||||||
goto deny;
|
goto deny;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
DBUG_PRINT("info", ("derived: %d view: %d", tables->derived != 0,
|
DBUG_PRINT("info", ("derived: %d view: %d", table_ref->derived != 0,
|
||||||
tables->view != 0));
|
table_ref->view != 0));
|
||||||
|
|
||||||
if (tables->is_anonymous_derived_table())
|
if (table_ref->is_anonymous_derived_table())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
thd->security_ctx= sctx;
|
thd->security_ctx= sctx;
|
||||||
|
|
||||||
if (check_access(thd, want_access, tables->get_db_name(),
|
if (check_access(thd, want_access, table_ref->get_db_name(),
|
||||||
&tables->grant.privilege,
|
&table_ref->grant.privilege,
|
||||||
&tables->grant.m_internal,
|
&table_ref->grant.m_internal,
|
||||||
0, no_errors))
|
0, no_errors))
|
||||||
goto deny;
|
goto deny;
|
||||||
}
|
}
|
||||||
|
@ -15600,6 +15600,7 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
|
|||||||
case Item::FIELD_ITEM:
|
case Item::FIELD_ITEM:
|
||||||
case Item::DEFAULT_VALUE_ITEM:
|
case Item::DEFAULT_VALUE_ITEM:
|
||||||
case Item::INSERT_VALUE_ITEM:
|
case Item::INSERT_VALUE_ITEM:
|
||||||
|
case Item::TRIGGER_FIELD_ITEM:
|
||||||
{
|
{
|
||||||
Item_field *field= (Item_field*) item;
|
Item_field *field= (Item_field*) item;
|
||||||
bool orig_modify= modify_item;
|
bool orig_modify= modify_item;
|
||||||
@ -18051,6 +18052,10 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab,
|
|||||||
if (return_tab < join->return_tab)
|
if (return_tab < join->return_tab)
|
||||||
join->return_tab= return_tab;
|
join->return_tab= return_tab;
|
||||||
|
|
||||||
|
/* check for errors evaluating the condition */
|
||||||
|
if (join->thd->is_error())
|
||||||
|
DBUG_RETURN(NESTED_LOOP_ERROR);
|
||||||
|
|
||||||
if (join->return_tab < join_tab)
|
if (join->return_tab < join_tab)
|
||||||
DBUG_RETURN(NESTED_LOOP_OK);
|
DBUG_RETURN(NESTED_LOOP_OK);
|
||||||
/*
|
/*
|
||||||
|
@ -8104,13 +8104,14 @@ bool get_schema_tables_result(JOIN *join,
|
|||||||
TABLE_LIST *table_list= tab->table->pos_in_table_list;
|
TABLE_LIST *table_list= tab->table->pos_in_table_list;
|
||||||
if (table_list->schema_table && thd->fill_information_schema_tables())
|
if (table_list->schema_table && thd->fill_information_schema_tables())
|
||||||
{
|
{
|
||||||
#if MYSQL_VERSION_ID > 100105
|
/*
|
||||||
#error I_S tables only need to be re-populated if make_cond_for_info_schema() will preserve outer fields
|
I_S tables only need to be re-populated if make_cond_for_info_schema()
|
||||||
bool is_subselect= (&lex->unit != lex->current_select->master_unit() &&
|
preserves outer fields
|
||||||
lex->current_select->master_unit()->item);
|
*/
|
||||||
#else
|
bool is_subselect= &lex->unit != lex->current_select->master_unit() &&
|
||||||
#define is_subselect false
|
lex->current_select->master_unit()->item &&
|
||||||
#endif
|
tab->select_cond &&
|
||||||
|
tab->select_cond->used_tables() & OUTER_REF_TABLE_BIT;
|
||||||
|
|
||||||
/* A value of 0 indicates a dummy implementation */
|
/* A value of 0 indicates a dummy implementation */
|
||||||
if (table_list->schema_table->fill_table == 0)
|
if (table_list->schema_table->fill_table == 0)
|
||||||
|
@ -11507,8 +11507,20 @@ procedure_clause:
|
|||||||
if (add_proc_to_list(lex->thd, item))
|
if (add_proc_to_list(lex->thd, item))
|
||||||
MYSQL_YYABORT;
|
MYSQL_YYABORT;
|
||||||
Lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
|
Lex->uncacheable(UNCACHEABLE_SIDEEFFECT);
|
||||||
|
|
||||||
|
/*
|
||||||
|
PROCEDURE CLAUSE cannot handle subquery as one of its parameter,
|
||||||
|
so set expr_allows_subselect as false to disallow any subqueries
|
||||||
|
further. Reset expr_allows_subselect back to true once the
|
||||||
|
parameters are reduced.
|
||||||
|
*/
|
||||||
|
Lex->expr_allows_subselect= false;
|
||||||
}
|
}
|
||||||
'(' procedure_list ')'
|
'(' procedure_list ')'
|
||||||
|
{
|
||||||
|
/* Subqueries are allowed from now.*/
|
||||||
|
Lex->expr_allows_subselect= true;
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
procedure_list:
|
procedure_list:
|
||||||
|
@ -635,7 +635,7 @@ install -m 644 "%{malloc_lib_source}" \
|
|||||||
# Check local settings to support them.
|
# Check local settings to support them.
|
||||||
if [ -x %{_bindir}/my_print_defaults ]
|
if [ -x %{_bindir}/my_print_defaults ]
|
||||||
then
|
then
|
||||||
mysql_datadir=`%{_bindir}/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p'`
|
mysql_datadir=`%{_bindir}/my_print_defaults server mysqld | grep '^--datadir=' | tail -1 | sed -n 's/--datadir=//p'`
|
||||||
PID_FILE_PATT=`%{_bindir}/my_print_defaults server mysqld | grep '^--pid-file=' | sed -n 's/--pid-file=//p'`
|
PID_FILE_PATT=`%{_bindir}/my_print_defaults server mysqld | grep '^--pid-file=' | sed -n 's/--pid-file=//p'`
|
||||||
fi
|
fi
|
||||||
if [ -z "$mysql_datadir" ]
|
if [ -z "$mysql_datadir" ]
|
||||||
@ -740,7 +740,7 @@ esac
|
|||||||
|
|
||||||
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
|
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
|
||||||
|
|
||||||
if [ -f $STATUS_FILE ]; then
|
if [ -f "$STATUS_FILE" ]; then
|
||||||
echo "Some previous upgrade was not finished:"
|
echo "Some previous upgrade was not finished:"
|
||||||
ls -ld $STATUS_FILE
|
ls -ld $STATUS_FILE
|
||||||
echo "Please check its status, then do"
|
echo "Please check its status, then do"
|
||||||
@ -811,7 +811,7 @@ fi
|
|||||||
# Check local settings to support them.
|
# Check local settings to support them.
|
||||||
if [ -x %{_bindir}/my_print_defaults ]
|
if [ -x %{_bindir}/my_print_defaults ]
|
||||||
then
|
then
|
||||||
mysql_datadir=`%{_bindir}/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p'`
|
mysql_datadir=`%{_bindir}/my_print_defaults server mysqld | grep '^--datadir=' | tail -1 | sed -n 's/--datadir=//p'`
|
||||||
fi
|
fi
|
||||||
if [ -z "$mysql_datadir" ]
|
if [ -z "$mysql_datadir" ]
|
||||||
then
|
then
|
||||||
@ -824,8 +824,8 @@ STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
|
|||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
# Create data directory if needed, check whether upgrade or install
|
# Create data directory if needed, check whether upgrade or install
|
||||||
# ----------------------------------------------------------------------
|
# ----------------------------------------------------------------------
|
||||||
if [ ! -d $mysql_datadir ] ; then mkdir -m 755 $mysql_datadir; fi
|
if [ ! -d "$mysql_datadir" ] ; then mkdir -m 755 "$mysql_datadir" ; fi
|
||||||
if [ -f $STATUS_FILE ] ; then
|
if [ -f "$STATUS_FILE" ] ; then
|
||||||
SERVER_TO_START=`grep '^SERVER_TO_START=' $STATUS_FILE | cut -c17-`
|
SERVER_TO_START=`grep '^SERVER_TO_START=' $STATUS_FILE | cut -c17-`
|
||||||
else
|
else
|
||||||
SERVER_TO_START=''
|
SERVER_TO_START=''
|
||||||
@ -1003,7 +1003,7 @@ fi
|
|||||||
# Check local settings to support them.
|
# Check local settings to support them.
|
||||||
if [ -x %{_bindir}/my_print_defaults ]
|
if [ -x %{_bindir}/my_print_defaults ]
|
||||||
then
|
then
|
||||||
mysql_datadir=`%{_bindir}/my_print_defaults server mysqld | grep '^--datadir=' | sed -n 's/--datadir=//p'`
|
mysql_datadir=`%{_bindir}/my_print_defaults server mysqld | grep '^--datadir=' | tail -1 | sed -n 's/--datadir=//p'`
|
||||||
fi
|
fi
|
||||||
if [ -z "$mysql_datadir" ]
|
if [ -z "$mysql_datadir" ]
|
||||||
then
|
then
|
||||||
@ -1014,7 +1014,7 @@ NEW_VERSION=%{mysql_version}-%{release}
|
|||||||
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER-LAST # Note the difference!
|
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER-LAST # Note the difference!
|
||||||
STATUS_HISTORY=$mysql_datadir/RPM_UPGRADE_HISTORY
|
STATUS_HISTORY=$mysql_datadir/RPM_UPGRADE_HISTORY
|
||||||
|
|
||||||
if [ -f $STATUS_FILE ] ; then
|
if [ -f "$STATUS_FILE" ] ; then
|
||||||
SERVER_TO_START=`grep '^SERVER_TO_START=' $STATUS_FILE | cut -c17-`
|
SERVER_TO_START=`grep '^SERVER_TO_START=' $STATUS_FILE | cut -c17-`
|
||||||
else
|
else
|
||||||
# This should never happen, but let's be prepared
|
# This should never happen, but let's be prepared
|
||||||
|
@ -17,6 +17,8 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|||||||
#define UNICODE
|
#define UNICODE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#undef NOMINMAX
|
||||||
|
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winreg.h>
|
#include <winreg.h>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user