MDEV-34782 SIGSEGV in handler::update_global_table_stats in close_thread_table()

Handler statistics did not take into account that it could not be fully
initialized in the table.
This commit is contained in:
Monty 2024-10-09 17:22:48 +03:00
parent 875d8c909f
commit 69686375a8
3 changed files with 33 additions and 2 deletions

View File

@ -287,3 +287,17 @@ test t1 a 8 1
drop table t1;
set global userstat=@save_userstat;
# End of 11.5 tests
#
# MDEV-34782 SIGSEGV in handler::update_global_table_stats in
# close_thread_table()
#
CREATE TABLE t1 (a CHAR(1));
HANDLER t1 OPEN;
INSERT INTO t1 VALUES (1);
HANDLER t1 READ NEXT;
a
1
SET GLOBAL userstat=1;
HANDLER t1 close;
drop table t1;
SET GLOBAL userstat=@save_userstat;

View File

@ -162,3 +162,17 @@ drop table t1;
set global userstat=@save_userstat;
--echo # End of 11.5 tests
--echo #
--echo # MDEV-34782 SIGSEGV in handler::update_global_table_stats in
--echo # close_thread_table()
--echo #
CREATE TABLE t1 (a CHAR(1));
HANDLER t1 OPEN;
INSERT INTO t1 VALUES (1);
HANDLER t1 READ NEXT;
SET GLOBAL userstat=1;
HANDLER t1 close;
drop table t1;
SET GLOBAL userstat=@save_userstat;

View File

@ -6106,8 +6106,11 @@ void handler::update_global_table_stats()
table_stats->rows_stats.deleted+= rows_stats.deleted;
table_stats->rows_stats.key_read_hit+= rows_stats.key_read_hit;
table_stats->rows_stats.key_read_miss+= rows_stats.key_read_miss;
table_stats->rows_stats.pages_accessed+= handler_stats->pages_accessed;
table_stats->rows_stats.pages_read_count+= handler_stats->pages_read_count;
if (handler_stats)
{
table_stats->rows_stats.pages_accessed+= handler_stats->pages_accessed;
table_stats->rows_stats.pages_read_count+= handler_stats->pages_read_count;
}
changed= rows_stats.updated + rows_stats.inserted + rows_stats.deleted;
table_stats->rows_changed_x_indexes+= (changed *
(table->s->keys ? table->s->keys :