mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge branch 10.5 into 10.6
This commit is contained in:
16
mysql-test/suite/innodb/r/innodb-replace,INPLACE.rdiff
Normal file
16
mysql-test/suite/innodb/r/innodb-replace,INPLACE.rdiff
Normal file
@@ -0,0 +1,16 @@
|
||||
--- innodb-replace.result
|
||||
+++ innodb-replace,INPLACE.result
|
||||
@@ -31,10 +31,10 @@
|
||||
REPLACE INTO t1 (c1,c2,c3) VALUES (0,1,b'11');
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN ('HANDLER_DELETE','HANDLER_WRITE','HANDLER_READ_KEY','HANDLER_UPDATE');
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
-HANDLER_DELETE 1
|
||||
+HANDLER_DELETE 2
|
||||
HANDLER_READ_KEY 2
|
||||
-HANDLER_UPDATE 1
|
||||
-HANDLER_WRITE 2
|
||||
+HANDLER_UPDATE 0
|
||||
+HANDLER_WRITE 3
|
||||
SELECT * FROM t1;
|
||||
c1 c2 c3
|
||||
0 1
|
@@ -11,3 +11,53 @@ ERROR HY000: DELAYED option not supported for table 't1'
|
||||
select * from t1;
|
||||
c1 c2 stamp
|
||||
drop table t1;
|
||||
#
|
||||
# MDEV-35115 Inconsistent Replace behaviour when multiple
|
||||
# unique index exist
|
||||
#
|
||||
CREATE TABLE t1 (c1 NUMERIC UNSIGNED NOT NULL,
|
||||
c2 INT3 UNIQUE,
|
||||
c3 BIT(2) PRIMARY KEY)ENGINE=InnoDB;
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX(c1);
|
||||
INSERT INTO t1 (c1,c2,c3) VALUES (0,0,b'01');
|
||||
INSERT INTO t1 (c1,c2,c3) VALUES (1,1,b'10');
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN ('HANDLER_DELETE','HANDLER_WRITE','HANDLER_READ_KEY','HANDLER_UPDATE');
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_DELETE 0
|
||||
HANDLER_READ_KEY 0
|
||||
HANDLER_UPDATE 0
|
||||
HANDLER_WRITE 0
|
||||
REPLACE INTO t1 (c1,c2,c3) VALUES (0,1,b'11');
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN ('HANDLER_DELETE','HANDLER_WRITE','HANDLER_READ_KEY','HANDLER_UPDATE');
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_DELETE 1
|
||||
HANDLER_READ_KEY 2
|
||||
HANDLER_UPDATE 1
|
||||
HANDLER_WRITE 2
|
||||
SELECT * FROM t1;
|
||||
c1 c2 c3
|
||||
0 1
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 INT NOT NULL PRIMARY KEY,
|
||||
f2 INT, f3 INT, f4 INT,
|
||||
UNIQUE INDEX i1(f2))ENGINE=InnoDB;
|
||||
ALTER TABLE t1 ADD INDEX i3(f4);
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX i2(f3);
|
||||
INSERT INTO t1 VALUES (0,0,0,0);
|
||||
INSERT INTO t1 VALUES (1,1,1,1);
|
||||
FLUSH STATUS;
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN ('HANDLER_DELETE','HANDLER_WRITE','HANDLER_READ_KEY','HANDLER_UPDATE');
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_DELETE 0
|
||||
HANDLER_READ_KEY 0
|
||||
HANDLER_UPDATE 0
|
||||
HANDLER_WRITE 0
|
||||
REPLACE INTO t1 VALUES (0,0,1,1);
|
||||
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN ('HANDLER_DELETE','HANDLER_WRITE','HANDLER_READ_KEY','HANDLER_UPDATE');
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
HANDLER_DELETE 1
|
||||
HANDLER_READ_KEY 2
|
||||
HANDLER_UPDATE 1
|
||||
HANDLER_WRITE 2
|
||||
DROP TABLE t1;
|
||||
|
@@ -14,6 +14,22 @@ drop table t1;
|
||||
rename table mysql.table_stats_save to mysql.table_stats;
|
||||
flush tables;
|
||||
#
|
||||
# MDEV-32667 dict_stats_save_index_stat() reads uninitialized
|
||||
# index->stats_error_printed
|
||||
#
|
||||
call mtr.add_suppression("InnoDB: Cannot save index statistics for table");
|
||||
CREATE TABLE t1(a INT) ENGINE=InnoDB STATS_PERSISTENT=1 STATS_AUTO_RECALC=1;
|
||||
BEGIN;
|
||||
SELECT COUNT(*)>=0 FROM mysql.innodb_index_stats LOCK IN SHARE MODE;
|
||||
COUNT(*)>=0
|
||||
1
|
||||
INSERT INTO t1 VALUES(0),(0);
|
||||
SELECT sleep(1);
|
||||
sleep(1)
|
||||
0
|
||||
COMMIT;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-26753 Assertion state == TRX_STATE_PREPARED ||... failed
|
||||
#
|
||||
CREATE TABLE t1(a INT PRIMARY KEY) ENGINE=InnoDB;
|
||||
|
2
mysql-test/suite/innodb/t/innodb-replace.combinations
Normal file
2
mysql-test/suite/innodb/t/innodb-replace.combinations
Normal file
@@ -0,0 +1,2 @@
|
||||
[COPY]
|
||||
[INPLACE]
|
@@ -20,3 +20,67 @@ select * from t1;
|
||||
drop table t1;
|
||||
|
||||
# End of 4.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-35115 Inconsistent Replace behaviour when multiple
|
||||
--echo # unique index exist
|
||||
--echo #
|
||||
let $get_handler_status_counts= SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN ('HANDLER_DELETE','HANDLER_WRITE','HANDLER_READ_KEY','HANDLER_UPDATE');
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
let $algorithm=`select regexp_replace('$MTR_COMBINATIONS', 'innodb,\|,innodb', '')`;
|
||||
|
||||
CREATE TABLE t1 (c1 NUMERIC UNSIGNED NOT NULL,
|
||||
c2 INT3 UNIQUE,
|
||||
c3 BIT(2) PRIMARY KEY)ENGINE=InnoDB;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 ADD UNIQUE INDEX(c1),ALGORITHM=$algorithm;
|
||||
INSERT INTO t1 (c1,c2,c3) VALUES (0,0,b'01');
|
||||
INSERT INTO t1 (c1,c2,c3) VALUES (1,1,b'10');
|
||||
|
||||
FLUSH STATUS;
|
||||
|
||||
--disable_ps2_protocol
|
||||
eval $get_handler_status_counts;
|
||||
--enable_ps2_protocol
|
||||
|
||||
# INPLACE algorithm appends the index, so unique index
|
||||
# reordering happened between innodb and .frm file. This
|
||||
# lead to deletion of 2 existing rows for the replace statement
|
||||
|
||||
# COPY algorithm does table rebuild everytime. No reordering
|
||||
# happened in this case. This lead to 1 deletion of record
|
||||
# and 1 update on the existing record
|
||||
REPLACE INTO t1 (c1,c2,c3) VALUES (0,1,b'11');
|
||||
|
||||
--disable_ps2_protocol
|
||||
eval $get_handler_status_counts;
|
||||
--enable_ps2_protocol
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (f1 INT NOT NULL PRIMARY KEY,
|
||||
f2 INT, f3 INT, f4 INT,
|
||||
UNIQUE INDEX i1(f2))ENGINE=InnoDB;
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 ADD INDEX i3(f4),ALGORITHM=$algorithm;
|
||||
|
||||
replace_result ,ALGORITHM=COPY '' ,ALGORITHM=INPLACE '';
|
||||
eval ALTER TABLE t1 ADD UNIQUE INDEX i2(f3),ALGORITHM=$algorithm;
|
||||
|
||||
INSERT INTO t1 VALUES (0,0,0,0);
|
||||
INSERT INTO t1 VALUES (1,1,1,1);
|
||||
|
||||
FLUSH STATUS;
|
||||
--disable_ps2_protocol
|
||||
eval $get_handler_status_counts;
|
||||
--enable_ps2_protocol
|
||||
|
||||
REPLACE INTO t1 VALUES (0,0,1,1);
|
||||
|
||||
--disable_ps2_protocol
|
||||
eval $get_handler_status_counts;
|
||||
--enable_ps2_protocol
|
||||
|
||||
DROP TABLE t1;
|
||||
|
@@ -16,6 +16,19 @@ drop table t1;
|
||||
rename table mysql.table_stats_save to mysql.table_stats;
|
||||
flush tables;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-32667 dict_stats_save_index_stat() reads uninitialized
|
||||
--echo # index->stats_error_printed
|
||||
--echo #
|
||||
call mtr.add_suppression("InnoDB: Cannot save index statistics for table");
|
||||
CREATE TABLE t1(a INT) ENGINE=InnoDB STATS_PERSISTENT=1 STATS_AUTO_RECALC=1;
|
||||
BEGIN;
|
||||
SELECT COUNT(*)>=0 FROM mysql.innodb_index_stats LOCK IN SHARE MODE;
|
||||
INSERT INTO t1 VALUES(0),(0);
|
||||
SELECT sleep(1);
|
||||
COMMIT;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-26753 Assertion state == TRX_STATE_PREPARED ||... failed
|
||||
--echo #
|
||||
|
Reference in New Issue
Block a user