mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch '10.0' into 10.1
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#ifndef SQL_COMMON_INCLUDED
|
||||
#define SQL_COMMON_INCLUDED
|
||||
/* Copyright (c) 2003, 2012, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2003, 2018, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2018, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
@@ -1685,6 +1685,7 @@ revoke create, insert on mysqltest.t6 from mysqltest@localhost;
|
||||
drop user mysqltest@localhost;
|
||||
drop database mysqltest;
|
||||
use test;
|
||||
call mtr.add_suppression("Can't open and lock privilege tables");
|
||||
FLUSH PRIVILEGES without procs_priv table.
|
||||
RENAME TABLE mysql.procs_priv TO mysql.procs_gone;
|
||||
FLUSH PRIVILEGES;
|
||||
@@ -1773,8 +1774,6 @@ BEGIN
|
||||
SET @x = 0;
|
||||
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
|
||||
END ;||
|
||||
Warnings:
|
||||
Warning 1404 Failed to grant EXECUTE and ALTER ROUTINE privileges
|
||||
SHOW GRANTS FOR 'user1'@'localhost';
|
||||
Grants for user1@localhost
|
||||
GRANT USAGE ON *.* TO 'user1'@'localhost'
|
||||
@@ -1784,6 +1783,7 @@ SHOW GRANTS FOR 'user2';
|
||||
Grants for user2@%
|
||||
GRANT USAGE ON *.* TO 'user2'@'%'
|
||||
GRANT CREATE, CREATE ROUTINE ON `db1`.* TO 'user2'@'%'
|
||||
GRANT EXECUTE, ALTER ROUTINE ON PROCEDURE `db1`.`proc2` TO 'user2'@'%'
|
||||
DROP PROCEDURE db1.proc1;
|
||||
DROP PROCEDURE db1.proc2;
|
||||
REVOKE ALL ON db1.* FROM 'user1'@'localhost';
|
||||
|
@@ -204,8 +204,6 @@ Warnings:
|
||||
Warning 1364 Field 'authentication_string' doesn't have a default value
|
||||
FLUSH PRIVILEGES;
|
||||
CREATE PROCEDURE p1(i INT) BEGIN END;
|
||||
Warnings:
|
||||
Warning 1404 Failed to grant EXECUTE and ALTER ROUTINE privileges
|
||||
DROP PROCEDURE p1;
|
||||
DELETE FROM mysql.user WHERE User='mysqltest_1';
|
||||
FLUSH PRIVILEGES;
|
||||
|
@@ -2391,6 +2391,99 @@ ec70316637232000158bbfc8bcbe5d60
|
||||
ebb4620037332000158bbfc8bcbe5d89
|
||||
DROP TABLE t1,t2,t3;
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# MDEV-16751: Server crashes in st_join_table::cleanup or
|
||||
# TABLE_LIST::is_with_table_recursive_reference with join_cache_level>2
|
||||
#
|
||||
set @save_join_cache_level= @@join_cache_level;
|
||||
set join_cache_level=4;
|
||||
CREATE TABLE t1 ( id int NOT NULL);
|
||||
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL) ;
|
||||
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||
explain
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||
1 PRIMARY t1 hash_ALL NULL #hash#$hj 4 test.t2.i1 9 Using where; Using join buffer (flat, BNLH join)
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
set @@join_cache_level= @save_join_cache_level;
|
||||
alter table t1 add key(id);
|
||||
explain
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||
1 PRIMARY t1 ref id id 4 test.t2.i1 2 Using index
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-15454: Nested SELECT IN returns wrong results
|
||||
#
|
||||
CREATE TABLE t1 ( a int NOT NULL PRIMARY KEY);
|
||||
CREATE TABLE t2 ( a int, b int );
|
||||
INSERT INTO t2 VALUES (7878, 96),(3465, 96),(1403, 96),(4189, 96),(8732, 96), (5,96);
|
||||
CREATE TABLE t3 (c int unsigned NOT NULL, b int unsigned NOT NULL, PRIMARY KEY (c,b));
|
||||
INSERT INTO t3 (c, b) VALUES (27, 96);
|
||||
CREATE PROCEDURE prepare_data()
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 1;
|
||||
WHILE i < 1000 DO
|
||||
INSERT INTO t1 (a) VALUES (i);
|
||||
INSERT INTO t2 (a,b) VALUES (i,56);
|
||||
INSERT INTO t3 (c,b) VALUES (i,i);
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END$$
|
||||
CALL prepare_data();
|
||||
SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27);
|
||||
a
|
||||
7878
|
||||
3465
|
||||
1403
|
||||
4189
|
||||
8732
|
||||
5
|
||||
set @save_optimizer_switch= @@optimizer_switch;
|
||||
SET optimizer_switch='materialization=off';
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||
a
|
||||
5
|
||||
SET optimizer_switch='materialization=on';
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||
a
|
||||
5
|
||||
drop procedure prepare_data;
|
||||
set @@optimizer_switch= @save_optimizer_switch;
|
||||
drop table t1,t2,t3;
|
||||
CREATE TABLE t1 ( id int NOT NULL, key(id));
|
||||
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL);
|
||||
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||
CREATE VIEW v1 AS SELECT t2.i1 FROM t2 where t2.i1 = t2.i2;
|
||||
explain SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||
1 PRIMARY t1 ref id id 4 test.t2.i1 2 Using index
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1,t2;
|
||||
drop view v1;
|
||||
# End of 5.5 tests
|
||||
#
|
||||
# MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
||||
|
@@ -2431,6 +2431,99 @@ ec70316637232000158bbfc8bcbe5d60
|
||||
ebb4620037332000158bbfc8bcbe5d89
|
||||
DROP TABLE t1,t2,t3;
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
#
|
||||
# MDEV-16751: Server crashes in st_join_table::cleanup or
|
||||
# TABLE_LIST::is_with_table_recursive_reference with join_cache_level>2
|
||||
#
|
||||
set @save_join_cache_level= @@join_cache_level;
|
||||
set join_cache_level=4;
|
||||
CREATE TABLE t1 ( id int NOT NULL);
|
||||
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL) ;
|
||||
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||
explain
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||
1 PRIMARY t1 hash_ALL NULL #hash#$hj 4 test.t2.i1 9 Using where; Using join buffer (flat, BNLH join)
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
set @@join_cache_level= @save_join_cache_level;
|
||||
alter table t1 add key(id);
|
||||
explain
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||
1 PRIMARY t1 ref id id 4 test.t2.i1 2 Using index
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1,t2;
|
||||
#
|
||||
# MDEV-15454: Nested SELECT IN returns wrong results
|
||||
#
|
||||
CREATE TABLE t1 ( a int NOT NULL PRIMARY KEY);
|
||||
CREATE TABLE t2 ( a int, b int );
|
||||
INSERT INTO t2 VALUES (7878, 96),(3465, 96),(1403, 96),(4189, 96),(8732, 96), (5,96);
|
||||
CREATE TABLE t3 (c int unsigned NOT NULL, b int unsigned NOT NULL, PRIMARY KEY (c,b));
|
||||
INSERT INTO t3 (c, b) VALUES (27, 96);
|
||||
CREATE PROCEDURE prepare_data()
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 1;
|
||||
WHILE i < 1000 DO
|
||||
INSERT INTO t1 (a) VALUES (i);
|
||||
INSERT INTO t2 (a,b) VALUES (i,56);
|
||||
INSERT INTO t3 (c,b) VALUES (i,i);
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END$$
|
||||
CALL prepare_data();
|
||||
SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27);
|
||||
a
|
||||
7878
|
||||
3465
|
||||
1403
|
||||
4189
|
||||
8732
|
||||
5
|
||||
set @save_optimizer_switch= @@optimizer_switch;
|
||||
SET optimizer_switch='materialization=off';
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||
a
|
||||
5
|
||||
SET optimizer_switch='materialization=on';
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||
a
|
||||
5
|
||||
drop procedure prepare_data;
|
||||
set @@optimizer_switch= @save_optimizer_switch;
|
||||
drop table t1,t2,t3;
|
||||
CREATE TABLE t1 ( id int NOT NULL, key(id));
|
||||
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL);
|
||||
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||
CREATE VIEW v1 AS SELECT t2.i1 FROM t2 where t2.i1 = t2.i2;
|
||||
explain SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <subquery2> ALL distinct_key NULL NULL NULL 3
|
||||
1 PRIMARY t1 ref id id 4 test.t2.i1 2 Using index
|
||||
2 MATERIALIZED t2 ALL NULL NULL NULL NULL 3 Using where
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||
1
|
||||
1
|
||||
1
|
||||
1
|
||||
drop table t1,t2;
|
||||
drop view v1;
|
||||
# End of 5.5 tests
|
||||
#
|
||||
# MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
||||
|
@@ -2105,6 +2105,22 @@ DROP VIEW v1;
|
||||
UNION
|
||||
(SELECT 2, 2);
|
||||
ERROR 42S02: Table 'test.v1' doesn't exist
|
||||
#
|
||||
# Bug#27197235 USER VARIABLE + UINON + DECIMAL COLUMN RETURNS
|
||||
# WRONG VALUES
|
||||
#
|
||||
SET NAMES utf8;
|
||||
SET @advertAcctId = 1000003;
|
||||
select @advertAcctId as a from dual union all select 1.0 from dual;
|
||||
a
|
||||
1000003.0
|
||||
1.0
|
||||
SET NAMES latin1;
|
||||
SET @advertAcctId = 1000003;
|
||||
select @advertAcctId as a from dual union all select 1.0 from dual;
|
||||
a
|
||||
1000003.0
|
||||
1.0
|
||||
End of 5.5 tests
|
||||
#
|
||||
# WL#1763 Avoid creating temporary table in UNION ALL
|
||||
|
@@ -28,7 +28,7 @@ SET GLOBAL innodb_default_row_format=Dynamic;
|
||||
CREATE TABLE tab(a INT) ENGINE=InnoDB;
|
||||
ALTER TABLE tab DISCARD TABLESPACE;
|
||||
ALTER TABLE tab IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1)
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||
DROP TABLE tab;
|
||||
SET GLOBAL innodb_default_row_format=Compact;
|
||||
SELECT @@innodb_default_row_format;
|
||||
|
@@ -1,4 +1,3 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
SET GLOBAL innodb_file_per_table = 1;
|
||||
SELECT @@innodb_file_per_table;
|
||||
@@innodb_file_per_table
|
||||
@@ -580,7 +579,7 @@ SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x0)
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x0; .cfg file uses ROW_FORMAT=REDUNDANT)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
@@ -592,7 +591,19 @@ SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x0)
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x0; .cfg file uses ROW_FORMAT=REDUNDANT)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x29 and the meta-data file has 0x0; .cfg file uses ROW_FORMAT=REDUNDANT)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
@@ -766,7 +777,7 @@ SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x1)
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
@@ -778,7 +789,19 @@ SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1)
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x29 and the meta-data file has 0x1; .cfg file uses ROW_FORMAT=COMPACT)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
@@ -955,7 +978,7 @@ SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x21)
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x21; .cfg file uses ROW_FORMAT=DYNAMIC)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
@@ -967,7 +990,19 @@ SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x21)
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x21; .cfg file uses ROW_FORMAT=DYNAMIC)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x29 and the meta-data file has 0x21; .cfg file uses ROW_FORMAT=DYNAMIC)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
@@ -1026,6 +1061,220 @@ c1 c2
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
backup: t1
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
unlink: t1.cfg
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x0 and the meta-data file has 0x29; .cfg file uses ROW_FORMAT=COMPRESSED)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x1 and the meta-data file has 0x29; .cfg file uses ROW_FORMAT=COMPRESSED)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x21 and the meta-data file has 0x29; .cfg file uses ROW_FORMAT=COMPRESSED)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
ERROR HY000: Schema mismatch (Table flags don't match, server table has 0x23 and the meta-data file has 0x29; .cfg file uses ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8)
|
||||
unlink: t1.ibd
|
||||
unlink: t1.cfg
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Tablespace has been discarded for table 't1'
|
||||
restore: t1 .ibd and .cfg files
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
unlink: t1.cfg
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`c2` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`c1`),
|
||||
KEY `idx` (`c2`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=latin1 ROW_FORMAT=COMPRESSED
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 1
|
||||
2 1
|
||||
3 1
|
||||
4 1
|
||||
6 1
|
||||
7 1
|
||||
8 1
|
||||
9 1
|
||||
13 1
|
||||
14 1
|
||||
15 1
|
||||
16 1
|
||||
17 1
|
||||
18 1
|
||||
19 1
|
||||
20 1
|
||||
28 1
|
||||
29 1
|
||||
30 1
|
||||
31 1
|
||||
32 1
|
||||
33 1
|
||||
34 1
|
||||
35 1
|
||||
36 1
|
||||
37 1
|
||||
38 1
|
||||
39 1
|
||||
40 1
|
||||
41 1
|
||||
42 1
|
||||
43 1
|
||||
DROP TABLE t1;
|
||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||
|
@@ -3,10 +3,6 @@
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
let $innodb_file_per_table = `SELECT @@innodb_file_per_table`;
|
||||
let $innodb_file_format = `SELECT @@innodb_file_format`;
|
||||
|
||||
@@ -481,7 +477,7 @@ SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Row format tests [EXPORT REDUNDANT - IMPORT COMPACT & DYNAMIC]
|
||||
# EXPORT ROW_FORMAT=REDUNDANT
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@@ -583,6 +579,29 @@ EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--error ER_TABLE_SCHEMA_MISMATCH
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# This should be OK.
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@@ -611,7 +630,7 @@ SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Row format tests [EXPORT COMPACT - IMPORT REDUNDANT & DYNAMIC]
|
||||
# EXPORT ROW_FORMAT=COMPACT
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@@ -713,6 +732,29 @@ EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--error ER_TABLE_SCHEMA_MISMATCH
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# This should be OK.
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@@ -742,7 +784,7 @@ SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Row format tests [EXPORT DYNAMIC- IMPORT REDUNDANT & DYNAMIC]
|
||||
# EXPORT ROW_FORMAT=DYNAMIC
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@@ -844,6 +886,29 @@ EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--error ER_TABLE_SCHEMA_MISMATCH
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# This should be OK.
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
@@ -872,6 +937,185 @@ SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# EXPORT ROW_FORMAT=COMPRESSED
|
||||
#
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
|
||||
INSERT INTO t1(c2) VALUES(1);
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
INSERT INTO t1(c2) SELECT c2 FROM t1;
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
FLUSH TABLES t1 FOR EXPORT;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_backup_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
UNLOCK TABLES;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_cleanup("test", "t1");
|
||||
EOF
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--error ER_TABLE_SCHEMA_MISMATCH
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPACT;
|
||||
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--error ER_TABLE_SCHEMA_MISMATCH
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--error ER_TABLE_SCHEMA_MISMATCH
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB
|
||||
ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=1;
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
--error ER_TABLE_SCHEMA_MISMATCH
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_unlink_tablespace("test", "t1");
|
||||
EOF
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
# This should be OK.
|
||||
CREATE TABLE t1(
|
||||
c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
c2 INT, INDEX idx(c2)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
|
||||
ALTER TABLE t1 DISCARD TABLESPACE;
|
||||
--error ER_TABLESPACE_DISCARDED
|
||||
SELECT * FROM t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_discard_tablespaces("test", "t1");
|
||||
ib_restore_tablespaces("test", "t1");
|
||||
EOF
|
||||
|
||||
ALTER TABLE t1 IMPORT TABLESPACE;
|
||||
CHECK TABLE t1;
|
||||
|
||||
perl;
|
||||
do "$ENV{MTR_SUITE_DIR}/include/innodb-util.pl";
|
||||
ib_cleanup("test", "t1");
|
||||
EOF
|
||||
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
call mtr.add_suppression("Got error -1 when reading table '.*'");
|
||||
call mtr.add_suppression("InnoDB: Error: tablespace id and flags in file '.*'.*");
|
||||
call mtr.add_suppression("InnoDB: The table .* doesn't have a corresponding tablespace, it was discarded");
|
||||
|
@@ -1210,7 +1210,7 @@
|
||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME INNODB_VERSION
|
||||
SESSION_VALUE NULL
|
||||
-GLOBAL_VALUE 5.6.40
|
||||
-GLOBAL_VALUE 5.6.41
|
||||
+GLOBAL_VALUE 5.6.39-83.1
|
||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
DEFAULT_VALUE NULL
|
||||
|
@@ -1,5 +1,5 @@
|
||||
--- suite/sys_vars/r/sysvars_innodb.result
|
||||
+++ suite/sys_vars/r/sysvars_innodb,xtradb.reject
|
||||
--- mysql-test/suite/sys_vars/r/sysvars_innodb.result 2018-07-30 23:41:05.030930072 +0200
|
||||
+++ mysql-test/suite/sys_vars/r/sysvars_innodb,xtradb.reject 2018-07-31 09:45:20.330811949 +0200
|
||||
@@ -47,6 +47,20 @@
|
||||
ENUM_VALUE_LIST OFF,ON
|
||||
READ_ONLY NO
|
||||
@@ -684,7 +684,7 @@
|
||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME INNODB_VERSION
|
||||
SESSION_VALUE NULL
|
||||
-GLOBAL_VALUE 5.6.40
|
||||
-GLOBAL_VALUE 5.6.41
|
||||
+GLOBAL_VALUE 5.6.39-83.1
|
||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
DEFAULT_VALUE NULL
|
||||
|
@@ -2401,7 +2401,7 @@ READ_ONLY NO
|
||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME INNODB_VERSION
|
||||
SESSION_VALUE NULL
|
||||
GLOBAL_VALUE 5.6.40
|
||||
GLOBAL_VALUE 5.6.41
|
||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
DEFAULT_VALUE NULL
|
||||
VARIABLE_SCOPE GLOBAL
|
||||
|
@@ -1653,6 +1653,9 @@ use test;
|
||||
#
|
||||
# Bug#16470 crash on grant if old grant tables
|
||||
#
|
||||
|
||||
call mtr.add_suppression("Can't open and lock privilege tables");
|
||||
|
||||
--echo FLUSH PRIVILEGES without procs_priv table.
|
||||
RENAME TABLE mysql.procs_priv TO mysql.procs_gone;
|
||||
FLUSH PRIVILEGES;
|
||||
|
@@ -2157,6 +2157,85 @@ eval $q;
|
||||
DROP TABLE t1,t2,t3;
|
||||
set optimizer_switch=@save_optimizer_switch;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16751: Server crashes in st_join_table::cleanup or
|
||||
--echo # TABLE_LIST::is_with_table_recursive_reference with join_cache_level>2
|
||||
--echo #
|
||||
|
||||
set @save_join_cache_level= @@join_cache_level;
|
||||
set join_cache_level=4;
|
||||
CREATE TABLE t1 ( id int NOT NULL);
|
||||
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||
|
||||
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL) ;
|
||||
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||
|
||||
explain
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
|
||||
set @@join_cache_level= @save_join_cache_level;
|
||||
alter table t1 add key(id);
|
||||
|
||||
explain
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT t2.i1 FROM t2 WHERE t2.i1 = t2.i2);
|
||||
|
||||
drop table t1,t2;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-15454: Nested SELECT IN returns wrong results
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 ( a int NOT NULL PRIMARY KEY);
|
||||
|
||||
CREATE TABLE t2 ( a int, b int );
|
||||
INSERT INTO t2 VALUES (7878, 96),(3465, 96),(1403, 96),(4189, 96),(8732, 96), (5,96);
|
||||
|
||||
CREATE TABLE t3 (c int unsigned NOT NULL, b int unsigned NOT NULL, PRIMARY KEY (c,b));
|
||||
INSERT INTO t3 (c, b) VALUES (27, 96);
|
||||
|
||||
DELIMITER $$;
|
||||
CREATE PROCEDURE prepare_data()
|
||||
BEGIN
|
||||
DECLARE i INT DEFAULT 1;
|
||||
WHILE i < 1000 DO
|
||||
INSERT INTO t1 (a) VALUES (i);
|
||||
INSERT INTO t2 (a,b) VALUES (i,56);
|
||||
INSERT INTO t3 (c,b) VALUES (i,i);
|
||||
SET i = i + 1;
|
||||
END WHILE;
|
||||
END$$
|
||||
DELIMITER ;$$
|
||||
|
||||
CALL prepare_data();
|
||||
|
||||
SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27);
|
||||
|
||||
set @save_optimizer_switch= @@optimizer_switch;
|
||||
SET optimizer_switch='materialization=off';
|
||||
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||
|
||||
SET optimizer_switch='materialization=on';
|
||||
|
||||
SELECT t1.a FROM t1
|
||||
WHERE t1.a IN (SELECT t2.a FROM t2 WHERE t2.b IN (SELECT t3.b FROM t3 WHERE t3.c= 27)) LIMIT 5;
|
||||
|
||||
drop procedure prepare_data;
|
||||
set @@optimizer_switch= @save_optimizer_switch;
|
||||
drop table t1,t2,t3;
|
||||
|
||||
CREATE TABLE t1 ( id int NOT NULL, key(id));
|
||||
INSERT INTO t1 VALUES (11),(12),(13),(14),(15),(16),(17),(18),(19);
|
||||
CREATE TABLE t2 (i1 int NOT NULL, i2 int NOT NULL);
|
||||
INSERT INTO t2 VALUES (11,11),(12,12),(13,13);
|
||||
CREATE VIEW v1 AS SELECT t2.i1 FROM t2 where t2.i1 = t2.i2;
|
||||
explain SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||
SELECT 1 FROM t1 where t1.id IN (SELECT v1.i1 from v1);
|
||||
drop table t1,t2;
|
||||
drop view v1;
|
||||
--echo # End of 5.5 tests
|
||||
--echo #
|
||||
--echo # MDEV-7220: Materialization strategy is not used for REPLACE ... SELECT
|
||||
|
@@ -1455,6 +1455,21 @@ DROP VIEW v1;
|
||||
UNION
|
||||
(SELECT 2, 2);
|
||||
|
||||
--echo #
|
||||
--echo # Bug#27197235 USER VARIABLE + UINON + DECIMAL COLUMN RETURNS
|
||||
--echo # WRONG VALUES
|
||||
--echo #
|
||||
|
||||
let $old_charset= `SELECT @@character_set_client`;
|
||||
|
||||
SET NAMES utf8;
|
||||
SET @advertAcctId = 1000003;
|
||||
select @advertAcctId as a from dual union all select 1.0 from dual;
|
||||
|
||||
eval SET NAMES $old_charset;
|
||||
SET @advertAcctId = 1000003;
|
||||
select @advertAcctId as a from dual union all select 1.0 from dual;
|
||||
|
||||
--echo End of 5.5 tests
|
||||
|
||||
--echo #
|
||||
|
@@ -1463,6 +1463,7 @@ MYSQL_DATA *cli_read_rows(MYSQL *mysql,MYSQL_FIELD *mysql_fields,
|
||||
|
||||
if ((pkt_len= cli_safe_read(mysql)) == packet_error)
|
||||
DBUG_RETURN(0);
|
||||
if (pkt_len == 0) DBUG_RETURN(0);
|
||||
if (!(result=(MYSQL_DATA*) my_malloc(sizeof(MYSQL_DATA),
|
||||
MYF(MY_WME | MY_ZEROFILL))))
|
||||
{
|
||||
@@ -2582,6 +2583,9 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
|
||||
enum enum_ssl_init_error ssl_init_error;
|
||||
const char *cert_error;
|
||||
unsigned long ssl_error;
|
||||
#ifdef EMBEDDED_LIBRARY
|
||||
DBUG_ASSERT(0); // embedded should not do SSL connect
|
||||
#endif
|
||||
|
||||
/*
|
||||
Send mysql->client_flag, max_packet_size - unencrypted otherwise
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2016, Oracle and/or its affiliates.
|
||||
Copyright (c) 2000, 2018, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2018, MariaDB Corporation
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -9581,6 +9581,7 @@ bool Item_type_holder::join_types(THD *thd, Item *item)
|
||||
|
||||
if (Field::result_merge_type(fld_type) == DECIMAL_RESULT)
|
||||
{
|
||||
collation.set_numeric();
|
||||
decimals= MY_MIN(MY_MAX(decimals, item->decimals), DECIMAL_MAX_SCALE);
|
||||
int item_int_part= item->decimal_int_part();
|
||||
int item_prec = MY_MAX(prev_decimal_int_part, item_int_part) + decimals;
|
||||
|
@@ -441,6 +441,7 @@ bool subquery_types_allow_materialization(Item_in_subselect *in_subs);
|
||||
static bool replace_where_subcondition(JOIN *, Item **, Item *, Item *, bool);
|
||||
static int subq_sj_candidate_cmp(Item_in_subselect* el1, Item_in_subselect* el2,
|
||||
void *arg);
|
||||
static void reset_equality_number_for_subq_conds(Item * cond);
|
||||
static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred);
|
||||
static bool convert_subq_to_jtbm(JOIN *parent_join,
|
||||
Item_in_subselect *subq_pred, bool *remove);
|
||||
@@ -817,6 +818,9 @@ int check_and_do_in_subquery_rewrites(JOIN *join)
|
||||
details)
|
||||
* require that compared columns have exactly the same type. This is
|
||||
a temporary measure to avoid BUG#36752-type problems.
|
||||
|
||||
JOIN_TAB::keyuse_is_valid_for_access_in_chosen_plan expects that for Semi Join Materialization
|
||||
Scan all the items in the select list of the IN Subquery are of the type Item::FIELD_ITEM.
|
||||
*/
|
||||
|
||||
static
|
||||
@@ -1456,6 +1460,67 @@ static int subq_sj_candidate_cmp(Item_in_subselect* el1, Item_in_subselect* el2,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
@brief
|
||||
reset the value of the field in_eqaulity_no for all Item_func_eq
|
||||
items in the where clause of the subquery.
|
||||
|
||||
Look for in_equality_no description in Item_func_eq class
|
||||
|
||||
DESCRIPTION
|
||||
Lets have an example:
|
||||
SELECT t1.a FROM t1 WHERE t1.a IN
|
||||
(SELECT t2.a FROM t2 where t2.b IN
|
||||
(select t3.b from t3 where t3.c=27 ))
|
||||
|
||||
So for such a query we have the parent, child and
|
||||
grandchild select.
|
||||
|
||||
So for the equality t2.b = t3.b we set the value for in_equality_no to
|
||||
0 according to its description. Wewe do the same for t1.a = t2.a.
|
||||
But when we look at the child select (with the grandchild select merged),
|
||||
the query would be
|
||||
|
||||
SELECT t1.a FROM t1 WHERE t1.a IN
|
||||
(SELECT t2.a FROM t2 where t2.b = t3.b and t3.c=27)
|
||||
|
||||
and then when the child select is merged into the parent select the query
|
||||
would look like
|
||||
|
||||
SELECT t1.a FROM t1, semi-join-nest(t2,t3)
|
||||
WHERE t1.a =t2.a and t2.b = t3.b and t3.c=27
|
||||
|
||||
Still we would have in_equality_no set for t2.b = t3.b
|
||||
though it does not take part in the semi-join equality for the parent select,
|
||||
so we should reset its value to UINT_MAX.
|
||||
|
||||
@param cond WHERE clause of the subquery
|
||||
*/
|
||||
|
||||
static void reset_equality_number_for_subq_conds(Item * cond)
|
||||
{
|
||||
if (!cond)
|
||||
return;
|
||||
if (cond->type() == Item::COND_ITEM)
|
||||
{
|
||||
List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
|
||||
Item *item;
|
||||
while ((item=li++))
|
||||
{
|
||||
if (item->type() == Item::FUNC_ITEM &&
|
||||
((Item_func*)item)->functype()== Item_func::EQ_FUNC)
|
||||
((Item_func_eq*)item)->in_equality_no= UINT_MAX;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (cond->type() == Item::FUNC_ITEM &&
|
||||
((Item_func*)cond)->functype()== Item_func::EQ_FUNC)
|
||||
((Item_func_eq*)cond)->in_equality_no= UINT_MAX;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
Convert a subquery predicate into a TABLE_LIST semi-join nest
|
||||
|
||||
@@ -1719,6 +1784,7 @@ static bool convert_subq_to_sj(JOIN *parent_join, Item_in_subselect *subq_pred)
|
||||
*/
|
||||
sj_nest->sj_in_exprs= subq_pred->left_expr->cols();
|
||||
sj_nest->nested_join->sj_outer_expr_list.empty();
|
||||
reset_equality_number_for_subq_conds(sj_nest->sj_on_expr);
|
||||
|
||||
if (subq_pred->left_expr->cols() == 1)
|
||||
{
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2000, 2016, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2000, 2018, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2018, MariaDB
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -10182,17 +10182,12 @@ bool sp_grant_privileges(THD *thd, const char *sp_db, const char *sp_name,
|
||||
if (!(combo=(LEX_USER*) thd->alloc(sizeof(st_lex_user))))
|
||||
DBUG_RETURN(TRUE);
|
||||
|
||||
combo->user.str= sctx->user;
|
||||
combo->user.str= (char *) sctx->priv_user;
|
||||
|
||||
mysql_mutex_lock(&acl_cache->lock);
|
||||
|
||||
if ((au= find_user_wild(combo->host.str=(char*)sctx->host_or_ip, combo->user.str)))
|
||||
goto found_acl;
|
||||
if ((au= find_user_wild(combo->host.str=(char*)sctx->host, combo->user.str)))
|
||||
goto found_acl;
|
||||
if ((au= find_user_wild(combo->host.str=(char*)sctx->ip, combo->user.str)))
|
||||
goto found_acl;
|
||||
if ((au= find_user_wild(combo->host.str=(char*)"%", combo->user.str)))
|
||||
if ((au= find_user_wild(combo->host.str= (char *) sctx->priv_host,
|
||||
combo->user.str)))
|
||||
goto found_acl;
|
||||
|
||||
mysql_mutex_unlock(&acl_cache->lock);
|
||||
|
@@ -8319,8 +8319,13 @@ bool JOIN_TAB::keyuse_is_valid_for_access_in_chosen_plan(JOIN *join,
|
||||
st_select_lex *sjm_sel= emb_sj_nest->sj_subq_pred->unit->first_select();
|
||||
for (uint i= 0; i < sjm_sel->item_list.elements; i++)
|
||||
{
|
||||
if (sjm_sel->ref_pointer_array[i] == keyuse->val)
|
||||
return true;
|
||||
DBUG_ASSERT(sjm_sel->ref_pointer_array[i]->real_item()->type() == Item::FIELD_ITEM);
|
||||
if (keyuse->val->real_item()->type() == Item::FIELD_ITEM)
|
||||
{
|
||||
Field *field = ((Item_field*)sjm_sel->ref_pointer_array[i]->real_item())->field;
|
||||
if (field->eq(((Item_field*)keyuse->val->real_item())->field))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@@ -132,7 +132,7 @@ buf_buddy_stamp_free(
|
||||
buf_buddy_free_t* buf, /*!< in/out: block to stamp */
|
||||
ulint i) /*!< in: block size */
|
||||
{
|
||||
ut_d(memset(buf, static_cast<int>(i), BUF_BUDDY_LOW << i));
|
||||
ut_d(memset(&buf->stamp.bytes, int(i), BUF_BUDDY_LOW << i));
|
||||
buf_buddy_mem_invalid(buf, i);
|
||||
mach_write_to_4(buf->stamp.bytes + BUF_BUDDY_STAMP_OFFSET,
|
||||
BUF_BUDDY_STAMP_FREE);
|
||||
|
@@ -201,7 +201,7 @@ buf_dump(
|
||||
#define SHOULD_QUIT() (SHUTTING_DOWN() && obey_shutdown)
|
||||
|
||||
char full_filename[OS_FILE_MAX_PATH];
|
||||
char tmp_filename[OS_FILE_MAX_PATH];
|
||||
char tmp_filename[OS_FILE_MAX_PATH + sizeof "incomplete"];
|
||||
char now[32];
|
||||
FILE* f;
|
||||
ulint i;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 2011, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2011, 2018, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2016, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -869,37 +869,28 @@ fts_drop_index(
|
||||
|
||||
err = fts_drop_index_tables(trx, index);
|
||||
|
||||
for(;;) {
|
||||
bool retry = false;
|
||||
if (index->index_fts_syncing) {
|
||||
retry = true;
|
||||
}
|
||||
if (!retry){
|
||||
fts_free(table);
|
||||
break;
|
||||
}
|
||||
while (index->index_fts_syncing
|
||||
&& !trx_is_interrupted(trx)) {
|
||||
DICT_BG_YIELD(trx);
|
||||
}
|
||||
|
||||
fts_free(table);
|
||||
|
||||
return(err);
|
||||
}
|
||||
|
||||
for(;;) {
|
||||
bool retry = false;
|
||||
if (index->index_fts_syncing) {
|
||||
retry = true;
|
||||
}
|
||||
if (!retry){
|
||||
current_doc_id = table->fts->cache->next_doc_id;
|
||||
first_doc_id = table->fts->cache->first_doc_id;
|
||||
fts_cache_clear(table->fts->cache);
|
||||
fts_cache_destroy(table->fts->cache);
|
||||
table->fts->cache = fts_cache_create(table);
|
||||
table->fts->cache->next_doc_id = current_doc_id;
|
||||
table->fts->cache->first_doc_id = first_doc_id;
|
||||
break;
|
||||
}
|
||||
while (index->index_fts_syncing
|
||||
&& !trx_is_interrupted(trx)) {
|
||||
DICT_BG_YIELD(trx);
|
||||
}
|
||||
|
||||
current_doc_id = table->fts->cache->next_doc_id;
|
||||
first_doc_id = table->fts->cache->first_doc_id;
|
||||
fts_cache_clear(table->fts->cache);
|
||||
fts_cache_destroy(table->fts->cache);
|
||||
table->fts->cache = fts_cache_create(table);
|
||||
table->fts->cache->next_doc_id = current_doc_id;
|
||||
table->fts->cache->first_doc_id = first_doc_id;
|
||||
} else {
|
||||
fts_cache_t* cache = table->fts->cache;
|
||||
fts_index_cache_t* index_cache;
|
||||
@@ -909,18 +900,14 @@ fts_drop_index(
|
||||
index_cache = fts_find_index_cache(cache, index);
|
||||
|
||||
if (index_cache != NULL) {
|
||||
for(;;) {
|
||||
bool retry = false;
|
||||
if (index->index_fts_syncing) {
|
||||
retry = true;
|
||||
}
|
||||
if (!retry && index_cache->words) {
|
||||
fts_words_free(index_cache->words);
|
||||
rbt_free(index_cache->words);
|
||||
break;
|
||||
}
|
||||
while (index->index_fts_syncing
|
||||
&& !trx_is_interrupted(trx)) {
|
||||
DICT_BG_YIELD(trx);
|
||||
}
|
||||
if (index_cache->words) {
|
||||
fts_words_free(index_cache->words);
|
||||
rbt_free(index_cache->words);
|
||||
}
|
||||
|
||||
ib_vector_remove(cache->indexes, *(void**) index_cache);
|
||||
}
|
||||
|
@@ -12835,6 +12835,7 @@ static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
||||
dberr_t
|
||||
innobase_rename_table(
|
||||
/*==================*/
|
||||
THD* thd, /*!< Connection thread handle */
|
||||
trx_t* trx, /*!< in: transaction */
|
||||
const char* from, /*!< in: old name of the table */
|
||||
const char* to) /*!< in: new name of the table */
|
||||
@@ -12860,6 +12861,36 @@ innobase_rename_table(
|
||||
|
||||
row_mysql_lock_data_dictionary(trx);
|
||||
|
||||
dict_table_t* table = dict_table_open_on_name(norm_from, TRUE, FALSE,
|
||||
DICT_ERR_IGNORE_NONE);
|
||||
|
||||
/* Since DICT_BG_YIELD has sleep for 250 milliseconds,
|
||||
Convert lock_wait_timeout unit from second to 250 milliseconds */
|
||||
long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4;
|
||||
if (table != NULL) {
|
||||
for (dict_index_t* index = dict_table_get_first_index(table);
|
||||
index != NULL;
|
||||
index = dict_table_get_next_index(index)) {
|
||||
|
||||
if (index->type & DICT_FTS) {
|
||||
/* Found */
|
||||
while (index->index_fts_syncing
|
||||
&& !trx_is_interrupted(trx)
|
||||
&& (lock_wait_timeout--) > 0) {
|
||||
DICT_BG_YIELD(trx);
|
||||
}
|
||||
}
|
||||
}
|
||||
dict_table_close(table, TRUE, FALSE);
|
||||
}
|
||||
|
||||
/* FTS sync is in progress. We shall timeout this operation */
|
||||
if (lock_wait_timeout < 0) {
|
||||
error = DB_LOCK_WAIT_TIMEOUT;
|
||||
row_mysql_unlock_data_dictionary(trx);
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
/* Transaction must be flagged as a locking transaction or it hasn't
|
||||
been started yet. */
|
||||
|
||||
@@ -12969,7 +13000,7 @@ ha_innobase::rename_table(
|
||||
++trx->will_lock;
|
||||
trx_set_dict_operation(trx, TRX_DICT_OP_INDEX);
|
||||
|
||||
error = innobase_rename_table(trx, from, to);
|
||||
error = innobase_rename_table(thd, trx, from, to);
|
||||
|
||||
DEBUG_SYNC(thd, "after_innobase_rename_table");
|
||||
|
||||
@@ -13013,6 +13044,10 @@ ha_innobase::rename_table(
|
||||
my_error(ER_TABLE_EXISTS_ERROR, MYF(0), to);
|
||||
|
||||
error = DB_ERROR;
|
||||
} else if (error == DB_LOCK_WAIT_TIMEOUT) {
|
||||
my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), to);
|
||||
|
||||
error = DB_LOCK_WAIT;
|
||||
}
|
||||
|
||||
DBUG_RETURN(convert_error_code_to_mysql(error, 0, NULL));
|
||||
|
@@ -1428,19 +1428,16 @@ i_s_cmp_fill_low(
|
||||
clear it. We could introduce mutex protection, but it
|
||||
could cause a measureable performance hit in
|
||||
page0zip.cc. */
|
||||
table->field[1]->store(
|
||||
static_cast<double>(zip_stat->compressed));
|
||||
table->field[2]->store(
|
||||
static_cast<double>(zip_stat->compressed_ok));
|
||||
table->field[3]->store(
|
||||
static_cast<double>(zip_stat->compressed_usec / 1000000));
|
||||
table->field[4]->store(
|
||||
static_cast<double>(zip_stat->decompressed));
|
||||
table->field[5]->store(
|
||||
static_cast<double>(zip_stat->decompressed_usec / 1000000));
|
||||
table->field[1]->store(zip_stat->compressed, true);
|
||||
table->field[2]->store(zip_stat->compressed_ok, true);
|
||||
table->field[3]->store(zip_stat->compressed_usec / 1000000,
|
||||
true);
|
||||
table->field[4]->store(zip_stat->decompressed, true);
|
||||
table->field[5]->store(zip_stat->decompressed_usec / 1000000,
|
||||
true);
|
||||
|
||||
if (reset) {
|
||||
memset(zip_stat, 0, sizeof *zip_stat);
|
||||
new (zip_stat) page_zip_stat_t();
|
||||
}
|
||||
|
||||
if (schema_table_store_record(thd, table)) {
|
||||
|
@@ -45,7 +45,7 @@ Created 1/20/1994 Heikki Tuuri
|
||||
|
||||
#define INNODB_VERSION_MAJOR 5
|
||||
#define INNODB_VERSION_MINOR 6
|
||||
#define INNODB_VERSION_BUGFIX 40
|
||||
#define INNODB_VERSION_BUGFIX 41
|
||||
|
||||
/* The following is the InnoDB version as shown in
|
||||
SELECT plugin_version FROM information_schema.plugins;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 2012, 2018, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2012, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2015, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -111,18 +111,18 @@ struct row_index_t {
|
||||
struct row_import {
|
||||
row_import() UNIV_NOTHROW
|
||||
:
|
||||
m_table(),
|
||||
m_version(),
|
||||
m_hostname(),
|
||||
m_table_name(),
|
||||
m_autoinc(),
|
||||
m_page_size(),
|
||||
m_flags(),
|
||||
m_n_cols(),
|
||||
m_cols(),
|
||||
m_col_names(),
|
||||
m_n_indexes(),
|
||||
m_indexes(),
|
||||
m_table(NULL),
|
||||
m_version(0),
|
||||
m_hostname(NULL),
|
||||
m_table_name(NULL),
|
||||
m_autoinc(0),
|
||||
m_page_size(0),
|
||||
m_flags(0),
|
||||
m_n_cols(0),
|
||||
m_cols(NULL),
|
||||
m_col_names(NULL),
|
||||
m_n_indexes(0),
|
||||
m_indexes(NULL),
|
||||
m_missing(true) { }
|
||||
|
||||
~row_import() UNIV_NOTHROW;
|
||||
@@ -1298,17 +1298,63 @@ row_import::match_schema(
|
||||
{
|
||||
/* Do some simple checks. */
|
||||
|
||||
if ((m_table->flags ^ m_flags) & ~DICT_TF_MASK_DATA_DIR) {
|
||||
if (ulint mismatch = (m_table->flags ^ m_flags)
|
||||
& ~DICT_TF_MASK_DATA_DIR) {
|
||||
const char* msg;
|
||||
if (mismatch & DICT_TF_MASK_ZIP_SSIZE) {
|
||||
if ((m_table->flags & DICT_TF_MASK_ZIP_SSIZE)
|
||||
&& (m_flags & DICT_TF_MASK_ZIP_SSIZE)) {
|
||||
switch (m_flags & DICT_TF_MASK_ZIP_SSIZE) {
|
||||
case 0U << DICT_TF_POS_ZIP_SSIZE:
|
||||
goto uncompressed;
|
||||
case 1U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=1";
|
||||
break;
|
||||
case 2U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=2";
|
||||
break;
|
||||
case 3U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=4";
|
||||
break;
|
||||
case 4U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=8";
|
||||
break;
|
||||
case 5U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=16";
|
||||
break;
|
||||
default:
|
||||
msg = "strange KEY_BLOCK_SIZE";
|
||||
}
|
||||
} else if (m_flags & DICT_TF_MASK_ZIP_SSIZE) {
|
||||
msg = "ROW_FORMAT=COMPRESSED";
|
||||
} else {
|
||||
goto uncompressed;
|
||||
}
|
||||
} else {
|
||||
uncompressed:
|
||||
msg = (m_flags & DICT_TF_MASK_ATOMIC_BLOBS)
|
||||
? "ROW_FORMAT=DYNAMIC"
|
||||
: (m_flags & DICT_TF_MASK_COMPACT)
|
||||
? "ROW_FORMAT=COMPACT"
|
||||
: "ROW_FORMAT=REDUNDANT";
|
||||
}
|
||||
|
||||
ib_errf(thd, IB_LOG_LEVEL_ERROR, ER_TABLE_SCHEMA_MISMATCH,
|
||||
"Table flags don't match, server table has 0x%x"
|
||||
" and the meta-data file has 0x%lx",
|
||||
m_table->flags, ulong(m_flags));
|
||||
" and the meta-data file has 0x%lx;"
|
||||
" .cfg file uses %s",
|
||||
m_table->flags, ulong(m_flags), msg);
|
||||
|
||||
return(DB_ERROR);
|
||||
} else if (m_table->n_cols != m_n_cols) {
|
||||
ib_errf(thd, IB_LOG_LEVEL_ERROR, ER_TABLE_SCHEMA_MISMATCH,
|
||||
"Number of columns don't match, table has %u"
|
||||
" columns but the tablespace meta-data file has "
|
||||
"Number of columns don't match, table has %u "
|
||||
"columns but the tablespace meta-data file has "
|
||||
ULINTPF " columns",
|
||||
m_table->n_cols, m_n_cols);
|
||||
|
||||
@@ -1792,7 +1838,6 @@ PageConverter::update_records(
|
||||
|
||||
while (!m_rec_iter.end()) {
|
||||
rec_t* rec = m_rec_iter.current();
|
||||
|
||||
ibool deleted = rec_get_deleted_flag(rec, comp);
|
||||
|
||||
/* For the clustered index we have to adjust the BLOB
|
||||
@@ -3899,8 +3944,6 @@ row_import_for_mysql(
|
||||
|
||||
row_import cfg;
|
||||
|
||||
memset(&cfg, 0x0, sizeof(cfg));
|
||||
|
||||
err = row_import_read_cfg(table, trx->mysql_thd, cfg);
|
||||
|
||||
/* Check if the table column definitions match the contents
|
||||
|
@@ -2295,6 +2295,7 @@ trx_get_trx_by_xid_low(
|
||||
|
||||
if (trx->is_recovered
|
||||
&& trx_state_eq(trx, TRX_STATE_PREPARED)
|
||||
&& !trx->xid.is_null()
|
||||
&& xid->gtrid_length == trx->xid.gtrid_length
|
||||
&& xid->bqual_length == trx->xid.bqual_length
|
||||
&& memcmp(xid->data, trx->xid.data,
|
||||
@@ -2302,8 +2303,7 @@ trx_get_trx_by_xid_low(
|
||||
|
||||
/* Invalidate the XID, so that subsequent calls
|
||||
will not find it. */
|
||||
memset(&trx->xid, 0, sizeof(trx->xid));
|
||||
trx->xid.formatID = -1;
|
||||
trx->xid.null();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -1314,8 +1314,7 @@ trx_undo_mem_create_at_db_start(
|
||||
/* Read X/Open XA transaction identification if it exists, or
|
||||
set it to NULL. */
|
||||
|
||||
memset(&xid, 0, sizeof(xid));
|
||||
xid.formatID = -1;
|
||||
xid.null();
|
||||
|
||||
if (xid_exists == TRUE) {
|
||||
trx_undo_read_xid(undo_header, &xid);
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2000, 2018, Oracle and/or its affiliates.
|
||||
Copyright (c) 2009, 2017, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -1241,10 +1241,14 @@ int ha_myisam::repair(THD *thd, HA_CHECK ¶m, bool do_optimize)
|
||||
if (file->s->base.auto_key)
|
||||
update_auto_increment_key(¶m, file, 1);
|
||||
if (optimize_done)
|
||||
{
|
||||
mysql_mutex_lock(&share->intern_lock);
|
||||
error = update_state_info(¶m, file,
|
||||
UPDATE_TIME | UPDATE_OPEN_COUNT |
|
||||
(local_testflag &
|
||||
T_STATISTICS ? UPDATE_STAT : 0));
|
||||
mysql_mutex_unlock(&share->intern_lock);
|
||||
}
|
||||
info(HA_STATUS_NO_LOCK | HA_STATUS_TIME | HA_STATUS_VARIABLE |
|
||||
HA_STATUS_CONST);
|
||||
if (rows != file->state->records && ! (param.testflag & T_VERY_SILENT))
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||
/* Copyright (c) 2000, 2018, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -4470,6 +4470,10 @@ int update_state_info(HA_CHECK *param, MI_INFO *info,uint update)
|
||||
int error;
|
||||
uint r_locks=share->r_locks,w_locks=share->w_locks;
|
||||
share->r_locks= share->w_locks= share->tot_locks= 0;
|
||||
|
||||
DBUG_EXECUTE_IF("simulate_incorrect_share_wlock_value",
|
||||
DEBUG_SYNC_C("after_share_wlock_set_to_0"););
|
||||
|
||||
error=_mi_writeinfo(info,WRITEINFO_NO_UNLOCK);
|
||||
share->r_locks=r_locks;
|
||||
share->w_locks=w_locks;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
/* Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2009, 2018, MariaDB Corporation
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@@ -236,6 +236,10 @@ int mi_lock_database(MI_INFO *info, int lock_type)
|
||||
info->invalidator=info->s->invalidator;
|
||||
share->w_locks++;
|
||||
share->tot_locks++;
|
||||
|
||||
DBUG_EXECUTE_IF("simulate_incorrect_share_wlock_value",
|
||||
DEBUG_SYNC_C("after_share_wlock_increment"););
|
||||
|
||||
info->s->in_use= list_add(info->s->in_use, &info->in_use);
|
||||
break;
|
||||
default:
|
||||
|
@@ -132,7 +132,7 @@ buf_buddy_stamp_free(
|
||||
buf_buddy_free_t* buf, /*!< in/out: block to stamp */
|
||||
ulint i) /*!< in: block size */
|
||||
{
|
||||
ut_d(memset(buf, static_cast<int>(i), BUF_BUDDY_LOW << i));
|
||||
ut_d(memset(&buf->stamp.bytes, int(i), BUF_BUDDY_LOW << i));
|
||||
buf_buddy_mem_invalid(buf, i);
|
||||
mach_write_to_4(buf->stamp.bytes + BUF_BUDDY_STAMP_OFFSET,
|
||||
BUF_BUDDY_STAMP_FREE);
|
||||
|
@@ -201,7 +201,7 @@ buf_dump(
|
||||
#define SHOULD_QUIT() (SHUTTING_DOWN() && obey_shutdown)
|
||||
|
||||
char full_filename[OS_FILE_MAX_PATH];
|
||||
char tmp_filename[OS_FILE_MAX_PATH];
|
||||
char tmp_filename[OS_FILE_MAX_PATH + sizeof "incomplete"];
|
||||
char now[32];
|
||||
FILE* f;
|
||||
ulint i;
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 2011, 2017, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2011, 2018, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2016, 2018, MariaDB Corporation.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it under
|
||||
@@ -869,37 +869,28 @@ fts_drop_index(
|
||||
|
||||
err = fts_drop_index_tables(trx, index);
|
||||
|
||||
for(;;) {
|
||||
bool retry = false;
|
||||
if (index->index_fts_syncing) {
|
||||
retry = true;
|
||||
}
|
||||
if (!retry){
|
||||
fts_free(table);
|
||||
break;
|
||||
}
|
||||
while (index->index_fts_syncing
|
||||
&& !trx_is_interrupted(trx)) {
|
||||
DICT_BG_YIELD(trx);
|
||||
}
|
||||
|
||||
fts_free(table);
|
||||
|
||||
return(err);
|
||||
}
|
||||
|
||||
for(;;) {
|
||||
bool retry = false;
|
||||
if (index->index_fts_syncing) {
|
||||
retry = true;
|
||||
}
|
||||
if (!retry){
|
||||
current_doc_id = table->fts->cache->next_doc_id;
|
||||
first_doc_id = table->fts->cache->first_doc_id;
|
||||
fts_cache_clear(table->fts->cache);
|
||||
fts_cache_destroy(table->fts->cache);
|
||||
table->fts->cache = fts_cache_create(table);
|
||||
table->fts->cache->next_doc_id = current_doc_id;
|
||||
table->fts->cache->first_doc_id = first_doc_id;
|
||||
break;
|
||||
}
|
||||
while (index->index_fts_syncing
|
||||
&& !trx_is_interrupted(trx)) {
|
||||
DICT_BG_YIELD(trx);
|
||||
}
|
||||
|
||||
current_doc_id = table->fts->cache->next_doc_id;
|
||||
first_doc_id = table->fts->cache->first_doc_id;
|
||||
fts_cache_clear(table->fts->cache);
|
||||
fts_cache_destroy(table->fts->cache);
|
||||
table->fts->cache = fts_cache_create(table);
|
||||
table->fts->cache->next_doc_id = current_doc_id;
|
||||
table->fts->cache->first_doc_id = first_doc_id;
|
||||
} else {
|
||||
fts_cache_t* cache = table->fts->cache;
|
||||
fts_index_cache_t* index_cache;
|
||||
@@ -909,18 +900,14 @@ fts_drop_index(
|
||||
index_cache = fts_find_index_cache(cache, index);
|
||||
|
||||
if (index_cache != NULL) {
|
||||
for(;;) {
|
||||
bool retry = false;
|
||||
if (index->index_fts_syncing) {
|
||||
retry = true;
|
||||
}
|
||||
if (!retry && index_cache->words) {
|
||||
fts_words_free(index_cache->words);
|
||||
rbt_free(index_cache->words);
|
||||
break;
|
||||
}
|
||||
while (index->index_fts_syncing
|
||||
&& !trx_is_interrupted(trx)) {
|
||||
DICT_BG_YIELD(trx);
|
||||
}
|
||||
if (index_cache->words) {
|
||||
fts_words_free(index_cache->words);
|
||||
rbt_free(index_cache->words);
|
||||
}
|
||||
|
||||
ib_vector_remove(cache->indexes, *(void**) index_cache);
|
||||
}
|
||||
|
@@ -13432,6 +13432,7 @@ static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
||||
dberr_t
|
||||
innobase_rename_table(
|
||||
/*==================*/
|
||||
THD* thd, /*!< Connection thread handle */
|
||||
trx_t* trx, /*!< in: transaction */
|
||||
const char* from, /*!< in: old name of the table */
|
||||
const char* to) /*!< in: new name of the table */
|
||||
@@ -13457,6 +13458,36 @@ innobase_rename_table(
|
||||
|
||||
row_mysql_lock_data_dictionary(trx);
|
||||
|
||||
dict_table_t* table = dict_table_open_on_name(norm_from, TRUE, FALSE,
|
||||
DICT_ERR_IGNORE_NONE);
|
||||
|
||||
/* Since DICT_BG_YIELD has sleep for 250 milliseconds,
|
||||
Convert lock_wait_timeout unit from second to 250 milliseconds */
|
||||
long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4;
|
||||
if (table != NULL) {
|
||||
for (dict_index_t* index = dict_table_get_first_index(table);
|
||||
index != NULL;
|
||||
index = dict_table_get_next_index(index)) {
|
||||
|
||||
if (index->type & DICT_FTS) {
|
||||
/* Found */
|
||||
while (index->index_fts_syncing
|
||||
&& !trx_is_interrupted(trx)
|
||||
&& (lock_wait_timeout--) > 0) {
|
||||
DICT_BG_YIELD(trx);
|
||||
}
|
||||
}
|
||||
}
|
||||
dict_table_close(table, TRUE, FALSE);
|
||||
}
|
||||
|
||||
/* FTS sync is in progress. We shall timeout this operation */
|
||||
if (lock_wait_timeout < 0) {
|
||||
error = DB_LOCK_WAIT_TIMEOUT;
|
||||
row_mysql_unlock_data_dictionary(trx);
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
/* Transaction must be flagged as a locking transaction or it hasn't
|
||||
been started yet. */
|
||||
|
||||
@@ -13571,7 +13602,7 @@ ha_innobase::rename_table(
|
||||
++trx->will_lock;
|
||||
trx_set_dict_operation(trx, TRX_DICT_OP_INDEX);
|
||||
|
||||
error = innobase_rename_table(trx, from, to);
|
||||
error = innobase_rename_table(thd, trx, from, to);
|
||||
|
||||
DEBUG_SYNC(thd, "after_innobase_rename_table");
|
||||
|
||||
@@ -13615,6 +13646,10 @@ ha_innobase::rename_table(
|
||||
my_error(ER_TABLE_EXISTS_ERROR, MYF(0), to);
|
||||
|
||||
error = DB_ERROR;
|
||||
} else if (error == DB_LOCK_WAIT_TIMEOUT) {
|
||||
my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), to);
|
||||
|
||||
error = DB_LOCK_WAIT;
|
||||
}
|
||||
|
||||
DBUG_RETURN(convert_error_code_to_mysql(error, 0, NULL));
|
||||
|
@@ -1433,19 +1433,16 @@ i_s_cmp_fill_low(
|
||||
clear it. We could introduce mutex protection, but it
|
||||
could cause a measureable performance hit in
|
||||
page0zip.cc. */
|
||||
table->field[1]->store(
|
||||
static_cast<double>(zip_stat->compressed));
|
||||
table->field[2]->store(
|
||||
static_cast<double>(zip_stat->compressed_ok));
|
||||
table->field[3]->store(
|
||||
static_cast<double>(zip_stat->compressed_usec / 1000000));
|
||||
table->field[4]->store(
|
||||
static_cast<double>(zip_stat->decompressed));
|
||||
table->field[5]->store(
|
||||
static_cast<double>(zip_stat->decompressed_usec / 1000000));
|
||||
table->field[1]->store(zip_stat->compressed, true);
|
||||
table->field[2]->store(zip_stat->compressed_ok, true);
|
||||
table->field[3]->store(zip_stat->compressed_usec / 1000000,
|
||||
true);
|
||||
table->field[4]->store(zip_stat->decompressed, true);
|
||||
table->field[5]->store(zip_stat->decompressed_usec / 1000000,
|
||||
true);
|
||||
|
||||
if (reset) {
|
||||
memset(zip_stat, 0, sizeof *zip_stat);
|
||||
new (zip_stat) page_zip_stat_t();
|
||||
}
|
||||
|
||||
if (schema_table_store_record(thd, table)) {
|
||||
|
@@ -111,18 +111,18 @@ struct row_index_t {
|
||||
struct row_import {
|
||||
row_import() UNIV_NOTHROW
|
||||
:
|
||||
m_table(),
|
||||
m_version(),
|
||||
m_hostname(),
|
||||
m_table_name(),
|
||||
m_autoinc(),
|
||||
m_page_size(),
|
||||
m_flags(),
|
||||
m_n_cols(),
|
||||
m_cols(),
|
||||
m_col_names(),
|
||||
m_n_indexes(),
|
||||
m_indexes(),
|
||||
m_table(NULL),
|
||||
m_version(0),
|
||||
m_hostname(NULL),
|
||||
m_table_name(NULL),
|
||||
m_autoinc(0),
|
||||
m_page_size(0),
|
||||
m_flags(0),
|
||||
m_n_cols(0),
|
||||
m_cols(NULL),
|
||||
m_col_names(NULL),
|
||||
m_n_indexes(0),
|
||||
m_indexes(NULL),
|
||||
m_missing(true) { }
|
||||
|
||||
~row_import() UNIV_NOTHROW;
|
||||
@@ -1298,11 +1298,57 @@ row_import::match_schema(
|
||||
{
|
||||
/* Do some simple checks. */
|
||||
|
||||
if ((m_table->flags ^ m_flags) & ~DICT_TF_MASK_DATA_DIR) {
|
||||
if (ulint mismatch = (m_table->flags ^ m_flags)
|
||||
& ~DICT_TF_MASK_DATA_DIR) {
|
||||
const char* msg;
|
||||
if (mismatch & DICT_TF_MASK_ZIP_SSIZE) {
|
||||
if ((m_table->flags & DICT_TF_MASK_ZIP_SSIZE)
|
||||
&& (m_flags & DICT_TF_MASK_ZIP_SSIZE)) {
|
||||
switch (m_flags & DICT_TF_MASK_ZIP_SSIZE) {
|
||||
case 0U << DICT_TF_POS_ZIP_SSIZE:
|
||||
goto uncompressed;
|
||||
case 1U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=1";
|
||||
break;
|
||||
case 2U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=2";
|
||||
break;
|
||||
case 3U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=4";
|
||||
break;
|
||||
case 4U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=8";
|
||||
break;
|
||||
case 5U << DICT_TF_POS_ZIP_SSIZE:
|
||||
msg = "ROW_FORMAT=COMPRESSED"
|
||||
" KEY_BLOCK_SIZE=16";
|
||||
break;
|
||||
default:
|
||||
msg = "strange KEY_BLOCK_SIZE";
|
||||
}
|
||||
} else if (m_flags & DICT_TF_MASK_ZIP_SSIZE) {
|
||||
msg = "ROW_FORMAT=COMPRESSED";
|
||||
} else {
|
||||
goto uncompressed;
|
||||
}
|
||||
} else {
|
||||
uncompressed:
|
||||
msg = (m_flags & DICT_TF_MASK_ATOMIC_BLOBS)
|
||||
? "ROW_FORMAT=DYNAMIC"
|
||||
: (m_flags & DICT_TF_MASK_COMPACT)
|
||||
? "ROW_FORMAT=COMPACT"
|
||||
: "ROW_FORMAT=REDUNDANT";
|
||||
}
|
||||
|
||||
ib_errf(thd, IB_LOG_LEVEL_ERROR, ER_TABLE_SCHEMA_MISMATCH,
|
||||
"Table flags don't match, server table has 0x%x"
|
||||
" and the meta-data file has 0x%lx",
|
||||
m_table->flags, ulong(m_flags));
|
||||
" and the meta-data file has 0x%lx;"
|
||||
" .cfg file uses %s",
|
||||
m_table->flags, ulong(m_flags), msg);
|
||||
|
||||
return(DB_ERROR);
|
||||
} else if (m_table->n_cols != m_n_cols) {
|
||||
@@ -3898,8 +3944,6 @@ row_import_for_mysql(
|
||||
|
||||
row_import cfg;
|
||||
|
||||
memset(&cfg, 0x0, sizeof(cfg));
|
||||
|
||||
err = row_import_read_cfg(table, trx->mysql_thd, cfg);
|
||||
|
||||
/* Check if the table column definitions match the contents
|
||||
|
@@ -2573,6 +2573,7 @@ trx_get_trx_by_xid_low(
|
||||
|
||||
if (trx->is_recovered
|
||||
&& trx_state_eq(trx, TRX_STATE_PREPARED)
|
||||
&& !trx->xid.is_null()
|
||||
&& xid->gtrid_length == trx->xid.gtrid_length
|
||||
&& xid->bqual_length == trx->xid.bqual_length
|
||||
&& memcmp(xid->data, trx->xid.data,
|
||||
@@ -2580,8 +2581,7 @@ trx_get_trx_by_xid_low(
|
||||
|
||||
/* Invalidate the XID, so that subsequent calls
|
||||
will not find it. */
|
||||
memset(&trx->xid, 0, sizeof(trx->xid));
|
||||
trx->xid.formatID = -1;
|
||||
trx->xid.null();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -1314,8 +1314,7 @@ trx_undo_mem_create_at_db_start(
|
||||
/* Read X/Open XA transaction identification if it exists, or
|
||||
set it to NULL. */
|
||||
|
||||
memset(&xid, 0, sizeof(xid));
|
||||
xid.formatID = -1;
|
||||
xid.null();
|
||||
|
||||
if (xid_exists == TRUE) {
|
||||
trx_undo_read_xid(undo_header, &xid);
|
||||
|
Reference in New Issue
Block a user