Merge 10.4 into 10.5

This commit is contained in:
Marko Mäkelä 2023-02-10 12:02:11 +02:00
commit c41c79650a
277 changed files with 2048 additions and 1500 deletions

View file

@ -312,8 +312,8 @@ class Load_log_processor
}
public:
Load_log_processor() {}
~Load_log_processor() {}
Load_log_processor() = default;
~Load_log_processor() = default;
int init()
{

View file

@ -1864,6 +1864,17 @@ xb_get_one_option(const struct my_option *opt,
break;
case OPT_INNODB_FLUSH_METHOD:
#ifdef _WIN32
/* From: storage/innobase/handler/ha_innodb.cc:innodb_init_params */
switch (srv_file_flush_method) {
case SRV_ALL_O_DIRECT_FSYNC + 1 /* "async_unbuffered"="unbuffered" */:
srv_file_flush_method= SRV_ALL_O_DIRECT_FSYNC;
break;
case SRV_ALL_O_DIRECT_FSYNC + 2 /* "normal"="fsync" */:
srv_file_flush_method= SRV_FSYNC;
break;
}
#endif
ut_a(srv_file_flush_method
<= IF_WIN(SRV_ALL_O_DIRECT_FSYNC, SRV_O_DIRECT_NO_FSYNC));
ADD_PRINT_PARAM_OPT(innodb_flush_method_names[srv_file_flush_method]);

View file

@ -12,6 +12,9 @@ IF(MSVC)
SET(WOLFSSL_X86_64_BUILD 1)
SET(HAVE_INTEL_RDSEED 1)
SET(HAVE_INTEL_RDRAND 1)
ELSEIF(CMAKE_ASM_COMPILER_ID MATCHES "Clang" AND CMAKE_VERSION VERSION_LESS 3.16)
# WolfSSL 5.5.4 bug workaround below does not work, due to some CMake bug
ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64")
SET(WOLFSSL_X86_64_BUILD 1)
IF(CMAKE_C_COMPILER_ID MATCHES GNU AND CMAKE_C_COMPILER_VERSION VERSION_LESS 4.9)

View file

@ -27,12 +27,11 @@
// Derive your class from this struct to insert to a linked list.
template <class Tag= void> struct ilist_node
{
ilist_node() noexcept
#ifndef DBUG_OFF
: next(NULL), prev(NULL)
ilist_node() noexcept : next(NULL), prev(NULL) {}
#else
ilist_node() = default;
#endif
{
}
ilist_node(ilist_node *next, ilist_node *prev) noexcept
: next(next), prev(prev)

View file

@ -39,7 +39,7 @@ public:
Atomic_relaxed(const Atomic_relaxed<Type> &rhs)
{ m.store(rhs, std::memory_order_relaxed); }
Atomic_relaxed(Type val) : m(val) {}
Atomic_relaxed() {}
Atomic_relaxed() = default;
Type load(std::memory_order o= std::memory_order_relaxed) const
{ return m.load(o); }

View file

@ -31,7 +31,7 @@ public:
Atomic_counter(const Atomic_counter<Type> &rhs)
{ m_counter.store(rhs, std::memory_order_relaxed); }
Atomic_counter(Type val): m_counter(val) {}
Atomic_counter() {}
Atomic_counter() = default;
Type operator++(int) { return add(1); }
Type operator--(int) { return sub(1); }

View file

@ -81,7 +81,7 @@ public:
span(const span &other) : data_(other.data_), size_(other.size_) {}
~span(){};
~span() = default;
span &operator=(const span &other)
{

View file

@ -0,0 +1,18 @@
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
# Uncode code points that have a variable length case mapping in utf8
# (e.g. LOWER('2-byte-character') -> '3-byte-character'
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
DROP TABLE case_folding;

View file

@ -3036,9 +3036,57 @@ SELECT 'chž'< 'i';
SELECT 'a' COLLATE utf8_czech_test_bad_w2;
ERROR HY000: Unknown collation: 'utf8_czech_test_bad_w2'
#
# End of 10.2 tests
#
#
# Start of 10.3 tests
#
#
# MDEV-30556 UPPER() returns an empty string for U+0251 in Unicode-5.2.0+ collations for utf8
#
SET NAMES utf8mb4 COLLATE utf8mb4_test_520_nopad_ci;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_test_520_nopad_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
#
# End of 10.3 tests
#
#
# MDEV-7947 my_charset_same: strcmp() takes 0.37% in OLTP RO
#
SHOW COLLATION LIKE 'latin1_test_replace';
Collation Charset Id Default Compiled Sortlen
SELECT 'foo' = 'foo ' COLLATE latin1_test_replace;
ERROR HY000: Unknown collation: 'latin1_test_replace'
#
# End of 10.5 tests
#

View file

@ -610,6 +610,27 @@ SELECT 'chž'< 'i';
--error ER_UNKNOWN_COLLATION
SELECT 'a' COLLATE utf8_czech_test_bad_w2;
--echo #
--echo # End of 10.2 tests
--echo #
--echo #
--echo # Start of 10.3 tests
--echo #
--echo #
--echo # MDEV-30556 UPPER() returns an empty string for U+0251 in Unicode-5.2.0+ collations for utf8
--echo #
SET NAMES utf8mb4 COLLATE utf8mb4_test_520_nopad_ci;
--source include/ctype_casefolding.inc
--echo #
--echo # End of 10.3 tests
--echo #
--echo #
--echo # MDEV-7947 my_charset_same: strcmp() takes 0.37% in OLTP RO
@ -618,3 +639,7 @@ SELECT 'a' COLLATE utf8_czech_test_bad_w2;
SHOW COLLATION LIKE 'latin1_test_replace';
--error ER_UNKNOWN_COLLATION
SELECT 'foo' = 'foo ' COLLATE latin1_test_replace;
--echo #
--echo # End of 10.5 tests
--echo #

View file

@ -8204,7 +8204,7 @@ INSERT INTO t1 VALUES (_utf32 0x2CEE);
SELECT hex(c), hex(lower(c)), hex(upper(c)), hex(weight_string(c)), c
FROM t1 ORDER BY c, BINARY c;
hex(c) hex(lower(c)) hex(upper(c)) hex(weight_string(c)) c
C8BA C8BA 1214 Ⱥ
C8BA E2B1A5 C8BA 1214 Ⱥ
E2B1A5 E2B1A5 C8BA 1214 ⱥ
C680 C680 C983 122D ƀ
C983 C680 C983 122D Ƀ
@ -8229,7 +8229,7 @@ E2B1AA E2B1AA E2B1A9 1328 ⱪ
C8BD C69A C8BD 133B Ƚ
E2B1A0 E2B1A1 E2B1A0 133F Ⱡ
E2B1A1 E2B1A1 E2B1A0 133F ⱡ
C9AB C9AB 1340 ɫ
C9AB C9AB E2B1A2 1340 ɫ
E2B1A2 C9AB E2B1A2 1340 Ɫ
E1B5BD E1B5BD E2B1A3 13B8 ᵽ
E2B1A3 E1B5BD E2B1A3 13B8 Ᵽ
@ -8237,11 +8237,11 @@ C98A C98B C98A 13D2 Ɋ
C98B C98B C98A 13D2 ɋ
C98C C98D C98C 13E4 Ɍ
C98D C98D C98C 13E4 ɍ
C9BD C9BD 13FC ɽ
C9BD C9BD E2B1A4 13FC ɽ
E2B1A4 C9BD E2B1A4 13FC Ɽ
EA9CA8 EA9CA9 EA9CA8 143314AD Ꜩ
EA9CA9 EA9CA9 EA9CA8 143314AD ꜩ
C8BE C8BE 143C Ⱦ
C8BE E2B1A6 C8BE 143C Ⱦ
E2B1A6 E2B1A6 C8BE 143C ⱦ
C984 CA89 C984 145B Ʉ
CA89 CA89 C984 145B ʉ

View file

@ -587,3 +587,177 @@ DROP TABLE t1;
#
# End of 10.2 tests
#
#
# Start of 10.3 tests
#
#
# MDEV-30556 UPPER() returns an empty string for U+0251 in Unicode-5.2.0+ collations for utf8
#
SET NAMES utf8mb3 COLLATE utf8mb3_unicode_ci /*Unicode-4.0 folding*/;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A C8BA C8BA Ⱥ
23E C8BE C8BE Ⱦ
23F C8BF C8BF ȿ
240 C980 C980 ɀ
250 C990 C990 ɐ
251 C991 C991 ɑ
252 C992 C992 ɒ
26B C9AB C9AB ɫ
271 C9B1 C9B1 ɱ
27D C9BD C9BD ɽ
DROP TABLE case_folding;
SET NAMES utf8mb3 COLLATE utf8mb3_unicode_520_ci;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_520_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
SET NAMES utf8mb3 COLLATE utf8mb3_unicode_520_nopad_ci;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8 COLLATE utf8_unicode_520_nopad_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
SET NAMES utf8mb3 COLLATE utf8mb3_myanmar_ci;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8 COLLATE utf8_myanmar_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
SET NAMES utf8mb3 COLLATE utf8mb3_thai_520_w2;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8 COLLATE utf8_thai_520_w2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
#
# End of 10.3 tests
#

View file

@ -21,3 +21,32 @@ SET NAMES utf8 COLLATE utf8_unicode_nopad_ci;
--echo #
--echo # End of 10.2 tests
--echo #
--echo #
--echo # Start of 10.3 tests
--echo #
--echo #
--echo # MDEV-30556 UPPER() returns an empty string for U+0251 in Unicode-5.2.0+ collations for utf8
--echo #
SET NAMES utf8mb3 COLLATE utf8mb3_unicode_ci /*Unicode-4.0 folding*/;
--source include/ctype_casefolding.inc
SET NAMES utf8mb3 COLLATE utf8mb3_unicode_520_ci;
--source include/ctype_casefolding.inc
SET NAMES utf8mb3 COLLATE utf8mb3_unicode_520_nopad_ci;
--source include/ctype_casefolding.inc
SET NAMES utf8mb3 COLLATE utf8mb3_myanmar_ci;
--source include/ctype_casefolding.inc
SET NAMES utf8mb3 COLLATE utf8mb3_thai_520_w2;
--source include/ctype_casefolding.inc
--echo #
--echo # End of 10.3 tests
--echo #

View file

@ -6605,3 +6605,177 @@ SET NAMES utf8mb4;
#
# End of 10.2 tests
#
#
# Start of 10.3 tests
#
#
# MDEV-30556 UPPER() returns an empty string for U+0251 in Unicode-5.2.0+ collations for utf8
#
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci /*Unicode-4.0 folding*/;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A C8BA C8BA Ⱥ
23E C8BE C8BE Ⱦ
23F C8BF C8BF ȿ
240 C980 C980 ɀ
250 C990 C990 ɐ
251 C991 C991 ɑ
252 C992 C992 ɒ
26B C9AB C9AB ɫ
271 C9B1 C9B1 ɱ
27D C9BD C9BD ɽ
DROP TABLE case_folding;
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_520_ci;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_520_nopad_ci;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_nopad_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
SET NAMES utf8mb4 COLLATE utf8mb4_myanmar_ci;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_myanmar_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
SET NAMES utf8mb4 COLLATE utf8mb4_thai_520_w2;
CREATE OR REPLACE TABLE case_folding AS SELECT 0 AS code, SPACE(32) AS c LIMIT 0;
SHOW CREATE TABLE case_folding;
Table Create Table
case_folding CREATE TABLE `case_folding` (
`code` int(1) NOT NULL,
`c` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_thai_520_w2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
INSERT INTO case_folding (code) VALUES
(0x23A),
(0x23E),
(0x23F),
(0x240),
(0x250),
(0x251),
(0x252),
(0x26B),
(0x271),
(0x27D);
UPDATE case_folding SET c=CHAR(code USING ucs2);
SELECT HEX(code), HEX(LOWER(c)), HEX(UPPER(c)), c FROM case_folding;
HEX(code) HEX(LOWER(c)) HEX(UPPER(c)) c
23A E2B1A5 C8BA Ⱥ
23E E2B1A6 C8BE Ⱦ
23F C8BF E2B1BE ȿ
240 C980 E2B1BF ɀ
250 C990 E2B1AF ɐ
251 C991 E2B1AD ɑ
252 C992 E2B1B0 ɒ
26B C9AB E2B1A2 ɫ
271 C9B1 E2B1AE ɱ
27D C9BD E2B1A4 ɽ
DROP TABLE case_folding;
#
# End of 10.3 tests
#

View file

@ -108,3 +108,32 @@ SET NAMES utf8mb4;
--echo #
--echo # End of 10.2 tests
--echo #
--echo #
--echo # Start of 10.3 tests
--echo #
--echo #
--echo # MDEV-30556 UPPER() returns an empty string for U+0251 in Unicode-5.2.0+ collations for utf8
--echo #
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci /*Unicode-4.0 folding*/;
--source include/ctype_casefolding.inc
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_520_ci;
--source include/ctype_casefolding.inc
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_520_nopad_ci;
--source include/ctype_casefolding.inc
SET NAMES utf8mb4 COLLATE utf8mb4_myanmar_ci;
--source include/ctype_casefolding.inc
SET NAMES utf8mb4 COLLATE utf8mb4_thai_520_w2;
--source include/ctype_casefolding.inc
--echo #
--echo # End of 10.3 tests
--echo #

View file

@ -525,3 +525,35 @@ DELETE v2 FROM v2;
ERROR HY000: Can not delete from join view 'test.v2'
DROP VIEW v2, v1;
DROP TABLE t1, t2;
End of 5.5 tests
#
# MDEV-30586: DELETE with WHERE containing nested subquery
# with set function aggregated in outer subquery
#
create table t1 (a int);
insert into t1 values (3), (7), (1);
create table t2 (b int);
insert into t2 values (2), (1), (4), (7);
create table t3 (a int, b int);
insert into t3 values (2,10), (7,30), (2,30), (1,10), (7,40);
select * from t1
where t1.a in (select t3.a from t3 group by t3.a
having t3.a > any (select t2.b from t2
where t2.b*10 < sum(t3.b)));
a
7
delete from t1
where t1.a in (select t3.a from t3 group by t3.a
having t3.a > any (select t2.b from t2
where t2.b*10 < sum(t3.b)));
select * from t1
where t1.a in (select t3.a from t3 group by t3.a
having t3.a > any (select t2.b from t2
where t2.b*10 < sum(t3.b)));
a
update t1 set t1.a=t1.a+10
where t1.a in (select t3.a from t3 group by t3.a
having t3.a > any (select t2.b from t2
where t2.b*10 < sum(t3.b)));
drop table t1,t2,t3;
End of 10.4 tests

View file

@ -582,3 +582,44 @@ DELETE v2 FROM v2;
DROP VIEW v2, v1;
DROP TABLE t1, t2;
--echo End of 5.5 tests
--echo #
--echo # MDEV-30586: DELETE with WHERE containing nested subquery
--echo # with set function aggregated in outer subquery
--echo #
create table t1 (a int);
insert into t1 values (3), (7), (1);
create table t2 (b int);
insert into t2 values (2), (1), (4), (7);
create table t3 (a int, b int);
insert into t3 values (2,10), (7,30), (2,30), (1,10), (7,40);
let $c=
t1.a in (select t3.a from t3 group by t3.a
having t3.a > any (select t2.b from t2
where t2.b*10 < sum(t3.b)));
eval
select * from t1
where $c;
eval
delete from t1
where $c;
eval
select * from t1
where $c;
eval
update t1 set t1.a=t1.a+10
where $c;
drop table t1,t2,t3;
--echo End of 10.4 tests

View file

@ -1251,3 +1251,123 @@ EXPLAIN
}
}
DROP TABLES t1, t2;
# End of 10.3 tests
#
# MDEV-28538: multi-table UPDATE/DELETE with possible exists-to-in
#
create table t1 (c1 int, c2 int, c3 int, index idx(c2));
insert into t1 values
(1,1,1),(3,2,2),(1,3,3),
(2,1,4),(2,2,5),(4,3,6),
(2,4,7),(2,5,8);
create table t2 (c1 int, c2 int, c3 int, index idx(c2));
insert into t2 values
(1,7,1),(1,8,2),(1,3,3),
(2,1,4),(2,2,5),(2,3,6),
(2,4,7),(2,5,8);
create table t3 (c1 int, c2 int, c3 int, index idx(c2));
insert into t3 values
(1,1,1),(1,2,2),(1,3,3),
(2,1,4),(2,2,5),(2,3,6),
(2,4,7),(2,5,8);
insert into t3 select c1+1, c2+2, c3 from t3;
insert into t3 select c1, c2+2, c3 from t3;
analyze table t1,t2,t3 persistent for all;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status OK
test.t2 analyze status Engine-independent statistics collected
test.t2 analyze status OK
test.t3 analyze status Engine-independent statistics collected
test.t3 analyze status OK
explain select * from t1,t3
where t1.c2 = t3.c2 and
t1.c1 > 1 and
exists (select 'X' from t2 where t2.c1 = t1.c1 and t2.c2 > 4);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL idx NULL NULL NULL 8 Using where
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
1 PRIMARY t3 ref idx idx 5 test.t1.c2 3
2 MATERIALIZED t2 range idx idx 5 NULL 3 Using index condition; Using where
explain delete from t1 using t1,t3
where t1.c2 = t3.c2 and
t1.c1 > 1 and
exists (select 'X' from t2 where t2.c1 = t1.c1 and t2.c2 > 4);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL idx NULL NULL NULL 8 Using where
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
1 PRIMARY t3 ref idx idx 5 test.t1.c2 3 Using index
2 MATERIALIZED t2 range idx idx 5 NULL 3 Using where
explain update t1,t3 set t1.c1 = t1.c1+10
where t1.c2 = t3.c2 and
t1.c1 > 1 and
exists (select 'X' from t2 where t2.c1 = t1.c1 and t2.c2 > 4);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL idx NULL NULL NULL 8 Using where
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
1 PRIMARY t3 ref idx idx 5 test.t1.c2 3 Using index
2 MATERIALIZED t2 range idx idx 5 NULL 3 Using where
create table t as select * from t1;
select * from t1,t3
where t1.c2 = t3.c2 and
t1.c1 > 1 and
exists (select 'X' from t2 where t2.c1 = t1.c1 and t2.c2 > 4);
c1 c2 c3 c1 c2 c3
2 1 4 1 1 1
2 1 4 2 1 4
2 2 5 1 2 2
2 2 5 2 2 5
2 4 7 2 4 7
2 4 7 2 4 2
2 4 7 3 4 5
2 4 7 1 4 2
2 4 7 2 4 5
2 5 8 2 5 8
2 5 8 2 5 3
2 5 8 3 5 6
2 5 8 1 5 3
2 5 8 2 5 6
2 5 8 2 5 1
2 5 8 3 5 4
select * from t1;
c1 c2 c3
1 1 1
3 2 2
1 3 3
2 1 4
2 2 5
4 3 6
2 4 7
2 5 8
delete from t1 using t1,t3
where t1.c2 = t3.c2 and
t1.c1 > 1 and
exists (select 'X' from t2 where t2.c1 = t1.c1 and t2.c2 > 4);
select * from t1;
c1 c2 c3
1 1 1
3 2 2
1 3 3
4 3 6
truncate table t1;
insert into t1 select * from t;
analyze table t1 persistent for all;
Table Op Msg_type Msg_text
test.t1 analyze status Engine-independent statistics collected
test.t1 analyze status Table is already up to date
update t1,t3 set t1.c1 = t1.c1+10
where t1.c2 = t3.c2 and
t1.c1 > 1 and
exists (select 'X' from t2 where t2.c1 = t1.c1 and t2.c2 > 4);
select * from t1;
c1 c2 c3
1 1 1
3 2 2
1 3 3
12 1 4
12 2 5
4 3 6
12 4 7
12 5 8
drop table t1,t2,t3,t;
# End of 10.4 tests

View file

@ -1130,3 +1130,73 @@ EXPLAIN FORMAT=JSON UPDATE t2 JOIN t1 USING(a) SET t2.part=2 WHERE t2.part=1 AND
EXPLAIN FORMAT=JSON UPDATE t2 JOIN t1 USING(a) SET t2.part=3 WHERE t2.part=2 AND t1.part=2;
DROP TABLES t1, t2;
--echo # End of 10.3 tests
--echo #
--echo # MDEV-28538: multi-table UPDATE/DELETE with possible exists-to-in
--echo #
create table t1 (c1 int, c2 int, c3 int, index idx(c2));
insert into t1 values
(1,1,1),(3,2,2),(1,3,3),
(2,1,4),(2,2,5),(4,3,6),
(2,4,7),(2,5,8);
create table t2 (c1 int, c2 int, c3 int, index idx(c2));
insert into t2 values
(1,7,1),(1,8,2),(1,3,3),
(2,1,4),(2,2,5),(2,3,6),
(2,4,7),(2,5,8);
create table t3 (c1 int, c2 int, c3 int, index idx(c2));
insert into t3 values
(1,1,1),(1,2,2),(1,3,3),
(2,1,4),(2,2,5),(2,3,6),
(2,4,7),(2,5,8);
insert into t3 select c1+1, c2+2, c3 from t3;
insert into t3 select c1, c2+2, c3 from t3;
analyze table t1,t2,t3 persistent for all;
let $c=
t1.c2 = t3.c2 and
t1.c1 > 1 and
exists (select 'X' from t2 where t2.c1 = t1.c1 and t2.c2 > 4);
let $q1=
select * from t1,t3
where $c;
eval explain $q1;
let $q2=
delete from t1 using t1,t3
where $c;
eval explain $q2;
let $q3=
update t1,t3 set t1.c1 = t1.c1+10
where $c;
eval explain $q3;
create table t as select * from t1;
eval $q1;
select * from t1;
eval $q2;
select * from t1;
truncate table t1;
insert into t1 select * from t;
analyze table t1 persistent for all;
eval $q3;
select * from t1;
drop table t1,t2,t3,t;
--echo # End of 10.4 tests

View file

@ -76,7 +76,8 @@ rollback;
explain update t1 set c1=0 where exists (select 'X' from t1 a where a.c2 = t1.c2) and c2 > 3;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 8 Using where
2 DEPENDENT SUBQUERY a ALL NULL NULL NULL NULL 8 Using where
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
2 MATERIALIZED a ALL NULL NULL NULL NULL 8
start transaction;
update t1 set c1=c1+10 where exists (select 'X' from t1 a where a.c2 = t1.c2) and c2 >= 3;
affected rows: 4
@ -317,7 +318,8 @@ rollback;
explain update t1 set c1=0 where exists (select 'X' from t1 a where a.c2 = t1.c2) and c2 > 3;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 range t1_c2 t1_c2 5 NULL 2 Using where
2 DEPENDENT SUBQUERY a ref t1_c2 t1_c2 5 test.t1.c2 4 Using index
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
2 MATERIALIZED a range t1_c2 t1_c2 5 NULL 2 Using where; Using index
start transaction;
update t1 set c1=c1+10 where exists (select 'X' from t1 a where a.c2 = t1.c2) and c2 >= 3;
affected rows: 4
@ -558,7 +560,8 @@ rollback;
explain update t1 set c1=0 where exists (select 'X' from t1 a where a.c2 = t1.c2) and c2 > 3;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 range t1_c2 t1_c2 5 NULL 2 Using where
2 DEPENDENT SUBQUERY a ref t1_c2 t1_c2 5 test.t1.c2 1 Using index
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
2 MATERIALIZED a range t1_c2 t1_c2 5 NULL 2 Using where; Using index
start transaction;
update t1 set c1=c1+10 where exists (select 'X' from t1 a where a.c2 = t1.c2) and c2 >= 3;
affected rows: 4
@ -800,7 +803,8 @@ rollback;
explain update t1 set c1=0 where exists (select 'X' from t1 a where a.c2 = t1.c2) and c2 > 3;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 range t1_c2 t1_c2 5 NULL 2 Using where
2 DEPENDENT SUBQUERY a ref t1_c2 t1_c2 5 test.t1.c2 1 Using index
1 PRIMARY <subquery2> eq_ref distinct_key distinct_key 4 func 1
2 MATERIALIZED a range t1_c2 t1_c2 5 NULL 2 Using where; Using index
start transaction;
update t1 set c1=c1+10 where exists (select 'X' from t1 a where a.c2 = t1.c2) and c2 >= 3;
affected rows: 4

View file

@ -1,23 +0,0 @@
connection node_2;
connection node_1;
CREATE TABLE t1 (c1 BIGINT NOT NULL PRIMARY KEY, c2 BINARY (10), c3 DATETIME);
SELECT get_lock ('test2', 0);
get_lock ('test2', 0)
1
DROP TABLE t1;
CREATE TABLE t1 (c1 SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO t1 VALUES (1);
SET SESSION wsrep_trx_fragment_size=10;
SET SESSION autocommit=0;
SELECT * FROM t1 WHERE c1 <=0 ORDER BY c1 DESC;
c1
INSERT INTO t1 VALUES (4),(3),(1),(2);
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
CREATE TABLE t1 (pk INT PRIMARY KEY, b INT) ENGINE=SEQUENCE;
ERROR 42S01: Table 't1' already exists
ALTER TABLE t1 DROP COLUMN c2;
ERROR 42000: Can't DROP COLUMN `c2`; check that it exists
SELECT get_lock ('test', 1.5);
get_lock ('test', 1.5)
1
DROP TABLE t1;

View file

@ -1,18 +0,0 @@
connection node_2;
connection node_1;
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
connection node_2a;
SELECT GET_LOCK("foo", 1000);
GET_LOCK("foo", 1000)
1
connection node_2;
SET AUTOCOMMIT=OFF;
INSERT INTO t1 VALUES (1);
SELECT GET_LOCK("foo", 1000);;
connection node_1;
INSERT INTO t1 VALUES (1);
connection node_2;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
wsrep_local_aborts_increment
1
DROP TABLE t1;

View file

@ -1,20 +0,0 @@
--source include/galera_cluster.inc
--source include/have_sequence.inc
CREATE TABLE t1 (c1 BIGINT NOT NULL PRIMARY KEY, c2 BINARY (10), c3 DATETIME);
SELECT get_lock ('test2', 0);
DROP TABLE t1;
CREATE TABLE t1 (c1 SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO t1 VALUES (1);
SET SESSION wsrep_trx_fragment_size=10;
SET SESSION autocommit=0;
SELECT * FROM t1 WHERE c1 <=0 ORDER BY c1 DESC;
--error ER_LOCK_DEADLOCK
INSERT INTO t1 VALUES (4),(3),(1),(2);
--error ER_TABLE_EXISTS_ERROR
CREATE TABLE t1 (pk INT PRIMARY KEY, b INT) ENGINE=SEQUENCE;
--error ER_CANT_DROP_FIELD_OR_KEY
ALTER TABLE t1 DROP COLUMN c2;
SELECT get_lock ('test', 1.5);
DROP TABLE t1;

View file

@ -1,36 +0,0 @@
--source include/galera_cluster.inc
--source include/have_innodb.inc
#
# Test a local transaction being aborted by a slave one while it is running a GET_LOCK()
#
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB;
--let $galera_connection_name = node_2a
--let $galera_server_number = 2
--source include/galera_connect.inc
--connection node_2a
SELECT GET_LOCK("foo", 1000);
--connection node_2
SET AUTOCOMMIT=OFF;
--let $wsrep_local_bf_aborts_before = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
INSERT INTO t1 VALUES (1);
--send SELECT GET_LOCK("foo", 1000);
--connection node_1
INSERT INTO t1 VALUES (1);
--connection node_2
--error ER_LOCK_DEADLOCK
--reap
--let $wsrep_local_bf_aborts_after = `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_local_bf_aborts'`
# Check that wsrep_local_bf_aborts has been incremented by exactly 1
--disable_query_log
--eval SELECT $wsrep_local_bf_aborts_after - $wsrep_local_bf_aborts_before = 1 AS wsrep_local_aborts_increment;
--enable_query_log
DROP TABLE t1;

View file

@ -0,0 +1,12 @@
#
# MDEV-30492 Crash when use mariabackup.exe with config 'innodb_flush_method=async_unbuffered'
#
# xtrabackup backup
# xtrabackup prepare
# shutdown server
# remove datadir
# xtrabackup move back
# restart
#
# End of 10.4 tests
#

View file

@ -0,0 +1,24 @@
--source include/windows.inc
let $targetdir=$MYSQLTEST_VARDIR/tmp/backup;
--echo #
--echo # MDEV-30492 Crash when use mariabackup.exe with config 'innodb_flush_method=async_unbuffered'
--echo #
echo # xtrabackup backup;
--disable_result_log
exec $XTRABACKUP --defaults-file=$MYSQLTEST_VARDIR/my.cnf --innodb_flush_method=normal --backup --target-dir=$targetdir;
--enable_result_log
echo # xtrabackup prepare;
--disable_result_log
exec $XTRABACKUP --prepare --innodb-flush-method=async_unbuffered --target-dir=$targetdir;
-- source include/restart_and_restore.inc
--enable_result_log
rmdir $targetdir;
--echo #
--echo # End of 10.4 tests
--echo #

View file

@ -1,3 +1,4 @@
SET names utf8;
select * from information_schema.locales;
ID NAME DESCRIPTION MAX_MONTH_NAME_LENGTH MAX_DAY_NAME_LENGTH DECIMAL_POINT THOUSAND_SEP ERROR_MESSAGE_LANGUAGE
0 en_US English - United States 9 9 . , english
@ -52,7 +53,7 @@ ID NAME DESCRIPTION MAX_MONTH_NAME_LENGTH MAX_DAY_NAME_LENGTH DECIMAL_POINT THOU
49 ta_IN Tamil - India 10 8 . , english
50 te_IN Telugu - India 10 9 . , english
51 th_TH Thai - Thailand 10 8 . , english
52 tr_TR Turkish - Turkey 7 9 , . english
52 tr_TR Turkish - Türkiye 7 9 , . english
53 uk_UA Ukrainian - Ukraine 8 9 , . ukrainian
54 ur_PK Urdu - Pakistan 6 6 . , english
55 vi_VN Vietnamese - Vietnam 16 11 , . english
@ -165,7 +166,7 @@ Id Name Description Error_Message_Language
49 ta_IN Tamil - India english
50 te_IN Telugu - India english
51 th_TH Thai - Thailand english
52 tr_TR Turkish - Turkey english
52 tr_TR Turkish - Türkiye english
53 uk_UA Ukrainian - Ukraine ukrainian
54 ur_PK Urdu - Pakistan english
55 vi_VN Vietnamese - Vietnam english

View file

@ -2,6 +2,7 @@ if (`select count(*) = 0 from information_schema.plugins where plugin_name = 'lo
{
--skip LOCALES plugin is not active
}
SET names utf8;
select * from information_schema.locales;
show locales;

View file

@ -35,9 +35,19 @@ connection master;
insert into t1 values (1);
# Sleep 3 to create gap between events
insert into t1 values (2);
include/save_master_pos.inc
connection slave;
LOCK TABLES t1 WRITE;
SET @@global.debug_dbug="+d,pause_sql_thread_on_next_event";
START SLAVE IO_THREAD;
# Before we start processing the events, we ensure both transactions
# were written into the relay log. Otherwise, if the IO thread takes too
# long to queue the events, the sql thread can think it has caught up
# too quickly.
SET DEBUG_SYNC='now WAIT_FOR paused_on_event';
include/sync_io_with_master.inc
SET @@global.debug_dbug="-d,pause_sql_thread_on_next_event";
SET DEBUG_SYNC='now SIGNAL sql_thread_continue';
# Wait for first transaction to complete SQL delay and begin execution..
# Validate SBM calculation doesn't use the second transaction because SQL thread shouldn't have gone idle..
# ..and that SBM wasn't calculated using prior committed transactions
@ -50,6 +60,8 @@ UNLOCK TABLES;
include/stop_slave.inc
CHANGE MASTER TO master_delay=0;
set @@GLOBAL.slave_parallel_threads=4;
SET @@global.debug_dbug="";
SET DEBUG_SYNC='RESET';
include/start_slave.inc
connection master;
DROP TABLE t1;

View file

@ -12,9 +12,12 @@
#
--source include/master-slave.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
--connection slave
--source include/stop_slave.inc
--let $old_debug_dbug= `SELECT @@global.debug_dbug`
--let $master_delay= 3
--eval change master to master_delay=$master_delay, master_use_gtid=Slave_Pos
--let $old_slave_threads= `SELECT @@GLOBAL.slave_parallel_threads`
@ -82,12 +85,24 @@ sleep 3;
--eval insert into t1 values ($insert_ctr)
--inc $insert_ctr
--let $ts_trx_after_ins= `SELECT UNIX_TIMESTAMP()`
--source include/save_master_pos.inc
--connection slave
LOCK TABLES t1 WRITE;
SET @@global.debug_dbug="+d,pause_sql_thread_on_next_event";
START SLAVE IO_THREAD;
--echo # Before we start processing the events, we ensure both transactions
--echo # were written into the relay log. Otherwise, if the IO thread takes too
--echo # long to queue the events, the sql thread can think it has caught up
--echo # too quickly.
SET DEBUG_SYNC='now WAIT_FOR paused_on_event';
--source include/sync_io_with_master.inc
SET @@global.debug_dbug="-d,pause_sql_thread_on_next_event";
SET DEBUG_SYNC='now SIGNAL sql_thread_continue';
--echo # Wait for first transaction to complete SQL delay and begin execution..
--let $wait_condition= SELECT count(*) FROM information_schema.processlist WHERE state LIKE 'Waiting for table metadata lock%' AND command LIKE 'Slave_Worker';
--source include/wait_condition.inc
@ -120,6 +135,8 @@ UNLOCK TABLES;
--source include/stop_slave.inc
--eval CHANGE MASTER TO master_delay=0
--eval set @@GLOBAL.slave_parallel_threads=$old_slave_threads
--eval SET @@global.debug_dbug="$old_debug_dbug"
SET DEBUG_SYNC='RESET';
--source include/start_slave.inc
--connection master

View file

@ -381,6 +381,8 @@ static int add_collation(struct charset_info_st *cs)
&my_charset_utf8mb4_unicode_ci,
cs);
newcs->m_ctype= my_charset_utf8mb4_unicode_ci.m_ctype;
if (init_state_maps(newcs))
return MY_XML_ERROR;
newcs->state|= MY_CS_AVAILABLE | MY_CS_LOADED;
#endif
}

View file

@ -101,7 +101,7 @@ public:
uchar source_tail[MY_AES_BLOCK_SIZE];
MyCTX_nopad() : MyCTX() { }
~MyCTX_nopad() { }
~MyCTX_nopad() = default;
int init(const EVP_CIPHER *cipher, int encrypt, const uchar *key, uint klen,
const uchar *iv, uint ivlen)

View file

@ -189,9 +189,7 @@ database::database(const config& c)
{
}
database::~database()
{
}
database::~database() = default;
dbcontext_ptr
database::create_context(bool for_write) volatile
@ -226,9 +224,7 @@ dbcontext::dbcontext(volatile database *d, bool for_write)
user_level_lock_timeout = d->get_conf().get_int("wrlock_timeout", 12);
}
dbcontext::~dbcontext()
{
}
dbcontext::~dbcontext() = default;
namespace {

View file

@ -27,7 +27,7 @@ struct dbcontext_i;
typedef std::auto_ptr<dbcontext_i> dbcontext_ptr;
struct database_i {
virtual ~database_i() { }
virtual ~database_i() = default;
virtual dbcontext_ptr create_context(bool for_write) volatile = 0;
virtual void stop() volatile = 0;
virtual const config& get_conf() const volatile = 0;
@ -57,7 +57,7 @@ struct prep_stmt {
};
struct dbcallback_i {
virtual ~dbcallback_i () { }
virtual ~dbcallback_i() = default;
virtual void dbcb_set_prep_stmt(size_t pst_id, const prep_stmt& v) = 0;
virtual const prep_stmt *dbcb_get_prep_stmt(size_t pst_id) const = 0;
virtual void dbcb_resp_short(uint32_t code, const char *msg) = 0;
@ -111,7 +111,7 @@ struct cmd_exec_args {
};
struct dbcontext_i {
virtual ~dbcontext_i() { }
virtual ~dbcontext_i() = default;
virtual void init_thread(const void *stack_bottom,
volatile int& shutdown_flag) = 0;
virtual void term_thread() = 0;

View file

@ -47,7 +47,7 @@ struct hstcpsvr_i;
typedef std::auto_ptr<hstcpsvr_i> hstcpsvr_ptr;
struct hstcpsvr_i {
virtual ~hstcpsvr_i() { }
virtual ~hstcpsvr_i() = default;
virtual std::string start_listen() = 0;
static hstcpsvr_ptr create(const config& conf);
};

View file

@ -24,7 +24,7 @@ struct hstcpsvr_worker_arg {
};
struct hstcpsvr_worker_i {
virtual ~hstcpsvr_worker_i() { }
virtual ~hstcpsvr_worker_i() = default;
virtual void run() = 0;
static hstcpsvr_worker_ptr create(const hstcpsvr_worker_arg& arg);
};

View file

@ -33,7 +33,7 @@ struct hstcpcli_i;
typedef std::auto_ptr<hstcpcli_i> hstcpcli_ptr;
struct hstcpcli_i {
virtual ~hstcpcli_i() { }
virtual ~hstcpcli_i() = default;
virtual void close() = 0;
virtual int reconnect() = 0;
virtual bool stable_point() = 0;

View file

@ -13,7 +13,7 @@ namespace dena {
/* boost::noncopyable */
struct noncopyable {
noncopyable() { }
noncopyable() = default;
private:
noncopyable(const noncopyable&);
noncopyable& operator =(const noncopyable&);

View file

@ -153,7 +153,7 @@ class time_collector
public:
time_collector(utility& u): m_utility(&u) { flush(); }
~time_collector() { }
~time_collector() = default;
uint32_t count(uint index) { return m_count[index]; }
uint64_t total(uint index) { return m_total[index]; }
void flush()

View file

@ -67,8 +67,8 @@ protected:
memcpy(m_buffer, str, length);
return false;
}
// Non-initializing constructor
Inet4() { }
Inet4() = default;
public:
void to_binary(char *dst, size_t dstsize) const
{
@ -161,7 +161,7 @@ protected:
return false;
}
Inet6() { }
Inet6() = default;
public:
static uint binary_length() { return IN6_ADDR_SIZE; }

View file

@ -36,8 +36,8 @@ public:
static Create_func_trt<TRT_FIELD> s_singleton;
protected:
Create_func_trt<TRT_FIELD>() {}
virtual ~Create_func_trt<TRT_FIELD>() {}
Create_func_trt<TRT_FIELD>() = default;
virtual ~Create_func_trt<TRT_FIELD>() = default;
};
template<TR_table::field_id_t TRT_FIELD>
@ -132,8 +132,8 @@ public:
static Create_func_trt_trx_sees<Item_func_trt_trx_seesX> s_singleton;
protected:
Create_func_trt_trx_sees<Item_func_trt_trx_seesX>() {}
virtual ~Create_func_trt_trx_sees<Item_func_trt_trx_seesX>() {}
Create_func_trt_trx_sees<Item_func_trt_trx_seesX>() = default;
virtual ~Create_func_trt_trx_sees<Item_func_trt_trx_seesX>() = default;
};
template<class X>

View file

@ -56,7 +56,7 @@ public:
derived_handler(THD *thd_arg, handlerton *ht_arg)
: thd(thd_arg), ht(ht_arg), derived(0),table(0), tmp_table_param(0),
unit(0), select(0) {}
virtual ~derived_handler() {}
virtual ~derived_handler() = default;
/*
Functions to scan data. All these returns 0 if ok, error code in case

View file

@ -328,9 +328,7 @@ Event_queue_element::Event_queue_element():
SYNOPSIS
Event_queue_element::Event_queue_element()
*/
Event_queue_element::~Event_queue_element()
{
}
Event_queue_element::~Event_queue_element() = default;
/*
@ -356,9 +354,7 @@ Event_timed::Event_timed():
Event_timed::~Event_timed()
*/
Event_timed::~Event_timed()
{
}
Event_timed::~Event_timed() = default;
/*

View file

@ -71,7 +71,7 @@ class Event_parse_data;
class Event_db_repository
{
public:
Event_db_repository(){}
Event_db_repository() = default;
bool
create_event(THD *thd, Event_parse_data *parse_data,

View file

@ -605,7 +605,7 @@ public:
name.length= 0;
};
Virtual_column_info* clone(THD *thd);
~Virtual_column_info() {};
~Virtual_column_info() = default;
enum_vcol_info_type get_vcol_type() const
{
return vcol_type;
@ -894,7 +894,7 @@ public:
Field(uchar *ptr_arg,uint32 length_arg,uchar *null_ptr_arg,
uchar null_bit_arg, utype unireg_check_arg,
const LEX_CSTRING *field_name_arg);
virtual ~Field() {}
virtual ~Field() = default;
virtual Type_numeric_attributes type_numeric_attributes() const
{
@ -5822,8 +5822,8 @@ public:
Field *from_field,*to_field;
String tmp; // For items
Copy_field() {}
~Copy_field() {}
Copy_field() = default;
~Copy_field() = default;
void set(Field *to,Field *from,bool save); // Field to field
void set(uchar *to,Field *from); // Field to string
void (*do_copy)(Copy_field *);

View file

@ -238,22 +238,11 @@ public:
/**
We need an assignment operator, see filesort().
This happens to have the same semantics as the one that would be
generated by the compiler. We still implement it here, to show shallow
assignment explicitly: we have two objects sharing the same array.
generated by the compiler.
Note that this is a shallow copy. We have two objects sharing the same
array.
*/
Filesort_buffer &operator=(const Filesort_buffer &rhs)
{
m_next_rec_ptr= rhs.m_next_rec_ptr;
m_rawmem= rhs.m_rawmem;
m_record_pointers= rhs.m_record_pointers;
m_sort_keys= rhs.m_sort_keys;
m_num_records= rhs.m_num_records;
m_record_length= rhs.m_record_length;
m_sort_length= rhs.m_sort_length;
m_size_in_bytes= rhs.m_size_in_bytes;
m_idx= rhs.m_idx;
return *this;
}
Filesort_buffer &operator=(const Filesort_buffer &rhs) = default;
uint get_sort_length() const { return m_sort_length; }
void set_sort_length(uint val) { m_sort_length= val; }

View file

@ -344,7 +344,7 @@ public:
{
return complete_ring() || complete_poly();
}
virtual ~Gcalc_shape_transporter() {}
virtual ~Gcalc_shape_transporter() = default;
};

View file

@ -77,7 +77,7 @@ public:
group_by_handler(THD *thd_arg, handlerton *ht_arg)
: thd(thd_arg), ht(ht_arg), table(0) {}
virtual ~group_by_handler() {}
virtual ~group_by_handler() = default;
/*
Functions to scan data. All these returns 0 if ok, error code in case

View file

@ -877,7 +877,7 @@ struct xid_t {
long bqual_length;
char data[XIDDATASIZE]; // not \0-terminated !
xid_t() {} /* Remove gcc warning */
xid_t() = default; /* Remove gcc warning */
bool eq(struct xid_t *xid) const
{ return !xid->is_null() && eq(xid->gtrid_length, xid->bqual_length, xid->data); }
bool eq(long g, long b, const char *d) const
@ -1561,7 +1561,7 @@ struct handlerton
public:
virtual bool add_table(const char *tname, size_t tlen) = 0;
virtual bool add_file(const char *fname) = 0;
protected: virtual ~discovered_list() {}
protected: virtual ~discovered_list() = default;
};
/*
@ -1794,7 +1794,7 @@ struct THD_TRANS
m_unsafe_rollback_flags= 0;
}
bool is_empty() const { return ha_list == NULL; }
THD_TRANS() {} /* Remove gcc warning */
THD_TRANS() = default; /* Remove gcc warning */
unsigned int m_unsafe_rollback_flags;
/*
@ -2035,7 +2035,7 @@ struct Table_period_info: Sql_alloc
struct start_end_t
{
start_end_t() {};
start_end_t() = default;
start_end_t(const LEX_CSTRING& _start, const LEX_CSTRING& _end) :
start(_start),
end(_end) {}
@ -2348,9 +2348,9 @@ struct Table_specification_st: public HA_CREATE_INFO,
class inplace_alter_handler_ctx : public Sql_alloc
{
public:
inplace_alter_handler_ctx() {}
inplace_alter_handler_ctx() = default;
virtual ~inplace_alter_handler_ctx() {}
virtual ~inplace_alter_handler_ctx() = default;
virtual void set_shared_data(const inplace_alter_handler_ctx& ctx) {}
};
@ -2576,8 +2576,8 @@ typedef struct st_key_create_information
class TABLEOP_HOOKS
{
public:
TABLEOP_HOOKS() {}
virtual ~TABLEOP_HOOKS() {}
TABLEOP_HOOKS() = default;
virtual ~TABLEOP_HOOKS() = default;
inline void prelock(TABLE **tables, uint count)
{
@ -2618,7 +2618,7 @@ typedef class Item COND;
typedef struct st_ha_check_opt
{
st_ha_check_opt() {} /* Remove gcc warning */
st_ha_check_opt() = default; /* Remove gcc warning */
uint flags; /* isam layer flags (e.g. for myisamchk) */
uint sql_flags; /* sql layer flags - for something myisamchk cannot do */
time_t start_time; /* When check/repair starts */
@ -2997,8 +2997,8 @@ uint calculate_key_len(TABLE *, uint, const uchar *, key_part_map);
class Handler_share
{
public:
Handler_share() {}
virtual ~Handler_share() {}
Handler_share() = default;
virtual ~Handler_share() = default;
};
enum class Compare_keys : uint32_t
@ -5134,7 +5134,7 @@ public:
const LEX_CSTRING *wild_arg);
Discovered_table_list(THD *thd_arg, Dynamic_array<LEX_CSTRING*> *tables_arg)
: thd(thd_arg), wild(NULL), with_temps(true), tables(tables_arg) {}
~Discovered_table_list() {}
~Discovered_table_list() = default;
bool add_table(const char *tname, size_t tlen);
bool add_file(const char *fname);

View file

@ -35,7 +35,7 @@ class hash_filo_element
private:
hash_filo_element *next_used,*prev_used;
public:
hash_filo_element() {}
hash_filo_element() = default;
hash_filo_element *next()
{ return next_used; }
hash_filo_element *prev()

View file

@ -74,8 +74,7 @@ Host_errors::Host_errors()
m_local(0)
{}
Host_errors::~Host_errors()
{}
Host_errors::~Host_errors() = default;
void Host_errors::reset()
{

View file

@ -287,7 +287,7 @@ private:
TABLE_LIST *save_next_local;
public:
Name_resolution_context_state() {} /* Remove gcc warning */
Name_resolution_context_state() = default; /* Remove gcc warning */
public:
/* Save the state of a name resolution context. */
@ -388,7 +388,7 @@ class sp_rcontext;
class Sp_rcontext_handler
{
public:
virtual ~Sp_rcontext_handler() {}
virtual ~Sp_rcontext_handler() = default;
/**
A prefix used for SP variable names in queries:
- EXPLAIN EXTENDED
@ -461,8 +461,8 @@ public:
required, otherwise we only reading it and SELECT
privilege might be required.
*/
Settable_routine_parameter() {}
virtual ~Settable_routine_parameter() {}
Settable_routine_parameter() = default;
virtual ~Settable_routine_parameter() = default;
virtual void set_required_privilege(bool rw) {};
/*
@ -544,7 +544,7 @@ class Rewritable_query_parameter
limit_clause_param(false)
{ }
virtual ~Rewritable_query_parameter() { }
virtual ~Rewritable_query_parameter() = default;
virtual bool append_for_log(THD *thd, String *str) = 0;
};
@ -711,7 +711,7 @@ public:
class Item_const
{
public:
virtual ~Item_const() {}
virtual ~Item_const() = default;
virtual const Type_all_attributes *get_type_all_attributes_from_const() const= 0;
virtual bool const_is_null() const { return false; }
virtual const longlong *const_ptr_longlong() const { return NULL; }
@ -2771,8 +2771,8 @@ class Field_enumerator
{
public:
virtual void visit_field(Item_field *field)= 0;
virtual ~Field_enumerator() {}; /* purecov: inspected */
Field_enumerator() {} /* Remove gcc warning */
virtual ~Field_enumerator() = default;; /* purecov: inspected */
Field_enumerator() = default; /* Remove gcc warning */
};
class Item_string;
@ -3297,7 +3297,7 @@ public:
Item_result_field(THD *thd, Item_result_field *item):
Item_fixed_hybrid(thd, item), result_field(item->result_field)
{}
~Item_result_field() {} /* Required with gcc 2.95 */
~Item_result_field() = default;
Field *get_tmp_table_field() override { return result_field; }
Field *create_tmp_field_ex(MEM_ROOT *root, TABLE *table, Tmp_field_src *src,
const Tmp_field_param *param) override
@ -7532,7 +7532,7 @@ public:
*/
virtual void close()= 0;
virtual ~Item_iterator() {}
virtual ~Item_iterator() = default;
};

View file

@ -61,7 +61,7 @@ Cached_item *new_Cached_item(THD *thd, Item *item, bool pass_through_ref)
}
}
Cached_item::~Cached_item() {}
Cached_item::~Cached_item() = default;
/**
Compare with old value and replace value with new value.

View file

@ -249,8 +249,7 @@ protected:
Item_bool_func(thd, a), value(a_value), affirmative(a_affirmative)
{}
~Item_func_truth()
{}
~Item_func_truth() = default;
private:
/**
True for <code>X IS [NOT] TRUE</code>,
@ -272,7 +271,7 @@ class Item_func_istrue : public Item_func_truth
{
public:
Item_func_istrue(THD *thd, Item *a): Item_func_truth(thd, a, true, true) {}
~Item_func_istrue() {}
~Item_func_istrue() = default;
virtual const char* func_name() const { return "istrue"; }
Item *get_copy(THD *thd)
{ return get_item_copy<Item_func_istrue>(thd, this); }
@ -288,7 +287,7 @@ class Item_func_isnottrue : public Item_func_truth
public:
Item_func_isnottrue(THD *thd, Item *a):
Item_func_truth(thd, a, true, false) {}
~Item_func_isnottrue() {}
~Item_func_isnottrue() = default;
virtual const char* func_name() const { return "isnottrue"; }
bool find_not_null_fields(table_map allowed) { return false; }
Item *get_copy(THD *thd)
@ -305,7 +304,7 @@ class Item_func_isfalse : public Item_func_truth
{
public:
Item_func_isfalse(THD *thd, Item *a): Item_func_truth(thd, a, false, true) {}
~Item_func_isfalse() {}
~Item_func_isfalse() = default;
virtual const char* func_name() const { return "isfalse"; }
Item *get_copy(THD *thd)
{ return get_item_copy<Item_func_isfalse>(thd, this); }
@ -321,7 +320,7 @@ class Item_func_isnotfalse : public Item_func_truth
public:
Item_func_isnotfalse(THD *thd, Item *a):
Item_func_truth(thd, a, false, false) {}
~Item_func_isnotfalse() {}
~Item_func_isnotfalse() = default;
virtual const char* func_name() const { return "isnotfalse"; }
bool find_not_null_fields(table_map allowed) { return false; }
Item *get_copy(THD *thd)
@ -1345,13 +1344,13 @@ public:
CHARSET_INFO *collation;
uint count;
uint used_count;
in_vector() {}
in_vector() = default;
in_vector(THD *thd, uint elements, uint element_length, qsort2_cmp cmp_func,
CHARSET_INFO *cmp_coll)
:base((char*) thd_calloc(thd, elements * element_length)),
size(element_length), compare(cmp_func), collation(cmp_coll),
count(elements), used_count(elements) {}
virtual ~in_vector() {}
virtual ~in_vector() = default;
virtual void set(uint pos,Item *item)=0;
virtual uchar *get_value(Item *item)=0;
void sort()
@ -1550,7 +1549,7 @@ class cmp_item :public Sql_alloc
public:
CHARSET_INFO *cmp_charset;
cmp_item() { cmp_charset= &my_charset_bin; }
virtual ~cmp_item() {}
virtual ~cmp_item() = default;
virtual void store_value(Item *item)= 0;
/**
@returns result (TRUE, FALSE or UNKNOWN) of
@ -1579,7 +1578,7 @@ class cmp_item_string : public cmp_item_scalar
protected:
String *value_res;
public:
cmp_item_string () {}
cmp_item_string () = default;
cmp_item_string (CHARSET_INFO *cs) { cmp_charset= cs; }
void set_charset(CHARSET_INFO *cs) { cmp_charset= cs; }
friend class cmp_item_sort_string;
@ -1645,7 +1644,7 @@ class cmp_item_int : public cmp_item_scalar
{
longlong value;
public:
cmp_item_int() {} /* Remove gcc warning */
cmp_item_int() = default; /* Remove gcc warning */
void store_value(Item *item)
{
value= item->val_int();
@ -1678,7 +1677,7 @@ class cmp_item_temporal: public cmp_item_scalar
protected:
longlong value;
public:
cmp_item_temporal() {}
cmp_item_temporal() = default;
int compare(cmp_item *ci);
};
@ -1734,7 +1733,7 @@ class cmp_item_real : public cmp_item_scalar
{
double value;
public:
cmp_item_real() {} /* Remove gcc warning */
cmp_item_real() = default; /* Remove gcc warning */
void store_value(Item *item)
{
value= item->val_real();
@ -1764,7 +1763,7 @@ class cmp_item_decimal : public cmp_item_scalar
{
my_decimal value;
public:
cmp_item_decimal() {} /* Remove gcc warning */
cmp_item_decimal() = default; /* Remove gcc warning */
void store_value(Item *item);
int cmp(Item *arg);
int cmp_not_null(const Value *val);
@ -3514,8 +3513,8 @@ Item *and_expressions(Item *a, Item *b, Item **org_item);
class Comp_creator
{
public:
Comp_creator() {} /* Remove gcc warning */
virtual ~Comp_creator() {} /* Remove gcc warning */
Comp_creator() = default; /* Remove gcc warning */
virtual ~Comp_creator() = default; /* Remove gcc warning */
/**
Create operation with given arguments.
*/
@ -3534,8 +3533,8 @@ public:
class Eq_creator :public Comp_creator
{
public:
Eq_creator() {} /* Remove gcc warning */
virtual ~Eq_creator() {} /* Remove gcc warning */
Eq_creator() = default; /* Remove gcc warning */
virtual ~Eq_creator() = default; /* Remove gcc warning */
Item_bool_rowready_func2* create(THD *thd, Item *a, Item *b) const;
Item_bool_rowready_func2* create_swap(THD *thd, Item *a, Item *b) const;
const char* symbol(bool invert) const { return invert? "<>" : "="; }
@ -3546,8 +3545,8 @@ public:
class Ne_creator :public Comp_creator
{
public:
Ne_creator() {} /* Remove gcc warning */
virtual ~Ne_creator() {} /* Remove gcc warning */
Ne_creator() = default; /* Remove gcc warning */
virtual ~Ne_creator() = default; /* Remove gcc warning */
Item_bool_rowready_func2* create(THD *thd, Item *a, Item *b) const;
Item_bool_rowready_func2* create_swap(THD *thd, Item *a, Item *b) const;
const char* symbol(bool invert) const { return invert? "=" : "<>"; }
@ -3558,8 +3557,8 @@ public:
class Gt_creator :public Comp_creator
{
public:
Gt_creator() {} /* Remove gcc warning */
virtual ~Gt_creator() {} /* Remove gcc warning */
Gt_creator() = default; /* Remove gcc warning */
virtual ~Gt_creator() = default; /* Remove gcc warning */
Item_bool_rowready_func2* create(THD *thd, Item *a, Item *b) const;
Item_bool_rowready_func2* create_swap(THD *thd, Item *a, Item *b) const;
const char* symbol(bool invert) const { return invert? "<=" : ">"; }
@ -3570,8 +3569,8 @@ public:
class Lt_creator :public Comp_creator
{
public:
Lt_creator() {} /* Remove gcc warning */
virtual ~Lt_creator() {} /* Remove gcc warning */
Lt_creator() = default; /* Remove gcc warning */
virtual ~Lt_creator() = default; /* Remove gcc warning */
Item_bool_rowready_func2* create(THD *thd, Item *a, Item *b) const;
Item_bool_rowready_func2* create_swap(THD *thd, Item *a, Item *b) const;
const char* symbol(bool invert) const { return invert? ">=" : "<"; }
@ -3582,8 +3581,8 @@ public:
class Ge_creator :public Comp_creator
{
public:
Ge_creator() {} /* Remove gcc warning */
virtual ~Ge_creator() {} /* Remove gcc warning */
Ge_creator() = default; /* Remove gcc warning */
virtual ~Ge_creator() = default; /* Remove gcc warning */
Item_bool_rowready_func2* create(THD *thd, Item *a, Item *b) const;
Item_bool_rowready_func2* create_swap(THD *thd, Item *a, Item *b) const;
const char* symbol(bool invert) const { return invert? "<" : ">="; }
@ -3594,8 +3593,8 @@ public:
class Le_creator :public Comp_creator
{
public:
Le_creator() {} /* Remove gcc warning */
virtual ~Le_creator() {} /* Remove gcc warning */
Le_creator() = default; /* Remove gcc warning */
virtual ~Le_creator() = default; /* Remove gcc warning */
Item_bool_rowready_func2* create(THD *thd, Item *a, Item *b) const;
Item_bool_rowready_func2* create_swap(THD *thd, Item *a, Item *b) const;
const char* symbol(bool invert) const { return invert? ">" : "<="; }

File diff suppressed because it is too large Load diff

View file

@ -63,9 +63,9 @@ public:
protected:
/** Constructor */
Create_func() {}
Create_func() = default;
/** Destructor */
virtual ~Create_func() {}
virtual ~Create_func() = default;
};
@ -88,9 +88,9 @@ public:
protected:
/** Constructor. */
Create_func_arg0() {}
Create_func_arg0() = default;
/** Destructor. */
virtual ~Create_func_arg0() {}
virtual ~Create_func_arg0() = default;
};
@ -114,9 +114,9 @@ public:
protected:
/** Constructor. */
Create_func_arg1() {}
Create_func_arg1() = default;
/** Destructor. */
virtual ~Create_func_arg1() {}
virtual ~Create_func_arg1() = default;
};
@ -141,9 +141,9 @@ public:
protected:
/** Constructor. */
Create_func_arg2() {}
Create_func_arg2() = default;
/** Destructor. */
virtual ~Create_func_arg2() {}
virtual ~Create_func_arg2() = default;
};
@ -169,9 +169,9 @@ public:
protected:
/** Constructor. */
Create_func_arg3() {}
Create_func_arg3() = default;
/** Destructor. */
virtual ~Create_func_arg3() {}
virtual ~Create_func_arg3() = default;
};
@ -203,9 +203,9 @@ public:
protected:
/** Constructor. */
Create_native_func() {}
Create_native_func() = default;
/** Destructor. */
virtual ~Create_native_func() {}
virtual ~Create_native_func() = default;
};
@ -246,9 +246,9 @@ public:
protected:
/** Constructor. */
Create_qfunc() {}
Create_qfunc() = default;
/** Destructor. */
virtual ~Create_qfunc() {}
virtual ~Create_qfunc() = default;
};
@ -295,9 +295,9 @@ public:
protected:
/** Constructor. */
Create_udf_func() {}
Create_udf_func() = default;
/** Destructor. */
virtual ~Create_udf_func() {}
virtual ~Create_udf_func() = default;
};
#endif

View file

@ -4001,7 +4001,7 @@ class Interruptible_wait
Interruptible_wait(THD *thd)
: m_thd(thd) {}
~Interruptible_wait() {}
~Interruptible_wait() = default;
public:
/**

View file

@ -478,7 +478,7 @@ public:
class Handler
{
public:
virtual ~Handler() { }
virtual ~Handler() = default;
virtual String *val_str(Item_handled_func *, String *) const= 0;
virtual String *val_str_ascii(Item_handled_func *, String *) const= 0;
virtual double val_real(Item_handled_func *) const= 0;
@ -3470,8 +3470,7 @@ public:
Item_func_sp(THD *thd, Name_resolution_context *context_arg,
sp_name *name, const Sp_handler *sph, List<Item> &list);
virtual ~Item_func_sp()
{}
virtual ~Item_func_sp() = default;
void update_used_tables();

View file

@ -1533,9 +1533,7 @@ exit:
}
Item_func_spatial_operation::~Item_func_spatial_operation()
{
}
Item_func_spatial_operation::~Item_func_spatial_operation() = default;
String *Item_func_spatial_operation::val_str(String *str_value)
@ -2791,8 +2789,8 @@ public:
static Create_func_area s_singleton;
protected:
Create_func_area() {}
virtual ~Create_func_area() {}
Create_func_area() = default;
virtual ~Create_func_area() = default;
};
@ -2807,8 +2805,8 @@ public:
static Create_func_as_wkb s_singleton;
protected:
Create_func_as_wkb() {}
virtual ~Create_func_as_wkb() {}
Create_func_as_wkb() = default;
virtual ~Create_func_as_wkb() = default;
};
@ -2823,8 +2821,8 @@ public:
static Create_func_as_wkt s_singleton;
protected:
Create_func_as_wkt() {}
virtual ~Create_func_as_wkt() {}
Create_func_as_wkt() = default;
virtual ~Create_func_as_wkt() = default;
};
@ -2840,8 +2838,8 @@ public:
static Create_func_centroid s_singleton;
protected:
Create_func_centroid() {}
virtual ~Create_func_centroid() {}
Create_func_centroid() = default;
virtual ~Create_func_centroid() = default;
};
@ -2856,8 +2854,8 @@ public:
static Create_func_convexhull s_singleton;
protected:
Create_func_convexhull() {}
virtual ~Create_func_convexhull() {}
Create_func_convexhull() = default;
virtual ~Create_func_convexhull() = default;
};
@ -2872,8 +2870,8 @@ public:
static Create_func_pointonsurface s_singleton;
protected:
Create_func_pointonsurface() {}
virtual ~Create_func_pointonsurface() {}
Create_func_pointonsurface() = default;
virtual ~Create_func_pointonsurface() = default;
};
@ -2889,8 +2887,8 @@ public:
static Create_func_mbr_contains s_singleton;
protected:
Create_func_mbr_contains() {}
virtual ~Create_func_mbr_contains() {}
Create_func_mbr_contains() = default;
virtual ~Create_func_mbr_contains() = default;
};
@ -2905,8 +2903,8 @@ public:
static Create_func_contains s_singleton;
protected:
Create_func_contains() {}
virtual ~Create_func_contains() {}
Create_func_contains() = default;
virtual ~Create_func_contains() = default;
};
@ -2921,8 +2919,8 @@ public:
static Create_func_crosses s_singleton;
protected:
Create_func_crosses() {}
virtual ~Create_func_crosses() {}
Create_func_crosses() = default;
virtual ~Create_func_crosses() = default;
};
@ -2937,8 +2935,8 @@ public:
static Create_func_dimension s_singleton;
protected:
Create_func_dimension() {}
virtual ~Create_func_dimension() {}
Create_func_dimension() = default;
virtual ~Create_func_dimension() = default;
};
@ -2954,8 +2952,8 @@ public:
static Create_func_mbr_disjoint s_singleton;
protected:
Create_func_mbr_disjoint() {}
virtual ~Create_func_mbr_disjoint() {}
Create_func_mbr_disjoint() = default;
virtual ~Create_func_mbr_disjoint() = default;
};
@ -2970,8 +2968,8 @@ public:
static Create_func_disjoint s_singleton;
protected:
Create_func_disjoint() {}
virtual ~Create_func_disjoint() {}
Create_func_disjoint() = default;
virtual ~Create_func_disjoint() = default;
};
@ -2986,8 +2984,8 @@ public:
static Create_func_distance s_singleton;
protected:
Create_func_distance() {}
virtual ~Create_func_distance() {}
Create_func_distance() = default;
virtual ~Create_func_distance() = default;
};
@ -2999,8 +2997,8 @@ public:
static Create_func_distance_sphere s_singleton;
protected:
Create_func_distance_sphere() {}
virtual ~Create_func_distance_sphere() {}
Create_func_distance_sphere() = default;
virtual ~Create_func_distance_sphere() = default;
};
@ -3034,8 +3032,8 @@ public:
static Create_func_endpoint s_singleton;
protected:
Create_func_endpoint() {}
virtual ~Create_func_endpoint() {}
Create_func_endpoint() = default;
virtual ~Create_func_endpoint() = default;
};
@ -3050,8 +3048,8 @@ public:
static Create_func_envelope s_singleton;
protected:
Create_func_envelope() {}
virtual ~Create_func_envelope() {}
Create_func_envelope() = default;
virtual ~Create_func_envelope() = default;
};
class Create_func_boundary : public Create_func_arg1
@ -3065,8 +3063,8 @@ public:
static Create_func_boundary s_singleton;
protected:
Create_func_boundary() {}
virtual ~Create_func_boundary() {}
Create_func_boundary() = default;
virtual ~Create_func_boundary() = default;
};
@ -3082,8 +3080,8 @@ public:
static Create_func_mbr_equals s_singleton;
protected:
Create_func_mbr_equals() {}
virtual ~Create_func_mbr_equals() {}
Create_func_mbr_equals() = default;
virtual ~Create_func_mbr_equals() = default;
};
@ -3099,8 +3097,8 @@ public:
static Create_func_equals s_singleton;
protected:
Create_func_equals() {}
virtual ~Create_func_equals() {}
Create_func_equals() = default;
virtual ~Create_func_equals() = default;
};
@ -3116,8 +3114,8 @@ public:
static Create_func_exteriorring s_singleton;
protected:
Create_func_exteriorring() {}
virtual ~Create_func_exteriorring() {}
Create_func_exteriorring() = default;
virtual ~Create_func_exteriorring() = default;
};
@ -3131,8 +3129,8 @@ public:
static Create_func_geometry_from_text s_singleton;
protected:
Create_func_geometry_from_text() {}
virtual ~Create_func_geometry_from_text() {}
Create_func_geometry_from_text() = default;
virtual ~Create_func_geometry_from_text() = default;
};
@ -3182,8 +3180,8 @@ public:
static Create_func_geometry_from_wkb s_singleton;
protected:
Create_func_geometry_from_wkb() {}
virtual ~Create_func_geometry_from_wkb() {}
Create_func_geometry_from_wkb() = default;
virtual ~Create_func_geometry_from_wkb() = default;
};
@ -3232,8 +3230,8 @@ public:
static Create_func_geometry_from_json s_singleton;
protected:
Create_func_geometry_from_json() {}
virtual ~Create_func_geometry_from_json() {}
Create_func_geometry_from_json() = default;
virtual ~Create_func_geometry_from_json() = default;
};
@ -3292,8 +3290,8 @@ public:
static Create_func_as_geojson s_singleton;
protected:
Create_func_as_geojson() {}
virtual ~Create_func_as_geojson() {}
Create_func_as_geojson() = default;
virtual ~Create_func_as_geojson() = default;
};
@ -3352,8 +3350,8 @@ public:
static Create_func_geometry_type s_singleton;
protected:
Create_func_geometry_type() {}
virtual ~Create_func_geometry_type() {}
Create_func_geometry_type() = default;
virtual ~Create_func_geometry_type() = default;
};
@ -3369,8 +3367,8 @@ public:
static Create_func_geometryn s_singleton;
protected:
Create_func_geometryn() {}
virtual ~Create_func_geometryn() {}
Create_func_geometryn() = default;
virtual ~Create_func_geometryn() = default;
};
@ -3386,8 +3384,8 @@ public:
static Create_func_gis_debug s_singleton;
protected:
Create_func_gis_debug() {}
virtual ~Create_func_gis_debug() {}
Create_func_gis_debug() = default;
virtual ~Create_func_gis_debug() = default;
};
#endif
@ -3403,8 +3401,8 @@ public:
static Create_func_glength s_singleton;
protected:
Create_func_glength() {}
virtual ~Create_func_glength() {}
Create_func_glength() = default;
virtual ~Create_func_glength() = default;
};
@ -3420,8 +3418,8 @@ public:
static Create_func_interiorringn s_singleton;
protected:
Create_func_interiorringn() {}
virtual ~Create_func_interiorringn() {}
Create_func_interiorringn() = default;
virtual ~Create_func_interiorringn() = default;
};
@ -3436,8 +3434,8 @@ public:
static Create_func_relate s_singleton;
protected:
Create_func_relate() {}
virtual ~Create_func_relate() {}
Create_func_relate() = default;
virtual ~Create_func_relate() = default;
};
@ -3453,8 +3451,8 @@ public:
static Create_func_mbr_intersects s_singleton;
protected:
Create_func_mbr_intersects() {}
virtual ~Create_func_mbr_intersects() {}
Create_func_mbr_intersects() = default;
virtual ~Create_func_mbr_intersects() = default;
};
@ -3470,8 +3468,8 @@ public:
static Create_func_intersects s_singleton;
protected:
Create_func_intersects() {}
virtual ~Create_func_intersects() {}
Create_func_intersects() = default;
virtual ~Create_func_intersects() = default;
};
@ -3487,8 +3485,8 @@ public:
static Create_func_intersection s_singleton;
protected:
Create_func_intersection() {}
virtual ~Create_func_intersection() {}
Create_func_intersection() = default;
virtual ~Create_func_intersection() = default;
};
@ -3504,8 +3502,8 @@ public:
static Create_func_difference s_singleton;
protected:
Create_func_difference() {}
virtual ~Create_func_difference() {}
Create_func_difference() = default;
virtual ~Create_func_difference() = default;
};
@ -3521,8 +3519,8 @@ public:
static Create_func_union s_singleton;
protected:
Create_func_union() {}
virtual ~Create_func_union() {}
Create_func_union() = default;
virtual ~Create_func_union() = default;
};
@ -3538,8 +3536,8 @@ public:
static Create_func_symdifference s_singleton;
protected:
Create_func_symdifference() {}
virtual ~Create_func_symdifference() {}
Create_func_symdifference() = default;
virtual ~Create_func_symdifference() = default;
};
@ -3554,8 +3552,8 @@ public:
static Create_func_buffer s_singleton;
protected:
Create_func_buffer() {}
virtual ~Create_func_buffer() {}
Create_func_buffer() = default;
virtual ~Create_func_buffer() = default;
};
@ -3570,8 +3568,8 @@ public:
static Create_func_isclosed s_singleton;
protected:
Create_func_isclosed() {}
virtual ~Create_func_isclosed() {}
Create_func_isclosed() = default;
virtual ~Create_func_isclosed() = default;
};
@ -3586,8 +3584,8 @@ public:
static Create_func_isring s_singleton;
protected:
Create_func_isring() {}
virtual ~Create_func_isring() {}
Create_func_isring() = default;
virtual ~Create_func_isring() = default;
};
@ -3602,8 +3600,8 @@ public:
static Create_func_isempty s_singleton;
protected:
Create_func_isempty() {}
virtual ~Create_func_isempty() {}
Create_func_isempty() = default;
virtual ~Create_func_isempty() = default;
};
@ -3618,8 +3616,8 @@ public:
static Create_func_issimple s_singleton;
protected:
Create_func_issimple() {}
virtual ~Create_func_issimple() {}
Create_func_issimple() = default;
virtual ~Create_func_issimple() = default;
};
@ -3635,8 +3633,8 @@ public:
static Create_func_numgeometries s_singleton;
protected:
Create_func_numgeometries() {}
virtual ~Create_func_numgeometries() {}
Create_func_numgeometries() = default;
virtual ~Create_func_numgeometries() = default;
};
@ -3651,8 +3649,8 @@ public:
static Create_func_numinteriorring s_singleton;
protected:
Create_func_numinteriorring() {}
virtual ~Create_func_numinteriorring() {}
Create_func_numinteriorring() = default;
virtual ~Create_func_numinteriorring() = default;
};
@ -3667,8 +3665,8 @@ public:
static Create_func_numpoints s_singleton;
protected:
Create_func_numpoints() {}
virtual ~Create_func_numpoints() {}
Create_func_numpoints() = default;
virtual ~Create_func_numpoints() = default;
};
@ -3684,8 +3682,8 @@ public:
static Create_func_mbr_overlaps s_singleton;
protected:
Create_func_mbr_overlaps() {}
virtual ~Create_func_mbr_overlaps() {}
Create_func_mbr_overlaps() = default;
virtual ~Create_func_mbr_overlaps() = default;
};
@ -3701,8 +3699,8 @@ public:
static Create_func_overlaps s_singleton;
protected:
Create_func_overlaps() {}
virtual ~Create_func_overlaps() {}
Create_func_overlaps() = default;
virtual ~Create_func_overlaps() = default;
};
@ -3720,8 +3718,8 @@ public:
static Create_func_pointn s_singleton;
protected:
Create_func_pointn() {}
virtual ~Create_func_pointn() {}
Create_func_pointn() = default;
virtual ~Create_func_pointn() = default;
};
@ -3738,8 +3736,8 @@ public:
static Create_func_srid s_singleton;
protected:
Create_func_srid() {}
virtual ~Create_func_srid() {}
Create_func_srid() = default;
virtual ~Create_func_srid() = default;
};
@ -3755,8 +3753,8 @@ public:
static Create_func_startpoint s_singleton;
protected:
Create_func_startpoint() {}
virtual ~Create_func_startpoint() {}
Create_func_startpoint() = default;
virtual ~Create_func_startpoint() = default;
};
@ -3773,8 +3771,8 @@ public:
static Create_func_touches s_singleton;
protected:
Create_func_touches() {}
virtual ~Create_func_touches() {}
Create_func_touches() = default;
virtual ~Create_func_touches() = default;
};
@ -3790,8 +3788,8 @@ public:
static Create_func_mbr_within s_singleton;
protected:
Create_func_mbr_within() {}
virtual ~Create_func_mbr_within() {}
Create_func_mbr_within() = default;
virtual ~Create_func_mbr_within() = default;
};
@ -3807,8 +3805,8 @@ public:
static Create_func_within s_singleton;
protected:
Create_func_within() {}
virtual ~Create_func_within() {}
Create_func_within() = default;
virtual ~Create_func_within() = default;
};
@ -3823,8 +3821,8 @@ public:
static Create_func_x s_singleton;
protected:
Create_func_x() {}
virtual ~Create_func_x() {}
Create_func_x() = default;
virtual ~Create_func_x() = default;
};
@ -3839,8 +3837,8 @@ public:
static Create_func_y s_singleton;
protected:
Create_func_y() {}
virtual ~Create_func_y() {}
Create_func_y() = default;
virtual ~Create_func_y() = default;
};

View file

@ -2861,7 +2861,9 @@ bool Item_exists_subselect::select_prepare_to_be_in()
bool trans_res= FALSE;
DBUG_ENTER("Item_exists_subselect::select_prepare_to_be_in");
if (!optimizer &&
thd->lex->sql_command == SQLCOM_SELECT &&
(thd->lex->sql_command == SQLCOM_SELECT ||
thd->lex->sql_command == SQLCOM_UPDATE_MULTI ||
thd->lex->sql_command == SQLCOM_DELETE_MULTI) &&
!unit->first_select()->is_part_of_union() &&
optimizer_flag(thd, OPTIMIZER_SWITCH_EXISTS_TO_IN) &&
(is_top_level_item() ||

View file

@ -837,7 +837,7 @@ public:
item= si;
maybe_null= 0;
}
virtual ~subselect_engine() {}; // to satisfy compiler
virtual ~subselect_engine() = default;; // to satisfy compiler
virtual void cleanup()= 0;
/*

View file

@ -59,7 +59,7 @@ protected:
public:
Aggregator (Item_sum *arg): item_sum(arg) {}
virtual ~Aggregator () {} /* Keep gcc happy */
virtual ~Aggregator () = default; /* Keep gcc happy */
enum Aggregator_type { SIMPLE_AGGREGATOR, DISTINCT_AGGREGATOR };
virtual Aggregator_type Aggrtype() = 0;

View file

@ -210,7 +210,7 @@ public:
m_message[0]= '\0';
}
virtual ~Silence_log_table_errors() {}
virtual ~Silence_log_table_errors() = default;
virtual bool handle_condition(THD *thd,
uint sql_errno,
@ -643,14 +643,10 @@ end:
}
Log_to_csv_event_handler::Log_to_csv_event_handler()
{
}
Log_to_csv_event_handler::Log_to_csv_event_handler() = default;
Log_to_csv_event_handler::~Log_to_csv_event_handler()
{
}
Log_to_csv_event_handler::~Log_to_csv_event_handler() = default;
void Log_to_csv_event_handler::cleanup()

View file

@ -42,8 +42,8 @@ class TC_LOG
{
public:
int using_heuristic_recover();
TC_LOG() {}
virtual ~TC_LOG() {}
TC_LOG() = default;
virtual ~TC_LOG() = default;
virtual int open(const char *opt_name)=0;
virtual void close()=0;
@ -100,7 +100,7 @@ extern PSI_cond_key key_COND_prepare_ordered;
class TC_LOG_DUMMY: public TC_LOG // use it to disable the logging
{
public:
TC_LOG_DUMMY() {}
TC_LOG_DUMMY() = default;
int open(const char *opt_name) { return 0; }
void close() { }
/*
@ -308,7 +308,7 @@ class MYSQL_LOG
{
public:
MYSQL_LOG();
virtual ~MYSQL_LOG() {}
virtual ~MYSQL_LOG() = default;
void init_pthread_objects();
void cleanup();
bool open(
@ -977,7 +977,7 @@ public:
class Log_event_handler
{
public:
Log_event_handler() {}
Log_event_handler() = default;
virtual bool init()= 0;
virtual void cleanup()= 0;
@ -991,7 +991,7 @@ public:
const char *command_type, size_t command_type_len,
const char *sql_text, size_t sql_text_len,
CHARSET_INFO *client_cs)= 0;
virtual ~Log_event_handler() {}
virtual ~Log_event_handler() = default;
};

View file

@ -152,7 +152,7 @@ public:
reinit_io_cache(m_cache, WRITE_CACHE, 0L, FALSE, TRUE);
}
~Write_on_release_cache() {}
~Write_on_release_cache() = default;
bool flush_data()
{
@ -4092,9 +4092,7 @@ Ignorable_log_event::Ignorable_log_event(const char *buf,
DBUG_VOID_RETURN;
}
Ignorable_log_event::~Ignorable_log_event()
{
}
Ignorable_log_event::~Ignorable_log_event() = default;
bool copy_event_cache_to_file_and_reinit(IO_CACHE *cache, FILE *file)
{

View file

@ -2545,8 +2545,7 @@ public:
*/
Load_log_event(const char* buf, uint event_len,
const Format_description_log_event* description_event);
~Load_log_event()
{}
~Load_log_event() = default;
Log_event_type get_type_code()
{
return sql_ex.new_format() ? NEW_LOAD_EVENT: LOAD_EVENT;
@ -2630,13 +2629,13 @@ public:
void pack_info(Protocol* protocol);
#endif /* HAVE_REPLICATION */
#else
Start_log_event_v3() {}
Start_log_event_v3() = default;
bool print(FILE* file, PRINT_EVENT_INFO* print_event_info);
#endif
Start_log_event_v3(const char* buf, uint event_len,
const Format_description_log_event* description_event);
~Start_log_event_v3() {}
~Start_log_event_v3() = default;
Log_event_type get_type_code() { return START_EVENT_V3;}
my_off_t get_header_len(my_off_t l __attribute__((unused)))
{ return LOG_EVENT_MINIMAL_HEADER_LEN; }
@ -2926,7 +2925,7 @@ Intvar_log_event(THD* thd_arg,uchar type_arg, ulonglong val_arg,
Intvar_log_event(const char* buf,
const Format_description_log_event *description_event);
~Intvar_log_event() {}
~Intvar_log_event() = default;
Log_event_type get_type_code() { return INTVAR_EVENT;}
const char* get_var_type_name();
int get_data_size() { return 9; /* sizeof(type) + sizeof(val) */;}
@ -3007,7 +3006,7 @@ class Rand_log_event: public Log_event
Rand_log_event(const char* buf,
const Format_description_log_event *description_event);
~Rand_log_event() {}
~Rand_log_event() = default;
Log_event_type get_type_code() { return RAND_EVENT;}
int get_data_size() { return 16; /* sizeof(ulonglong) * 2*/ }
#ifdef MYSQL_SERVER
@ -3087,7 +3086,7 @@ public:
Xid_log_event(const char* buf,
const Format_description_log_event *description_event);
~Xid_log_event() {}
~Xid_log_event() = default;
Log_event_type get_type_code() { return XID_EVENT;}
int get_data_size() { return sizeof(xid); }
#ifdef MYSQL_SERVER
@ -3306,7 +3305,7 @@ public:
User_var_log_event(const char* buf, uint event_len,
const Format_description_log_event *description_event);
~User_var_log_event() {}
~User_var_log_event() = default;
Log_event_type get_type_code() { return USER_VAR_EVENT;}
#ifdef MYSQL_SERVER
bool write();
@ -3356,7 +3355,7 @@ public:
const Format_description_log_event *description_event):
Log_event(buf, description_event)
{}
~Stop_log_event() {}
~Stop_log_event() = default;
Log_event_type get_type_code() { return STOP_EVENT;}
bool is_valid() const { return 1; }
@ -3622,7 +3621,7 @@ public:
#endif
Gtid_log_event(const char *buf, uint event_len,
const Format_description_log_event *description_event);
~Gtid_log_event() { }
~Gtid_log_event() = default;
Log_event_type get_type_code() { return GTID_EVENT; }
enum_logged_status logged_status() { return LOGGED_NO_DATA; }
int get_data_size()
@ -3875,7 +3874,7 @@ public:
Append_block_log_event(const char* buf, uint event_len,
const Format_description_log_event
*description_event);
~Append_block_log_event() {}
~Append_block_log_event() = default;
Log_event_type get_type_code() { return APPEND_BLOCK_EVENT;}
int get_data_size() { return block_len + APPEND_BLOCK_HEADER_LEN ;}
bool is_valid() const { return block != 0; }
@ -3916,7 +3915,7 @@ public:
Delete_file_log_event(const char* buf, uint event_len,
const Format_description_log_event* description_event);
~Delete_file_log_event() {}
~Delete_file_log_event() = default;
Log_event_type get_type_code() { return DELETE_FILE_EVENT;}
int get_data_size() { return DELETE_FILE_HEADER_LEN ;}
bool is_valid() const { return file_id != 0; }
@ -3956,7 +3955,7 @@ public:
Execute_load_log_event(const char* buf, uint event_len,
const Format_description_log_event
*description_event);
~Execute_load_log_event() {}
~Execute_load_log_event() = default;
Log_event_type get_type_code() { return EXEC_LOAD_EVENT;}
int get_data_size() { return EXEC_LOAD_HEADER_LEN ;}
bool is_valid() const { return file_id != 0; }
@ -3996,7 +3995,7 @@ public:
Begin_load_query_log_event(const char* buf, uint event_len,
const Format_description_log_event
*description_event);
~Begin_load_query_log_event() {}
~Begin_load_query_log_event() = default;
Log_event_type get_type_code() { return BEGIN_LOAD_QUERY_EVENT; }
private:
#if defined(MYSQL_SERVER) && defined(HAVE_REPLICATION)
@ -4054,7 +4053,7 @@ public:
Execute_load_query_log_event(const char* buf, uint event_len,
const Format_description_log_event
*description_event);
~Execute_load_query_log_event() {}
~Execute_load_query_log_event() = default;
Log_event_type get_type_code() { return EXECUTE_LOAD_QUERY_EVENT; }
bool is_valid() const { return Query_log_event::is_valid() && file_id != 0; }
@ -4092,7 +4091,7 @@ public:
{}
/* constructor for hopelessly corrupted events */
Unknown_log_event(): Log_event(), what(ENCRYPTED) {}
~Unknown_log_event() {}
~Unknown_log_event() = default;
bool print(FILE* file, PRINT_EVENT_INFO* print_event_info);
Log_event_type get_type_code() { return UNKNOWN_EVENT;}
bool is_valid() const { return 1; }

View file

@ -415,7 +415,7 @@ public:
virtual bool needs_notification(const MDL_ticket *ticket) const = 0;
virtual bool conflicting_locks(const MDL_ticket *ticket) const = 0;
virtual bitmap_t hog_lock_types_bitmap() const = 0;
virtual ~MDL_lock_strategy() {}
virtual ~MDL_lock_strategy() = default;
};
@ -426,7 +426,7 @@ public:
*/
struct MDL_scoped_lock : public MDL_lock_strategy
{
MDL_scoped_lock() {}
MDL_scoped_lock() = default;
virtual const bitmap_t *incompatible_granted_types_bitmap() const
{ return m_granted_incompatible; }
virtual const bitmap_t *incompatible_waiting_types_bitmap() const
@ -463,7 +463,7 @@ public:
*/
struct MDL_object_lock : public MDL_lock_strategy
{
MDL_object_lock() {}
MDL_object_lock() = default;
virtual const bitmap_t *incompatible_granted_types_bitmap() const
{ return m_granted_incompatible; }
virtual const bitmap_t *incompatible_waiting_types_bitmap() const
@ -507,7 +507,7 @@ public:
struct MDL_backup_lock: public MDL_lock_strategy
{
MDL_backup_lock() {}
MDL_backup_lock() = default;
virtual const bitmap_t *incompatible_granted_types_bitmap() const
{ return m_granted_incompatible; }
virtual const bitmap_t *incompatible_waiting_types_bitmap() const
@ -1876,13 +1876,11 @@ bool MDL_lock::has_pending_conflicting_lock(enum_mdl_type type)
MDL_wait_for_graph_visitor::~MDL_wait_for_graph_visitor()
{
}
= default;
MDL_wait_for_subgraph::~MDL_wait_for_subgraph()
{
}
= default;
/**
Check if ticket represents metadata lock of "stronger" or equal type

View file

@ -60,7 +60,7 @@ typedef unsigned short mdl_bitmap_t;
class MDL_context_owner
{
public:
virtual ~MDL_context_owner() {}
virtual ~MDL_context_owner() = default;
/**
Enter a condition wait.
@ -471,7 +471,7 @@ public:
{
mdl_key_init(namespace_arg, db_arg, name_arg);
}
MDL_key() {} /* To use when part of MDL_request. */
MDL_key() = default; /* To use when part of MDL_request. */
/**
Get thread state name to be used in case when we have to
@ -640,7 +640,7 @@ public:
virtual bool inspect_edge(MDL_context *dest) = 0;
virtual ~MDL_wait_for_graph_visitor();
MDL_wait_for_graph_visitor() {}
MDL_wait_for_graph_visitor() = default;
};
/**
@ -799,7 +799,7 @@ private:
class MDL_savepoint
{
public:
MDL_savepoint() {};
MDL_savepoint() = default;;
private:
MDL_savepoint(MDL_ticket *stmt_ticket, MDL_ticket *trans_ticket)

View file

@ -204,7 +204,7 @@ class Mrr_reader
public:
virtual int get_next(range_id_t *range_info) = 0;
virtual int refill_buffer(bool initial) = 0;
virtual ~Mrr_reader() {}; /* just to remove compiler warning */
virtual ~Mrr_reader() = default; /* just to remove compiler warning */
};

View file

@ -92,7 +92,7 @@ public:
public:
/* This function will be called in the target thread */
virtual void call_in_target_thread()= 0;
virtual ~Apc_call() {}
virtual ~Apc_call() = default;
};
/* Make a call in the target thread (see function definition for details) */

View file

@ -392,12 +392,14 @@ protected:
public:
#ifdef ENABLED_JSON_WRITER_CONSISTENCY_CHECKS
virtual ~Json_writer_struct()
{
#ifdef ENABLED_JSON_WRITER_CONSISTENCY_CHECKS
named_items_expectation.pop_back();
#endif
}
#else
virtual ~Json_writer_struct() = default;
#endif
bool trace_started() const
{

View file

@ -1212,8 +1212,7 @@ class Buffered_log : public Sql_alloc
public:
Buffered_log(enum loglevel level, const char *message);
~Buffered_log()
{}
~Buffered_log() = default;
void print(void);
@ -1273,11 +1272,9 @@ void Buffered_log::print()
class Buffered_logs
{
public:
Buffered_logs()
{}
Buffered_logs() = default;
~Buffered_logs()
{}
~Buffered_logs() = default;
void init();
void cleanup();
@ -2569,11 +2566,9 @@ void close_connection(THD *thd, uint sql_errno)
thd->protocol->net_send_error(thd, sql_errno, ER_DEFAULT(sql_errno), NULL);
thd->print_aborted_warning(lvl, ER_DEFAULT(sql_errno));
}
else
thd->print_aborted_warning(lvl, (thd->main_security_ctx.user ?
"This connection closed normally" :
"This connection closed normally without"
" authentication"));
else if (!thd->main_security_ctx.user)
thd->print_aborted_warning(lvl, "This connection closed normally without"
" authentication");
thd->disconnect();

View file

@ -2227,7 +2227,7 @@ public:
{ return (void*) alloc_root(mem_root, (uint) size); }
static void operator delete(void *ptr,size_t size) { TRASH_FREE(ptr, size); }
static void operator delete(void *ptr, MEM_ROOT *mem_root) { /* Never called */ }
virtual ~TABLE_READ_PLAN() {} /* Remove gcc warning */
virtual ~TABLE_READ_PLAN() = default; /* Remove gcc warning */
/**
Add basic info for this TABLE_READ_PLAN to the optimizer trace.
@ -2262,7 +2262,7 @@ public:
TRP_RANGE(SEL_ARG *key_arg, uint idx_arg, uint mrr_flags_arg)
: key(key_arg), key_idx(idx_arg), mrr_flags(mrr_flags_arg)
{}
virtual ~TRP_RANGE() {} /* Remove gcc warning */
virtual ~TRP_RANGE() = default; /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc)
@ -2309,8 +2309,8 @@ void TRP_RANGE::trace_basic_info(PARAM *param,
class TRP_ROR_INTERSECT : public TABLE_READ_PLAN
{
public:
TRP_ROR_INTERSECT() {} /* Remove gcc warning */
virtual ~TRP_ROR_INTERSECT() {} /* Remove gcc warning */
TRP_ROR_INTERSECT() = default; /* Remove gcc warning */
virtual ~TRP_ROR_INTERSECT() = default; /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc);
@ -2335,8 +2335,8 @@ public:
class TRP_ROR_UNION : public TABLE_READ_PLAN
{
public:
TRP_ROR_UNION() {} /* Remove gcc warning */
virtual ~TRP_ROR_UNION() {} /* Remove gcc warning */
TRP_ROR_UNION() = default; /* Remove gcc warning */
virtual ~TRP_ROR_UNION() = default; /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc);
TABLE_READ_PLAN **first_ror; /* array of ptrs to plans for merged scans */
@ -2368,8 +2368,8 @@ void TRP_ROR_UNION::trace_basic_info(PARAM *param,
class TRP_INDEX_INTERSECT : public TABLE_READ_PLAN
{
public:
TRP_INDEX_INTERSECT() {} /* Remove gcc warning */
virtual ~TRP_INDEX_INTERSECT() {} /* Remove gcc warning */
TRP_INDEX_INTERSECT() = default; /* Remove gcc warning */
virtual ~TRP_INDEX_INTERSECT() = default; /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc);
TRP_RANGE **range_scans; /* array of ptrs to plans of intersected scans */
@ -2405,8 +2405,8 @@ void TRP_INDEX_INTERSECT::trace_basic_info(PARAM *param,
class TRP_INDEX_MERGE : public TABLE_READ_PLAN
{
public:
TRP_INDEX_MERGE() {} /* Remove gcc warning */
virtual ~TRP_INDEX_MERGE() {} /* Remove gcc warning */
TRP_INDEX_MERGE() = default; /* Remove gcc warning */
virtual ~TRP_INDEX_MERGE() = default; /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc);
TRP_RANGE **range_scans; /* array of ptrs to plans of merged scans */
@ -2474,7 +2474,7 @@ public:
if (key_infix_len)
memcpy(this->key_infix, key_infix_arg, key_infix_len);
}
virtual ~TRP_GROUP_MIN_MAX() {} /* Remove gcc warning */
virtual ~TRP_GROUP_MIN_MAX() = default; /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc);
@ -9714,7 +9714,6 @@ tree_or(RANGE_OPT_PARAM *param,SEL_TREE *tree1,SEL_TREE *tree2)
DBUG_RETURN(tree2);
SEL_TREE *result= NULL;
key_map result_keys;
key_map ored_keys;
SEL_TREE *rtree[2]= {NULL,NULL};
SEL_IMERGE *imerge[2]= {NULL, NULL};

View file

@ -324,7 +324,7 @@ public:
/* See RANGE_OPT_PARAM::alloced_sel_args */
enum { MAX_SEL_ARGS = 16000 };
SEL_ARG() {}
SEL_ARG() = default;
SEL_ARG(SEL_ARG &);
SEL_ARG(Field *,const uchar *, const uchar *);
SEL_ARG(Field *field, uint8 part, uchar *min_value, uchar *max_value,
@ -934,7 +934,7 @@ public:
uint used_key_parts;
QUICK_SELECT_I();
virtual ~QUICK_SELECT_I(){};
virtual ~QUICK_SELECT_I() = default;;
/*
Do post-constructor initialization.

View file

@ -218,7 +218,7 @@ class Dep_value : public Sql_alloc
{
public:
Dep_value(): bound(FALSE) {}
virtual ~Dep_value(){} /* purecov: inspected */ /* stop compiler warnings */
virtual ~Dep_value() = default; /* purecov: inspected */
bool is_bound() { return bound; }
void make_bound() { bound= TRUE; }
@ -342,7 +342,7 @@ const size_t Dep_value::iterator_size=
class Dep_module : public Sql_alloc
{
public:
virtual ~Dep_module(){} /* purecov: inspected */ /* stop compiler warnings */
virtual ~Dep_module() = default; /* purecov: inspected */
/* Mark as bound. Currently is non-virtual and does nothing */
void make_bound() {};

View file

@ -55,8 +55,8 @@ struct File_option
class Unknown_key_hook
{
public:
Unknown_key_hook() {} /* Remove gcc warning */
virtual ~Unknown_key_hook() {} /* Remove gcc warning */
Unknown_key_hook() = default; /* Remove gcc warning */
virtual ~Unknown_key_hook() = default; /* Remove gcc warning */
virtual bool process_unknown_string(const char *&unknown_key, uchar* base,
MEM_ROOT *mem_root, const char *end)= 0;
};
@ -67,7 +67,7 @@ public:
class File_parser_dummy_hook: public Unknown_key_hook
{
public:
File_parser_dummy_hook() {} /* Remove gcc warning */
File_parser_dummy_hook() = default; /* Remove gcc warning */
virtual bool process_unknown_string(const char *&unknown_key, uchar* base,
MEM_ROOT *mem_root, const char *end);
};

View file

@ -159,7 +159,7 @@ public:
empty(part_elem->empty),
type(CONVENTIONAL)
{}
~partition_element() {}
~partition_element() = default;
part_column_list_val& get_col_val(uint idx)
{

View file

@ -336,7 +336,7 @@ public:
part_field_list.empty();
subpart_field_list.empty();
}
~partition_info() {}
~partition_info() = default;
partition_info *get_clone(THD *thd, bool empty_data_and_index_file= FALSE);
bool set_named_partition_bitmap(const char *part_name, size_t length);

View file

@ -90,7 +90,7 @@ protected:
public:
THD *thd;
Protocol(THD *thd_arg) { init(thd_arg); }
virtual ~Protocol() {}
virtual ~Protocol() = default;
void init(THD* thd_arg);
enum { SEND_NUM_ROWS= 1, SEND_EOF= 2 };

View file

@ -195,7 +195,7 @@ public:
/* True if the container does not contain any element */
virtual bool is_empty() = 0;
virtual ~Rowid_filter_container() {}
virtual ~Rowid_filter_container() = default;
};
@ -232,7 +232,7 @@ public:
*/
virtual bool check(char *elem) = 0;
virtual ~Rowid_filter() {}
virtual ~Rowid_filter() = default;
bool is_empty() { return container->is_empty(); }

View file

@ -131,9 +131,7 @@ injector::transaction::binlog_pos injector::transaction::start_pos() const
*/
/* This constructor is called below */
inline injector::injector()
{
}
inline injector::injector() = default;
static injector *s_injector= 0;
injector *injector::instance()

View file

@ -307,7 +307,7 @@ public:
private:
explicit injector();
~injector() { } /* Nothing needs to be done */
~injector() = default; /* Nothing needs to be done */
injector(injector const&); /* You're not allowed to copy injector
instances.
*/

View file

@ -454,7 +454,7 @@ class Repl_semi_sync_master
public:
Repl_semi_sync_master();
~Repl_semi_sync_master() {}
~Repl_semi_sync_master() = default;
void cleanup();

View file

@ -50,7 +50,7 @@ class Ack_receiver : public Repl_semi_sync_base
{
public:
Ack_receiver();
~Ack_receiver() {}
~Ack_receiver() = default;
void cleanup();
/**
Notify ack receiver to receive acks on the dump session.

View file

@ -34,7 +34,7 @@ class Repl_semi_sync_slave
:public Repl_semi_sync_base {
public:
Repl_semi_sync_slave() :m_slave_enabled(false) {}
~Repl_semi_sync_slave() {}
~Repl_semi_sync_slave() = default;
void set_trace_level(unsigned long trace_level) {
m_trace_level = trace_level;

View file

@ -78,7 +78,7 @@ private:
bool m_changed;
public:
virtual ~State_tracker() {}
virtual ~State_tracker() = default;
/** Getters */
bool is_enabled() const

View file

@ -99,7 +99,7 @@ public:
on_check_function on_check_func, on_update_function on_update_func,
const char *substitute);
virtual ~sys_var() {}
virtual ~sys_var() = default;
/**
All the cleanup procedures should be performed here
@ -278,8 +278,8 @@ protected:
class set_var_base :public Sql_alloc
{
public:
set_var_base() {}
virtual ~set_var_base() {}
set_var_base() = default;
virtual ~set_var_base() = default;
virtual int check(THD *thd)=0; /* To check privileges etc. */
virtual int update(THD *thd)=0; /* To set the value */
virtual int light_check(THD *thd) { return check(thd); } /* for PS */

View file

@ -8277,11 +8277,11 @@ ER_INVALID_DEFAULT_VALUE_FOR_FIELD 22007
eng "Incorrect default value '%-.128T' for column '%.192s'"
hindi "गलत डिफ़ॉल्ट मान '%-.128T' कॉलम '%.192s' के लिए"
ER_KILL_QUERY_DENIED_ERROR
chi "你不是查询%lu的所有者"
eng "You are not owner of query %lu"
ger "Sie sind nicht Eigentümer von Abfrage %lu"
hindi "आप क्वेरी %lu के OWNER नहीं हैं"
rus "Вы не являетесь владельцем запроса %lu"
chi "你不是查询%lld的所有者"
eng "You are not owner of query %lld"
ger "Sie sind nicht Eigentümer von Abfrage %lld"
hindi "आप क्वेरी %lld के OWNER नहीं हैं"
rus "Вы не являетесь владельцем запроса %lld"
ER_NO_EIS_FOR_FIELD
chi "没有收集无关的统计信息列'%s'"
eng "Engine-independent statistics are not collected for column '%s'"

View file

@ -4179,6 +4179,21 @@ static int exec_relay_log_event(THD* thd, Relay_log_info* rli,
int exec_res;
Log_event_type typ= ev->get_type_code();
DBUG_EXECUTE_IF(
"pause_sql_thread_on_next_event",
{
/*
Temporarily unlock data_lock so we can check-in with the IO thread
*/
mysql_mutex_unlock(&rli->data_lock);
DBUG_ASSERT(!debug_sync_set_action(
thd,
STRING_WITH_LEN(
"now SIGNAL paused_on_event WAIT_FOR sql_thread_continue")));
DBUG_SET("-d,pause_sql_thread_on_next_event");
mysql_mutex_lock(&rli->data_lock);
});
/*
Even if we don't execute this event, we keep the master timestamp,
so that seconds behind master shows correct delta (there are events

View file

@ -119,7 +119,7 @@ public: // TODO: make it private or protected
const;
public:
virtual ~Sp_handler() {}
virtual ~Sp_handler() = default;
static const Sp_handler *handler(enum enum_sql_command cmd);
static const Sp_handler *handler(enum_sp_type type);
static const Sp_handler *handler(MDL_key::enum_mdl_namespace ns);

View file

@ -124,8 +124,7 @@ public:
/** Create temporary sp_name object from MDL key. Store in qname_buff */
sp_name(const MDL_key *key, char *qname_buff);
~sp_name()
{}
~sp_name() = default;
};
@ -1303,8 +1302,7 @@ public:
m_query.length= 0;
}
virtual ~sp_instr_stmt()
{};
virtual ~sp_instr_stmt() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1339,8 +1337,7 @@ public:
m_lex_keeper(lex, lex_resp)
{}
virtual ~sp_instr_set()
{}
virtual ~sp_instr_set() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1383,8 +1380,7 @@ public:
m_field_offset(field_offset)
{}
virtual ~sp_instr_set_row_field()
{}
virtual ~sp_instr_set_row_field() = default;
virtual int exec_core(THD *thd, uint *nextp);
@ -1426,8 +1422,7 @@ public:
m_field_name(field_name)
{}
virtual ~sp_instr_set_row_field_by_name()
{}
virtual ~sp_instr_set_row_field_by_name() = default;
virtual int exec_core(THD *thd, uint *nextp);
@ -1453,8 +1448,7 @@ public:
value(val), m_lex_keeper(lex, TRUE)
{}
virtual ~sp_instr_set_trigger_field()
{}
virtual ~sp_instr_set_trigger_field() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1497,8 +1491,7 @@ public:
m_dest(dest), m_cont_dest(0), m_optdest(0), m_cont_optdest(0)
{}
virtual ~sp_instr_opt_meta()
{}
virtual ~sp_instr_opt_meta() = default;
virtual void set_destination(uint old_dest, uint new_dest)
= 0;
@ -1527,8 +1520,7 @@ public:
: sp_instr_opt_meta(ip, ctx, dest)
{}
virtual ~sp_instr_jump()
{}
virtual ~sp_instr_jump() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1579,8 +1571,7 @@ public:
m_lex_keeper(lex, TRUE)
{}
virtual ~sp_instr_jump_if_not()
{}
virtual ~sp_instr_jump_if_not() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1627,8 +1618,7 @@ public:
: sp_instr(ip, ctx)
{}
virtual ~sp_instr_preturn()
{}
virtual ~sp_instr_preturn() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1659,8 +1649,7 @@ public:
m_lex_keeper(lex, TRUE)
{}
virtual ~sp_instr_freturn()
{}
virtual ~sp_instr_freturn() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1765,8 +1754,7 @@ public:
: sp_instr(ip, ctx), m_count(count)
{}
virtual ~sp_instr_hpop()
{}
virtual ~sp_instr_hpop() = default;
void update_count(uint count)
{
@ -1799,8 +1787,7 @@ public:
m_frame(ctx->current_var_count())
{}
virtual ~sp_instr_hreturn()
{}
virtual ~sp_instr_hreturn() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1836,8 +1823,7 @@ public:
: sp_instr(ip, ctx), m_lex_keeper(lex, TRUE), m_cursor(offset)
{}
virtual ~sp_instr_cpush()
{}
virtual ~sp_instr_cpush() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1871,8 +1857,7 @@ public:
: sp_instr(ip, ctx), m_count(count)
{}
virtual ~sp_instr_cpop()
{}
virtual ~sp_instr_cpop() = default;
void update_count(uint count)
{
@ -1904,8 +1889,7 @@ public:
: sp_instr(ip, ctx), m_cursor(c)
{}
virtual ~sp_instr_copen()
{}
virtual ~sp_instr_copen() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1942,8 +1926,7 @@ public:
m_cursor(coffs),
m_var(voffs)
{}
virtual ~sp_instr_cursor_copy_struct()
{}
virtual ~sp_instr_cursor_copy_struct() = default;
virtual int execute(THD *thd, uint *nextp);
virtual int exec_core(THD *thd, uint *nextp);
virtual void print(String *str);
@ -1965,8 +1948,7 @@ public:
: sp_instr(ip, ctx), m_cursor(c)
{}
virtual ~sp_instr_cclose()
{}
virtual ~sp_instr_cclose() = default;
virtual int execute(THD *thd, uint *nextp);
@ -1995,8 +1977,7 @@ public:
m_varlist.empty();
}
virtual ~sp_instr_cfetch()
{}
virtual ~sp_instr_cfetch() = default;
virtual int execute(THD *thd, uint *nextp);
@ -2034,8 +2015,7 @@ public:
sp_instr_agg_cfetch(uint ip, sp_pcontext *ctx)
: sp_instr(ip, ctx){}
virtual ~sp_instr_agg_cfetch()
{}
virtual ~sp_instr_agg_cfetch() = default;
virtual int execute(THD *thd, uint *nextp);
@ -2060,8 +2040,7 @@ public:
: sp_instr(ip, ctx), m_errcode(errcode)
{}
virtual ~sp_instr_error()
{}
virtual ~sp_instr_error() = default;
virtual int execute(THD *thd, uint *nextp);
@ -2094,8 +2073,7 @@ public:
m_lex_keeper(lex, TRUE)
{}
virtual ~sp_instr_set_case_expr()
{}
virtual ~sp_instr_set_case_expr() = default;
virtual int execute(THD *thd, uint *nextp);

View file

@ -214,8 +214,8 @@ struct Geometry_buffer;
class Geometry
{
public:
Geometry() {} /* Remove gcc warning */
virtual ~Geometry() {} /* Remove gcc warning */
Geometry() = default; /* Remove gcc warning */
virtual ~Geometry() = default; /* Remove gcc warning */
static void *operator new(size_t size, void *buffer)
{
return buffer;
@ -397,8 +397,8 @@ protected:
class Gis_point: public Geometry
{
public:
Gis_point() {} /* Remove gcc warning */
virtual ~Gis_point() {} /* Remove gcc warning */
Gis_point() = default; /* Remove gcc warning */
virtual ~Gis_point() = default; /* Remove gcc warning */
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
@ -467,8 +467,8 @@ public:
class Gis_line_string: public Geometry
{
public:
Gis_line_string() {} /* Remove gcc warning */
virtual ~Gis_line_string() {} /* Remove gcc warning */
Gis_line_string() = default; /* Remove gcc warning */
virtual ~Gis_line_string() = default; /* Remove gcc warning */
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
@ -500,8 +500,8 @@ public:
class Gis_polygon: public Geometry
{
public:
Gis_polygon() {} /* Remove gcc warning */
virtual ~Gis_polygon() {} /* Remove gcc warning */
Gis_polygon() = default; /* Remove gcc warning */
virtual ~Gis_polygon() = default; /* Remove gcc warning */
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
@ -537,8 +537,8 @@ class Gis_multi_point: public Geometry
(uint32) (UINT_MAX32 - WKB_HEADER_SIZE - 4 /* n_points */) /
(WKB_HEADER_SIZE + POINT_DATA_SIZE);
public:
Gis_multi_point() {} /* Remove gcc warning */
virtual ~Gis_multi_point() {} /* Remove gcc warning */
Gis_multi_point() = default; /* Remove gcc warning */
virtual ~Gis_multi_point() = default; /* Remove gcc warning */
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
@ -568,8 +568,8 @@ public:
class Gis_multi_line_string: public Geometry
{
public:
Gis_multi_line_string() {} /* Remove gcc warning */
virtual ~Gis_multi_line_string() {} /* Remove gcc warning */
Gis_multi_line_string() = default; /* Remove gcc warning */
virtual ~Gis_multi_line_string() = default; /* Remove gcc warning */
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
@ -599,8 +599,8 @@ public:
class Gis_multi_polygon: public Geometry
{
public:
Gis_multi_polygon() {} /* Remove gcc warning */
virtual ~Gis_multi_polygon() {} /* Remove gcc warning */
Gis_multi_polygon() = default; /* Remove gcc warning */
virtual ~Gis_multi_polygon() = default; /* Remove gcc warning */
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
@ -630,8 +630,8 @@ public:
class Gis_geometry_collection: public Geometry
{
public:
Gis_geometry_collection() {} /* Remove gcc warning */
virtual ~Gis_geometry_collection() {} /* Remove gcc warning */
Gis_geometry_collection() = default; /* Remove gcc warning */
virtual ~Gis_geometry_collection() = default; /* Remove gcc warning */
uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);

View file

@ -200,7 +200,7 @@ class ACL_USER :public ACL_USER_BASE,
{
public:
ACL_USER() { }
ACL_USER() = default;
ACL_USER(THD *thd, const LEX_USER &combo,
const Account_options &options,
const privilege_t privileges);
@ -338,7 +338,7 @@ class ACL_PROXY_USER :public ACL_ACCESS
MYSQL_PROXIES_PRIV_GRANTOR,
MYSQL_PROXIES_PRIV_TIMESTAMP } proxy_table_fields;
public:
ACL_PROXY_USER () {};
ACL_PROXY_USER () = default;
void init(const char *host_arg, const char *user_arg,
const char *proxied_host_arg, const char *proxied_user_arg,
@ -929,7 +929,7 @@ class User_table: public Grant_table_base
virtual longlong get_password_lifetime () const = 0;
virtual int set_password_lifetime (longlong x) const = 0;
virtual ~User_table() {}
virtual ~User_table() = default;
private:
friend class Grant_tables;
virtual int setup_sysvars() const = 0;
@ -1278,7 +1278,7 @@ class User_table_tabular: public User_table
return 1;
}
virtual ~User_table_tabular() {}
virtual ~User_table_tabular() = default;
private:
friend class Grant_tables;
@ -1689,7 +1689,7 @@ class User_table_json: public User_table
int set_password_expired (bool x) const
{ return x ? set_password_last_changed(0) : 0; }
~User_table_json() {}
~User_table_json() = default;
private:
friend class Grant_tables;
static const uint JSON_SIZE=1024;
@ -5318,7 +5318,7 @@ public:
GRANT_NAME(const char *h, const char *d,const char *u,
const char *t, privilege_t p, bool is_routine);
GRANT_NAME (TABLE *form, bool is_routine);
virtual ~GRANT_NAME() {};
virtual ~GRANT_NAME() = default;
virtual bool ok() { return privs != NO_ACL; }
void set_user_details(const char *h, const char *d,
const char *u, const char *t,
@ -11602,8 +11602,7 @@ public:
: is_grave(FALSE)
{}
virtual ~Silence_routine_definer_errors()
{}
virtual ~Silence_routine_definer_errors() = default;
virtual bool handle_condition(THD *thd,
uint sql_errno,

View file

@ -184,11 +184,9 @@ enum ACL_internal_access_result
class ACL_internal_table_access
{
public:
ACL_internal_table_access()
{}
ACL_internal_table_access() = default;
virtual ~ACL_internal_table_access()
{}
virtual ~ACL_internal_table_access() = default;
/**
Check access to an internal table.
@ -223,11 +221,9 @@ public:
class ACL_internal_schema_access
{
public:
ACL_internal_schema_access()
{}
ACL_internal_schema_access() = default;
virtual ~ACL_internal_schema_access()
{}
virtual ~ACL_internal_schema_access() = default;
/**
Check access to an internal schema.

View file

@ -34,11 +34,9 @@ public:
/**
Constructor, used to represent a ANALYZE TABLE statement.
*/
Sql_cmd_analyze_table()
{}
Sql_cmd_analyze_table() = default;
~Sql_cmd_analyze_table()
{}
~Sql_cmd_analyze_table() = default;
bool execute(THD *thd);
@ -59,11 +57,9 @@ public:
/**
Constructor, used to represent a CHECK TABLE statement.
*/
Sql_cmd_check_table()
{}
Sql_cmd_check_table() = default;
~Sql_cmd_check_table()
{}
~Sql_cmd_check_table() = default;
bool execute(THD *thd);
@ -83,11 +79,9 @@ public:
/**
Constructor, used to represent a OPTIMIZE TABLE statement.
*/
Sql_cmd_optimize_table()
{}
Sql_cmd_optimize_table() = default;
~Sql_cmd_optimize_table()
{}
~Sql_cmd_optimize_table() = default;
bool execute(THD *thd);
@ -108,11 +102,9 @@ public:
/**
Constructor, used to represent a REPAIR TABLE statement.
*/
Sql_cmd_repair_table()
{}
Sql_cmd_repair_table() = default;
~Sql_cmd_repair_table()
{}
~Sql_cmd_repair_table() = default;
bool execute(THD *thd);

View file

@ -355,11 +355,9 @@ protected:
/**
Constructor.
*/
Sql_cmd_common_alter_table()
{}
Sql_cmd_common_alter_table() = default;
virtual ~Sql_cmd_common_alter_table()
{}
virtual ~Sql_cmd_common_alter_table() = default;
virtual enum_sql_command sql_command_code() const
{
@ -378,11 +376,9 @@ public:
/**
Constructor, used to represent a ALTER TABLE statement.
*/
Sql_cmd_alter_table()
{}
Sql_cmd_alter_table() = default;
~Sql_cmd_alter_table()
{}
~Sql_cmd_alter_table() = default;
Storage_engine_name *option_storage_engine_name() { return this; }
@ -404,8 +400,7 @@ public:
:DDL_options(options)
{}
~Sql_cmd_alter_sequence()
{}
~Sql_cmd_alter_sequence() = default;
enum_sql_command sql_command_code() const
{

View file

@ -1391,7 +1391,7 @@ public:
: m_ot_ctx(ot_ctx_arg), m_is_active(FALSE)
{}
virtual ~MDL_deadlock_handler() {}
virtual ~MDL_deadlock_handler() = default;
virtual bool handle_condition(THD *thd,
uint sql_errno,

View file

@ -392,7 +392,7 @@ inline bool setup_fields_with_no_wrap(THD *thd, Ref_ptr_array ref_pointer_array,
class Prelocking_strategy
{
public:
virtual ~Prelocking_strategy() { }
virtual ~Prelocking_strategy() = default;
virtual void reset(THD *thd) { };
virtual bool handle_routine(THD *thd, Query_tables_list *prelocking_ctx,

View file

@ -90,7 +90,7 @@ public:
or to call set_all()/clear_all()/set_prefix()
to initialize bitmap.
*/
Bitmap() { }
Bitmap() = default;
explicit Bitmap(uint prefix)
{

View file

@ -91,7 +91,7 @@ typedef my_bool (*qc_engine_callback)(THD *thd, const char *table_key,
*/
struct Query_cache_block_table
{
Query_cache_block_table() {} /* Remove gcc warning */
Query_cache_block_table() = default; /* Remove gcc warning */
/**
This node holds a position in a static table list belonging
@ -122,7 +122,7 @@ struct Query_cache_block_table
struct Query_cache_block
{
Query_cache_block() {} /* Remove gcc warning */
Query_cache_block() = default; /* Remove gcc warning */
enum block_type {FREE, QUERY, RESULT, RES_CONT, RES_BEG,
RES_INCOMPLETE, TABLE, INCOMPLETE};
@ -161,7 +161,7 @@ struct Query_cache_query
uint8 ready;
ulonglong hit_count;
Query_cache_query() {} /* Remove gcc warning */
Query_cache_query() = default; /* Remove gcc warning */
inline void init_n_lock();
void unlock_n_destroy();
inline ulonglong found_rows() { return limit_found_rows; }
@ -197,7 +197,7 @@ struct Query_cache_query
struct Query_cache_table
{
Query_cache_table() {} /* Remove gcc warning */
Query_cache_table() = default; /* Remove gcc warning */
char *tbl;
uint32 key_len;
uint8 suffix_len; /* For partitioned tables */
@ -240,7 +240,7 @@ struct Query_cache_table
struct Query_cache_result
{
Query_cache_result() {} /* Remove gcc warning */
Query_cache_result() = default; /* Remove gcc warning */
Query_cache_block *query;
inline uchar* data()
@ -266,7 +266,7 @@ extern "C" void query_cache_invalidate_by_MyISAM_filename(const char* filename);
struct Query_cache_memory_bin
{
Query_cache_memory_bin() {} /* Remove gcc warning */
Query_cache_memory_bin() = default; /* Remove gcc warning */
#ifndef DBUG_OFF
size_t size;
#endif
@ -285,7 +285,7 @@ struct Query_cache_memory_bin
struct Query_cache_memory_bin_step
{
Query_cache_memory_bin_step() {} /* Remove gcc warning */
Query_cache_memory_bin_step() = default; /* Remove gcc warning */
size_t size;
size_t increment;
size_t idx;

Some files were not shown because too many files have changed in this diff Show more