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
|
||||
# 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)
|
||||
|
||||
MYSQL_ADD_EXECUTABLE(mysqlimport mysqlimport.c)
|
||||
SET_SOURCE_FILES_PROPERTIES(mysqlimport.c PROPERTIES COMPILE_FLAGS "-DTHREADS")
|
||||
TARGET_LINK_LIBRARIES(mysqlimport mysqlclient)
|
||||
|
||||
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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -30,7 +31,6 @@
|
||||
|
||||
#include "client_priv.h"
|
||||
#include "mysql_version.h"
|
||||
#include <my_pthread.h>
|
||||
|
||||
#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)
|
||||
{
|
||||
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
|
||||
# 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)
|
||||
ENDIF()
|
||||
|
||||
ADD_DEFINITIONS("-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE")
|
||||
ADD_DEFINITIONS("-D_WIN32_WINNT=0x0501")
|
||||
ADD_DEFINITIONS(-D_WINDOWS -D__WIN__ -D_CRT_SECURE_NO_DEPRECATE)
|
||||
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
|
||||
ADD_DEFINITIONS("-DWIN32_LEAN_AND_MEAN")
|
||||
ADD_DEFINITIONS(-DWIN32_LEAN_AND_MEAN)
|
||||
|
||||
# Adjust compiler and linker flags
|
||||
IF(MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
|
@ -12,6 +12,35 @@ before calling SSL_new();
|
||||
|
||||
*** 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)
|
||||
This release of yaSSL fixes the potential to process duplicate handshake
|
||||
messages by explicitly marking/checking received handshake messages.
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include "rsa.h"
|
||||
|
||||
|
||||
#define YASSL_VERSION "2.3.7"
|
||||
#define YASSL_VERSION "2.3.8"
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
|
@ -53,7 +53,8 @@ enum YasslError {
|
||||
compress_error = 118,
|
||||
decompress_error = 119,
|
||||
pms_version_error = 120,
|
||||
sanityCipher_error = 121
|
||||
sanityCipher_error = 121,
|
||||
rsaSignFault_error = 122
|
||||
|
||||
// !!!! add error message to .cpp !!!!
|
||||
|
||||
|
@ -165,7 +165,7 @@ void input_buffer::set_error()
|
||||
|
||||
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;
|
||||
else
|
||||
error_ = -1;
|
||||
|
@ -1173,6 +1173,8 @@ void sendCertificateVerify(SSL& ssl, BufferOutput buffer)
|
||||
|
||||
CertificateVerify verify;
|
||||
verify.Build(ssl);
|
||||
if (ssl.GetError()) return;
|
||||
|
||||
RecordLayerHeader rlHeader;
|
||||
HandShakeHeader hsHeader;
|
||||
mySTL::auto_ptr<output_buffer> out(NEW_YS output_buffer);
|
||||
|
@ -37,6 +37,8 @@
|
||||
#include "file.hpp" // for TaoCrypt Source
|
||||
#include "coding.hpp" // HexDecoder
|
||||
#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 <time.h>
|
||||
|
||||
@ -55,6 +57,8 @@ namespace yaSSL {
|
||||
|
||||
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)
|
||||
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);
|
||||
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);
|
||||
break;
|
||||
|
||||
case rsaSignFault_error:
|
||||
strncpy(buffer, "rsa signature fault error", max);
|
||||
break;
|
||||
|
||||
// openssl errors
|
||||
case SSL_ERROR_WANT_READ :
|
||||
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.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),
|
||||
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 {
|
||||
auth->sign(signature_, &hash[MD5_LEN], SHA_LEN,
|
||||
ssl.getCrypto().get_random());
|
||||
@ -2159,6 +2166,12 @@ void CertificateVerify::Build(SSL& ssl)
|
||||
memcpy(sig.get(), len, VERIFY_HEADER);
|
||||
rsa.sign(sig.get() + VERIFY_HEADER, hashes_.md5_, sizeof(Hashes),
|
||||
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
|
||||
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
|
||||
|
||||
|
||||
// to the minute
|
||||
// to the second
|
||||
bool operator>(tm& a, tm& b)
|
||||
{
|
||||
if (a.tm_year > b.tm_year)
|
||||
@ -105,13 +105,18 @@ bool operator>(tm& a, tm& b)
|
||||
a.tm_min > b.tm_min)
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
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,
|
||||
word32 pkcsBlockLen, RandomNumberGenerator&) const
|
||||
{
|
||||
// sanity checks
|
||||
if (input == NULL || pkcsBlock == NULL)
|
||||
return;
|
||||
|
||||
// convert from bit length to byte length
|
||||
if (pkcsBlockLen % 8 != 0)
|
||||
{
|
||||
|
@ -4,6 +4,7 @@
|
||||
#
|
||||
|
||||
|
||||
no_pid=-1
|
||||
server_pid=$no_pid
|
||||
|
||||
|
||||
|
@ -11,9 +11,7 @@
|
||||
##############################################################################
|
||||
tablespace : disabled in MariaDB (no TABLESPACE table attribute)
|
||||
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
|
||||
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
|
||||
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.
|
||||
@ -21,3 +19,4 @@ ssl_crl_clients_valid : broken upstream
|
||||
ssl_crl : broken upstream
|
||||
ssl_crl_clrpath : broken upstream
|
||||
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
|
||||
|
||||
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
|
||||
# it until it's told to
|
||||
--let $_server_id= `SELECT @@server_id`
|
||||
@ -15,8 +31,8 @@ if ($rpl_inited)
|
||||
--exec echo "wait" > $_expect_file_name
|
||||
|
||||
# Send shutdown to the connected server and give
|
||||
# it 60 seconds to die before zapping it
|
||||
shutdown_server 60;
|
||||
# it 10 seconds to die before zapping it
|
||||
shutdown_server $server_shutdown_timeout;
|
||||
|
||||
# Write file to make mysql-test-run.pl start up the server again
|
||||
--exec echo "restart" > $_expect_file_name
|
||||
|
@ -234,3 +234,20 @@ SELECT if(1, NULL, (SELECT min('hello')));
|
||||
if(1, NULL, (SELECT min('hello')))
|
||||
NULL
|
||||
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:
|
||||
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
|
||||
#
|
||||
# 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
|
||||
select release_lock(repeat('a', 193));
|
||||
ERROR 42000: Identifier name 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' is too long
|
||||
#
|
||||
# End of 5.5 tests
|
||||
#
|
||||
|
||||
# --
|
||||
# -- 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');
|
||||
variable_name
|
||||
BASEDIR
|
||||
create table t1 (a char);
|
||||
insert t1 values ('a'),('t'),('z');
|
||||
flush status;
|
||||
select a, exists (select 1 from information_schema.columns where table_schema=concat('tes',a)) from t1;
|
||||
a exists (select 1 from information_schema.columns where table_schema=concat('tes',a))
|
||||
a 0
|
||||
t 1
|
||||
z 0
|
||||
show status like 'created_tmp_tables';
|
||||
Variable_name Value
|
||||
Created_tmp_tables 43
|
||||
drop table t1;
|
||||
create table t1 (x int);
|
||||
create table t2 (x int);
|
||||
create table t3 (x int);
|
||||
create table t4 AS select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE' ;
|
||||
delete from t4 where table_name not in (select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE');
|
||||
select * from t4;
|
||||
table_name
|
||||
t1
|
||||
t2
|
||||
t3
|
||||
t4
|
||||
drop table t1, t2, t3, t4;
|
||||
|
@ -93,3 +93,30 @@ a b
|
||||
216 !&bb b;
|
||||
3 !b3
|
||||
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
|
||||
aberration
|
||||
drop table words;
|
||||
mysqlimport: Error: 1146, Table 'test.words' doesn't exist, when using table: words
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
drop table words2;
|
||||
@ -5286,6 +5285,34 @@ drop table t1, t2;
|
||||
#
|
||||
# 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]
|
||||
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
|
||||
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
|
||||
|
@ -1099,7 +1099,7 @@ partition by key (a)
|
||||
subpartition by hash (sin(a+b))
|
||||
(partition x1 (subpartition x11, subpartition x12),
|
||||
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');
|
||||
load_file('$MYSQLD_DATADIR/test/t1.par')
|
||||
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));
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
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;
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
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;
|
||||
CREATE TABLE t1 (a INT);
|
||||
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);
|
||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||
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))
|
||||
0
|
||||
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));
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
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;
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
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;
|
||||
CREATE TABLE t1 (a INT);
|
||||
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);
|
||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||
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))
|
||||
0
|
||||
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;
|
||||
select @@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));
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
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;
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
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;
|
||||
CREATE TABLE t1 (a INT);
|
||||
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);
|
||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||
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))
|
||||
0
|
||||
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;
|
||||
|
@ -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));
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
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;
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
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;
|
||||
CREATE TABLE t1 (a INT);
|
||||
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);
|
||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||
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))
|
||||
0
|
||||
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;
|
||||
select @@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));
|
||||
ERROR HY000: Incorrect usage of PROCEDURE and subquery
|
||||
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;
|
||||
ERROR 42S22: Unknown column 'a' in 'field list'
|
||||
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;
|
||||
CREATE TABLE t1 (a INT);
|
||||
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);
|
||||
ERROR 42S22: Unknown column 'no_such_column' in 'where clause'
|
||||
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))
|
||||
0
|
||||
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 @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 FUNCTION f1;
|
||||
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
|
||||
# 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
|
||||
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)
|
||||
#
|
||||
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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### 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 #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
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
|
||||
### INSERT INTO `test`.`t1`
|
||||
### 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 #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
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
|
||||
### DELETE FROM `test`.`t1`
|
||||
### 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 #
|
||||
#010909 4:46:40 server id 1 end_log_pos # Query thread_id=# exec_time=# error_code=0
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
|
@ -2398,9 +2398,9 @@ BEGIN
|
||||
### @22=-1.797... /* 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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=0 /* 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 */
|
||||
### @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 */
|
||||
@ -2491,9 +2491,9 @@ BEGIN
|
||||
### @22=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 */
|
||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=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=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -2667,9 +2667,9 @@ BEGIN
|
||||
### @22=-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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -2760,9 +2760,9 @@ BEGIN
|
||||
### @22=-1.797... /* 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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=0 /* 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 */
|
||||
### @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 */
|
||||
@ -2840,9 +2840,9 @@ BEGIN
|
||||
### @22=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 */
|
||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=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=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -2933,9 +2933,9 @@ BEGIN
|
||||
### @22=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 */
|
||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=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=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -3013,9 +3013,9 @@ BEGIN
|
||||
### @22=-1.797... /* 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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=0 /* 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 */
|
||||
### @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 */
|
||||
@ -3186,9 +3186,9 @@ BEGIN
|
||||
### @22=-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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -3279,9 +3279,9 @@ BEGIN
|
||||
### @22=-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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -3452,9 +3452,9 @@ BEGIN
|
||||
### @22=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 */
|
||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=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=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -3545,9 +3545,9 @@ BEGIN
|
||||
### @22=-1.797... /* 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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=0 /* 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 */
|
||||
### @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 */
|
||||
@ -3638,9 +3638,9 @@ BEGIN
|
||||
### @22=-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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=9999999999 /* 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 */
|
||||
### @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 */
|
||||
|
@ -2398,9 +2398,9 @@ BEGIN
|
||||
### @22=-1.797... /* 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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=0 /* 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 */
|
||||
### @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 */
|
||||
@ -2494,9 +2494,9 @@ BEGIN
|
||||
### @22=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 */
|
||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=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=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -2672,9 +2672,9 @@ BEGIN
|
||||
### @22=-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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -2767,9 +2767,9 @@ BEGIN
|
||||
### @22=-1.797... /* 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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=0 /* 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 */
|
||||
### @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 */
|
||||
@ -2847,9 +2847,9 @@ BEGIN
|
||||
### @22=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 */
|
||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=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=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -2942,9 +2942,9 @@ BEGIN
|
||||
### @22=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 */
|
||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=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=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -3022,9 +3022,9 @@ BEGIN
|
||||
### @22=-1.797... /* 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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=0 /* 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 */
|
||||
### @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 */
|
||||
@ -3197,9 +3197,9 @@ BEGIN
|
||||
### @22=-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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -3292,9 +3292,9 @@ BEGIN
|
||||
### @22=-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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -3467,9 +3467,9 @@ BEGIN
|
||||
### @22=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 */
|
||||
### @25=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=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=9999999999 /* 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 */
|
||||
### @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 */
|
||||
@ -3562,9 +3562,9 @@ BEGIN
|
||||
### @22=-1.797... /* 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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000000 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=0 /* 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 */
|
||||
### @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 */
|
||||
@ -3657,9 +3657,9 @@ BEGIN
|
||||
### @22=-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 */
|
||||
### @25=-000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=000000009.999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @27=000000001 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @25=-9999999999 /* DECIMAL(10,0) meta=2560 nullable=1 is_null=0 */
|
||||
### @26=9999999999 /* 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 */
|
||||
### @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 */
|
||||
|
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
|
||||
# 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
|
||||
|
||||
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.
|
||||
--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;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
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_innodb.inc
|
||||
--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_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_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_innodb.inc
|
||||
--disable_warnings
|
||||
|
@ -38,7 +38,7 @@ spins
|
||||
NULL
|
||||
select * from performance_schema.setup_timers where name='wait';
|
||||
NAME TIMER_NAME
|
||||
wait CYCLE
|
||||
wait {CYCLE_OR_NANOSECOND}
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
Qcache_queries_in_cache 1
|
||||
@ -53,7 +53,7 @@ spins
|
||||
NULL
|
||||
select * from performance_schema.setup_timers where name='wait';
|
||||
NAME TIMER_NAME
|
||||
wait CYCLE
|
||||
wait {CYCLE_OR_NANOSECOND}
|
||||
show status like "Qcache_queries_in_cache";
|
||||
Variable_name Value
|
||||
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;
|
||||
|
||||
--replace_result CYCLE {CYCLE_OR_NANOSECOND} NANOSECOND {CYCLE_OR_NANOSECOND}
|
||||
select * from performance_schema.setup_timers where name='wait';
|
||||
|
||||
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;
|
||||
|
||||
--replace_result CYCLE {CYCLE_OR_NANOSECOND} NANOSECOND {CYCLE_OR_NANOSECOND}
|
||||
select * from performance_schema.setup_timers where name='wait';
|
||||
|
||||
show status like "Qcache_queries_in_cache";
|
||||
|
@ -1,10 +1,13 @@
|
||||
select plugin_status from information_schema.plugins where plugin_name='feedback';
|
||||
plugin_status
|
||||
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%'
|
||||
and variable_name not like '%_uid';
|
||||
and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
FEEDBACK used 1
|
||||
FEEDBACK version 1.1
|
||||
FEEDBACK_SEND_RETRY_WAIT 60
|
||||
FEEDBACK_SEND_TIMEOUT 60
|
||||
|
@ -1,10 +1,13 @@
|
||||
select plugin_status from information_schema.plugins where plugin_name='feedback';
|
||||
plugin_status
|
||||
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%'
|
||||
and variable_name not like '%_uid';
|
||||
and variable_name not like '%_uid' and variable_name not like 'FEEDBACK used';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
FEEDBACK used 3
|
||||
FEEDBACK version 1.1
|
||||
FEEDBACK_SEND_RETRY_WAIT 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';
|
||||
|
||||
# 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
|
||||
--sorted_result
|
||||
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
|
||||
# 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.
|
||||
#
|
||||
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;
|
||||
|
||||
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 #
|
||||
--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
|
||||
# Restore timezone to default
|
||||
set time_zone= @@global.time_zone;
|
||||
|
@ -397,6 +397,209 @@ drop table t1,tv;
|
||||
SELECT GET_LOCK('ul1', NULL);
|
||||
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 # GET_LOCK, RELEASE_LOCK, IS_USED_LOCK functions test
|
||||
--echo #
|
||||
@ -574,10 +777,6 @@ select is_free_lock(repeat('a', 193));
|
||||
--error ER_TOO_LONG_IDENT
|
||||
select release_lock(repeat('a', 193));
|
||||
|
||||
--echo #
|
||||
--echo # End of 5.5 tests
|
||||
--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');
|
||||
|
||||
#
|
||||
# information_schema tables inside subqueries, they should not be re-populated
|
||||
# (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)
|
||||
# MDEV-8796 Delete with sub query with information_schema.TABLES deletes too many rows
|
||||
#
|
||||
create table t1 (a char);
|
||||
insert t1 values ('a'),('t'),('z');
|
||||
flush status;
|
||||
select a, exists (select 1 from information_schema.columns where table_schema=concat('tes',a)) from t1;
|
||||
# fix the result in ps-protocol
|
||||
--replace_result 44 43
|
||||
show status like 'created_tmp_tables';
|
||||
drop table t1;
|
||||
create table t1 (x int);
|
||||
create table t2 (x int);
|
||||
create table t3 (x int);
|
||||
create table t4 AS select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE' ;
|
||||
delete from t4 where table_name not in (select table_name from information_schema.TABLES where table_schema = database() and table_type = 'BASE TABLE');
|
||||
select * from t4;
|
||||
drop table t1, t2, t3, t4;
|
||||
|
@ -116,3 +116,17 @@ LOAD XML INFILE '../../std_data/loadxml.dat' INTO TABLE t1
|
||||
ROWS IDENTIFIED BY '<row>' (a,@b) SET b=concat('!',@b);
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
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
|
||||
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
|
||||
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
|
||||
|
||||
@ -1780,7 +1775,7 @@ drop table words;
|
||||
--replace_regex /.*mysqlimport(\.exe)*/mysqlimport/
|
||||
--replace_result mysqldump.exe mysqldump
|
||||
--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 t2;
|
||||
@ -2459,6 +2454,35 @@ drop table t1, t2;
|
||||
--echo # End of 5.1 tests
|
||||
--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
|
||||
#
|
||||
|
@ -1157,7 +1157,7 @@ subpartition by hash (rand(a+b));
|
||||
#
|
||||
# Subpartition by hash, wrong subpartition function
|
||||
#
|
||||
--error ER_SUBPARTITION_ERROR
|
||||
--error ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
|
||||
CREATE TABLE t1 (
|
||||
a 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));
|
||||
-- error ER_WRONG_USAGE
|
||||
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));
|
||||
-- error ER_BAD_FIELD_ERROR
|
||||
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);
|
||||
select exists(select 1 from t1 group by `c` in (select `c` from 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 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 # Verify that UPDATE does the same number of handler_update
|
||||
--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;
|
||||
|
||||
|
||||
--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
|
||||
# gone so execution of other tests won't be affected by their presence.
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
17
sql/field.h
17
sql/field.h
@ -1,6 +1,6 @@
|
||||
#ifndef 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
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -977,6 +977,16 @@ public:
|
||||
/* Hash value */
|
||||
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 */
|
||||
virtual bool hash_join_is_possible() { return TRUE; }
|
||||
virtual bool eq_cmp_as_binary() { return TRUE; }
|
||||
@ -1174,6 +1184,11 @@ public:
|
||||
|
||||
int store_decimal(const my_decimal *d);
|
||||
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; }
|
||||
};
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2012, Monty Program Ab
|
||||
|
||||
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -905,15 +904,10 @@ int field_conv_incompatible(Field *to, Field *from)
|
||||
{ // Be sure the value is stored
|
||||
Field_blob *blob=(Field_blob*) to;
|
||||
from->val_str(&blob->value);
|
||||
/*
|
||||
Copy value if copy_blobs is set, or source is not a string and
|
||||
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))
|
||||
|
||||
if (!blob->value.is_alloced() && from->is_updatable())
|
||||
blob->value.copy();
|
||||
|
||||
return blob->store(blob->value.ptr(),blob->value.length(),from->charset());
|
||||
}
|
||||
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)
|
||||
{
|
||||
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);
|
||||
/*
|
||||
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"));
|
||||
|
||||
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)
|
||||
{
|
||||
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))
|
||||
return TRUE;
|
||||
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))
|
||||
return TRUE;
|
||||
|
||||
Item_in_subselect * sub= (Item_in_subselect *)args[1];
|
||||
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;
|
||||
}
|
||||
if (args[1]->maybe_null)
|
||||
@ -2756,7 +2792,8 @@ Item_func_if::str_op(String *str)
|
||||
String *res=arg->val_str(str);
|
||||
if (res)
|
||||
res->set_charset(collation.collation);
|
||||
null_value=arg->null_value;
|
||||
if ((null_value=arg->null_value))
|
||||
res= NULL;
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -2767,7 +2804,8 @@ Item_func_if::decimal_op(my_decimal *decimal_value)
|
||||
DBUG_ASSERT(fixed == 1);
|
||||
Item *arg= args[0]->val_bool() ? args[1] : args[2];
|
||||
my_decimal *value= arg->val_decimal(decimal_value);
|
||||
null_value= arg->null_value;
|
||||
if ((null_value= arg->null_value))
|
||||
value= NULL;
|
||||
return value;
|
||||
}
|
||||
|
||||
|
@ -885,7 +885,7 @@ String *Item_func_hybrid_result_type::val_str(String *str)
|
||||
case DECIMAL_RESULT:
|
||||
{
|
||||
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
|
||||
my_decimal_round(E_DEC_FATAL_ERROR, val, decimals, FALSE, val);
|
||||
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()))
|
||||
{
|
||||
MYSQL_TIME ltime;
|
||||
if (date_op(<ime,
|
||||
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0) ||
|
||||
str->alloc(MAX_DATE_STRING_REP_LENGTH))
|
||||
{
|
||||
null_value= 1;
|
||||
if (date_op_with_null_check(<ime) ||
|
||||
(null_value= str->alloc(MAX_DATE_STRING_REP_LENGTH)))
|
||||
return (String *) 0;
|
||||
}
|
||||
ltime.time_type= mysql_type_to_time_type(field_type());
|
||||
str->length(my_TIME_to_str(<ime, const_cast<char*>(str->ptr()), decimals));
|
||||
str->set_charset(&my_charset_bin);
|
||||
DBUG_ASSERT(!null_value);
|
||||
return str;
|
||||
}
|
||||
return str_op(&str_value);
|
||||
return str_op_with_null_check(&str_value);
|
||||
case TIME_RESULT:
|
||||
case ROW_RESULT:
|
||||
case IMPOSSIBLE_RESULT:
|
||||
DBUG_ASSERT(0);
|
||||
}
|
||||
DBUG_ASSERT(!null_value || (str == NULL));
|
||||
return str;
|
||||
}
|
||||
|
||||
@ -942,7 +940,7 @@ double Item_func_hybrid_result_type::val_real()
|
||||
{
|
||||
my_decimal decimal_value, *val;
|
||||
double result;
|
||||
if (!(val= decimal_op(&decimal_value)))
|
||||
if (!(val= decimal_op_with_null_check(&decimal_value)))
|
||||
return 0.0; // null is set
|
||||
my_decimal2double(E_DEC_FATAL_ERROR, val, &result);
|
||||
return result;
|
||||
@ -959,18 +957,14 @@ double Item_func_hybrid_result_type::val_real()
|
||||
if (is_temporal_type(field_type()))
|
||||
{
|
||||
MYSQL_TIME ltime;
|
||||
if (date_op(<ime,
|
||||
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0 ))
|
||||
{
|
||||
null_value= 1;
|
||||
if (date_op_with_null_check(<ime))
|
||||
return 0;
|
||||
}
|
||||
ltime.time_type= mysql_type_to_time_type(field_type());
|
||||
return TIME_to_double(<ime);
|
||||
}
|
||||
char *end_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(),
|
||||
&end_not_used, &err_not_used) : 0.0);
|
||||
}
|
||||
@ -990,7 +984,7 @@ longlong Item_func_hybrid_result_type::val_int()
|
||||
case DECIMAL_RESULT:
|
||||
{
|
||||
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
|
||||
longlong 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()))
|
||||
{
|
||||
MYSQL_TIME ltime;
|
||||
if (date_op(<ime,
|
||||
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0))
|
||||
{
|
||||
null_value= 1;
|
||||
if (date_op_with_null_check(<ime))
|
||||
return 0;
|
||||
}
|
||||
ltime.time_type= mysql_type_to_time_type(field_type());
|
||||
return TIME_to_ulonglong(<ime);
|
||||
}
|
||||
int err_not_used;
|
||||
String *res;
|
||||
if (!(res= str_op(&str_value)))
|
||||
if (!(res= str_op_with_null_check(&str_value)))
|
||||
return 0;
|
||||
|
||||
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);
|
||||
switch (cached_result_type) {
|
||||
case DECIMAL_RESULT:
|
||||
val= decimal_op(decimal_value);
|
||||
val= decimal_op_with_null_check(decimal_value);
|
||||
break;
|
||||
case INT_RESULT:
|
||||
{
|
||||
longlong result= int_op();
|
||||
if (null_value)
|
||||
return NULL;
|
||||
int2my_decimal(E_DEC_FATAL_ERROR, result, unsigned_flag, decimal_value);
|
||||
break;
|
||||
}
|
||||
case REAL_RESULT:
|
||||
{
|
||||
double result= (double)real_op();
|
||||
if (null_value)
|
||||
return NULL;
|
||||
double2my_decimal(E_DEC_FATAL_ERROR, result, decimal_value);
|
||||
break;
|
||||
}
|
||||
@ -1057,19 +1051,20 @@ my_decimal *Item_func_hybrid_result_type::val_decimal(my_decimal *decimal_value)
|
||||
if (is_temporal_type(field_type()))
|
||||
{
|
||||
MYSQL_TIME ltime;
|
||||
if (date_op(<ime,
|
||||
field_type() == MYSQL_TYPE_TIME ? TIME_TIME_ONLY : 0))
|
||||
if (date_op_with_null_check(<ime))
|
||||
{
|
||||
my_decimal_set_zero(decimal_value);
|
||||
null_value= 1;
|
||||
return 0;
|
||||
}
|
||||
ltime.time_type= mysql_type_to_time_type(field_type());
|
||||
return date2my_decimal(<ime, decimal_value);
|
||||
}
|
||||
String *res;
|
||||
if (!(res= str_op(&str_value)))
|
||||
if (!(res= str_op_with_null_check(&str_value)))
|
||||
{
|
||||
null_value= 1;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
str2my_decimal(E_DEC_FATAL_ERROR, (char*) res->ptr(),
|
||||
res->length(), res->charset(), decimal_value);
|
||||
@ -1092,7 +1087,7 @@ bool Item_func_hybrid_result_type::get_date(MYSQL_TIME *ltime,
|
||||
case DECIMAL_RESULT:
|
||||
{
|
||||
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,
|
||||
field_name_or_null()))
|
||||
goto err;
|
||||
@ -1122,7 +1117,7 @@ bool Item_func_hybrid_result_type::get_date(MYSQL_TIME *ltime,
|
||||
return date_op(ltime, fuzzydate);
|
||||
char buff[40];
|
||||
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(),
|
||||
ltime, fuzzydate))
|
||||
goto err;
|
||||
|
@ -385,17 +385,17 @@ public:
|
||||
|
||||
void no_rows_in_result()
|
||||
{
|
||||
bool_func_call_args info;
|
||||
info.original_func_item= this;
|
||||
info.bool_function= &Item::no_rows_in_result;
|
||||
walk(&Item::call_bool_func_processor, FALSE, (uchar*) &info);
|
||||
for (uint i= 0; i < arg_count; i++)
|
||||
{
|
||||
args[i]->no_rows_in_result();
|
||||
}
|
||||
}
|
||||
void restore_to_before_no_rows_in_result()
|
||||
{
|
||||
bool_func_call_args info;
|
||||
info.original_func_item= this;
|
||||
info.bool_function= &Item::restore_to_before_no_rows_in_result;
|
||||
walk(&Item::call_bool_func_processor, FALSE, (uchar*) &info);
|
||||
for (uint i= 0; i < arg_count; i++)
|
||||
{
|
||||
args[i]->no_rows_in_result();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -419,6 +419,29 @@ public:
|
||||
|
||||
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:
|
||||
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_PRINT("info", ("in_strategy: %u", (uint)in_strategy));
|
||||
left_expr= left_exp;
|
||||
left_expr_orig= left_expr= left_exp;
|
||||
func= &eq_creator;
|
||||
init(select_lex, new select_exists_subselect(this));
|
||||
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)
|
||||
{
|
||||
DBUG_ENTER("Item_allany_subselect::Item_allany_subselect");
|
||||
left_expr= left_exp;
|
||||
left_expr_orig= left_expr= left_exp;
|
||||
func= func_creator(all_arg);
|
||||
init(select_lex, new select_exists_subselect(this));
|
||||
max_columns= 1;
|
||||
@ -3032,15 +3032,13 @@ Item_in_subselect::select_in_like_transformer(JOIN *join)
|
||||
arena= thd->activate_stmt_arena_if_needed(&backup);
|
||||
if (!optimizer)
|
||||
{
|
||||
result= (!(optimizer= new Item_in_optimizer(left_expr, this)));
|
||||
result= (!(optimizer= new Item_in_optimizer(left_expr_orig, this)));
|
||||
if (result)
|
||||
goto out;
|
||||
}
|
||||
|
||||
thd->lex->current_select= current->return_after_parsing();
|
||||
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;
|
||||
|
||||
if (changed)
|
||||
@ -3107,11 +3105,13 @@ bool Item_in_subselect::fix_fields(THD *thd_arg, Item **ref)
|
||||
{
|
||||
uint outer_cols_num;
|
||||
List<Item> *inner_cols;
|
||||
char const *save_where= thd->where;
|
||||
DBUG_ENTER("Item_in_subselect::fix_fields");
|
||||
|
||||
if (test_strategy(SUBS_SEMI_JOIN))
|
||||
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
|
||||
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)
|
||||
{
|
||||
my_error(ER_OPERAND_COLUMNS, MYF(0), outer_cols_num);
|
||||
DBUG_RETURN(TRUE);
|
||||
goto err;
|
||||
}
|
||||
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++;
|
||||
if (inner_col->check_cols(left_expr->element_index(i)->cols()))
|
||||
DBUG_RETURN(TRUE);
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (thd_arg->lex->is_view_context_analysis() &&
|
||||
left_expr && !left_expr->fixed &&
|
||||
if (left_expr && !left_expr->fixed &&
|
||||
left_expr->fix_fields(thd_arg, &left_expr))
|
||||
DBUG_RETURN(TRUE);
|
||||
goto err;
|
||||
else
|
||||
if (Item_subselect::fix_fields(thd_arg, ref))
|
||||
DBUG_RETURN(TRUE);
|
||||
goto err;
|
||||
fixed= TRUE;
|
||||
thd->where= save_where;
|
||||
DBUG_RETURN(FALSE);
|
||||
|
||||
err:
|
||||
thd->where= save_where;
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
@ -482,6 +482,12 @@ protected:
|
||||
Item **having_item);
|
||||
public:
|
||||
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. */
|
||||
int sj_convert_priority;
|
||||
/*
|
||||
|
@ -2224,20 +2224,13 @@ log_event_print_value(IO_CACHE *file, const uchar *ptr,
|
||||
uint precision= meta >> 8;
|
||||
uint decimals= meta & 0xFF;
|
||||
uint bin_size= my_decimal_get_binary_size(precision, decimals);
|
||||
uint length;
|
||||
my_decimal dec;
|
||||
binary2my_decimal(E_DEC_FATAL_ERROR, (uchar*) ptr, &dec,
|
||||
precision, decimals);
|
||||
int i, end;
|
||||
char buff[512], *pos;
|
||||
pos= buff;
|
||||
pos+= sprintf(buff, "%s", dec.sign() ? "-" : "");
|
||||
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);
|
||||
int length= DECIMAL_MAX_STR_LENGTH;
|
||||
char buff[DECIMAL_MAX_STR_LENGTH + 1];
|
||||
decimal2string(&dec, buff, &length, 0, 0, 0);
|
||||
my_b_write(file, (uchar*)buff, length);
|
||||
my_snprintf(typestr, typestr_length, "DECIMAL(%d,%d)",
|
||||
precision, decimals);
|
||||
return bin_size;
|
||||
|
@ -4344,14 +4344,24 @@ static int init_common_variables()
|
||||
{
|
||||
if (lower_case_table_names_used)
|
||||
{
|
||||
#if MYSQL_VERSION_ID < 100100
|
||||
if (global_system_variables.log_warnings)
|
||||
sql_print_warning("You have forced lower_case_table_names to 0 through "
|
||||
"a command-line option, even though your file system "
|
||||
"'%s' is case insensitive. This means that you can "
|
||||
"corrupt a MyISAM table by accessing it with "
|
||||
"different cases. You should consider changing "
|
||||
"lower_case_table_names to 1 or 2",
|
||||
mysql_real_data_home);
|
||||
"corrupt your tables if you access them using names "
|
||||
"with different letter case. You should consider "
|
||||
"changing lower_case_table_names to 1 or 2",
|
||||
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
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2000, 2014, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008, 2014, Monty Program Ab.
|
||||
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008, 2015, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -4634,10 +4634,19 @@ int find_used_partitions(PART_PRUNE_PARAM *ppar, SEL_ARG *key_tree)
|
||||
key_tree->min_flag |
|
||||
key_tree->max_flag,
|
||||
&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)
|
||||
goto pop_and_go_right; /* all subpartitions satisfy */
|
||||
|
||||
|
||||
uint32 subpart_id;
|
||||
bitmap_clear_all(&ppar->subparts_bitmap);
|
||||
while ((subpart_id= subpart_iter.get_next(&subpart_iter)) !=
|
||||
|
@ -617,6 +617,18 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
||||
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
|
||||
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());
|
||||
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"));
|
||||
@ -704,6 +704,12 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
||||
if (!optimizer_flag(thd, OPTIMIZER_SWITCH_IN_TO_EXISTS) &&
|
||||
!optimizer_flag(thd, OPTIMIZER_SWITCH_MATERIALIZATION))
|
||||
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
|
||||
@ -755,12 +761,6 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
||||
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);
|
||||
@ -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)
|
||||
{
|
||||
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=
|
||||
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;
|
||||
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
|
||||
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;
|
||||
|
||||
/* Check for partition expression. */
|
||||
if (!list_of_part_fields)
|
||||
{
|
||||
DBUG_ASSERT(part_expr);
|
||||
err= part_expr->walk(&Item::check_partition_func_processor, 0,
|
||||
NULL);
|
||||
if (!err && is_sub_partitioned() && !list_of_subpart_fields)
|
||||
err= subpart_expr->walk(&Item::check_partition_func_processor, 0,
|
||||
NULL);
|
||||
}
|
||||
|
||||
/* Check for sub partition expression. */
|
||||
if (!err && is_sub_partitioned() && !list_of_subpart_fields)
|
||||
{
|
||||
DBUG_ASSERT(subpart_expr);
|
||||
err= subpart_expr->walk(&Item::check_partition_func_processor, 0,
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (err)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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=
|
||||
get_cached_table_access(&tl->grant.m_internal,
|
||||
tl->get_db_name(),
|
||||
tl->get_table_name());
|
||||
get_cached_table_access(&t_ref->grant.m_internal,
|
||||
t_ref->get_db_name(),
|
||||
t_ref->get_table_name());
|
||||
|
||||
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:
|
||||
/*
|
||||
@ -6753,26 +6755,26 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
|
||||
if (!want_access)
|
||||
continue; // ok
|
||||
|
||||
if (!(~tl->grant.privilege & want_access) ||
|
||||
tl->is_anonymous_derived_table() || tl->schema_table)
|
||||
if (!(~t_ref->grant.privilege & want_access) ||
|
||||
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.
|
||||
*/
|
||||
if (!tl->referencing_view)
|
||||
if (!t_ref->referencing_view)
|
||||
{
|
||||
/*
|
||||
If it's a temporary table created for a subquery in the FROM
|
||||
clause, or an INFORMATION_SCHEMA table, drop the request for
|
||||
a privilege.
|
||||
*/
|
||||
tl->grant.want_privilege= 0;
|
||||
t_ref->grant.want_privilege= 0;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (is_temporary_table(tl))
|
||||
if (is_temporary_table(t_ref))
|
||||
{
|
||||
/*
|
||||
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
|
||||
if user has CREATE_TMP_ACL.
|
||||
*/
|
||||
tl->grant.privilege|= TMP_TABLE_ACLS;
|
||||
tl->grant.want_privilege= 0;
|
||||
t_ref->grant.privilege|= TMP_TABLE_ACLS;
|
||||
t_ref->grant.want_privilege= 0;
|
||||
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,
|
||||
tl->get_db_name(),
|
||||
t_ref->get_db_name(),
|
||||
sctx->priv_user,
|
||||
tl->get_table_name(),
|
||||
t_ref->get_table_name(),
|
||||
FALSE);
|
||||
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,
|
||||
tl->get_table_name(),
|
||||
t_ref->get_table_name(),
|
||||
TRUE);
|
||||
|
||||
if (!grant_table && !grant_table_role)
|
||||
{
|
||||
want_access&= ~tl->grant.privilege;
|
||||
goto err;
|
||||
want_access&= ~t_ref->grant.privilege;
|
||||
goto err; // No grants
|
||||
}
|
||||
|
||||
/*
|
||||
@ -6815,19 +6817,19 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
|
||||
if (any_combination_will_do)
|
||||
continue;
|
||||
|
||||
tl->grant.grant_table_user= grant_table; // Remember for column test
|
||||
tl->grant.grant_table_role= grant_table_role;
|
||||
tl->grant.version= grant_version;
|
||||
tl->grant.privilege|= grant_table ? grant_table->privs : 0;
|
||||
tl->grant.privilege|= grant_table_role ? grant_table_role->privs : 0;
|
||||
tl->grant.want_privilege= ((want_access & COL_ACLS) & ~tl->grant.privilege);
|
||||
t_ref->grant.grant_table_user= grant_table; // Remember for column test
|
||||
t_ref->grant.grant_table_role= grant_table_role;
|
||||
t_ref->grant.version= grant_version;
|
||||
t_ref->grant.privilege|= grant_table ? grant_table->privs : 0;
|
||||
t_ref->grant.privilege|= grant_table_role ? grant_table_role->privs : 0;
|
||||
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;
|
||||
|
||||
if ((want_access&= ~((grant_table ? grant_table->cols : 0) |
|
||||
(grant_table_role ? grant_table_role->cols : 0) |
|
||||
tl->grant.privilege)))
|
||||
t_ref->grant.privilege)))
|
||||
{
|
||||
goto err; // impossible
|
||||
}
|
||||
|
@ -1094,13 +1094,20 @@ bool close_temporary_tables(THD *thd)
|
||||
DBUG_RETURN(FALSE);
|
||||
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())
|
||||
{
|
||||
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;
|
||||
close_temporary(table, 1, 1);
|
||||
tmp_next= t->next;
|
||||
mysql_lock_remove(thd, thd->lock, t);
|
||||
close_temporary(t, 1, 1);
|
||||
}
|
||||
thd->temporary_tables= 0;
|
||||
DBUG_RETURN(FALSE);
|
||||
@ -1196,6 +1203,7 @@ bool close_temporary_tables(THD *thd)
|
||||
strlen(table->s->table_name.str));
|
||||
s_query.append(',');
|
||||
next= table->next;
|
||||
mysql_lock_remove(thd, thd->lock, table);
|
||||
close_temporary(table, 1, 1);
|
||||
}
|
||||
thd->clear_error();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2001, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2011, 2013, Monty Program Ab.
|
||||
/* Copyright (c) 2001, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2011, 2015, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -1190,3 +1190,36 @@ void mysql_ha_set_explicit_lock_duration(THD *thd)
|
||||
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
|
||||
#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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
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_cleanup(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,
|
||||
enum enum_ha_read_modes mode, char *keyname,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2014, SkySQL Ab.
|
||||
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -3852,7 +3852,6 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
|
||||
/* Add selected items to field list */
|
||||
List_iterator_fast<Item> it(*items);
|
||||
Item *item;
|
||||
Field *tmp_field;
|
||||
DBUG_ENTER("create_table_from_items");
|
||||
|
||||
tmp_table.alias= 0;
|
||||
@ -3867,24 +3866,49 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
|
||||
|
||||
while ((item=it++))
|
||||
{
|
||||
Create_field *cr_field;
|
||||
Field *field, *def_field;
|
||||
Field *tmp_table_field;
|
||||
if (item->type() == Item::FUNC_ITEM)
|
||||
{
|
||||
if (item->result_type() != STRING_RESULT)
|
||||
field= item->tmp_table_field(&tmp_table);
|
||||
tmp_table_field= item->tmp_table_field(&tmp_table);
|
||||
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
|
||||
field= create_tmp_field(thd, &tmp_table, item, item->type(),
|
||||
(Item ***) 0, &tmp_field, &def_field, 0, 0, 0, 0,
|
||||
0);
|
||||
if (!field ||
|
||||
!(cr_field=new Create_field(field,(item->type() == Item::FIELD_ITEM ?
|
||||
((Item_field *)item)->field :
|
||||
(Field*) 0))))
|
||||
DBUG_RETURN(0);
|
||||
{
|
||||
Field *from_field, * default_field;
|
||||
tmp_table_field= create_tmp_field(thd, &tmp_table, item, item->type(),
|
||||
(Item ***) NULL, &from_field, &default_field,
|
||||
0, 0, 0, 0, 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)
|
||||
cr_field->flags &= ~NOT_NULL_FLAG;
|
||||
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
|
||||
my_ok(thd); // succeed, but did nothing
|
||||
DBUG_RETURN(0);
|
||||
DBUG_RETURN(NULL);
|
||||
}
|
||||
|
||||
DEBUG_SYNC(thd,"create_table_select_before_lock");
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2014, SkySQL Ab.
|
||||
Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2015, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -2028,8 +2028,15 @@ int READ_INFO::read_xml()
|
||||
break;
|
||||
|
||||
case '/': /* close tag */
|
||||
level--;
|
||||
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 /> */
|
||||
tag.length(0); /* we should keep tag value */
|
||||
while(chr != '>' && chr != my_b_EOF)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008, 2014, SkySQL Ab.
|
||||
/* Copyright (c) 2000, 2015, Oracle and/or its affiliates.
|
||||
Copyright (c) 2008, 2015, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -5825,9 +5825,12 @@ check_table_access(THD *thd, ulong requirements,TABLE_LIST *tables,
|
||||
for (; i < number && tables != first_not_own_table && tables;
|
||||
tables= tables->next_global, i++)
|
||||
{
|
||||
TABLE_LIST *const table_ref= tables->correspondent_table ?
|
||||
tables->correspondent_table : tables;
|
||||
|
||||
ulong want_access= requirements;
|
||||
if (tables->security_ctx)
|
||||
sctx= tables->security_ctx;
|
||||
if (table_ref->security_ctx)
|
||||
sctx= table_ref->security_ctx;
|
||||
else
|
||||
sctx= backup_ctx;
|
||||
|
||||
@ -5835,26 +5838,26 @@ check_table_access(THD *thd, ulong requirements,TABLE_LIST *tables,
|
||||
Register access for view underlying table.
|
||||
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;
|
||||
continue;
|
||||
}
|
||||
|
||||
DBUG_PRINT("info", ("derived: %d view: %d", tables->derived != 0,
|
||||
tables->view != 0));
|
||||
DBUG_PRINT("info", ("derived: %d view: %d", table_ref->derived != 0,
|
||||
table_ref->view != 0));
|
||||
|
||||
if (tables->is_anonymous_derived_table())
|
||||
if (table_ref->is_anonymous_derived_table())
|
||||
continue;
|
||||
|
||||
thd->security_ctx= sctx;
|
||||
|
||||
if (check_access(thd, want_access, tables->get_db_name(),
|
||||
&tables->grant.privilege,
|
||||
&tables->grant.m_internal,
|
||||
if (check_access(thd, want_access, table_ref->get_db_name(),
|
||||
&table_ref->grant.privilege,
|
||||
&table_ref->grant.m_internal,
|
||||
0, no_errors))
|
||||
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::DEFAULT_VALUE_ITEM:
|
||||
case Item::INSERT_VALUE_ITEM:
|
||||
case Item::TRIGGER_FIELD_ITEM:
|
||||
{
|
||||
Item_field *field= (Item_field*) 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)
|
||||
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)
|
||||
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;
|
||||
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
|
||||
bool is_subselect= (&lex->unit != lex->current_select->master_unit() &&
|
||||
lex->current_select->master_unit()->item);
|
||||
#else
|
||||
#define is_subselect false
|
||||
#endif
|
||||
/*
|
||||
I_S tables only need to be re-populated if make_cond_for_info_schema()
|
||||
preserves outer fields
|
||||
*/
|
||||
bool is_subselect= &lex->unit != lex->current_select->master_unit() &&
|
||||
lex->current_select->master_unit()->item &&
|
||||
tab->select_cond &&
|
||||
tab->select_cond->used_tables() & OUTER_REF_TABLE_BIT;
|
||||
|
||||
/* A value of 0 indicates a dummy implementation */
|
||||
if (table_list->schema_table->fill_table == 0)
|
||||
|
@ -11507,8 +11507,20 @@ procedure_clause:
|
||||
if (add_proc_to_list(lex->thd, item))
|
||||
MYSQL_YYABORT;
|
||||
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 ')'
|
||||
{
|
||||
/* Subqueries are allowed from now.*/
|
||||
Lex->expr_allows_subselect= true;
|
||||
}
|
||||
;
|
||||
|
||||
procedure_list:
|
||||
|
@ -635,7 +635,7 @@ install -m 644 "%{malloc_lib_source}" \
|
||||
# Check local settings to support them.
|
||||
if [ -x %{_bindir}/my_print_defaults ]
|
||||
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'`
|
||||
fi
|
||||
if [ -z "$mysql_datadir" ]
|
||||
@ -740,7 +740,7 @@ esac
|
||||
|
||||
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
|
||||
|
||||
if [ -f $STATUS_FILE ]; then
|
||||
if [ -f "$STATUS_FILE" ]; then
|
||||
echo "Some previous upgrade was not finished:"
|
||||
ls -ld $STATUS_FILE
|
||||
echo "Please check its status, then do"
|
||||
@ -811,7 +811,7 @@ fi
|
||||
# Check local settings to support them.
|
||||
if [ -x %{_bindir}/my_print_defaults ]
|
||||
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
|
||||
if [ -z "$mysql_datadir" ]
|
||||
then
|
||||
@ -824,8 +824,8 @@ STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER
|
||||
# ----------------------------------------------------------------------
|
||||
# Create data directory if needed, check whether upgrade or install
|
||||
# ----------------------------------------------------------------------
|
||||
if [ ! -d $mysql_datadir ] ; then mkdir -m 755 $mysql_datadir; fi
|
||||
if [ -f $STATUS_FILE ] ; then
|
||||
if [ ! -d "$mysql_datadir" ] ; then mkdir -m 755 "$mysql_datadir" ; fi
|
||||
if [ -f "$STATUS_FILE" ] ; then
|
||||
SERVER_TO_START=`grep '^SERVER_TO_START=' $STATUS_FILE | cut -c17-`
|
||||
else
|
||||
SERVER_TO_START=''
|
||||
@ -1003,7 +1003,7 @@ fi
|
||||
# Check local settings to support them.
|
||||
if [ -x %{_bindir}/my_print_defaults ]
|
||||
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
|
||||
if [ -z "$mysql_datadir" ]
|
||||
then
|
||||
@ -1014,7 +1014,7 @@ NEW_VERSION=%{mysql_version}-%{release}
|
||||
STATUS_FILE=$mysql_datadir/RPM_UPGRADE_MARKER-LAST # Note the difference!
|
||||
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-`
|
||||
else
|
||||
# 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
|
||||
#endif
|
||||
|
||||
#undef NOMINMAX
|
||||
|
||||
#include <winsock2.h>
|
||||
#include <windows.h>
|
||||
#include <winreg.h>
|
||||
|
Loading…
x
Reference in New Issue
Block a user