1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Merge 10.8 into 10.9

This commit is contained in:
Marko Mäkelä
2022-09-21 10:07:09 +03:00
1218 changed files with 31234 additions and 30413 deletions

View File

@@ -2,6 +2,17 @@
--source include/have_debug_sync.inc
--source include/count_sessions.inc
--connect(cancel_purge,localhost,root,,)
# Purge can cause deadlock in the test, requesting page's RW_X_LATCH for trx
# ids reseting, after trx 2 acqured RW_S_LATCH and suspended in debug sync point
# lock_trx_handle_wait_enter, waiting for upd_cont signal, which must be
# emitted after the last SELECT in this test. The last SELECT will hang waiting
# for purge RW_X_LATCH releasing, and trx 2 will be rolled back by timeout.
# The last SELECT will then be successfully executed instead of finishing by
# lock wait timeout.
START TRANSACTION WITH CONSISTENT SNAPSHOT;
--connection default
CREATE TABLE t (a int PRIMARY KEY, b int) engine = InnoDB;
CREATE TABLE t2 (a int PRIMARY KEY) engine = InnoDB;
@@ -60,7 +71,6 @@ SET DEBUG_SYNC='now WAIT_FOR sel_locked';
ROLLBACK;
SET DEBUG_SYNC='now SIGNAL upd_cont';
SET innodb_lock_wait_timeout=1;
SET DEBUG_SYNC="now WAIT_FOR upd_locked";
# Locking queue:
# (10,10) (20,20) (30,30)
@@ -72,11 +82,12 @@ SET DEBUG_SYNC="now WAIT_FOR upd_locked";
# sequential read (with rr_sequential() read record function), and requested
# lock on (30,30). But the deadlock has not been determined yet.
SET DEBUG_SYNC="lock_wait_end SIGNAL upd_cont";
SET SESSION innodb_lock_wait_timeout=1;
--error ER_LOCK_WAIT_TIMEOUT
# The deadlock will be determined in lock_wait() after lock wait timeout
# expired.
SELECT * FROM t WHERE a = 10 FOR UPDATE;
SET DEBUG_SYNC="now SIGNAL upd_cont";
--connection con_3
--reap
@@ -98,5 +109,5 @@ SELECT * FROM t WHERE a = 10 FOR UPDATE;
SET DEBUG_SYNC = 'RESET';
DROP TABLE t;
DROP TABLE t2;
--disconnect cancel_purge
--source include/wait_until_count_sessions.inc

View File

@@ -141,3 +141,9 @@ DROP TABLE child;
DROP TABLE parent;
SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_frequency;
--echo #
--echo # MDEV-29479 I_S.INNODB_SYS_TABLESPACES doesn't have
--echo # temporary tablespace information
--echo #
SELECT SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE name like 'innodb_temporary';

View File

@@ -208,6 +208,46 @@ ALTER TABLE t1 IMPORT TABLESPACE;
SHOW CREATE TABLE t1;
SELECT * FROM t1;
DROP TABLE t1;
--echo #
--echo # MDEV-23801 Assertion index->table->instant... failed
--echo # in btr_pcur_store_position()
--echo #
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
CREATE TABLE t (
pk int auto_increment,
c01 char(255) not null default repeat('a',255),
c02 char(255) default repeat('a',255),
c03 char(255) default repeat('a',255),
c04 char(255) default repeat('a',255),
c05 char(255) not null default repeat('a',255),
c06 char(255) default repeat('a',255),
c07 char(255) default repeat('a',255),
c08 char(255) not null default repeat('a',255),
c09 char(255) default repeat('a',255),
c10 char(255) default repeat('a',255),
c11 char(255) default repeat('a',255),
c12 char(255) not null default repeat('a',255),
primary key (pk)
) ENGINE=InnoDB CHARACTER SET ucs2;
INSERT INTO t () VALUES ();
ALTER TABLE t ADD c INT;
BEGIN;
INSERT INTO t () VALUES (),();
ROLLBACK;
DELETE FROM t;
--source include/wait_all_purged.inc
SET GLOBAL innodb_purge_rseg_truncate_frequency = @save_frequency;
CREATE TABLE tt ENGINE=InnoDB AS SELECT c FROM t;
DROP TABLE t, tt;
--echo # End of 10.3 tests
--disable_query_log

View File

@@ -1,8 +1,6 @@
--source include/have_innodb.inc
--source include/not_embedded.inc
# Valgrind has to be disabled as killing the server hard gives a lot of
# leak warnings
--source include/not_valgrind.inc
--source include/have_sequence.inc
# Flush any open myisam tables from previous tests
FLUSH TABLES;
@@ -13,24 +11,14 @@ call mtr.add_suppression("Found 1 prepared XA transactions");
--echo # while rolling back recovered incomplete transactions
--echo #
CREATE TABLE t (a INT) ENGINE=InnoDB;
let $size = 100;
let $trx = 8;
let $c = $size;
BEGIN;
--disable_query_log
while ($c) {
INSERT INTO t VALUES();
dec $c;
}
--enable_query_log
COMMIT;
let $c = $trx;
connect (con$c,localhost,root,,);
eval CREATE TABLE t$c (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
XA START 'x';
eval INSERT INTO t$c (a) SELECT NULL FROM t;
eval INSERT INTO t$c (a) SELECT NULL FROM seq_1_to_$size;
eval UPDATE t$c SET a=a+$size, b=a;
eval DELETE FROM t$c;
XA END 'x';
@@ -41,28 +29,24 @@ while ($c)
connect (con$c,localhost,root,,);
eval CREATE TABLE t$c (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
BEGIN;
eval INSERT INTO t$c (a) SELECT NULL FROM t;
eval INSERT INTO t$c (a) SELECT NULL FROM seq_1_to_$size;
eval UPDATE t$c SET a=a+$size, b=a;
eval DELETE FROM t$c;
dec $c;
}
INSERT INTO t1(a) SELECT NULL FROM t;
INSERT INTO t1(a) SELECT NULL FROM t1;
INSERT INTO t1(a) SELECT NULL FROM t1;
INSERT INTO t1(a) SELECT NULL FROM t1;
INSERT INTO t1(a) SELECT NULL FROM t1;
INSERT INTO t1(a) SELECT NULL FROM seq_1_to_1600;
--connection default
SET GLOBAL innodb_flush_log_at_trx_commit=1;
CREATE TABLE u(a SERIAL) ENGINE=INNODB;
CREATE TABLE MDEV_29559 (a TINYINT UNSIGNED PRIMARY KEY, KEY(a)) ENGINE=InnoDB;
INSERT INTO MDEV_29559 VALUES (0x69);
FLUSH TABLES;
--let $shutdown_timeout=0
--source include/restart_mysqld.inc
--let $shutdown_timeout=60
--source include/restart_mysqld.inc
# Perform a slow shutdown in order to roll back all recovered transactions
# and to avoid locking conflicts with the DROP TABLE below.
@@ -85,4 +69,4 @@ dec $c;
}
--enable_query_log
DROP TABLE t,u;
DROP TABLE MDEV_29559;