Skip to content

Commit f09948f

Browse files
committed
MDEV-36787 Error 153: No savepoint with that name upon ROLLBACK TO SAVEPOINT, assertion failure
InnoDB was rolling back a transaction internally, while the server thought the transaction stayed open. this was fixed in 10.11 by 387fe5e to rollback the transaction in the server and in 12.3 by d228f23 to not rollback in InnoDB let's keep 12.3 behavior, update test results to match. but combine two nearly indentical test cases into one.
1 parent 271fb80 commit f09948f

File tree

6 files changed

+14
-48
lines changed

6 files changed

+14
-48
lines changed

mysql-test/main/temp_table.result

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -697,31 +697,8 @@ TRUNCATE TABLE t1;
697697
TRUNCATE TABLE t1;
698698
UNLOCK TABLES;
699699
DROP TABLE t1;
700-
#
701700
# End of 10.6 tests
702701
#
703-
#
704-
# Failed CREATE TEMPORARY ... SELECT must not roll back transaction
705-
#
706-
CREATE TABLE t (pk INT PRIMARY KEY) ENGINE=InnoDB;
707-
START TRANSACTION;
708-
INSERT INTO t VALUES (0);
709-
INSERT INTO t VALUES (1);
710-
CREATE TEMPORARY TABLE tmp2 (a INT) ENGINE=InnoDB SELECT 'x' AS a;
711-
ERROR 22007: Incorrect integer value: 'x' for column `test`.`tmp2`.`a` at row 1
712-
SELECT * FROM t ORDER BY pk;
713-
pk
714-
0
715-
1
716-
INSERT INTO t VALUES (1);
717-
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
718-
COMMIT;
719-
SELECT * FROM t ORDER BY pk;
720-
pk
721-
0
722-
1
723-
DROP TABLE t;
724-
#
725702
# MDEV-38716: Server crashes in TABLE::evaluate_update_default_function
726703
#
727704
# Test case where ALTER doesn't add any new columns with default values

mysql-test/main/temp_table.test

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -765,26 +765,7 @@ TRUNCATE TABLE t1;
765765
UNLOCK TABLES;
766766
DROP TABLE t1;
767767

768-
--echo #
769768
--echo # End of 10.6 tests
770-
--echo #
771-
772-
--echo #
773-
--echo # Failed CREATE TEMPORARY ... SELECT must not roll back transaction
774-
--echo #
775-
776-
CREATE TABLE t (pk INT PRIMARY KEY) ENGINE=InnoDB;
777-
START TRANSACTION;
778-
INSERT INTO t VALUES (0);
779-
INSERT INTO t VALUES (1);
780-
--error ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
781-
CREATE TEMPORARY TABLE tmp2 (a INT) ENGINE=InnoDB SELECT 'x' AS a;
782-
SELECT * FROM t ORDER BY pk;
783-
--error ER_DUP_ENTRY
784-
INSERT INTO t VALUES (1);
785-
COMMIT;
786-
SELECT * FROM t ORDER BY pk;
787-
DROP TABLE t;
788769

789770
--echo #
790771
--echo # MDEV-38716: Server crashes in TABLE::evaluate_update_default_function

mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,8 @@ INSERT INTO t1 values (3,3);
363363
CREATE TEMPORARY TABLE t2 (primary key (a)) engine=innodb select * from t1;
364364
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
365365
ROLLBACK;
366+
Warnings:
367+
Warning 1196 Some non-transactional changed tables couldn't be rolled back
366368
DROP TABLE IF EXISTS t2;
367369
Warnings:
368370
Note 1051 Unknown table 'test.t2'

mysql-test/suite/binlog/r/binlog_stm_mix_innodb_myisam.result

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,8 @@ INSERT INTO t1 values (3,3);
329329
CREATE TEMPORARY TABLE t2 (primary key (a)) engine=innodb select * from t1;
330330
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
331331
ROLLBACK;
332+
Warnings:
333+
Warning 1196 Some non-transactional changed tables couldn't be rolled back
332334
DROP TABLE IF EXISTS t2;
333335
Warnings:
334336
Note 1051 Unknown table 'test.t2'

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ DROP TABLE t;
139139
#
140140
CREATE TABLE t (a INT) ENGINE=InnoDB;
141141
START TRANSACTION;
142-
SELECT * FROM t;
143-
a
142+
INSERT t VALUES (0),(1);
144143
SAVEPOINT A;
145144
select @@in_transaction;
146145
@@in_transaction
@@ -149,8 +148,12 @@ CREATE TEMPORARY TABLE tmp (a TINYINT) ENGINE=InnoDB AS SELECT 256 AS a;
149148
ERROR 22003: Out of range value for column 'a' at row 1
150149
select @@in_transaction;
151150
@@in_transaction
152-
0
151+
1
153152
ROLLBACK TO SAVEPOINT A;
154-
ERROR 42000: SAVEPOINT A does not exist
153+
COMMIT;
154+
SELECT * FROM t;
155+
a
156+
0
157+
1
155158
DROP TABLE t;
156159
# End of 10.11 tests

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,14 +148,15 @@ DROP TABLE t;
148148
--echo #
149149
CREATE TABLE t (a INT) ENGINE=InnoDB;
150150
START TRANSACTION;
151-
SELECT * FROM t;
151+
INSERT t VALUES (0),(1);
152152
SAVEPOINT A;
153153
select @@in_transaction;
154154
--error ER_WARN_DATA_OUT_OF_RANGE
155155
CREATE TEMPORARY TABLE tmp (a TINYINT) ENGINE=InnoDB AS SELECT 256 AS a;
156156
select @@in_transaction;
157-
--error ER_SP_DOES_NOT_EXIST
158157
ROLLBACK TO SAVEPOINT A;
158+
COMMIT;
159+
SELECT * FROM t;
159160
DROP TABLE t;
160161

161162
--echo # End of 10.11 tests

0 commit comments

Comments
 (0)