mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Merge 10.3 into 10.4
This commit is contained in:
commit
d88c136b9f
59 changed files with 972 additions and 244 deletions
|
@ -39,7 +39,7 @@
|
|||
** 10 Jun 2003: SET NAMES and --no-set-names by Alexander Barkov
|
||||
*/
|
||||
|
||||
#define DUMP_VERSION "10.16"
|
||||
#define DUMP_VERSION "10.17"
|
||||
|
||||
#include <my_global.h>
|
||||
#include <my_sys.h>
|
||||
|
|
|
@ -1049,7 +1049,9 @@ typedef ulong myf; /* Type of MyFlags in my_funcs */
|
|||
|
||||
#include <my_byteorder.h>
|
||||
|
||||
#ifdef HAVE_CHARSET_utf8
|
||||
#ifdef HAVE_CHARSET_utf8mb4
|
||||
#define MYSQL_UNIVERSAL_CLIENT_CHARSET "utf8mb4"
|
||||
#elif defined(HAVE_CHARSET_utf8)
|
||||
#define MYSQL_UNIVERSAL_CLIENT_CHARSET "utf8"
|
||||
#else
|
||||
#define MYSQL_UNIVERSAL_CLIENT_CHARSET MYSQL_DEFAULT_CHARSET_NAME
|
||||
|
|
|
@ -161,7 +161,7 @@ int pthread_cancel(pthread_t thread);
|
|||
#define pthread_key(T,V) pthread_key_t V
|
||||
#define my_pthread_getspecific_ptr(T,V) my_pthread_getspecific(T,(V))
|
||||
#define my_pthread_setspecific_ptr(T,V) pthread_setspecific(T,(void*) (V))
|
||||
#define pthread_detach_this_thread() { pthread_t tmp=pthread_self() ; pthread_detach(tmp); }
|
||||
#define pthread_detach_this_thread()
|
||||
#define pthread_handler_t EXTERNC void *
|
||||
typedef void *(* pthread_handler)(void *);
|
||||
|
||||
|
|
|
@ -546,5 +546,32 @@ Warnings:
|
|||
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where `test`.`t1`.`a` = 'a'
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-17411 Wrong WHERE optimization with simple CASE and searched CASE
|
||||
#
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a));
|
||||
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
|
||||
SELECT * FROM t1 WHERE CASE a WHEN b THEN 1 END=1;
|
||||
a b
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
SELECT * FROM t1 WHERE CASE WHEN a THEN b ELSE 1 END=3;
|
||||
a b
|
||||
3 3
|
||||
SELECT * FROM t1 WHERE
|
||||
CASE a WHEN b THEN 1 END=1 AND
|
||||
CASE WHEN a THEN b ELSE 1 END=3;
|
||||
a b
|
||||
3 3
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM t1 WHERE
|
||||
CASE a WHEN b THEN 1 END=1 AND
|
||||
CASE WHEN a THEN b ELSE 1 END=3;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
|
||||
Warnings:
|
||||
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where (case `test`.`t1`.`a` when `test`.`t1`.`b` then 1 end) = 1 and (case when `test`.`t1`.`a` then `test`.`t1`.`b` else 1 end) = 3
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# End of 10.3 test
|
||||
#
|
||||
|
|
|
@ -390,6 +390,28 @@ EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='a' AND CASE 'a' WHEN 'a' THEN 'a' ELS
|
|||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17411 Wrong WHERE optimization with simple CASE and searched CASE
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT, KEY(a));
|
||||
INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
|
||||
SELECT * FROM t1 WHERE CASE a WHEN b THEN 1 END=1;
|
||||
SELECT * FROM t1 WHERE CASE WHEN a THEN b ELSE 1 END=3;
|
||||
|
||||
SELECT * FROM t1 WHERE
|
||||
CASE a WHEN b THEN 1 END=1 AND
|
||||
CASE WHEN a THEN b ELSE 1 END=3;
|
||||
|
||||
EXPLAIN EXTENDED
|
||||
SELECT * FROM t1 WHERE
|
||||
CASE a WHEN b THEN 1 END=1 AND
|
||||
CASE WHEN a THEN b ELSE 1 END=3;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.3 test
|
||||
--echo #
|
||||
|
|
|
@ -16448,3 +16448,43 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t3`.`d` AS `d`,`dt`.`b` AS `b`,`dt`.`c` AS `c` from `test`.`t3` join (/* select#2 */ select `test`.`t1`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t1` join `test`.`t2` where `test`.`t1`.`b` = `test`.`t3`.`d` group by `test`.`t1`.`b`,`test`.`t2`.`c`) `dt` where `dt`.`b` = `test`.`t3`.`d`
|
||||
DROP TABLE t1,t2,t3;
|
||||
#
|
||||
# MDEV-17419: splittable materialized derived/view
|
||||
# when join_cache_level = 4
|
||||
#
|
||||
set join_cache_level = 4;
|
||||
CREATE TABLE t1 (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
username VARCHAR(50) NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
) COLLATE='utf8_general_ci';
|
||||
CREATE TABLE t2 (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
userid INT UNSIGNED NOT NULL,
|
||||
logindate DATETIME NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) COLLATE='utf8_general_ci';
|
||||
INSERT INTO t1 (id, username) VALUES
|
||||
(1,"user1"), (2, "user2");
|
||||
INSERT INTO t2 (id, userid, logindate) VALUES
|
||||
(1,1,"2015-06-19 12:17:02.828"),
|
||||
(2,1,"2016-06-19 12:17:02.828"),
|
||||
(3,2,"2017-06-19 12:17:02.828"),
|
||||
(4,2,"2018-06-19 12:17:02.828");
|
||||
EXPLAIN select * from t1 as u
|
||||
left join
|
||||
(select * from t2 as au group by au.userid) as auditlastlogin
|
||||
on u.id=auditlastlogin.userid;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY u ALL NULL NULL NULL NULL 2
|
||||
1 PRIMARY <derived2> ref key0 key0 5 test.u.id 2
|
||||
2 DERIVED au ALL NULL NULL NULL NULL 4 Using temporary; Using filesort
|
||||
select * from t1 as u
|
||||
left join
|
||||
(select * from t2 as au group by au.userid) as auditlastlogin
|
||||
on u.id=auditlastlogin.userid;
|
||||
id username id userid logindate
|
||||
1 user1 1 1 2015-06-19 12:17:02
|
||||
2 user2 3 2 2017-06-19 12:17:02
|
||||
set join_cache_level=default;
|
||||
DROP TABLE t1,t2;
|
||||
|
|
|
@ -3143,3 +3143,44 @@ eval $q;
|
|||
eval EXPLAIN EXTENDED $q;
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17419: splittable materialized derived/view
|
||||
--echo # when join_cache_level = 4
|
||||
--echo #
|
||||
|
||||
set join_cache_level = 4;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
username VARCHAR(50) NULL DEFAULT '0',
|
||||
PRIMARY KEY (id)
|
||||
) COLLATE='utf8_general_ci';
|
||||
|
||||
CREATE TABLE t2 (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
userid INT UNSIGNED NOT NULL,
|
||||
logindate DATETIME NOT NULL,
|
||||
PRIMARY KEY (id)
|
||||
) COLLATE='utf8_general_ci';
|
||||
|
||||
INSERT INTO t1 (id, username) VALUES
|
||||
(1,"user1"), (2, "user2");
|
||||
INSERT INTO t2 (id, userid, logindate) VALUES
|
||||
(1,1,"2015-06-19 12:17:02.828"),
|
||||
(2,1,"2016-06-19 12:17:02.828"),
|
||||
(3,2,"2017-06-19 12:17:02.828"),
|
||||
(4,2,"2018-06-19 12:17:02.828");
|
||||
|
||||
let $q=
|
||||
select * from t1 as u
|
||||
left join
|
||||
(select * from t2 as au group by au.userid) as auditlastlogin
|
||||
on u.id=auditlastlogin.userid;
|
||||
|
||||
eval EXPLAIN $q;
|
||||
eval $q;
|
||||
|
||||
set join_cache_level=default;
|
||||
|
||||
DROP TABLE t1,t2;
|
||||
|
|
|
@ -81,7 +81,7 @@ id name
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -178,7 +178,7 @@ INSERT IGNORE INTO `t6` VALUES (1,'first value'),(2,'first value'),(3,'first va
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
--source include/have_utf8mb4.inc
|
||||
|
||||
# Embedded server doesn't support external clients
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_innodb.inc
|
||||
|
|
86
mysql-test/main/mysqldump-utf8mb4.result
Normal file
86
mysql-test/main/mysqldump-utf8mb4.result
Normal file
|
@ -0,0 +1,86 @@
|
|||
SET NAMES utf8mb4;
|
||||
#
|
||||
# MDEV-8765 mysqldump silently corrupts 4-byte UTF-8 data
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
point VARCHAR(10) PRIMARY KEY,
|
||||
data VARCHAR(10),
|
||||
comment VARCHAR(64)
|
||||
) CHARACTER SET utf8mb4;
|
||||
INSERT INTO t1 VALUES ('01f300', UNHEX('f09f8c80'), 'U+1F300 CYCLONE');
|
||||
----
|
||||
Testing XML format output
|
||||
----
|
||||
<?xml version="1.0"?>
|
||||
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<database name="test">
|
||||
<table_structure name="t1">
|
||||
<field Field="point" Type="varchar(10)" Null="NO" Key="PRI" Extra="" Comment="" />
|
||||
<field Field="data" Type="varchar(10)" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
|
||||
<field Field="comment" Type="varchar(64)" Null="YES" Key="" Default="NULL" Extra="" Comment="" />
|
||||
<key Table="t1" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="point" Collation="A" Cardinality="1" Null="" Index_type="BTREE" Comment="" Index_comment="" />
|
||||
</table_structure>
|
||||
<table_data name="t1">
|
||||
<row>
|
||||
<field name="point">01f300</field>
|
||||
<field name="data">🌀</field>
|
||||
<field name="comment">U+1F300 CYCLONE</field>
|
||||
</row>
|
||||
</table_data>
|
||||
</database>
|
||||
</mysqldump>
|
||||
----
|
||||
Testing text format output
|
||||
----
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
DROP TABLE IF EXISTS `t1`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `t1` (
|
||||
`point` varchar(10) NOT NULL,
|
||||
`data` varchar(10) DEFAULT NULL,
|
||||
`comment` varchar(64) DEFAULT NULL,
|
||||
PRIMARY KEY (`point`)
|
||||
);
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
LOCK TABLES `t1` WRITE;
|
||||
/*!40000 ALTER TABLE `t1` DISABLE KEYS */;
|
||||
INSERT INTO `t1` VALUES ('01f300','🌀','U+1F300 CYCLONE');
|
||||
/*!40000 ALTER TABLE `t1` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
DROP TABLE t1;
|
||||
----
|
||||
Testing text format dump/restore
|
||||
----
|
||||
CREATE TABLE t1 (
|
||||
point VARCHAR(10) PRIMARY KEY,
|
||||
data VARCHAR(10),
|
||||
comment VARCHAR(64)
|
||||
) CHARACTER SET utf8mb4;
|
||||
INSERT INTO t1 VALUES ('01f300', UNHEX('f09f8c80'), 'U+1F300 CYCLONE');
|
||||
DROP TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
point data comment
|
||||
01f300 🌀 U+1F300 CYCLONE
|
||||
DROP TABLE t1;
|
49
mysql-test/main/mysqldump-utf8mb4.test
Normal file
49
mysql-test/main/mysqldump-utf8mb4.test
Normal file
|
@ -0,0 +1,49 @@
|
|||
--source include/have_utf8mb4.inc
|
||||
--source include/not_embedded.inc
|
||||
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-8765 mysqldump silently corrupts 4-byte UTF-8 data
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (
|
||||
point VARCHAR(10) PRIMARY KEY,
|
||||
data VARCHAR(10),
|
||||
comment VARCHAR(64)
|
||||
) CHARACTER SET utf8mb4;
|
||||
INSERT INTO t1 VALUES ('01f300', UNHEX('f09f8c80'), 'U+1F300 CYCLONE');
|
||||
|
||||
--echo ----
|
||||
--echo Testing XML format output
|
||||
--echo ----
|
||||
|
||||
--exec $MYSQL_DUMP --skip-create-options --skip-comments -X test t1
|
||||
|
||||
|
||||
--echo ----
|
||||
--echo Testing text format output
|
||||
--echo ----
|
||||
|
||||
--exec $MYSQL_DUMP --skip-create-options --skip-comments test t1
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo ----
|
||||
--echo Testing text format dump/restore
|
||||
--echo ----
|
||||
|
||||
--let $file = $MYSQLTEST_VARDIR/tmp/mysqldump-utf8mb4.sql
|
||||
|
||||
CREATE TABLE t1 (
|
||||
point VARCHAR(10) PRIMARY KEY,
|
||||
data VARCHAR(10),
|
||||
comment VARCHAR(64)
|
||||
) CHARACTER SET utf8mb4;
|
||||
INSERT INTO t1 VALUES ('01f300', UNHEX('f09f8c80'), 'U+1F300 CYCLONE');
|
||||
|
||||
--exec $MYSQL_DUMP test t1 > $file
|
||||
DROP TABLE t1;
|
||||
--exec $MYSQL test < $file
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
|
@ -91,7 +91,7 @@ INSERT INTO `t1` VALUES (1.23450,2.3456),(1.23450,2.3456),(1.23450,2.3456),(1.23
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -202,7 +202,7 @@ INSERT INTO t1 VALUES (_koi8r x'C1C2C3C4C5'), (NULL);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -305,7 +305,7 @@ create table t1(a int);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -364,7 +364,7 @@ set global sql_mode='ANSI_QUOTES';
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -429,7 +429,7 @@ insert into t1 values (1),(2),(3);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='' */;
|
||||
|
@ -461,7 +461,7 @@ drop table t1;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -487,7 +487,7 @@ create database mysqldump_test_db character set latin2 collate latin2_bin;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -521,7 +521,7 @@ INSERT INTO t1 VALUES (_latin1 '
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -639,7 +639,7 @@ INSERT INTO t2 VALUES (4),(5),(6);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -680,7 +680,7 @@ INSERT INTO `t1` VALUES (0x602010000280100005E71A);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -721,7 +721,7 @@ INSERT INTO t1 VALUES (4),(5),(6);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -755,7 +755,7 @@ UNLOCK TABLES;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -1124,7 +1124,7 @@ insert into t1 (F_8d3bba7425e7c98c50f52ca1b52d3735) values (1);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -1493,7 +1493,7 @@ INSERT INTO t1 VALUES (1),(2),(3);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -1543,7 +1543,7 @@ INSERT INTO t2 VALUES (1), (2);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -1578,7 +1578,7 @@ CREATE TABLE `t2` (
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -1726,7 +1726,7 @@ insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thir
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
|
@ -1757,7 +1757,7 @@ UNLOCK TABLES;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -1874,7 +1874,7 @@ create table t3(a int);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -1923,7 +1923,7 @@ mysqldump: Got error: 1064: "You have an error in your SQL syntax; check the man
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -1993,7 +1993,7 @@ UNLOCK TABLES;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2047,7 +2047,7 @@ create view v2 as select * from t2 where a like 'a%' with check option;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2143,7 +2143,7 @@ create view v1 as select * from t1;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2215,7 +2215,7 @@ create view v2 as select * from t2 where a like 'a%' with check option;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2282,7 +2282,7 @@ INSERT INTO t1 VALUES ('\'');
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2328,7 +2328,7 @@ select v3.a from v3, v1 where v1.a=v3.a and v3.b=3 limit 1;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2483,7 +2483,7 @@ update t1 set a = 4 where a=3;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2612,7 +2612,7 @@ DELIMITER ;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2759,7 +2759,7 @@ set sql_mode='';
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2910,7 +2910,7 @@ set global time_zone='Europe/Moscow';
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -2949,7 +2949,7 @@ UNLOCK TABLES;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
|
@ -3083,7 +3083,7 @@ a b c
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -3214,7 +3214,7 @@ SET SQL_MODE = @old_sql_mode;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -3277,7 +3277,7 @@ insert into t1 values ('','');
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -3312,7 +3312,7 @@ UNLOCK TABLES;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -3485,7 +3485,7 @@ insert into t1 values (0815);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -3769,7 +3769,7 @@ CREATE TABLE t1 (a INT) ENGINE=merge UNION=(t2, t3);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -3961,7 +3961,7 @@ create view db42635.v2 (c) as select * from db42635.t1;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -4107,7 +4107,7 @@ INSERT INTO t1 VALUES (3,4), (4,5);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -4370,7 +4370,7 @@ insert into t1 values (0815);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -5636,7 +5636,7 @@ INSERT INTO t1 (a) VALUES (1),(2),(3);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
--source include/have_utf8mb4.inc
|
||||
|
||||
call mtr.add_suppression("@003f.frm' \\(errno: 22\\)");
|
||||
#select * from mysql.user;
|
||||
#checksum table mysql.user;
|
||||
|
|
|
@ -106,7 +106,7 @@ INSERT INTO t1 VALUES (1), (2);
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -140,7 +140,7 @@ UNLOCK TABLES;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
@ -174,7 +174,7 @@ UNLOCK TABLES;
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# Needed for mysqldump
|
||||
--source include/have_utf8mb4.inc
|
||||
|
||||
# Tests for SSL connections, only run if mysqld is compiled
|
||||
# with support for SSL.
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`_col_1`
|
||||
explain extended select * from t1
|
||||
where a in
|
||||
(
|
||||
|
@ -98,7 +98,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
5 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) semi join ((values (1),(5)) `tvc_1`) where `test`.`t1`.`b` = `tvc_1`.`1`
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) semi join ((values (1),(5)) `tvc_1`) where `test`.`t1`.`b` = `tvc_1`.`_col_1`
|
||||
explain extended select * from t1
|
||||
where a in
|
||||
(
|
||||
|
@ -154,7 +154,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
|
||||
4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (3),(4)) `tvc_0` join `test`.`t2`) where `test`.`t2`.`b` = `tvc_0`.`3`
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (3),(4)) `tvc_0` join `test`.`t2`) where `test`.`t2`.`b` = `tvc_0`.`_col_1`
|
||||
explain extended select * from t1
|
||||
where a in
|
||||
(
|
||||
|
@ -211,7 +211,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
|
||||
4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`_col_1`
|
||||
explain extended select * from
|
||||
(
|
||||
select *
|
||||
|
@ -270,7 +270,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
|
||||
4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 with tvc_0 as (/* select#2 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` in (1,2))/* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
|
||||
Note 1003 with tvc_0 as (/* select#2 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` in (1,2))/* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`_col_1`
|
||||
explain extended select * from
|
||||
(
|
||||
select *
|
||||
|
@ -321,7 +321,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
3 MATERIALIZED <derived4> ALL NULL NULL NULL NULL 2 100.00
|
||||
4 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1`
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`_col_1`
|
||||
explain extended select * from v2;
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <subquery3> ALL distinct_key NULL NULL NULL 2 100.00
|
||||
|
@ -386,7 +386,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 MATERIALIZED t1 ALL NULL NULL NULL NULL 6 100.00 Using where; Using join buffer (flat, BNL join)
|
||||
5 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0` join `test`.`t1`) where `test`.`t1`.`a` = 1 and `test`.`t1`.`a` = `tvc_0`.`1`
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1),(2)) `tvc_0` join `test`.`t1`) where `test`.`t1`.`a` = 1 and `test`.`t1`.`a` = `tvc_0`.`_col_1`
|
||||
explain extended select * from t1
|
||||
where a in
|
||||
(
|
||||
|
@ -507,11 +507,11 @@ a b
|
|||
explain extended select * from t3 where a in (1,4);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 2 100.00
|
||||
1 PRIMARY t3 ref idx idx 5 tvc_0.1 3 100.00
|
||||
1 PRIMARY t3 ref idx idx 5 tvc_0._col_1 3 100.00
|
||||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t3` semi join ((values (1),(4)) `tvc_0`) where `test`.`t3`.`a` = `tvc_0`.`1`
|
||||
Note 1003 /* select#1 */ select `test`.`t3`.`a` AS `a`,`test`.`t3`.`b` AS `b` from `test`.`t3` semi join ((values (1),(4)) `tvc_0`) where `test`.`t3`.`a` = `tvc_0`.`_col_1`
|
||||
# use vectors in IN predeicate
|
||||
set @@in_predicate_conversion_threshold= 4;
|
||||
select * from t1 where (a,b) in ((1,2),(3,4));
|
||||
|
@ -524,7 +524,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 2 100.00
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1,2),(3,4)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`1` and `test`.`t1`.`b` = `tvc_0`.`2`
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` semi join ((values (1,2),(3,4)) `tvc_0`) where `test`.`t1`.`a` = `tvc_0`.`_col_1` and `test`.`t1`.`b` = `tvc_0`.`_col_2`
|
||||
set @@in_predicate_conversion_threshold= 2;
|
||||
# trasformation works for the one IN predicate and doesn't work for the other
|
||||
set @@in_predicate_conversion_threshold= 5;
|
||||
|
@ -543,7 +543,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` semi join ((values (1,3),(8,0),(5,1)) `tvc_0`) where `test`.`t2`.`a` = `tvc_0`.`1` and `test`.`t2`.`c` = `tvc_0`.`3` and (`tvc_0`.`1`,`test`.`t2`.`b`) in (<cache>((1,2)),<cache>((8,9)))
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` semi join ((values (1,3),(8,0),(5,1)) `tvc_0`) where `test`.`t2`.`a` = `tvc_0`.`_col_1` and `test`.`t2`.`c` = `tvc_0`.`_col_2` and (`tvc_0`.`_col_1`,`test`.`t2`.`b`) in (<cache>((1,2)),<cache>((8,9)))
|
||||
set @@in_predicate_conversion_threshold= 2;
|
||||
#
|
||||
# mdev-14281: conversion of NOT IN predicate into subquery predicate
|
||||
|
@ -571,7 +571,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`1`,`tvc_0`.`2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`1` and `test`.`t1`.`b` = `<subquery2>`.`2`))))
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`_col_1`,`tvc_0`.`_col_2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`_col_1` and `test`.`t1`.`b` = `<subquery2>`.`_col_2`))))
|
||||
explain extended select * from t1
|
||||
where (a,b) not in (select * from (values (1,2),(8,9), (5,1)) as tvc_0);
|
||||
id select_type table type possible_keys key key_len ref rows filtered Extra
|
||||
|
@ -593,7 +593,7 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` < 7 and !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`1`,`tvc_0`.`2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`1` and `test`.`t1`.`b` = `<subquery2>`.`2`))))
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b` from `test`.`t1` where `test`.`t1`.`b` < 7 and !<expr_cache><`test`.`t1`.`a`,`test`.`t1`.`b`>(<in_optimizer>((`test`.`t1`.`a`,`test`.`t1`.`b`),(`test`.`t1`.`a`,`test`.`t1`.`b`) in ( <materialize> (/* select#2 */ select `tvc_0`.`_col_1`,`tvc_0`.`_col_2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t1`.`a` in <temporary table> on distinct_key where `test`.`t1`.`a` = `<subquery2>`.`_col_1` and `test`.`t1`.`b` = `<subquery2>`.`_col_2`))))
|
||||
select * from t2
|
||||
where (a,c) not in ((1,2),(8,9), (5,1));
|
||||
a b c
|
||||
|
@ -609,11 +609,11 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
2 MATERIALIZED <derived3> ALL NULL NULL NULL NULL 3 100.00
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where !<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`c`>(<in_optimizer>((`test`.`t2`.`a`,`test`.`t2`.`c`),(`test`.`t2`.`a`,`test`.`t2`.`c`) in ( <materialize> (/* select#2 */ select `tvc_0`.`1`,`tvc_0`.`2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where `test`.`t2`.`a` = `<subquery2>`.`1` and `test`.`t2`.`c` = `<subquery2>`.`2`))))
|
||||
Note 1003 /* select#1 */ select `test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t2` where !<expr_cache><`test`.`t2`.`a`,`test`.`t2`.`c`>(<in_optimizer>((`test`.`t2`.`a`,`test`.`t2`.`c`),(`test`.`t2`.`a`,`test`.`t2`.`c`) in ( <materialize> (/* select#2 */ select `tvc_0`.`_col_1`,`tvc_0`.`_col_2` from (values (1,2),(8,9),(5,1)) `tvc_0` ), <primary_index_lookup>(`test`.`t2`.`a` in <temporary table> on distinct_key where `test`.`t2`.`a` = `<subquery2>`.`_col_1` and `test`.`t2`.`c` = `<subquery2>`.`_col_2`))))
|
||||
drop table t1, t2, t3;
|
||||
set @@in_predicate_conversion_threshold= default;
|
||||
#
|
||||
# MDEV-14947: conversion of TVC with only NULL values
|
||||
# MDEV-14947: conversion to TVC with only NULL values
|
||||
#
|
||||
CREATE TABLE t1 (i INT);
|
||||
INSERT INTO t1 VALUES (3), (2), (7);
|
||||
|
@ -633,11 +633,11 @@ id select_type table type possible_keys key key_len ref rows filtered Extra
|
|||
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 5 100.00 Using where; FirstMatch(t1); Using join buffer (flat, BNL join)
|
||||
3 DERIVED NULL NULL NULL NULL NULL NULL NULL NULL No tables used
|
||||
Warnings:
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i` from `test`.`t1` semi join ((values (NULL),(NULL),(NULL),(NULL),(NULL)) `tvc_0`) where `test`.`t1`.`i` = `tvc_0`.`NULL`
|
||||
Note 1003 /* select#1 */ select `test`.`t1`.`i` AS `i` from `test`.`t1` semi join ((values (NULL),(NULL),(NULL),(NULL),(NULL)) `tvc_0`) where `test`.`t1`.`i` = `tvc_0`.`_col_1`
|
||||
SET in_predicate_conversion_threshold= default;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-14835: conversion of TVC with BIGINT or YEAR values
|
||||
# MDEV-14835: conversion to TVC with BIGINT or YEAR values
|
||||
#
|
||||
SET @@in_predicate_conversion_threshold= 2;
|
||||
CREATE TABLE t1 (a BIGINT);
|
||||
|
@ -654,3 +654,36 @@ y
|
|||
2011
|
||||
DROP TABLE t1,t2;
|
||||
SET @@in_predicate_conversion_threshold= default;
|
||||
#
|
||||
# MDEV-17222: conversion to TVC with no names for constants
|
||||
# conversion to TVC with the same constants in the first row
|
||||
#
|
||||
SET @@in_predicate_conversion_threshold= 2;
|
||||
CREATE TABLE t1 (f BINARY(16)) ENGINE=MYISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
(x'BAE56AF2B1C2397D99D58E2A06761DDB'), (x'9B9B698BCCB939EE8F1EA56C1A2E5DAA'),
|
||||
(x'A0A1C4FE39A239BABD3E0D8985E6BEA5');
|
||||
SELECT COUNT(*) FROM t1 WHERE f IN
|
||||
(x'9B9B698BCCB939EE8F1EA56C1A2E5DAA', x'E2362DBAB5EA30B5804917A0A7D881E2',
|
||||
x'B78B2EEAD13635088D93EA3309E24802', x'BAE56AF2B1C2397D99D58E2A06761DDB');
|
||||
COUNT(*)
|
||||
2
|
||||
CREATE TABLE t2 (f1 BINARY(16), f2 BINARY(16)) ENGINE=MYISAM;
|
||||
INSERT INTO t2 VALUES
|
||||
(x'55FB3B14D6B83D39859E42533906350D', x'00F3458C47FA39DDBEAD918A13F8342E'),
|
||||
(x'86052C062AAF368D84247ED0F6346A70', x'BF5C35045C6037C79E11026ABB9A3A4E');
|
||||
SELECT COUNT(*) FROM t2 WHERE (f1,f2) IN
|
||||
((x'9B9B698BCCB939EE8F1EA56C1A2E5DAA', x'E2362DBAB5EA30B5804917A0A7D881E2'),
|
||||
(x'B78B2EEAD13635088D93EA3309E24802', x'BAE56AF2B1C2397D99D58E2A06761DDB'),
|
||||
(x'55FB3B14D6B83D39859E42533906350D', x'00F3458C47FA39DDBEAD918A13F8342E'),
|
||||
(x'1606014E7C4A312F83EDC9D91BBFCACA', x'33F6068E56FD3A1D8326517F0D81CB5A'));
|
||||
COUNT(*)
|
||||
1
|
||||
CREATE TABLE t3 (f1 int, f2 int) ENGINE=MYISAM;
|
||||
INSERT INTO t3 VALUES (2,5), (2,3), (1,2), (7,8), (1,1);
|
||||
SELECT * FROM t3 WHERE (f1,f2) IN ((2, 2), (1, 2), (3, 5), (1, 1));
|
||||
f1 f2
|
||||
1 2
|
||||
1 1
|
||||
DROP TABLE t1,t2,t3;
|
||||
SET @@in_predicate_conversion_threshold= default;
|
||||
|
|
|
@ -320,7 +320,7 @@ drop table t1, t2, t3;
|
|||
set @@in_predicate_conversion_threshold= default;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-14947: conversion of TVC with only NULL values
|
||||
--echo # MDEV-14947: conversion to TVC with only NULL values
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (i INT);
|
||||
|
@ -342,7 +342,7 @@ SET in_predicate_conversion_threshold= default;
|
|||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-14835: conversion of TVC with BIGINT or YEAR values
|
||||
--echo # MDEV-14835: conversion to TVC with BIGINT or YEAR values
|
||||
--echo #
|
||||
|
||||
SET @@in_predicate_conversion_threshold= 2;
|
||||
|
@ -360,3 +360,39 @@ SELECT * FROM t2 WHERE y IN ('2009','2011');
|
|||
DROP TABLE t1,t2;
|
||||
|
||||
SET @@in_predicate_conversion_threshold= default;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17222: conversion to TVC with no names for constants
|
||||
--echo # conversion to TVC with the same constants in the first row
|
||||
--echo #
|
||||
|
||||
SET @@in_predicate_conversion_threshold= 2;
|
||||
|
||||
CREATE TABLE t1 (f BINARY(16)) ENGINE=MYISAM;
|
||||
INSERT INTO t1 VALUES
|
||||
(x'BAE56AF2B1C2397D99D58E2A06761DDB'), (x'9B9B698BCCB939EE8F1EA56C1A2E5DAA'),
|
||||
(x'A0A1C4FE39A239BABD3E0D8985E6BEA5');
|
||||
|
||||
SELECT COUNT(*) FROM t1 WHERE f IN
|
||||
(x'9B9B698BCCB939EE8F1EA56C1A2E5DAA', x'E2362DBAB5EA30B5804917A0A7D881E2',
|
||||
x'B78B2EEAD13635088D93EA3309E24802', x'BAE56AF2B1C2397D99D58E2A06761DDB');
|
||||
|
||||
CREATE TABLE t2 (f1 BINARY(16), f2 BINARY(16)) ENGINE=MYISAM;
|
||||
INSERT INTO t2 VALUES
|
||||
(x'55FB3B14D6B83D39859E42533906350D', x'00F3458C47FA39DDBEAD918A13F8342E'),
|
||||
(x'86052C062AAF368D84247ED0F6346A70', x'BF5C35045C6037C79E11026ABB9A3A4E');
|
||||
|
||||
SELECT COUNT(*) FROM t2 WHERE (f1,f2) IN
|
||||
((x'9B9B698BCCB939EE8F1EA56C1A2E5DAA', x'E2362DBAB5EA30B5804917A0A7D881E2'),
|
||||
(x'B78B2EEAD13635088D93EA3309E24802', x'BAE56AF2B1C2397D99D58E2A06761DDB'),
|
||||
(x'55FB3B14D6B83D39859E42533906350D', x'00F3458C47FA39DDBEAD918A13F8342E'),
|
||||
(x'1606014E7C4A312F83EDC9D91BBFCACA', x'33F6068E56FD3A1D8326517F0D81CB5A'));
|
||||
|
||||
CREATE TABLE t3 (f1 int, f2 int) ENGINE=MYISAM;
|
||||
INSERT INTO t3 VALUES (2,5), (2,3), (1,2), (7,8), (1,1);
|
||||
|
||||
SELECT * FROM t3 WHERE (f1,f2) IN ((2, 2), (1, 2), (3, 5), (1, 1));
|
||||
|
||||
DROP TABLE t1,t2,t3;
|
||||
|
||||
SET @@in_predicate_conversion_threshold= default;
|
||||
|
|
|
@ -348,3 +348,21 @@ MEDIAN(`a2`) OVER (PARTITION BY `pk`)
|
|||
FROM t1;
|
||||
MEDIAN(`a1`) OVER () MEDIAN(`a2`) OVER (PARTITION BY `pk`)
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-17137: Syntax errors with VIEW using MEDIAN
|
||||
#
|
||||
CREATE TABLE t1(val int);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
CREATE VIEW v1 AS SELECT MEDIAN(val) OVER() FROM t1;
|
||||
select * from v1;
|
||||
MEDIAN(val) OVER()
|
||||
2.0000000000
|
||||
2.0000000000
|
||||
2.0000000000
|
||||
select median(val) OVER () FROM t1;
|
||||
median(val) OVER ()
|
||||
2.0000000000
|
||||
2.0000000000
|
||||
2.0000000000
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
|
|
@ -127,3 +127,15 @@ SELECT MEDIAN(`a1`) OVER (),
|
|||
MEDIAN(`a2`) OVER (PARTITION BY `pk`)
|
||||
FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-17137: Syntax errors with VIEW using MEDIAN
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(val int);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
CREATE VIEW v1 AS SELECT MEDIAN(val) OVER() FROM t1;
|
||||
select * from v1;
|
||||
select median(val) OVER () FROM t1;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
|
|
@ -38,7 +38,7 @@ $$
|
|||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40101 SET NAMES utf8mb4 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
--source include/have_utf8mb4.inc
|
||||
--source include/not_embedded.inc
|
||||
|
||||
SET sql_mode=ORACLE;
|
||||
|
|
|
@ -47,3 +47,5 @@ galera_gc_fc_limit : MDEV-17061 Test failure on galera.galera_gc_fc_limit
|
|||
partition : MDEV-13881 galera.partition failed in buildbot with wrong result
|
||||
galera_as_slave_replication_budle : MDEV-15785 Test case galera_as_slave_replication_bundle caused debug assertion
|
||||
galera_wan : MDEV-17259: Test failure on galera.galera_wan
|
||||
galera_pc_ignore_sb : MDEV-17357 Test failure on galera.galera_pc_ignore_sb
|
||||
galera_drop_database : test
|
||||
|
|
17
mysql-test/suite/galera/r/galera_drop_database.result
Normal file
17
mysql-test/suite/galera/r/galera_drop_database.result
Normal file
|
@ -0,0 +1,17 @@
|
|||
CREATE DATABASE fts;
|
||||
USE fts;
|
||||
CREATE TABLE fts_t1 (f1 INT PRIMARY KEY AUTO_INCREMENT, f2 VARCHAR(100), FULLTEXT (f2)) ENGINE=InnoDB;
|
||||
CREATE TABLE fts_t2 (f2 VARCHAR(100), FULLTEXT (f2)) ENGINE=InnoDB;
|
||||
CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB;
|
||||
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
||||
INSERT INTO fts_t1 (f2) SELECT 'foobarbaz' FROM ten AS a1, ten AS a2, ten AS a3;
|
||||
INSERT INTO fts_t2 (f2) SELECT 'foobarbaz' FROM ten AS a1, ten AS a2, ten AS a3;
|
||||
DROP TABLE ten;
|
||||
UPDATE fts_t1 SET f2 = 'abcd';
|
||||
UPDATE fts_t2 SET f2 = 'efjh';
|
||||
USE fts;
|
||||
DROP TABLE fts_t1;
|
||||
DROP TABLE fts_t2;
|
||||
SHOW TABLES;
|
||||
Tables_in_fts
|
||||
DROP DATABASE fts;
|
|
@ -6,25 +6,25 @@ INSERT IGNORE INTO t1 VALUES (0), (1), (2);
|
|||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
connection node_2;
|
||||
SELECT COUNT(*) = 6 FROM t1;
|
||||
COUNT(*) = 6
|
||||
1
|
||||
SELECT COUNT(*) = 2 FROM t1 where f1 = '';
|
||||
COUNT(*) = 2
|
||||
1
|
||||
SELECT COUNT(*) = 2 FROM t1 where f1 = 'one';
|
||||
COUNT(*) = 2
|
||||
1
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
6
|
||||
SELECT COUNT(*) FROM t1 where f1 = '';
|
||||
COUNT(*)
|
||||
2
|
||||
SELECT COUNT(*) FROM t1 where f1 = 'one';
|
||||
COUNT(*)
|
||||
2
|
||||
DROP TABLE t1;
|
||||
connection node_1;
|
||||
CREATE TABLE t1 (f1 ENUM('', 'one', 'two', 'three', 'four') PRIMARY KEY) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (''), ('one'), ('two');
|
||||
connection node_2;
|
||||
SELECT COUNT(*) = 3 FROM t1;
|
||||
COUNT(*) = 3
|
||||
1
|
||||
SELECT COUNT(*) = 1 FROM t1 WHERE f1 = '';
|
||||
COUNT(*) = 1
|
||||
SELECT COUNT(*) FROM t1;
|
||||
COUNT(*)
|
||||
3
|
||||
SELECT COUNT(*) FROM t1 WHERE f1 = '';
|
||||
COUNT(*)
|
||||
1
|
||||
connection node_1;
|
||||
SET AUTOCOMMIT=OFF;
|
||||
|
@ -40,7 +40,12 @@ connection node_2;
|
|||
COMMIT;
|
||||
ERROR 40001: Deadlock: wsrep aborted transaction
|
||||
connection node_1;
|
||||
SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 'three';
|
||||
COUNT(*) = 1
|
||||
SELECT COUNT(*) FROM t1 WHERE f1 = 'three';
|
||||
COUNT(*)
|
||||
1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
one
|
||||
two
|
||||
three
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
connection node_1;
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true';
|
||||
SET @wsrep_cluster_address_orig = @@GLOBAL.wsrep_cluster_address;
|
||||
SET @wsrep_provider_options_orig = @@GLOBAL.wsrep_provider_options;
|
||||
SET GLOBAL wsrep_provider_options ='pc.ignore_sb=true';
|
||||
connection node_2;
|
||||
Killing server ...
|
||||
connection node_1;
|
||||
|
@ -15,6 +17,9 @@ SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABL
|
|||
VARIABLE_VALUE = 'ON'
|
||||
1
|
||||
SET GLOBAL wsrep_cluster_address = '';
|
||||
SET GLOBAL wsrep_cluster_address = @wsrep_cluster_address_orig;
|
||||
connection node_2;
|
||||
connection node_1;
|
||||
SET GLOBAL wsrep_provider_options = @wsrep_provider_options_orig;
|
||||
disconnect node_2;
|
||||
disconnect node_1;
|
||||
|
|
65
mysql-test/suite/galera/t/galera_drop_database.test
Normal file
65
mysql-test/suite/galera/t/galera_drop_database.test
Normal file
|
@ -0,0 +1,65 @@
|
|||
#
|
||||
# This test tests a DROP empty database
|
||||
#
|
||||
--source include/galera_cluster.inc
|
||||
--source include/have_innodb.inc
|
||||
|
||||
# Save original auto_increment_offset values.
|
||||
--let $node_1=node_1
|
||||
--let $node_2=node_2
|
||||
--source include/auto_increment_offset_save.inc
|
||||
|
||||
CREATE DATABASE fts;
|
||||
USE fts;
|
||||
CREATE TABLE fts_t1 (f1 INT PRIMARY KEY AUTO_INCREMENT, f2 VARCHAR(100), FULLTEXT (f2)) ENGINE=InnoDB;
|
||||
CREATE TABLE fts_t2 (f2 VARCHAR(100), FULLTEXT (f2)) ENGINE=InnoDB;
|
||||
|
||||
# Insert 1K rows
|
||||
CREATE TABLE ten (f1 INTEGER) ENGINE=InnoDB;
|
||||
INSERT INTO ten VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
|
||||
INSERT INTO fts_t1 (f2) SELECT 'foobarbaz' FROM ten AS a1, ten AS a2, ten AS a3;
|
||||
INSERT INTO fts_t2 (f2) SELECT 'foobarbaz' FROM ten AS a1, ten AS a2, ten AS a3;
|
||||
DROP TABLE ten;
|
||||
UPDATE fts_t1 SET f2 = 'abcd';
|
||||
UPDATE fts_t2 SET f2 = 'efjh';
|
||||
|
||||
--connection node_2
|
||||
let $wsrep_cluster_address = `SELECT @@global.wsrep_node_incoming_address`;
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--connection node_1
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--let $galera_connection_name = node_2a
|
||||
--let $galera_server_number = 2
|
||||
--source include/galera_connect.inc
|
||||
--connection node_2a
|
||||
--source include/wait_until_ready.inc
|
||||
|
||||
--connection node_1
|
||||
--let $restart_parameters = --wsrep-cluster-address=gcomm://$wsrep_cluster_address
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
--connection node_2a
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--let $galera_connection_name = node_1a
|
||||
--let $galera_server_number = 1
|
||||
--source include/galera_connect.inc
|
||||
--connection node_1a
|
||||
--source include/wait_until_ready.inc
|
||||
|
||||
USE fts;
|
||||
DROP TABLE fts_t1;
|
||||
DROP TABLE fts_t2;
|
||||
SHOW TABLES;
|
||||
DROP DATABASE fts;
|
||||
|
||||
# Restore original auto_increment_offset values.
|
||||
--let $node_1=node_1a
|
||||
--let $node_2=node_2a
|
||||
--source include/auto_increment_offset_restore.inc
|
||||
|
||||
--source include/galera_end.inc
|
|
@ -17,9 +17,12 @@ INSERT INTO t1 VALUES ('one'), ('two');
|
|||
INSERT IGNORE INTO t1 VALUES (0), (1), (2);
|
||||
|
||||
--connection node_2
|
||||
SELECT COUNT(*) = 6 FROM t1;
|
||||
SELECT COUNT(*) = 2 FROM t1 where f1 = '';
|
||||
SELECT COUNT(*) = 2 FROM t1 where f1 = 'one';
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t1';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SELECT COUNT(*) FROM t1;
|
||||
SELECT COUNT(*) FROM t1 where f1 = '';
|
||||
SELECT COUNT(*) FROM t1 where f1 = 'one';
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
@ -33,8 +36,10 @@ CREATE TABLE t1 (f1 ENUM('', 'one', 'two', 'three', 'four') PRIMARY KEY) ENGINE=
|
|||
INSERT INTO t1 VALUES (''), ('one'), ('two');
|
||||
|
||||
--connection node_2
|
||||
SELECT COUNT(*) = 3 FROM t1;
|
||||
SELECT COUNT(*) = 1 FROM t1 WHERE f1 = '';
|
||||
--let $wait_condition = SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES WHERE NAME LIKE 'test/t1';
|
||||
--source include/wait_condition.inc
|
||||
SELECT COUNT(*) FROM t1;
|
||||
SELECT COUNT(*) FROM t1 WHERE f1 = '';
|
||||
|
||||
# Conflict
|
||||
|
||||
|
@ -57,6 +62,7 @@ COMMIT;
|
|||
|
||||
--connection node_1
|
||||
|
||||
SELECT COUNT(*) = 1 FROM t1 WHERE f1 = 'three';
|
||||
SELECT COUNT(*) FROM t1 WHERE f1 = 'three';
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -11,10 +11,13 @@
|
|||
--source include/auto_increment_offset_save.inc
|
||||
|
||||
--connection node_1
|
||||
--let $wsrep_cluster_address_orig = `SELECT @@wsrep_cluster_address`
|
||||
--let $wsrep_provider_options_orig = `SELECT @@wsrep_provider_options`
|
||||
SET @wsrep_cluster_address_orig = @@GLOBAL.wsrep_cluster_address;
|
||||
SET @wsrep_provider_options_orig = @@GLOBAL.wsrep_provider_options;
|
||||
|
||||
SET GLOBAL wsrep_provider_options = 'pc.ignore_sb=true';
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SET GLOBAL wsrep_provider_options ='pc.ignore_sb=true';
|
||||
|
||||
--connection node_2
|
||||
--source include/kill_galera.inc
|
||||
|
@ -33,14 +36,18 @@ SELECT VARIABLE_VALUE = 'ON' FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABL
|
|||
# Reset the master and restart the slave so that post-test checks can run
|
||||
|
||||
SET GLOBAL wsrep_cluster_address = '';
|
||||
--disable_query_log
|
||||
--eval SET GLOBAL wsrep_cluster_address = '$wsrep_cluster_address_orig';
|
||||
--eval SET GLOBAL wsrep_provider_options = '$wsrep_provider_options_orig';
|
||||
--enable_query_log
|
||||
SET GLOBAL wsrep_cluster_address = @wsrep_cluster_address_orig;
|
||||
|
||||
--connection node_2
|
||||
--source include/start_mysqld.inc
|
||||
|
||||
|
||||
--connection node_1
|
||||
--let $wait_condition = SELECT VARIABLE_VALUE = 2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_size'
|
||||
--source include/wait_condition.inc
|
||||
|
||||
SET GLOBAL wsrep_provider_options = @wsrep_provider_options_orig;
|
||||
|
||||
# Restore original auto_increment_offset values.
|
||||
--source include/auto_increment_offset_restore.inc
|
||||
|
||||
|
|
|
@ -471,6 +471,21 @@ Table Op Msg_type Msg_text
|
|||
test.t2 check status OK
|
||||
test.t1 check status OK
|
||||
DROP TABLE t2, t1;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
INSERT INTO t1 SET a = 1;
|
||||
ALTER TABLE t1 ADD COLUMN b TEXT;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = REPEAT('1', 32768);
|
||||
UPDATE t1 SET a = 2;
|
||||
INSERT INTO t1 SET a = 1;
|
||||
SELECT a,LENGTH(b) FROM t1;
|
||||
a LENGTH(b)
|
||||
1 NULL
|
||||
2 32768
|
||||
DELETE FROM t1;
|
||||
COMMIT;
|
||||
InnoDB 0 transactions not purged
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1
|
||||
(id INT PRIMARY KEY, c2 INT UNIQUE,
|
||||
c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
|
||||
|
@ -888,6 +903,21 @@ Table Op Msg_type Msg_text
|
|||
test.t2 check status OK
|
||||
test.t1 check status OK
|
||||
DROP TABLE t2, t1;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
||||
INSERT INTO t1 SET a = 1;
|
||||
ALTER TABLE t1 ADD COLUMN b TEXT;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = REPEAT('1', 32768);
|
||||
UPDATE t1 SET a = 2;
|
||||
INSERT INTO t1 SET a = 1;
|
||||
SELECT a,LENGTH(b) FROM t1;
|
||||
a LENGTH(b)
|
||||
1 NULL
|
||||
2 32768
|
||||
DELETE FROM t1;
|
||||
COMMIT;
|
||||
InnoDB 0 transactions not purged
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1
|
||||
(id INT PRIMARY KEY, c2 INT UNIQUE,
|
||||
c3 POINT NOT NULL DEFAULT ST_GeomFromText('POINT(3 4)'),
|
||||
|
@ -1305,10 +1335,25 @@ Table Op Msg_type Msg_text
|
|||
test.t2 check status OK
|
||||
test.t1 check status OK
|
||||
DROP TABLE t2, t1;
|
||||
CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
INSERT INTO t1 SET a = 1;
|
||||
ALTER TABLE t1 ADD COLUMN b TEXT;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = REPEAT('1', 32768);
|
||||
UPDATE t1 SET a = 2;
|
||||
INSERT INTO t1 SET a = 1;
|
||||
SELECT a,LENGTH(b) FROM t1;
|
||||
a LENGTH(b)
|
||||
1 NULL
|
||||
2 32768
|
||||
DELETE FROM t1;
|
||||
COMMIT;
|
||||
InnoDB 0 transactions not purged
|
||||
DROP TABLE t1;
|
||||
disconnect analyze;
|
||||
SELECT variable_value-@old_instant instants
|
||||
FROM information_schema.global_status
|
||||
WHERE variable_name = 'innodb_instant_alter_column';
|
||||
instants
|
||||
48
|
||||
51
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency;
|
||||
|
|
|
@ -3,7 +3,7 @@ SELECT * FROM INFORMATION_SCHEMA.ENGINES
|
|||
WHERE engine = 'innodb'
|
||||
AND support IN ('YES', 'DEFAULT', 'ENABLED');
|
||||
ENGINE SUPPORT COMMENT TRANSACTIONS XA SAVEPOINTS
|
||||
FOUND 1 /InnoDB: Log file .*ib_logfile0 size 0 is too small/ in mysqld.1.err
|
||||
FOUND 1 /InnoDB: Log file .*ib_logfile1 is of different size .* bytes than other log files 0 bytes!/ in mysqld.1.err
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
|
|
|
@ -343,6 +343,24 @@ DEFAULT REPEAT('a', @@GLOBAL.innodb_page_size * .75);
|
|||
CHECK TABLE t2, t1;
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
#
|
||||
# MDEV-17483 Insert on delete-marked record can wrongly inherit old values
|
||||
# for instantly added column
|
||||
#
|
||||
|
||||
eval CREATE TABLE t1 (a INT PRIMARY KEY) $engine;
|
||||
INSERT INTO t1 SET a = 1;
|
||||
ALTER TABLE t1 ADD COLUMN b TEXT;
|
||||
BEGIN;
|
||||
UPDATE t1 SET b = REPEAT('1', 32768);
|
||||
UPDATE t1 SET a = 2;
|
||||
INSERT INTO t1 SET a = 1;
|
||||
SELECT a,LENGTH(b) FROM t1;
|
||||
DELETE FROM t1;
|
||||
COMMIT;
|
||||
--source include/wait_all_purged.inc
|
||||
DROP TABLE t1;
|
||||
|
||||
dec $format;
|
||||
}
|
||||
disconnect analyze;
|
||||
|
|
|
@ -43,7 +43,7 @@ eval $check_no_innodb;
|
|||
--move_file $MYSQLD_DATADIR/ib_logfile.old $MYSQLD_DATADIR/ib_logfile.0
|
||||
--source include/shutdown_mysqld.inc
|
||||
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||
let SEARCH_PATTERN= InnoDB: Log file .*ib_logfile0 size 0 is too small;
|
||||
let SEARCH_PATTERN= InnoDB: Log file .*ib_logfile1 is of different size .* bytes than other log files 0 bytes!;
|
||||
--source include/search_pattern_in_file.inc
|
||||
--source include/start_mysqld.inc
|
||||
CHECK TABLE t1;
|
||||
|
|
|
@ -648,4 +648,12 @@ SET GLOBAL slave_parallel_threads=@old_parallel_threads;
|
|||
include/start_slave.inc
|
||||
connection server_1;
|
||||
DROP TABLE t1, t2, t3;
|
||||
include/save_master_gtid.inc
|
||||
connection server_2;
|
||||
include/sync_with_master_gtid.inc
|
||||
Check that no more than the expected last four GTIDs are in mysql.gtid_slave_pos
|
||||
select count(4) <= 4 from mysql.gtid_slave_pos order by domain_id, sub_id;
|
||||
count(4) <= 4
|
||||
1
|
||||
connection server_1;
|
||||
include/rpl_end.inc
|
||||
|
|
|
@ -13,8 +13,8 @@ insert into mysqltest1.t1 values (1);
|
|||
select * from mysqltest1.t1 into outfile 'mysqltest1/f1.txt';
|
||||
create table mysqltest1.t2 (n int);
|
||||
create table mysqltest1.t3 (n int);
|
||||
--replace_result \\ / 66 39 93 39 17 39 247 39 "File exists" "Directory not empty"
|
||||
--error 1010
|
||||
--replace_result \\ / 66 39 93 39 17 39 247 39 41 39 "File exists" "Directory not empty"
|
||||
--error ER_DB_DROP_RMDIR
|
||||
drop database mysqltest1;
|
||||
use mysqltest1;
|
||||
show tables;
|
||||
|
@ -30,8 +30,8 @@ while ($1)
|
|||
}
|
||||
--enable_query_log
|
||||
|
||||
--replace_result \\ / 66 39 93 39 17 39 247 39 "File exists" "Directory not empty"
|
||||
--error 1010
|
||||
--replace_result \\ / 66 39 93 39 17 39 247 39 41 39 "File exists" "Directory not empty"
|
||||
--error ER_DB_DROP_RMDIR
|
||||
drop database mysqltest1;
|
||||
use mysqltest1;
|
||||
show tables;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
--source include/have_innodb.inc
|
||||
--source include/have_binlog_format_statement.inc
|
||||
--source include/master-slave.inc
|
||||
--source include/not_windows.inc #unix shell escaping used for mysqlbinlog
|
||||
|
||||
# MDEV-382: multiple SQL injections in replication code.
|
||||
|
||||
|
|
|
@ -553,5 +553,29 @@ SET GLOBAL slave_parallel_threads=@old_parallel_threads;
|
|||
|
||||
--connection server_1
|
||||
DROP TABLE t1, t2, t3;
|
||||
--source include/save_master_gtid.inc
|
||||
|
||||
--connection server_2
|
||||
--source include/sync_with_master_gtid.inc
|
||||
# Check for left-over rows in table mysql.gtid_slave_pos (MDEV-12147).
|
||||
#
|
||||
# There was a bug when a transaction got a conflict and was rolled back. It
|
||||
# might have also handled deletion of some old rows, and these deletions would
|
||||
# then also be rolled back. And since the deletes were never re-tried, old no
|
||||
# longer needed rows would accumulate in the table without limit.
|
||||
#
|
||||
# The earlier part of this test file have plenty of transactions being rolled
|
||||
# back. But the last DROP TABLE statement runs on its own and should never
|
||||
# conflict, thus at this point the mysql.gtid_slave_pos table should be clean.
|
||||
#
|
||||
# To support @@gtid_pos_auto_engines, when a row is inserted in the table, it
|
||||
# is associated with the engine of the table at insertion time, and it will
|
||||
# only be deleted during record_gtid from a table of the same engine. Since we
|
||||
# alter the table from MyISAM to InnoDB at the start of this test, we should
|
||||
# end up with 4 rows: two left-over from when the table was MyISAM, and two
|
||||
# left-over from the InnoDB part.
|
||||
--echo Check that no more than the expected last four GTIDs are in mysql.gtid_slave_pos
|
||||
select count(4) <= 4 from mysql.gtid_slave_pos order by domain_id, sub_id;
|
||||
|
||||
--connection server_1
|
||||
--source include/rpl_end.inc
|
||||
|
|
|
@ -5,5 +5,6 @@ log-slave-updates=0
|
|||
loose-innodb
|
||||
|
||||
[mysqld.2]
|
||||
slave-transaction-retries=100
|
||||
log-slave-updates=0
|
||||
loose-innodb
|
||||
|
|
|
@ -29,7 +29,7 @@ CALL mtr.add_suppression("WSREP: Could not open saved state file for reading.*")
|
|||
|
||||
--disable_query_log
|
||||
eval SET GLOBAL wsrep_provider= '$WSREP_PROVIDER';
|
||||
--let $galera_version=25.3.17
|
||||
--let $galera_version=25.3.24
|
||||
source include/check_galera_version.inc;
|
||||
--enable_query_log
|
||||
|
||||
|
|
|
@ -2395,6 +2395,15 @@ protected:
|
|||
}
|
||||
return true;
|
||||
}
|
||||
bool eq(const Item_args *other, bool binary_cmp) const
|
||||
{
|
||||
for (uint i= 0; i < arg_count ; i++)
|
||||
{
|
||||
if (!args[i]->eq(other->args[i], binary_cmp))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool excl_dep_on_in_subq_left_part(Item_in_subselect *subq_pred)
|
||||
{
|
||||
for (uint i= 0; i < arg_count; i++)
|
||||
|
|
|
@ -1790,10 +1790,7 @@ bool Item_func_opt_neg::eq(const Item *item, bool binary_cmp) const
|
|||
return 0;
|
||||
if (negated != ((Item_func_opt_neg *) item_func)->negated)
|
||||
return 0;
|
||||
for (uint i=0; i < arg_count ; i++)
|
||||
if (!args[i]->eq(item_func->arguments()[i], binary_cmp))
|
||||
return 0;
|
||||
return 1;
|
||||
return Item_args::eq(item_func, binary_cmp);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2160,6 +2160,7 @@ public:
|
|||
DBUG_ASSERT(arg_count >= 2);
|
||||
reorder_args(0);
|
||||
}
|
||||
enum Functype functype() const { return CASE_SEARCHED_FUNC; }
|
||||
void print(String *str, enum_query_type query_type);
|
||||
bool fix_length_and_dec();
|
||||
Item *propagate_equal_fields(THD *thd, const Context &ctx, COND_EQUAL *cond)
|
||||
|
@ -2212,6 +2213,7 @@ public:
|
|||
Predicant_to_list_comparator::cleanup();
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
enum Functype functype() const { return CASE_SIMPLE_FUNC; }
|
||||
void print(String *str, enum_query_type query_type);
|
||||
bool fix_length_and_dec();
|
||||
Item *propagate_equal_fields(THD *thd, const Context &ctx, COND_EQUAL *cond);
|
||||
|
|
|
@ -647,10 +647,7 @@ bool Item_func::eq(const Item *item, bool binary_cmp) const
|
|||
(func_type == Item_func::FUNC_SP &&
|
||||
my_strcasecmp(system_charset_info, func_name(), item_func->func_name())))
|
||||
return 0;
|
||||
for (uint i=0; i < arg_count ; i++)
|
||||
if (!args[i]->eq(item_func->args[i], binary_cmp))
|
||||
return 0;
|
||||
return 1;
|
||||
return Item_args::eq(item_func, binary_cmp);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -76,7 +76,10 @@ public:
|
|||
SUSERVAR_FUNC, GUSERVAR_FUNC, COLLATE_FUNC,
|
||||
EXTRACT_FUNC, CHAR_TYPECAST_FUNC, FUNC_SP, UDF_FUNC,
|
||||
NEG_FUNC, GSYSVAR_FUNC, IN_OPTIMIZER_FUNC, DYNCOL_FUNC,
|
||||
JSON_EXTRACT_FUNC };
|
||||
JSON_EXTRACT_FUNC,
|
||||
CASE_SEARCHED_FUNC, // Used by ColumnStore/Spider
|
||||
CASE_SIMPLE_FUNC // Used by ColumnStore/spider
|
||||
};
|
||||
static scalar_comparison_op functype_to_scalar_comparison_op(Functype type)
|
||||
{
|
||||
switch (type) {
|
||||
|
|
|
@ -542,6 +542,11 @@ void Item_sum_hybrid_simple::update_field()
|
|||
|
||||
void Item_window_func::print(String *str, enum_query_type query_type)
|
||||
{
|
||||
if (only_single_element_order_list())
|
||||
{
|
||||
print_for_percentile_functions(str, query_type);
|
||||
return;
|
||||
}
|
||||
window_func()->print(str, query_type);
|
||||
str->append(" over ");
|
||||
#ifndef DBUG_OFF
|
||||
|
@ -551,3 +556,15 @@ void Item_window_func::print(String *str, enum_query_type query_type)
|
|||
#endif
|
||||
window_spec->print(str, query_type);
|
||||
}
|
||||
void Item_window_func::print_for_percentile_functions(String *str, enum_query_type query_type)
|
||||
{
|
||||
window_func()->print(str, query_type);
|
||||
str->append(" within group ");
|
||||
str->append('(');
|
||||
window_spec->print_order(str,query_type);
|
||||
str->append(')');
|
||||
str->append(" over ");
|
||||
str->append('(');
|
||||
window_spec->print_partition(str,query_type);
|
||||
str->append(')');
|
||||
}
|
||||
|
|
|
@ -1155,6 +1155,7 @@ private:
|
|||
*/
|
||||
bool force_return_blank;
|
||||
bool read_value_from_result_field;
|
||||
void print_for_percentile_functions(String *str, enum_query_type query_type);
|
||||
|
||||
public:
|
||||
void set_phase_to_initial()
|
||||
|
|
|
@ -5563,7 +5563,7 @@ int Query_log_event::do_apply_event(rpl_group_info *rgi,
|
|||
gtid= rgi->current_gtid;
|
||||
if (unlikely(rpl_global_gtid_slave_state->record_gtid(thd, >id,
|
||||
sub_id,
|
||||
true, false,
|
||||
rgi, false,
|
||||
&hton)))
|
||||
{
|
||||
int errcode= thd->get_stmt_da()->sql_errno();
|
||||
|
@ -8361,7 +8361,7 @@ Gtid_list_log_event::do_apply_event(rpl_group_info *rgi)
|
|||
{
|
||||
if ((ret= rpl_global_gtid_slave_state->record_gtid(thd, &list[i],
|
||||
sub_id_list[i],
|
||||
false, false, &hton)))
|
||||
NULL, false, &hton)))
|
||||
return ret;
|
||||
rpl_global_gtid_slave_state->update_state_hash(sub_id_list[i], &list[i],
|
||||
hton, NULL);
|
||||
|
@ -8898,7 +8898,7 @@ int Xid_log_event::do_apply_event(rpl_group_info *rgi)
|
|||
rgi->gtid_pending= false;
|
||||
|
||||
gtid= rgi->current_gtid;
|
||||
err= rpl_global_gtid_slave_state->record_gtid(thd, >id, sub_id, true,
|
||||
err= rpl_global_gtid_slave_state->record_gtid(thd, >id, sub_id, rgi,
|
||||
false, &hton);
|
||||
if (unlikely(err))
|
||||
{
|
||||
|
|
|
@ -3911,14 +3911,16 @@ static void my_malloc_size_cb_func(long long size, my_bool is_thread_specific)
|
|||
{
|
||||
THD *thd= current_thd;
|
||||
|
||||
if (is_thread_specific) /* If thread specific memory */
|
||||
{
|
||||
/*
|
||||
When thread specfic is set, both mysqld_server_initialized and thd
|
||||
must be set
|
||||
*/
|
||||
DBUG_ASSERT(mysqld_server_initialized && thd);
|
||||
/*
|
||||
When thread specific is set, both mysqld_server_initialized and thd
|
||||
must be set, and we check that with DBUG_ASSERT.
|
||||
|
||||
However, do not crash, if current_thd is NULL, in release version.
|
||||
*/
|
||||
DBUG_ASSERT(!is_thread_specific || (mysqld_server_initialized && thd));
|
||||
|
||||
if (is_thread_specific && likely(thd)) /* If thread specific memory */
|
||||
{
|
||||
DBUG_PRINT("info", ("thd memory_used: %lld size: %lld",
|
||||
(longlong) thd->status_var.local_memory_used,
|
||||
size));
|
||||
|
|
|
@ -79,7 +79,7 @@ rpl_slave_state::record_and_update_gtid(THD *thd, rpl_group_info *rgi)
|
|||
rgi->gtid_pending= false;
|
||||
if (rgi->gtid_ignore_duplicate_state!=rpl_group_info::GTID_DUPLICATE_IGNORE)
|
||||
{
|
||||
if (record_gtid(thd, &rgi->current_gtid, sub_id, false, false, &hton))
|
||||
if (record_gtid(thd, &rgi->current_gtid, sub_id, NULL, false, &hton))
|
||||
DBUG_RETURN(1);
|
||||
update_state_hash(sub_id, &rgi->current_gtid, hton, rgi);
|
||||
}
|
||||
|
@ -331,6 +331,10 @@ rpl_slave_state::update(uint32 domain_id, uint32 server_id, uint64 sub_id,
|
|||
}
|
||||
}
|
||||
rgi->gtid_ignore_duplicate_state= rpl_group_info::GTID_DUPLICATE_NULL;
|
||||
|
||||
#ifdef HAVE_REPLICATION
|
||||
rgi->pending_gtid_deletes_clear();
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!(list_elem= (list_element *)my_malloc(sizeof(*list_elem), MYF(MY_WME))))
|
||||
|
@ -381,15 +385,24 @@ int
|
|||
rpl_slave_state::put_back_list(uint32 domain_id, list_element *list)
|
||||
{
|
||||
element *e;
|
||||
int err= 0;
|
||||
|
||||
mysql_mutex_lock(&LOCK_slave_state);
|
||||
if (!(e= (element *)my_hash_search(&hash, (const uchar *)&domain_id, 0)))
|
||||
return 1;
|
||||
{
|
||||
err= 1;
|
||||
goto end;
|
||||
}
|
||||
while (list)
|
||||
{
|
||||
list_element *next= list->next;
|
||||
e->add(list);
|
||||
list= next;
|
||||
}
|
||||
return 0;
|
||||
|
||||
end:
|
||||
mysql_mutex_unlock(&LOCK_slave_state);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
|
@ -559,12 +572,12 @@ rpl_slave_state::select_gtid_pos_table(THD *thd, LEX_CSTRING *out_tablename)
|
|||
/*
|
||||
Write a gtid to the replication slave state table.
|
||||
|
||||
Do it as part of the transaction, to get slave crash safety, or as a separate
|
||||
transaction if !in_transaction (eg. MyISAM or DDL).
|
||||
|
||||
gtid The global transaction id for this event group.
|
||||
sub_id Value allocated within the sub_id when the event group was
|
||||
read (sub_id must be consistent with commit order in master binlog).
|
||||
rgi rpl_group_info context, if we are recording the gtid transactionally
|
||||
as part of replicating a transactional event. NULL if called from
|
||||
outside of a replicated transaction.
|
||||
|
||||
Note that caller must later ensure that the new gtid and sub_id is inserted
|
||||
into the appropriate HASH element with rpl_slave_state.add(), so that it can
|
||||
|
@ -572,7 +585,7 @@ rpl_slave_state::select_gtid_pos_table(THD *thd, LEX_CSTRING *out_tablename)
|
|||
*/
|
||||
int
|
||||
rpl_slave_state::record_gtid(THD *thd, const rpl_gtid *gtid, uint64 sub_id,
|
||||
bool in_transaction, bool in_statement,
|
||||
rpl_group_info *rgi, bool in_statement,
|
||||
void **out_hton)
|
||||
{
|
||||
TABLE_LIST tlist;
|
||||
|
@ -671,7 +684,7 @@ rpl_slave_state::record_gtid(THD *thd, const rpl_gtid *gtid, uint64 sub_id,
|
|||
thd->wsrep_ignore_table= true;
|
||||
#endif
|
||||
|
||||
if (!in_transaction)
|
||||
if (!rgi)
|
||||
{
|
||||
DBUG_PRINT("info", ("resetting OPTION_BEGIN"));
|
||||
thd->variables.option_bits&=
|
||||
|
@ -776,7 +789,8 @@ rpl_slave_state::record_gtid(THD *thd, const rpl_gtid *gtid, uint64 sub_id,
|
|||
table->file->print_error(err, MYF(0));
|
||||
goto end;
|
||||
}
|
||||
while (delete_list)
|
||||
cur = delete_list;
|
||||
while (cur)
|
||||
{
|
||||
uchar key_buffer[4+8];
|
||||
|
||||
|
@ -786,9 +800,9 @@ rpl_slave_state::record_gtid(THD *thd, const rpl_gtid *gtid, uint64 sub_id,
|
|||
/* `break' does not work inside DBUG_EXECUTE_IF */
|
||||
goto dbug_break; });
|
||||
|
||||
next= delete_list->next;
|
||||
next= cur->next;
|
||||
|
||||
table->field[1]->store(delete_list->sub_id, true);
|
||||
table->field[1]->store(cur->sub_id, true);
|
||||
/* domain_id is already set in table->record[0] from write_row() above. */
|
||||
key_copy(key_buffer, table->record[0], &table->key_info[0], 0, false);
|
||||
if (table->file->ha_index_read_map(table->record[1], key_buffer,
|
||||
|
@ -802,8 +816,7 @@ rpl_slave_state::record_gtid(THD *thd, const rpl_gtid *gtid, uint64 sub_id,
|
|||
not want to endlessly error on the same element in case of table
|
||||
corruption or such.
|
||||
*/
|
||||
my_free(delete_list);
|
||||
delete_list= next;
|
||||
cur= next;
|
||||
if (err)
|
||||
break;
|
||||
}
|
||||
|
@ -826,18 +839,35 @@ end:
|
|||
*/
|
||||
if (delete_list)
|
||||
{
|
||||
mysql_mutex_lock(&LOCK_slave_state);
|
||||
put_back_list(gtid->domain_id, delete_list);
|
||||
mysql_mutex_unlock(&LOCK_slave_state);
|
||||
delete_list = 0;
|
||||
}
|
||||
|
||||
ha_rollback_trans(thd, FALSE);
|
||||
}
|
||||
close_thread_tables(thd);
|
||||
if (in_transaction)
|
||||
if (rgi)
|
||||
{
|
||||
thd->mdl_context.release_statement_locks();
|
||||
/*
|
||||
Save the list of old gtid entries we deleted. If this transaction
|
||||
fails later for some reason and is rolled back, the deletion of those
|
||||
entries will be rolled back as well, and we will need to put them back
|
||||
on the to-be-deleted list so we can re-do the deletion. Otherwise
|
||||
redundant rows in mysql.gtid_slave_pos may accumulate if transactions
|
||||
are rolled back and retried after record_gtid().
|
||||
*/
|
||||
#ifdef HAVE_REPLICATION
|
||||
rgi->pending_gtid_deletes_save(gtid->domain_id, delete_list);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
thd->mdl_context.release_transactional_locks();
|
||||
#ifdef HAVE_REPLICATION
|
||||
rpl_group_info::pending_gtid_deletes_free(delete_list);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
thd->lex->restore_backup_query_tables_list(&lex_backup);
|
||||
thd->variables.option_bits= thd_saved_option;
|
||||
|
@ -1221,7 +1251,7 @@ rpl_slave_state::load(THD *thd, const char *state_from_master, size_t len,
|
|||
|
||||
if (gtid_parser_helper(&state_from_master, end, >id) ||
|
||||
!(sub_id= next_sub_id(gtid.domain_id)) ||
|
||||
record_gtid(thd, >id, sub_id, false, in_statement, &hton) ||
|
||||
record_gtid(thd, >id, sub_id, NULL, in_statement, &hton) ||
|
||||
update(gtid.domain_id, gtid.server_id, sub_id, gtid.seq_no, hton, NULL))
|
||||
return 1;
|
||||
if (state_from_master == end)
|
||||
|
|
|
@ -233,7 +233,7 @@ struct rpl_slave_state
|
|||
int truncate_state_table(THD *thd);
|
||||
void select_gtid_pos_table(THD *thd, LEX_CSTRING *out_tablename);
|
||||
int record_gtid(THD *thd, const rpl_gtid *gtid, uint64 sub_id,
|
||||
bool in_transaction, bool in_statement, void **out_hton);
|
||||
rpl_group_info *rgi, bool in_statement, void **out_hton);
|
||||
uint64 next_sub_id(uint32 domain_id);
|
||||
int iterate(int (*cb)(rpl_gtid *, void *), void *data,
|
||||
rpl_gtid *extra_gtids, uint32 num_extra,
|
||||
|
|
|
@ -1657,21 +1657,31 @@ int rpl_parallel_resize_pool_if_no_slaves(void)
|
|||
|
||||
|
||||
/**
|
||||
Resize pool if not active or busy (in which case we may be in
|
||||
resize to 0
|
||||
Pool activation is preceeded by taking a "lock" of pool_mark_busy
|
||||
which guarantees the number of running slaves drops to zero atomicly
|
||||
with the number of pool workers.
|
||||
This resolves race between the function caller thread and one
|
||||
that may be attempting to deactivate the pool.
|
||||
*/
|
||||
|
||||
int
|
||||
rpl_parallel_activate_pool(rpl_parallel_thread_pool *pool)
|
||||
{
|
||||
bool resize;
|
||||
mysql_mutex_lock(&pool->LOCK_rpl_thread_pool);
|
||||
resize= !pool->count || pool->busy;
|
||||
mysql_mutex_unlock(&pool->LOCK_rpl_thread_pool);
|
||||
if (resize)
|
||||
return rpl_parallel_change_thread_count(pool, opt_slave_parallel_threads,
|
||||
0);
|
||||
return 0;
|
||||
int rc= 0;
|
||||
|
||||
if ((rc= pool_mark_busy(pool, current_thd)))
|
||||
return rc; // killed
|
||||
|
||||
if (!pool->count)
|
||||
{
|
||||
pool_mark_not_busy(pool);
|
||||
rc= rpl_parallel_change_thread_count(pool, opt_slave_parallel_threads,
|
||||
0);
|
||||
}
|
||||
else
|
||||
{
|
||||
pool_mark_not_busy(pool);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2086,6 +2086,7 @@ rpl_group_info::reinit(Relay_log_info *rli)
|
|||
long_find_row_note_printed= false;
|
||||
did_mark_start_commit= false;
|
||||
gtid_ev_flags2= 0;
|
||||
pending_gtid_delete_list= NULL;
|
||||
last_master_timestamp = 0;
|
||||
gtid_ignore_duplicate_state= GTID_DUPLICATE_NULL;
|
||||
speculation= SPECULATE_NO;
|
||||
|
@ -2216,6 +2217,12 @@ void rpl_group_info::cleanup_context(THD *thd, bool error)
|
|||
erroneously update the GTID position.
|
||||
*/
|
||||
gtid_pending= false;
|
||||
|
||||
/*
|
||||
Rollback will have undone any deletions of old rows we might have made
|
||||
in mysql.gtid_slave_pos. Put those rows back on the list to be deleted.
|
||||
*/
|
||||
pending_gtid_deletes_put_back();
|
||||
}
|
||||
m_table_map.clear_tables();
|
||||
slave_close_thread_tables(thd);
|
||||
|
@ -2441,6 +2448,78 @@ rpl_group_info::unmark_start_commit()
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
When record_gtid() has deleted any old rows from the table
|
||||
mysql.gtid_slave_pos as part of a replicated transaction, save the list of
|
||||
rows deleted here.
|
||||
|
||||
If later the transaction fails (eg. optimistic parallel replication), the
|
||||
deletes will be undone when the transaction is rolled back. Then we can
|
||||
put back the list of rows into the rpl_global_gtid_slave_state, so that
|
||||
we can re-do the deletes and avoid accumulating old rows in the table.
|
||||
*/
|
||||
void
|
||||
rpl_group_info::pending_gtid_deletes_save(uint32 domain_id,
|
||||
rpl_slave_state::list_element *list)
|
||||
{
|
||||
/*
|
||||
We should never get to a state where we try to save a new pending list of
|
||||
gtid deletes while we still have an old one. But make sure we handle it
|
||||
anyway just in case, so we avoid leaving stray entries in the
|
||||
mysql.gtid_slave_pos table.
|
||||
*/
|
||||
DBUG_ASSERT(!pending_gtid_delete_list);
|
||||
if (unlikely(pending_gtid_delete_list))
|
||||
pending_gtid_deletes_put_back();
|
||||
|
||||
pending_gtid_delete_list= list;
|
||||
pending_gtid_delete_list_domain= domain_id;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Take the list recorded by pending_gtid_deletes_save() and put it back into
|
||||
rpl_global_gtid_slave_state. This is needed if deletion of the rows was
|
||||
rolled back due to transaction failure.
|
||||
*/
|
||||
void
|
||||
rpl_group_info::pending_gtid_deletes_put_back()
|
||||
{
|
||||
if (pending_gtid_delete_list)
|
||||
{
|
||||
rpl_global_gtid_slave_state->put_back_list(pending_gtid_delete_list_domain,
|
||||
pending_gtid_delete_list);
|
||||
pending_gtid_delete_list= NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Free the list recorded by pending_gtid_deletes_save(). Done when the deletes
|
||||
in the list have been permanently committed.
|
||||
*/
|
||||
void
|
||||
rpl_group_info::pending_gtid_deletes_clear()
|
||||
{
|
||||
pending_gtid_deletes_free(pending_gtid_delete_list);
|
||||
pending_gtid_delete_list= NULL;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
rpl_group_info::pending_gtid_deletes_free(rpl_slave_state::list_element *list)
|
||||
{
|
||||
rpl_slave_state::list_element *next;
|
||||
|
||||
while (list)
|
||||
{
|
||||
next= list->next;
|
||||
my_free(list);
|
||||
list= next;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
rpl_sql_thread_info::rpl_sql_thread_info(Rpl_filter *filter)
|
||||
: rpl_filter(filter)
|
||||
{
|
||||
|
|
|
@ -757,6 +757,11 @@ struct rpl_group_info
|
|||
/* Needs room for "Gtid D-S-N\x00". */
|
||||
char gtid_info_buf[5+10+1+10+1+20+1];
|
||||
|
||||
/* List of not yet committed deletions in mysql.gtid_slave_pos. */
|
||||
rpl_slave_state::list_element *pending_gtid_delete_list;
|
||||
/* Domain associated with pending_gtid_delete_list. */
|
||||
uint32 pending_gtid_delete_list_domain;
|
||||
|
||||
/*
|
||||
The timestamp, from the master, of the commit event.
|
||||
Used to do delayed update of rli->last_master_timestamp, for getting
|
||||
|
@ -898,6 +903,12 @@ struct rpl_group_info
|
|||
char *gtid_info();
|
||||
void unmark_start_commit();
|
||||
|
||||
static void pending_gtid_deletes_free(rpl_slave_state::list_element *list);
|
||||
void pending_gtid_deletes_save(uint32 domain_id,
|
||||
rpl_slave_state::list_element *list);
|
||||
void pending_gtid_deletes_put_back();
|
||||
void pending_gtid_deletes_clear();
|
||||
|
||||
longlong get_row_stmt_start_timestamp()
|
||||
{
|
||||
return row_stmt_start_timestamp;
|
||||
|
|
|
@ -469,6 +469,7 @@ bool Item_func_in::create_value_list_for_tvc(THD *thd,
|
|||
|
||||
for (uint i=1; i < arg_count; i++)
|
||||
{
|
||||
char col_name[8];
|
||||
List<Item> *tvc_value;
|
||||
if (!(tvc_value= new (thd->mem_root) List<Item>()))
|
||||
return true;
|
||||
|
@ -479,13 +480,27 @@ bool Item_func_in::create_value_list_for_tvc(THD *thd,
|
|||
|
||||
for (uint j=0; j < row_list->cols(); j++)
|
||||
{
|
||||
if (i == 1)
|
||||
{
|
||||
sprintf(col_name, "_col_%i", j+1);
|
||||
row_list->element_index(j)->set_name(thd, col_name, strlen(col_name),
|
||||
thd->charset());
|
||||
}
|
||||
if (tvc_value->push_back(row_list->element_index(j),
|
||||
thd->mem_root))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (tvc_value->push_back(args[i]->real_item()))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
if (i == 1)
|
||||
{
|
||||
sprintf(col_name, "_col_%i", 1);
|
||||
args[i]->set_name(thd, col_name, strlen(col_name), thd->charset());
|
||||
}
|
||||
if (tvc_value->push_back(args[i]->real_item()))
|
||||
return true;
|
||||
}
|
||||
|
||||
if (values->push_back(tvc_value, thd->mem_root))
|
||||
return true;
|
||||
|
|
|
@ -82,19 +82,32 @@ void
|
|||
Window_spec::print(String *str, enum_query_type query_type)
|
||||
{
|
||||
str->append('(');
|
||||
print_partition(str, query_type);
|
||||
print_order(str, query_type);
|
||||
|
||||
if (window_frame)
|
||||
window_frame->print(str, query_type);
|
||||
str->append(')');
|
||||
}
|
||||
|
||||
void
|
||||
Window_spec::print_partition(String *str, enum_query_type query_type)
|
||||
{
|
||||
if (partition_list->first)
|
||||
{
|
||||
str->append(STRING_WITH_LEN(" partition by "));
|
||||
st_select_lex::print_order(str, partition_list->first, query_type);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Window_spec::print_order(String *str, enum_query_type query_type)
|
||||
{
|
||||
if (order_list->first)
|
||||
{
|
||||
str->append(STRING_WITH_LEN(" order by "));
|
||||
st_select_lex::print_order(str, order_list->first, query_type);
|
||||
}
|
||||
if (window_frame)
|
||||
window_frame->print(str, query_type);
|
||||
str->append(')');
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
@ -147,6 +147,8 @@ class Window_spec : public Sql_alloc
|
|||
}
|
||||
|
||||
void print(String *str, enum_query_type query_type);
|
||||
void print_order(String *str, enum_query_type query_type);
|
||||
void print_partition(String *str, enum_query_type query_type);
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -127,16 +127,6 @@ row_ins_sec_index_entry_low(
|
|||
/*!< in: if true, just do duplicate check
|
||||
and return. don't execute actual insert. */
|
||||
MY_ATTRIBUTE((warn_unused_result));
|
||||
/** Sets the values of the dtuple fields in entry from the values of appropriate
|
||||
columns in row.
|
||||
@param[in] index index handler
|
||||
@param[out] entry index entry to make
|
||||
@param[in] row row */
|
||||
dberr_t
|
||||
row_ins_index_entry_set_vals(
|
||||
const dict_index_t* index,
|
||||
dtuple_t* entry,
|
||||
const dtuple_t* row);
|
||||
|
||||
/***************************************************************//**
|
||||
Inserts an entry into a clustered index. Tries first optimistic,
|
||||
|
|
|
@ -2671,8 +2671,6 @@ row_ins_clust_index_entry_low(
|
|||
}
|
||||
}
|
||||
|
||||
if (index->is_instant()) entry->trim(*index);
|
||||
|
||||
if (rec_is_metadata(btr_cur_get_rec(cursor), index)) {
|
||||
goto do_insert;
|
||||
}
|
||||
|
@ -2739,6 +2737,7 @@ err_exit:
|
|||
mtr_commit(&mtr);
|
||||
mem_heap_free(entry_heap);
|
||||
} else {
|
||||
if (index->is_instant()) entry->trim(*index);
|
||||
do_insert:
|
||||
rec_t* insert_rec;
|
||||
|
||||
|
@ -3418,8 +3417,8 @@ columns in row.
|
|||
@param[in] index index handler
|
||||
@param[out] entry index entry to make
|
||||
@param[in] row row
|
||||
|
||||
@return DB_SUCCESS if the set is successful */
|
||||
static
|
||||
dberr_t
|
||||
row_ins_index_entry_set_vals(
|
||||
const dict_index_t* index,
|
||||
|
|
|
@ -562,34 +562,6 @@ create_log_files_rename(
|
|||
return(err);
|
||||
}
|
||||
|
||||
/*********************************************************************//**
|
||||
Opens a log file.
|
||||
@return DB_SUCCESS or error code */
|
||||
static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
||||
dberr_t
|
||||
open_log_file(
|
||||
/*==========*/
|
||||
pfs_os_file_t* file, /*!< out: file handle */
|
||||
const char* name, /*!< in: log file name */
|
||||
os_offset_t* size) /*!< out: file size */
|
||||
{
|
||||
bool ret;
|
||||
|
||||
*file = os_file_create(innodb_log_file_key, name,
|
||||
OS_FILE_OPEN, OS_FILE_AIO,
|
||||
OS_LOG_FILE, srv_read_only_mode, &ret);
|
||||
if (!ret) {
|
||||
ib::error() << "Unable to open '" << name << "'";
|
||||
return(DB_ERROR);
|
||||
}
|
||||
|
||||
*size = os_file_get_size(*file);
|
||||
|
||||
ret = os_file_close(*file);
|
||||
ut_a(ret);
|
||||
return(DB_SUCCESS);
|
||||
}
|
||||
|
||||
/*********************************************************************//**
|
||||
Create undo tablespace.
|
||||
@return DB_SUCCESS or error code */
|
||||
|
@ -1656,8 +1628,9 @@ dberr_t srv_start(bool create_new_db)
|
|||
return(srv_init_abort(err));
|
||||
}
|
||||
} else {
|
||||
srv_log_file_size = 0;
|
||||
|
||||
for (i = 0; i < SRV_N_LOG_FILES_MAX; i++) {
|
||||
os_offset_t size;
|
||||
os_file_stat_t stat_info;
|
||||
|
||||
sprintf(logfilename + dirnamelen,
|
||||
|
@ -1675,40 +1648,6 @@ dberr_t srv_start(bool create_new_db)
|
|||
== SRV_OPERATION_RESTORE_EXPORT) {
|
||||
return(DB_SUCCESS);
|
||||
}
|
||||
if (flushed_lsn
|
||||
< static_cast<lsn_t>(1000)) {
|
||||
ib::error()
|
||||
<< "Cannot create"
|
||||
" log files because"
|
||||
" data files are"
|
||||
" corrupt or the"
|
||||
" database was not"
|
||||
" shut down cleanly"
|
||||
" after creating"
|
||||
" the data files.";
|
||||
return(srv_init_abort(
|
||||
DB_ERROR));
|
||||
}
|
||||
|
||||
err = create_log_files(
|
||||
logfilename, dirnamelen,
|
||||
flushed_lsn, logfile0);
|
||||
|
||||
if (err == DB_SUCCESS) {
|
||||
err = create_log_files_rename(
|
||||
logfilename,
|
||||
dirnamelen,
|
||||
flushed_lsn, logfile0);
|
||||
}
|
||||
|
||||
if (err != DB_SUCCESS) {
|
||||
return(srv_init_abort(err));
|
||||
}
|
||||
|
||||
/* Suppress the message about
|
||||
crash recovery. */
|
||||
flushed_lsn = log_get_lsn();
|
||||
goto files_checked;
|
||||
}
|
||||
|
||||
/* opened all files */
|
||||
|
@ -1719,12 +1658,7 @@ dberr_t srv_start(bool create_new_db)
|
|||
return(srv_init_abort(DB_ERROR));
|
||||
}
|
||||
|
||||
err = open_log_file(&files[i], logfilename, &size);
|
||||
|
||||
if (err != DB_SUCCESS) {
|
||||
return(srv_init_abort(err));
|
||||
}
|
||||
|
||||
const os_offset_t size = stat_info.size;
|
||||
ut_a(size != (os_offset_t) -1);
|
||||
|
||||
if (size & (OS_FILE_LOG_BLOCK_SIZE - 1)) {
|
||||
|
@ -1749,8 +1683,13 @@ dberr_t srv_start(bool create_new_db)
|
|||
/* The first log file must consist of
|
||||
at least the following 512-byte pages:
|
||||
header, checkpoint page 1, empty,
|
||||
checkpoint page 2, redo log page(s) */
|
||||
if (size <= OS_FILE_LOG_BLOCK_SIZE * 4) {
|
||||
checkpoint page 2, redo log page(s).
|
||||
|
||||
Mariabackup --prepare would create an
|
||||
empty ib_logfile0. Tolerate it if there
|
||||
are no other ib_logfile* files. */
|
||||
if ((size != 0 || i != 0)
|
||||
&& size <= OS_FILE_LOG_BLOCK_SIZE * 4) {
|
||||
ib::error() << "Log file "
|
||||
<< logfilename << " size "
|
||||
<< size << " is too small";
|
||||
|
@ -1767,6 +1706,39 @@ dberr_t srv_start(bool create_new_db)
|
|||
}
|
||||
}
|
||||
|
||||
if (srv_log_file_size == 0) {
|
||||
if (flushed_lsn < lsn_t(1000)) {
|
||||
ib::error()
|
||||
<< "Cannot create log files because"
|
||||
" data files are corrupt or the"
|
||||
" database was not shut down cleanly"
|
||||
" after creating the data files.";
|
||||
return srv_init_abort(DB_ERROR);
|
||||
}
|
||||
|
||||
strcpy(logfilename + dirnamelen, "ib_logfile0");
|
||||
srv_log_file_size = srv_log_file_size_requested;
|
||||
|
||||
err = create_log_files(
|
||||
logfilename, dirnamelen,
|
||||
flushed_lsn, logfile0);
|
||||
|
||||
if (err == DB_SUCCESS) {
|
||||
err = create_log_files_rename(
|
||||
logfilename, dirnamelen,
|
||||
flushed_lsn, logfile0);
|
||||
}
|
||||
|
||||
if (err != DB_SUCCESS) {
|
||||
return(srv_init_abort(err));
|
||||
}
|
||||
|
||||
/* Suppress the message about
|
||||
crash recovery. */
|
||||
flushed_lsn = log_get_lsn();
|
||||
goto files_checked;
|
||||
}
|
||||
|
||||
srv_n_log_files_found = i;
|
||||
|
||||
/* Create the in-memory file space objects. */
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
--rocksdb_flush_log_at_trx_commit=1
|
Loading…
Reference in a new issue