mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
Merge 10.5 into 10.6
This commit is contained in:
commit
6aec87544c
285 changed files with 2180 additions and 1546 deletions
|
@ -314,8 +314,8 @@ class Load_log_processor
|
|||
}
|
||||
|
||||
public:
|
||||
Load_log_processor() {}
|
||||
~Load_log_processor() {}
|
||||
Load_log_processor() = default;
|
||||
~Load_log_processor() = default;
|
||||
|
||||
int init()
|
||||
{
|
||||
|
|
7
debian/autobake-deb.sh
vendored
7
debian/autobake-deb.sh
vendored
|
@ -97,13 +97,6 @@ fi
|
|||
case "${LSBNAME}"
|
||||
in
|
||||
# Debian
|
||||
stretch)
|
||||
# MDEV-16525 libzstd-dev-1.1.3 minimum version
|
||||
sed -e '/libzstd-dev/d' \
|
||||
-e 's/libcurl4/libcurl3/g' -i debian/control
|
||||
remove_rocksdb_tools
|
||||
disable_pmem
|
||||
;&
|
||||
buster)
|
||||
replace_uring_with_aio
|
||||
if [ ! "$architecture" = amd64 ]
|
||||
|
|
|
@ -1294,7 +1294,7 @@ struct my_option xb_client_options[]= {
|
|||
|
||||
{"rsync", OPT_RSYNC,
|
||||
"Uses the rsync utility to optimize local file "
|
||||
"transfers. When this option is specified, innobackupex uses rsync "
|
||||
"transfers. When this option is specified, " XB_TOOL_NAME " uses rsync "
|
||||
"to copy all non-InnoDB files instead of spawning a separate cp for "
|
||||
"each file, which can be much faster for servers with a large number "
|
||||
"of databases or tables. This option cannot be used together with "
|
||||
|
@ -1402,7 +1402,7 @@ struct my_option xb_client_options[]= {
|
|||
|
||||
{"ftwrl-wait-query-type", OPT_LOCK_WAIT_QUERY_TYPE,
|
||||
"This option specifies which types of queries are allowed to complete "
|
||||
"before innobackupex will issue the global lock. Default is all.",
|
||||
"before " XB_TOOL_NAME " will issue the global lock. Default is all.",
|
||||
(uchar *) &opt_lock_wait_query_type, (uchar *) &opt_lock_wait_query_type,
|
||||
&query_type_typelib, GET_ENUM, REQUIRED_ARG, QUERY_TYPE_ALL, 0, 0, 0, 0,
|
||||
0},
|
||||
|
@ -1422,26 +1422,26 @@ struct my_option xb_client_options[]= {
|
|||
NULL, NULL, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
||||
{"kill-long-queries-timeout", OPT_KILL_LONG_QUERIES_TIMEOUT,
|
||||
"This option specifies the number of seconds innobackupex waits "
|
||||
"This option specifies the number of seconds " XB_TOOL_NAME " waits "
|
||||
"between starting FLUSH TABLES WITH READ LOCK and killing those "
|
||||
"queries that block it. Default is 0 seconds, which means "
|
||||
"innobackupex will not attempt to kill any queries.",
|
||||
XB_TOOL_NAME " will not attempt to kill any queries.",
|
||||
(uchar *) &opt_kill_long_queries_timeout,
|
||||
(uchar *) &opt_kill_long_queries_timeout, 0, GET_UINT, REQUIRED_ARG, 0, 0,
|
||||
0, 0, 0, 0},
|
||||
|
||||
{"ftwrl-wait-timeout", OPT_LOCK_WAIT_TIMEOUT,
|
||||
"This option specifies time in seconds that innobackupex should wait "
|
||||
"This option specifies time in seconds that " XB_TOOL_NAME " should wait "
|
||||
"for queries that would block FTWRL before running it. If there are "
|
||||
"still such queries when the timeout expires, innobackupex terminates "
|
||||
"with an error. Default is 0, in which case innobackupex does not "
|
||||
"still such queries when the timeout expires, " XB_TOOL_NAME " terminates "
|
||||
"with an error. Default is 0, in which case " XB_TOOL_NAME " does not "
|
||||
"wait for queries to complete and starts FTWRL immediately.",
|
||||
(uchar *) &opt_lock_wait_timeout, (uchar *) &opt_lock_wait_timeout, 0,
|
||||
GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||
|
||||
{"ftwrl-wait-threshold", OPT_LOCK_WAIT_THRESHOLD,
|
||||
"This option specifies the query run time threshold which is used by "
|
||||
"innobackupex to detect long-running queries with a non-zero value "
|
||||
XB_TOOL_NAME " to detect long-running queries with a non-zero value "
|
||||
"of --ftwrl-wait-timeout. FTWRL is not started until such "
|
||||
"long-running queries exist. This option has no effect if "
|
||||
"--ftwrl-wait-timeout is 0. Default value is 60 seconds.",
|
||||
|
@ -1919,6 +1919,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]);
|
||||
|
@ -3076,7 +3087,9 @@ static bool xtrabackup_copy_logfile(bool last = false)
|
|||
|
||||
ut_ad(start_lsn == log_sys.log.scanned_lsn);
|
||||
|
||||
msg(">> log scanned up to (" LSN_PF ")", start_lsn);
|
||||
if (verbose) {
|
||||
msg(">> log scanned up to (" LSN_PF ")", start_lsn);
|
||||
}
|
||||
|
||||
/* update global variable*/
|
||||
pthread_mutex_lock(&backup_mutex);
|
||||
|
|
|
@ -27,6 +27,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
|
|||
#include "changed_page_bitmap.h"
|
||||
#include <set>
|
||||
|
||||
#define XB_TOOL_NAME "mariadb-backup"
|
||||
|
||||
struct xb_delta_info_t
|
||||
{
|
||||
xb_delta_info_t(ulint page_size, ulint zip_size, ulint space_id)
|
||||
|
|
|
@ -12,6 +12,9 @@ IF(MSVC_INTEL)
|
|||
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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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); }
|
||||
|
|
|
@ -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); }
|
||||
|
|
|
@ -81,7 +81,7 @@ public:
|
|||
|
||||
span(const span &other) : data_(other.data_), size_(other.size_) {}
|
||||
|
||||
~span(){};
|
||||
~span() = default;
|
||||
|
||||
span &operator=(const span &other)
|
||||
{
|
||||
|
|
18
mysql-test/include/ctype_casefolding.inc
Normal file
18
mysql-test/include/ctype_casefolding.inc
Normal 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;
|
|
@ -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
|
||||
#
|
||||
|
|
|
@ -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 #
|
||||
|
|
|
@ -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 ʉ
|
||||
|
|
|
@ -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 utf8mb3 COLLATE utf8mb3_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 utf8mb3 COLLATE utf8mb3_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 utf8mb3 COLLATE utf8mb3_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 utf8mb3 COLLATE utf8mb3_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 utf8mb3 COLLATE utf8mb3_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
|
||||
#
|
||||
|
|
|
@ -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 #
|
||||
|
|
|
@ -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
|
||||
#
|
||||
|
|
|
@ -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 #
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
6
mysql-test/suite/galera/r/galera_backup_start.result
Normal file
6
mysql-test/suite/galera/r/galera_backup_start.result
Normal file
|
@ -0,0 +1,6 @@
|
|||
connection node_2;
|
||||
connection node_1;
|
||||
BACKUP STAGE START;
|
||||
START TRANSACTION;
|
||||
COMMIT;
|
||||
BACKUP STAGE END;
|
|
@ -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;
|
24
mysql-test/suite/galera/r/galera_locks_funcs.result
Normal file
24
mysql-test/suite/galera/r/galera_locks_funcs.result
Normal file
|
@ -0,0 +1,24 @@
|
|||
connection node_2;
|
||||
connection node_1;
|
||||
CREATE TABLE t (c DOUBLE,c2 INT,PRIMARY KEY(c)) ENGINE=InnoDB;
|
||||
INSERT INTO t values (1,1);
|
||||
SELECT GET_LOCK('a',1);
|
||||
ERROR 42000: This version of MariaDB doesn't yet support 'GET_LOCK in cluster (WSREP_ON=ON)'
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 1235 This version of MariaDB doesn't yet support 'GET_LOCK in cluster (WSREP_ON=ON)'
|
||||
SELECT * FROM t;
|
||||
c c2
|
||||
1 1
|
||||
SELECT RELEASE_LOCK('a');
|
||||
ERROR 42000: This version of MariaDB doesn't yet support 'RELEASE_LOCK in cluster (WSREP_ON=ON)'
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 1235 This version of MariaDB doesn't yet support 'RELEASE_LOCK in cluster (WSREP_ON=ON)'
|
||||
SELECT RELEASE_ALL_LOCKS();
|
||||
ERROR 42000: This version of MariaDB doesn't yet support 'RELEASE_ALL_LOCKS in cluster (WSREP_ON=ON)'
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 1235 This version of MariaDB doesn't yet support 'RELEASE_ALL_LOCKS in cluster (WSREP_ON=ON)'
|
||||
COMMIT;
|
||||
DROP TABLE t;
|
|
@ -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;
|
||||
|
6
mysql-test/suite/galera/t/galera_backup_start.test
Normal file
6
mysql-test/suite/galera/t/galera_backup_start.test
Normal file
|
@ -0,0 +1,6 @@
|
|||
--source include/galera_cluster.inc
|
||||
|
||||
BACKUP STAGE START;
|
||||
START TRANSACTION;
|
||||
COMMIT;
|
||||
BACKUP STAGE END;
|
|
@ -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;
|
18
mysql-test/suite/galera/t/galera_locks_funcs.test
Normal file
18
mysql-test/suite/galera/t/galera_locks_funcs.test
Normal file
|
@ -0,0 +1,18 @@
|
|||
--source include/galera_cluster.inc
|
||||
|
||||
CREATE TABLE t (c DOUBLE,c2 INT,PRIMARY KEY(c)) ENGINE=InnoDB;
|
||||
INSERT INTO t values (1,1);
|
||||
--error ER_NOT_SUPPORTED_YET
|
||||
SELECT GET_LOCK('a',1);
|
||||
SHOW WARNINGS;
|
||||
SELECT * FROM t;
|
||||
--error ER_NOT_SUPPORTED_YET
|
||||
SELECT RELEASE_LOCK('a');
|
||||
SHOW WARNINGS;
|
||||
# New in 10.5
|
||||
--error ER_NOT_SUPPORTED_YET
|
||||
SELECT RELEASE_ALL_LOCKS();
|
||||
SHOW WARNINGS;
|
||||
COMMIT;
|
||||
DROP TABLE t;
|
||||
|
12
mysql-test/suite/mariabackup/full_backup_win.result
Normal file
12
mysql-test/suite/mariabackup/full_backup_win.result
Normal 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
|
||||
#
|
24
mysql-test/suite/mariabackup/full_backup_win.test
Normal file
24
mysql-test/suite/mariabackup/full_backup_win.test
Normal 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 #
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -393,6 +393,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
|
||||
}
|
||||
|
|
|
@ -354,7 +354,7 @@ uchar *my_large_malloc(size_t *size, myf my_flags)
|
|||
ptr= NULL;
|
||||
if (my_flags & MY_WME)
|
||||
{
|
||||
if (large_page_size)
|
||||
if (large_page_size && errno == ENOMEM)
|
||||
{
|
||||
my_printf_error(EE_OUTOFMEMORY,
|
||||
"Couldn't allocate %zu bytes (Large/HugeTLB memory "
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace dena {
|
|||
|
||||
/* boost::noncopyable */
|
||||
struct noncopyable {
|
||||
noncopyable() { }
|
||||
noncopyable() = default;
|
||||
private:
|
||||
noncopyable(const noncopyable&);
|
||||
noncopyable& operator =(const noncopyable&);
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -73,8 +73,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
|
||||
{
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
/*
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
@ -895,7 +895,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
|
||||
{
|
||||
|
@ -5824,8 +5824,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 *);
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -344,7 +344,7 @@ public:
|
|||
{
|
||||
return complete_ring() || complete_poly();
|
||||
}
|
||||
virtual ~Gcalc_shape_transporter() {}
|
||||
virtual ~Gcalc_shape_transporter() = default;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -885,7 +885,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
|
||||
|
@ -1651,7 +1651,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;
|
||||
};
|
||||
|
||||
/*
|
||||
|
@ -1894,7 +1894,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;
|
||||
/*
|
||||
|
@ -2135,7 +2135,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) {}
|
||||
|
@ -2470,9 +2470,9 @@ struct KEY_PAIR
|
|||
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) {}
|
||||
};
|
||||
|
||||
|
@ -2727,8 +2727,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)
|
||||
{
|
||||
|
@ -2769,7 +2769,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 */
|
||||
|
@ -3148,8 +3148,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
|
||||
|
@ -5309,7 +5309,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);
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -74,8 +74,7 @@ Host_errors::Host_errors()
|
|||
m_local(0)
|
||||
{}
|
||||
|
||||
Host_errors::~Host_errors()
|
||||
{}
|
||||
Host_errors::~Host_errors() = default;
|
||||
|
||||
void Host_errors::reset()
|
||||
{
|
||||
|
|
20
sql/item.h
20
sql/item.h
|
@ -326,7 +326,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. */
|
||||
|
@ -427,7 +427,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
|
||||
|
@ -500,8 +500,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) {};
|
||||
|
||||
/*
|
||||
|
@ -583,7 +583,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;
|
||||
};
|
||||
|
@ -743,7 +743,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; }
|
||||
|
@ -2912,8 +2912,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;
|
||||
|
@ -3445,7 +3445,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
|
||||
|
@ -7700,7 +7700,7 @@ public:
|
|||
*/
|
||||
virtual void close()= 0;
|
||||
|
||||
virtual ~Item_iterator() {}
|
||||
virtual ~Item_iterator() = default;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -252,8 +252,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>,
|
||||
|
@ -275,7 +274,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;
|
||||
LEX_CSTRING func_name_cstring() const override
|
||||
{
|
||||
static LEX_CSTRING name= {STRING_WITH_LEN("istrue") };
|
||||
|
@ -295,7 +294,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;
|
||||
LEX_CSTRING func_name_cstring() const override
|
||||
{
|
||||
static LEX_CSTRING name= {STRING_WITH_LEN("isnottrue") };
|
||||
|
@ -317,7 +316,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;
|
||||
LEX_CSTRING func_name_cstring() const override
|
||||
{
|
||||
static LEX_CSTRING name= {STRING_WITH_LEN("isfalse") };
|
||||
|
@ -337,7 +336,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;
|
||||
LEX_CSTRING func_name_cstring() const override
|
||||
{
|
||||
static LEX_CSTRING name= {STRING_WITH_LEN("isnotfalse") };
|
||||
|
@ -1460,13 +1459,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()
|
||||
|
@ -1672,7 +1671,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
|
||||
|
@ -1701,7 +1700,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;
|
||||
|
@ -1767,7 +1766,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();
|
||||
|
@ -1800,7 +1799,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);
|
||||
};
|
||||
|
||||
|
@ -1856,7 +1855,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();
|
||||
|
@ -1886,7 +1885,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);
|
||||
|
@ -3731,8 +3730,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.
|
||||
*/
|
||||
|
@ -3751,8 +3750,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? "<>" : "="; }
|
||||
|
@ -3763,8 +3762,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? "=" : "<>"; }
|
||||
|
@ -3775,8 +3774,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? "<=" : ">"; }
|
||||
|
@ -3787,8 +3786,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? ">=" : "<"; }
|
||||
|
@ -3799,8 +3798,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? "<" : ">="; }
|
||||
|
@ -3811,8 +3810,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
|
@ -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
|
||||
|
||||
|
|
|
@ -3988,7 +3988,7 @@ class Interruptible_wait
|
|||
Interruptible_wait(THD *thd)
|
||||
: m_thd(thd) {}
|
||||
|
||||
~Interruptible_wait() {}
|
||||
~Interruptible_wait() = default;
|
||||
|
||||
public:
|
||||
/**
|
||||
|
|
|
@ -469,7 +469,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;
|
||||
|
@ -3860,8 +3860,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() override;
|
||||
|
||||
|
|
|
@ -1530,9 +1530,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)
|
||||
|
@ -2787,8 +2785,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2803,8 +2801,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2819,8 +2817,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2836,8 +2834,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2852,8 +2850,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2868,8 +2866,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2885,8 +2883,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2901,8 +2899,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2917,8 +2915,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2933,8 +2931,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2950,8 +2948,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2966,8 +2964,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2982,8 +2980,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2995,8 +2993,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3030,8 +3028,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3046,8 +3044,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
|
||||
|
@ -3061,8 +3059,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3078,8 +3076,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3095,8 +3093,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3112,8 +3110,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3127,8 +3125,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3178,8 +3176,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3228,8 +3226,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3288,8 +3286,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3348,8 +3346,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3365,8 +3363,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3382,8 +3380,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
|
||||
|
||||
|
@ -3399,8 +3397,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3416,8 +3414,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3432,8 +3430,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3449,8 +3447,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3466,8 +3464,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3483,8 +3481,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3500,8 +3498,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3517,8 +3515,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3534,8 +3532,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3550,8 +3548,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3566,8 +3564,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3582,8 +3580,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3598,8 +3596,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3614,8 +3612,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3631,8 +3629,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3647,8 +3645,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3663,8 +3661,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3680,8 +3678,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3697,8 +3695,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3716,8 +3714,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3734,8 +3732,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3751,8 +3749,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3769,8 +3767,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3786,8 +3784,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3803,8 +3801,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3819,8 +3817,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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -3835,8 +3833,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;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -2898,7 +2898,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() ||
|
||||
|
|
|
@ -834,7 +834,7 @@ public:
|
|||
item= si;
|
||||
maybe_null= 0;
|
||||
}
|
||||
virtual ~subselect_engine() {}; // to satisfy compiler
|
||||
virtual ~subselect_engine() = default;; // to satisfy compiler
|
||||
virtual void cleanup()= 0;
|
||||
|
||||
/*
|
||||
|
|
|
@ -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;
|
||||
|
|
10
sql/log.cc
10
sql/log.cc
|
@ -213,7 +213,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,
|
||||
|
@ -646,14 +646,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()
|
||||
|
|
12
sql/log.h
12
sql/log.h
|
@ -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(
|
||||
|
@ -983,7 +983,7 @@ public:
|
|||
class Log_event_handler
|
||||
{
|
||||
public:
|
||||
Log_event_handler() {}
|
||||
Log_event_handler() = default;
|
||||
virtual bool init()= 0;
|
||||
virtual void cleanup()= 0;
|
||||
|
||||
|
@ -997,7 +997,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;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ public:
|
|||
reinit_io_cache(m_cache, WRITE_CACHE, 0L, FALSE, TRUE);
|
||||
}
|
||||
|
||||
~Write_on_release_cache() {}
|
||||
~Write_on_release_cache() = default;
|
||||
|
||||
bool flush_data()
|
||||
{
|
||||
|
@ -4127,9 +4127,7 @@ Ignorable_log_event::Ignorable_log_event(const uchar *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)
|
||||
{
|
||||
|
|
|
@ -2560,8 +2560,7 @@ public:
|
|||
*/
|
||||
Load_log_event(const uchar *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;
|
||||
|
@ -2645,13 +2644,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 uchar *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; }
|
||||
|
@ -2941,7 +2940,7 @@ Intvar_log_event(THD* thd_arg,uchar type_arg, ulonglong val_arg,
|
|||
|
||||
Intvar_log_event(const uchar *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) */;}
|
||||
|
@ -3022,7 +3021,7 @@ class Rand_log_event: public Log_event
|
|||
|
||||
Rand_log_event(const uchar *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
|
||||
|
@ -3102,7 +3101,7 @@ public:
|
|||
|
||||
Xid_log_event(const uchar *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
|
||||
|
@ -3322,7 +3321,7 @@ public:
|
|||
|
||||
User_var_log_event(const uchar *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();
|
||||
|
@ -3372,7 +3371,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; }
|
||||
|
||||
|
@ -3656,7 +3655,7 @@ public:
|
|||
#endif
|
||||
Gtid_log_event(const uchar *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()
|
||||
|
@ -3909,7 +3908,7 @@ public:
|
|||
Append_block_log_event(const uchar *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; }
|
||||
|
@ -3950,7 +3949,7 @@ public:
|
|||
|
||||
Delete_file_log_event(const uchar *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; }
|
||||
|
@ -3990,7 +3989,7 @@ public:
|
|||
Execute_load_log_event(const uchar *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; }
|
||||
|
@ -4030,7 +4029,7 @@ public:
|
|||
Begin_load_query_log_event(const uchar *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)
|
||||
|
@ -4088,7 +4087,7 @@ public:
|
|||
Execute_load_query_log_event(const uchar *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; }
|
||||
|
@ -4126,7 +4125,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; }
|
||||
|
|
14
sql/mdl.cc
14
sql/mdl.cc
|
@ -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
|
||||
|
@ -1875,13 +1875,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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -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) */
|
||||
|
|
|
@ -393,12 +393,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
|
||||
{
|
||||
|
|
|
@ -1224,8 +1224,7 @@ class Buffered_log : public Sql_alloc
|
|||
public:
|
||||
Buffered_log(enum loglevel level, const char *message);
|
||||
|
||||
~Buffered_log()
|
||||
{}
|
||||
~Buffered_log() = default;
|
||||
|
||||
void print(void);
|
||||
|
||||
|
@ -1285,11 +1284,9 @@ void Buffered_log::print()
|
|||
class Buffered_logs
|
||||
{
|
||||
public:
|
||||
Buffered_logs()
|
||||
{}
|
||||
Buffered_logs() = default;
|
||||
|
||||
~Buffered_logs()
|
||||
{}
|
||||
~Buffered_logs() = default;
|
||||
|
||||
void init();
|
||||
void cleanup();
|
||||
|
@ -2682,11 +2679,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();
|
||||
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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() {};
|
||||
|
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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, SEND_FORCE_COLUMN_INFO= 4 };
|
||||
|
|
|
@ -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(); }
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -78,7 +78,7 @@ private:
|
|||
bool m_changed;
|
||||
|
||||
public:
|
||||
virtual ~State_tracker() {}
|
||||
virtual ~State_tracker() = default;
|
||||
|
||||
/** Getters */
|
||||
bool is_enabled() const
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -8941,12 +8941,12 @@ ER_INVALID_DEFAULT_VALUE_FOR_FIELD 22007
|
|||
hindi "गलत डिफ़ॉल्ट मान '%-.128T' कॉलम '%.192s' के लिए"
|
||||
spa "Valor por defecto incorrecto '%-.128T' para columna '%.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"
|
||||
spa "No eres el propietario de la consulta (query) %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"
|
||||
spa "No eres el propietario de la consulta (query) %lld"
|
||||
ER_NO_EIS_FOR_FIELD
|
||||
chi "没有收集无关的统计信息列'%s'"
|
||||
eng "Engine-independent statistics are not collected for column '%s'"
|
||||
|
|
15
sql/slave.cc
15
sql/slave.cc
|
@ -4209,6 +4209,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
|
||||
|
|
2
sql/sp.h
2
sql/sp.h
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -1304,8 +1303,7 @@ public:
|
|||
m_query.length= 0;
|
||||
}
|
||||
|
||||
virtual ~sp_instr_stmt()
|
||||
{};
|
||||
virtual ~sp_instr_stmt() = default;
|
||||
|
||||
virtual int execute(THD *thd, uint *nextp);
|
||||
|
||||
|
@ -1340,8 +1338,7 @@ public:
|
|||
m_lex_keeper(lex, lex_resp)
|
||||
{}
|
||||
|
||||
virtual ~sp_instr_set()
|
||||
{}
|
||||
virtual ~sp_instr_set() = default;
|
||||
|
||||
virtual int execute(THD *thd, uint *nextp);
|
||||
|
||||
|
@ -1384,8 +1381,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);
|
||||
|
||||
|
@ -1427,8 +1423,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);
|
||||
|
||||
|
@ -1454,8 +1449,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);
|
||||
|
||||
|
@ -1498,8 +1492,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;
|
||||
|
@ -1528,8 +1521,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);
|
||||
|
||||
|
@ -1580,8 +1572,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);
|
||||
|
||||
|
@ -1628,8 +1619,7 @@ public:
|
|||
: sp_instr(ip, ctx)
|
||||
{}
|
||||
|
||||
virtual ~sp_instr_preturn()
|
||||
{}
|
||||
virtual ~sp_instr_preturn() = default;
|
||||
|
||||
virtual int execute(THD *thd, uint *nextp);
|
||||
|
||||
|
@ -1660,8 +1650,7 @@ public:
|
|||
m_lex_keeper(lex, TRUE)
|
||||
{}
|
||||
|
||||
virtual ~sp_instr_freturn()
|
||||
{}
|
||||
virtual ~sp_instr_freturn() = default;
|
||||
|
||||
virtual int execute(THD *thd, uint *nextp);
|
||||
|
||||
|
@ -1766,8 +1755,7 @@ public:
|
|||
: sp_instr(ip, ctx), m_count(count)
|
||||
{}
|
||||
|
||||
virtual ~sp_instr_hpop()
|
||||
{}
|
||||
virtual ~sp_instr_hpop() = default;
|
||||
|
||||
void update_count(uint count)
|
||||
{
|
||||
|
@ -1800,8 +1788,7 @@ public:
|
|||
m_frame(ctx->current_var_count())
|
||||
{}
|
||||
|
||||
virtual ~sp_instr_hreturn()
|
||||
{}
|
||||
virtual ~sp_instr_hreturn() = default;
|
||||
|
||||
virtual int execute(THD *thd, uint *nextp);
|
||||
|
||||
|
@ -1837,8 +1824,7 @@ public:
|
|||
: sp_instr(ip, ctx), m_lex_keeper(lex, TRUE), m_cursor(offset)
|
||||
{}
|
||||
|
||||
virtual ~sp_instr_cpush()
|
||||
{}
|
||||
virtual ~sp_instr_cpush() = default;
|
||||
|
||||
int execute(THD *thd, uint *nextp) override;
|
||||
|
||||
|
@ -1873,8 +1859,7 @@ public:
|
|||
: sp_instr(ip, ctx), m_count(count)
|
||||
{}
|
||||
|
||||
virtual ~sp_instr_cpop()
|
||||
{}
|
||||
virtual ~sp_instr_cpop() = default;
|
||||
|
||||
void update_count(uint count)
|
||||
{
|
||||
|
@ -1906,8 +1891,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);
|
||||
|
||||
|
@ -1944,8 +1928,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);
|
||||
|
@ -1967,8 +1950,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);
|
||||
|
||||
|
@ -1997,8 +1979,7 @@ public:
|
|||
m_varlist.empty();
|
||||
}
|
||||
|
||||
virtual ~sp_instr_cfetch()
|
||||
{}
|
||||
virtual ~sp_instr_cfetch() = default;
|
||||
|
||||
virtual int execute(THD *thd, uint *nextp);
|
||||
|
||||
|
@ -2036,8 +2017,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);
|
||||
|
||||
|
@ -2062,8 +2042,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);
|
||||
|
||||
|
@ -2096,8 +2075,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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
@ -395,8 +395,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);
|
||||
|
@ -465,8 +465,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);
|
||||
|
@ -498,8 +498,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);
|
||||
|
@ -535,8 +535,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);
|
||||
|
@ -566,8 +566,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);
|
||||
|
@ -597,8 +597,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);
|
||||
|
@ -628,8 +628,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);
|
||||
|
|
|
@ -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;
|
||||
|
@ -5316,7 +5316,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,
|
||||
|
@ -11607,8 +11607,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,
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue