mirror of
https://github.com/MariaDB/server.git
synced 2025-08-09 22:24:09 +03:00
MDEV-36720 Possible memory leak on updating table with index without overlaps
when closing a lookup_handler, don't forget to close it in PSI too
This commit is contained in:
26
mysql-test/suite/period/r/perfschema.result
Normal file
26
mysql-test/suite/period/r/perfschema.result
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#
|
||||||
|
# MDEV-36720 Possible memory leak on updating table with index without overlaps
|
||||||
|
#
|
||||||
|
create table t1 (id int not null primary key auto_increment, rel_id int not null, start_date datetime not null, end_date datetime not null, period for p (start_date, end_date), unique key (rel_id, p without overlaps));
|
||||||
|
insert into t1 (rel_id, start_date, end_date) values (1, '2024-01-01', '2025-01-01');
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
object_type object_schema object_name owner_thread_id owner_event_id internal_lock external_lock
|
||||||
|
TABLE test t1 0 0 WRITE CONCURRENT INSERT NULL
|
||||||
|
update t1 set end_date = '2025-01-16' where id = 1;
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
object_type object_schema object_name owner_thread_id owner_event_id internal_lock external_lock
|
||||||
|
TABLE test t1 0 0 WRITE NULL
|
||||||
|
update t1 set end_date = '2025-01-16' where id = 1;
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
object_type object_schema object_name owner_thread_id owner_event_id internal_lock external_lock
|
||||||
|
TABLE test t1 0 0 WRITE NULL
|
||||||
|
update t1 set end_date = '2025-01-16' where id = 1;
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
object_type object_schema object_name owner_thread_id owner_event_id internal_lock external_lock
|
||||||
|
TABLE test t1 0 0 WRITE NULL
|
||||||
|
update t1 set end_date = '2025-01-16' where id = 1;
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
object_type object_schema object_name owner_thread_id owner_event_id internal_lock external_lock
|
||||||
|
TABLE test t1 0 0 WRITE NULL
|
||||||
|
drop table t1;
|
||||||
|
# End of 10.11 tests
|
19
mysql-test/suite/period/t/perfschema.test
Normal file
19
mysql-test/suite/period/t/perfschema.test
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
--source include/not_embedded.inc
|
||||||
|
--source include/have_perfschema.inc
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-36720 Possible memory leak on updating table with index without overlaps
|
||||||
|
--echo #
|
||||||
|
create table t1 (id int not null primary key auto_increment, rel_id int not null, start_date datetime not null, end_date datetime not null, period for p (start_date, end_date), unique key (rel_id, p without overlaps));
|
||||||
|
insert into t1 (rel_id, start_date, end_date) values (1, '2024-01-01', '2025-01-01');
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
update t1 set end_date = '2025-01-16' where id = 1;
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
update t1 set end_date = '2025-01-16' where id = 1;
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
update t1 set end_date = '2025-01-16' where id = 1;
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
update t1 set end_date = '2025-01-16' where id = 1;
|
||||||
|
select object_type,object_schema,object_name,owner_thread_id,owner_event_id,internal_lock,external_lock from performance_schema.table_handles where object_name='t1';
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
|
--echo # End of 10.11 tests
|
@@ -7346,6 +7346,7 @@ int handler::ha_reset()
|
|||||||
{
|
{
|
||||||
lookup_handler->ha_external_unlock(table->in_use);
|
lookup_handler->ha_external_unlock(table->in_use);
|
||||||
lookup_handler->close();
|
lookup_handler->close();
|
||||||
|
PSI_CALL_close_table(table_share, lookup_handler->m_psi);
|
||||||
delete lookup_handler;
|
delete lookup_handler;
|
||||||
lookup_handler= this;
|
lookup_handler= this;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user