mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
a699e4fce8
InnoDB AUTOINC code expects the locks to be released in strict reverse order at the end of the statement. However, nested stored proedures and partition tables break this rule. We now allow the locks to be deleted from the trx->autoinc_locks vector in any order but optimise for the common (old) case. rb://441 Approved by Marko Makela
42 lines
1 KiB
Text
42 lines
1 KiB
Text
-- source include/have_innodb_plugin.inc
|
|
|
|
let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
|
|
|
|
##
|
|
# Bug #56228: dropping tables from within an active statement crashes server
|
|
#
|
|
DROP TABLE IF EXISTS t1_56228;
|
|
DROP TABLE IF EXISTS t2_56228;
|
|
DROP FUNCTION IF EXISTS bug56228;
|
|
|
|
CREATE TEMPORARY TABLE t1_56228(
|
|
c1 iNT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
|
CREATE TEMPORARY TABLE t2_56228(
|
|
c1 iNT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB;
|
|
|
|
DELIMITER //;
|
|
|
|
CREATE FUNCTION bug56228() RETURNS INT DETERMINISTIC
|
|
BEGIN
|
|
INSERT INTO t1_56228 VALUES(NULL);
|
|
INSERT INTO t2_56228 VALUES(NULL);
|
|
INSERT INTO t1_56228 VALUES(NULL);
|
|
INSERT INTO t2_56228 VALUES(NULL);
|
|
DROP TEMPORARY TABLE t1_56228;
|
|
RETURN 42;
|
|
END //
|
|
|
|
DELIMITER ;//
|
|
|
|
SELECT bug56228();
|
|
|
|
DROP FUNCTION bug56228;
|
|
DROP TEMPORARY TABLE t2_56228;
|
|
DROP TEMPORARY TABLE IF EXISTS t1_56228;
|
|
|
|
#
|
|
# restore environment to the state it was before this test execution
|
|
#
|
|
|
|
-- disable_query_log
|
|
eval set global innodb_file_format_check=$innodb_file_format_check_orig;
|