Skip to content

Commit c75e377

Browse files
committed
Merge 10.7 into 10.8
2 parents 12cd3dc + 70a8875 commit c75e377

22 files changed

+256
-103
lines changed

include/my_alarm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ extern ulong my_time_to_wait_for_lock;
3131
#include <signal.h>
3232
#ifdef HAVE_SIGHANDLER_T
3333
#define sig_return sighandler_t
34-
#elif defined(SOLARIS) || defined(__sun) || defined(__APPLE__) || defined(__FreeBSD__)
34+
#elif defined(SOLARIS) || defined(__sun) || defined(__APPLE__) || defined(__FreeBSD__) || defined(_AIX)
3535
typedef void (*sig_return)(int); /* Returns type from signal */
3636
#else
3737
typedef void (*sig_return)(void); /* Returns type from signal */

mysql-test/main/backup_locks.result

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,28 @@ MDL_INTENTION_EXCLUSIVE Schema metadata lock test
3939
select * from t1;
4040
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
4141
backup unlock;
42+
connection con1;
43+
connection default;
44+
#
45+
# Check that BACKUP LOCK blocks some operations
46+
#
47+
create sequence seq1;
48+
create sequence seq2;
49+
backup lock seq1;
50+
connection con1;
51+
CREATE OR REPLACE SEQUENCE seq1 START -28;
52+
ERROR HY000: Sequence 'test.seq1' values are conflicting
53+
SET STATEMENT max_statement_time=10 FOR CREATE OR REPLACE SEQUENCE seq1 START 50;
54+
ERROR 70100: Query execution was interrupted (max_statement_time exceeded)
55+
SET STATEMENT max_statement_time=10 FOR ALTER SEQUENCE IF EXISTS seq1 NOMAXVALUE;
56+
ERROR 70100: Query execution was interrupted (max_statement_time exceeded)
57+
SET STATEMENT max_statement_time=10 FOR ALTER SEQUENCE IF EXISTS seq1 MAXVALUE 1000;
58+
ERROR 70100: Query execution was interrupted (max_statement_time exceeded)
59+
SET STATEMENT max_statement_time=10 for rename table seq2 to seq3, seq3 to seq1;
60+
ERROR 70100: Query execution was interrupted (max_statement_time exceeded)
61+
connection default;
62+
backup unlock;
63+
drop table seq1,seq2;
4264
#
4365
# BACKUP LOCK and BACKUP UNLOCK are not allowed in procedures.
4466
#
@@ -141,7 +163,6 @@ ERROR HY000: Can't execute the given command because you have active locked tabl
141163
SET STATEMENT max_statement_time=180 FOR BACKUP LOCK test.u;
142164
# restart
143165
#
144-
connection con1;
145166
connection default;
146167
disconnect con1;
147168
show tables;

mysql-test/main/backup_locks.test

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,39 @@ SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.me
4343
--error ER_LOCK_DEADLOCK
4444
select * from t1;
4545
backup unlock;
46+
connection con1;
47+
--reap
48+
connection default;
49+
50+
--echo #
51+
--echo # Check that BACKUP LOCK blocks some operations
52+
--echo #
53+
54+
# These test has to be done with timeouts as we want to ensure that the tables
55+
# doesn't change
56+
57+
create sequence seq1;
58+
create sequence seq2;
59+
backup lock seq1;
60+
connection con1;
61+
--error ER_SEQUENCE_INVALID_DATA
62+
CREATE OR REPLACE SEQUENCE seq1 START -28;
63+
--error ER_STATEMENT_TIMEOUT
64+
SET STATEMENT max_statement_time=10 FOR CREATE OR REPLACE SEQUENCE seq1 START 50;
65+
--error ER_STATEMENT_TIMEOUT
66+
SET STATEMENT max_statement_time=10 FOR ALTER SEQUENCE IF EXISTS seq1 NOMAXVALUE;
67+
--error ER_STATEMENT_TIMEOUT
68+
SET STATEMENT max_statement_time=10 FOR ALTER SEQUENCE IF EXISTS seq1 MAXVALUE 1000;
69+
--error ER_STATEMENT_TIMEOUT
70+
SET STATEMENT max_statement_time=10 for rename table seq2 to seq3, seq3 to seq1;
71+
connection default;
72+
backup unlock;
73+
drop table seq1,seq2;
4674

4775
--echo #
4876
--echo # BACKUP LOCK and BACKUP UNLOCK are not allowed in procedures.
4977
--echo #
78+
5079
delimiter |;
5180
--error ER_SP_BADSTATEMENT
5281
CREATE PROCEDURE p_BACKUP_LOCK()
@@ -162,8 +191,6 @@ SET STATEMENT max_statement_time=180 FOR BACKUP LOCK test.u;
162191

163192
--echo #
164193

165-
connection con1;
166-
--reap
167194
connection default;
168195
disconnect con1;
169196
show tables;

mysql-test/main/group_min_max.result

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4028,6 +4028,43 @@ drop table t1;
40284028
# End of 10.1 tests
40294029
#
40304030
#
4031+
# MDEV-27442 Wrong result upon query with DISTINCT and EXISTS subquery
4032+
#
4033+
CREATE TABLE t1 (a int, b int, KEY b (b,a)) ENGINE=MyISAM;
4034+
INSERT INTO t1 VALUES (0,100),(2,100),(2,101),(3,102);
4035+
# Must not use Using index for group-by
4036+
explain SELECT DISTINCT b FROM t1 WHERE EXISTS ( SELECT 1 FROM DUAL WHERE a > 1 );
4037+
id select_type table type possible_keys key key_len ref rows Extra
4038+
1 PRIMARY t1 index NULL b 10 NULL 4 Using where; Using index
4039+
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
4040+
SELECT DISTINCT b FROM t1 WHERE EXISTS ( SELECT 1 FROM DUAL WHERE a > 1 );
4041+
b
4042+
100
4043+
101
4044+
102
4045+
DROP TABLE t1;
4046+
#
4047+
# MDEV-26585 Wrong query results when `using index for group-by`
4048+
#
4049+
CREATE TABLE `t1` (
4050+
`id` int(11) NOT NULL AUTO_INCREMENT,
4051+
`owner_id` int(11) DEFAULT NULL,
4052+
`foo` tinyint(1) DEFAULT 0,
4053+
`whatever` varchar(255) DEFAULT NULL,
4054+
PRIMARY KEY (`id`),
4055+
KEY `index_t1_on_owner_id_and_foo` (`owner_id`,`foo`)
4056+
) engine=InnoDB DEFAULT CHARSET=utf8;
4057+
INSERT INTO t1 (owner_id, foo, whatever)
4058+
VALUES (1, TRUE, "yello"), (1, FALSE, "yello"), (2, TRUE, "yello"),
4059+
(2, TRUE, "yello"), (2, FALSE, "yello");
4060+
EXPLAIN SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
4061+
id select_type table type possible_keys key key_len ref rows Extra
4062+
1 SIMPLE t1 index NULL index_t1_on_owner_id_and_foo 7 NULL 5 Using where; Using index
4063+
SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
4064+
owner_id
4065+
1
4066+
DROP TABLE t1;
4067+
#
40314068
# MDEV-24353: Adding GROUP BY slows down a query
40324069
#
40334070
CREATE TABLE t1 (p int NOT NULL, a int NOT NULL, PRIMARY KEY (p,a));

mysql-test/main/group_min_max.test

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
--source include/default_optimizer_switch.inc
77
--source include/have_sequence.inc
8-
8+
--source include/have_innodb.inc
99
#
1010
# TODO:
1111
# Add queries with:
@@ -1691,6 +1691,37 @@ drop table t1;
16911691
--echo # End of 10.1 tests
16921692
--echo #
16931693

1694+
--echo #
1695+
--echo # MDEV-27442 Wrong result upon query with DISTINCT and EXISTS subquery
1696+
--echo #
1697+
1698+
CREATE TABLE t1 (a int, b int, KEY b (b,a)) ENGINE=MyISAM;
1699+
INSERT INTO t1 VALUES (0,100),(2,100),(2,101),(3,102);
1700+
--echo # Must not use Using index for group-by
1701+
explain SELECT DISTINCT b FROM t1 WHERE EXISTS ( SELECT 1 FROM DUAL WHERE a > 1 );
1702+
SELECT DISTINCT b FROM t1 WHERE EXISTS ( SELECT 1 FROM DUAL WHERE a > 1 );
1703+
DROP TABLE t1;
1704+
1705+
--echo #
1706+
--echo # MDEV-26585 Wrong query results when `using index for group-by`
1707+
--echo #
1708+
1709+
CREATE TABLE `t1` (
1710+
`id` int(11) NOT NULL AUTO_INCREMENT,
1711+
`owner_id` int(11) DEFAULT NULL,
1712+
`foo` tinyint(1) DEFAULT 0,
1713+
`whatever` varchar(255) DEFAULT NULL,
1714+
PRIMARY KEY (`id`),
1715+
KEY `index_t1_on_owner_id_and_foo` (`owner_id`,`foo`)
1716+
) engine=InnoDB DEFAULT CHARSET=utf8;
1717+
1718+
INSERT INTO t1 (owner_id, foo, whatever)
1719+
VALUES (1, TRUE, "yello"), (1, FALSE, "yello"), (2, TRUE, "yello"),
1720+
(2, TRUE, "yello"), (2, FALSE, "yello");
1721+
EXPLAIN SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
1722+
SELECT DISTINCT owner_id FROM t1 WHERE foo = true GROUP BY owner_id HAVING (COUNT(*) = 1);
1723+
DROP TABLE t1;
1724+
16941725
--echo #
16951726
--echo # MDEV-24353: Adding GROUP BY slows down a query
16961727
--echo #

mysql-test/suite/galera_sr/r/MDEV-27615.result

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ SET DEBUG_SYNC='now WAIT_FOR before_fragment';
1515
SET GLOBAL wsrep_cluster_address = '';
1616
SET DEBUG_SYNC = 'now SIGNAL continue';
1717
connection node_2;
18-
ERROR HY000: Lost connection to MySQL server during query
18+
ERROR HY000: Lost connection to server during query
1919
connection node_2a;
2020
SELECT * FROM mysql.wsrep_streaming_log;
2121
node_uuid trx_id seqno flags frag

mysql-test/suite/innodb/r/ibuf_not_empty.result

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ c INT,
55
INDEX(b))
66
ENGINE=InnoDB STATS_PERSISTENT=0;
77
SET GLOBAL innodb_change_buffering_debug = 1;
8+
SET GLOBAL innodb_change_buffering=all;
89
INSERT INTO t1 SELECT 0,'x',1 FROM seq_1_to_1024;
910
# restart: --innodb-force-recovery=6 --innodb-change-buffer-dump
1011
check table t1;

mysql-test/suite/innodb/r/innodb-change-buffer-recovery.result

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ c INT,
1313
INDEX(b))
1414
ENGINE=InnoDB STATS_PERSISTENT=0;
1515
SET GLOBAL innodb_change_buffering_debug = 1;
16+
SET GLOBAL innodb_change_buffering = all;
1617
INSERT INTO t1 SELECT 0,'x',1 FROM seq_1_to_8192;
1718
BEGIN;
1819
SELECT b FROM t1 LIMIT 3;

mysql-test/suite/innodb/t/ibuf_not_empty.test

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ ENGINE=InnoDB STATS_PERSISTENT=0;
2424
# change buffering is possible, so that the change buffer will be used
2525
# whenever possible.
2626
SET GLOBAL innodb_change_buffering_debug = 1;
27+
SET GLOBAL innodb_change_buffering=all;
2728

2829
# Create enough rows for the table, so that the change buffer will be
2930
# used for modifying the secondary index page. There must be multiple

mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ ENGINE=InnoDB STATS_PERSISTENT=0;
3333
# change buffering is possible, so that the change buffer will be used
3434
# whenever possible.
3535
SET GLOBAL innodb_change_buffering_debug = 1;
36+
SET GLOBAL innodb_change_buffering = all;
3637
let SEARCH_FILE = $MYSQLTEST_VARDIR/log/mysqld.1.err;
3738

3839
# Create enough rows for the table, so that the change buffer will be

0 commit comments

Comments
 (0)