Commit 667df98c authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-29507 InnoDB: Failing assertion: table->n_rec_locks == 0

lock_place_prdt_page_lock(): Do not place locks on temporary tables.
Temporary tables can only be accessed from one connection, so
it does not make any sense to acquire any transactional locks on them.
parent 43745b7e
......@@ -12,3 +12,13 @@ CREATE TEMPORARY TABLE t1 (c POINT NOT NULL,SPATIAL (c)) ENGINE=InnoDB;
INSERT INTO t1 SELECT POINT(0,0) FROM seq_1_to_366;
INSERT INTO t1 VALUES (POINT(1e-270,1e-130));
DROP TABLE t1;
#
# MDEV-29507 InnoDB: Failing assertion: table->n_rec_locks == 0
#
connect con1,localhost,root,,;
CREATE TEMPORARY TABLE t (c POINT NOT NULL,SPATIAL (c)) ENGINE=InnoDB;
INSERT INTO t SELECT POINTFROMTEXT ('POINT(0 0)') FROM seq_1_to_500;
XA BEGIN 'a';
DELETE FROM t ORDER BY c;
disconnect con1;
# End of 10.3 tests
......@@ -16,3 +16,16 @@ CREATE TEMPORARY TABLE t1 (c POINT NOT NULL,SPATIAL (c)) ENGINE=InnoDB;
INSERT INTO t1 SELECT POINT(0,0) FROM seq_1_to_366;
INSERT INTO t1 VALUES (POINT(1e-270,1e-130));
DROP TABLE t1;
--echo #
--echo # MDEV-29507 InnoDB: Failing assertion: table->n_rec_locks == 0
--echo #
connect con1,localhost,root,,;
CREATE TEMPORARY TABLE t (c POINT NOT NULL,SPATIAL (c)) ENGINE=InnoDB;
INSERT INTO t SELECT POINTFROMTEXT ('POINT(0 0)') FROM seq_1_to_500;
XA BEGIN 'a';
DELETE FROM t ORDER BY c;
disconnect con1;
--echo # End of 10.3 tests
......@@ -916,6 +916,9 @@ lock_place_prdt_page_lock(
ut_ad(!dict_index_is_clust(index));
ut_ad(!dict_index_is_online_ddl(index));
if (index->table->is_temporary()) {
return DB_SUCCESS;
}
/* Another transaction cannot have an implicit lock on the record,
because when we come here, we already have modified the clustered
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment