Skip to content

Commit

Permalink
MDEV-28613 LeakSanitizer caused by I_S query using LIMIT ROWS EXAMINED
Browse files Browse the repository at this point in the history
Problem:
========
- InnoDB fails to free the allocated buffer of stored cursor
when information schema query is interrupted.

Solution:
=========
- In case of error handling, information schema query should free
the allocated buffer to store the cursor.
  • Loading branch information
Thirunarayanan committed Nov 21, 2023
1 parent 9656573 commit 84e0c02
Show file tree
Hide file tree
Showing 4 changed files with 160 additions and 35 deletions.
22 changes: 22 additions & 0 deletions mysql-test/suite/innodb/r/innodb_stats_fetch.result
Expand Up @@ -150,3 +150,25 @@ max_data_length 0
index_length 16384
DROP TABLE test_ps_fetch;
set @@use_stat_tables = @save_use_stat_tables;
#
# MDEV-28613 LeakSanitizer caused by I_S query using LIMIT ROWS EXAMINED
#
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES LIMIT ROWS EXAMINED 5;
Warnings:
Level Warning
Code 1931
Message Query execution was interrupted. The query exceeded LIMIT ROWS EXAMINED 5. The query result may be incomplete
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES LIMIT ROWS EXAMINED 5;
Warnings:
Level Warning
Code 1931
Message Query execution was interrupted. The query exceeded LIMIT ROWS EXAMINED 5. The query result may be incomplete
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS LIMIT ROWS EXAMINED 5;
Warnings:
Level Warning
Code 1931
Message Query execution was interrupted. The query exceeded LIMIT ROWS EXAMINED 5. The query result may be incomplete
SELECT SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES LIMIT ROWS EXAMINED 5;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_VIRTUAL LIMIT ROWS EXAMINED 5;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN LIMIT ROWS EXAMINED 5;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS LIMIT ROWS EXAMINED 5;
7 changes: 7 additions & 0 deletions mysql-test/suite/innodb/t/innodb_stats_fetch.opt
@@ -0,0 +1,7 @@
--innodb_sys_tables
--innodb_sys_indexes
--innodb_sys_virtual
--innodb_sys_foreign
--innodb_sys_foreign_cols
--innodb_sys_tablestats
--innodb_sys_tablespaces
13 changes: 13 additions & 0 deletions mysql-test/suite/innodb/t/innodb_stats_fetch.test
Expand Up @@ -81,3 +81,16 @@ FROM information_schema.tables WHERE table_name = 'test_ps_fetch';

DROP TABLE test_ps_fetch;
set @@use_stat_tables = @save_use_stat_tables;

--echo #
--echo # MDEV-28613 LeakSanitizer caused by I_S query using LIMIT ROWS EXAMINED
--echo #
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_INDEXES LIMIT ROWS EXAMINED 5;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES LIMIT ROWS EXAMINED 5;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS LIMIT ROWS EXAMINED 5;
--disable_result_log
SELECT SPACE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES LIMIT ROWS EXAMINED 5;
--enable_result_log
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_VIRTUAL LIMIT ROWS EXAMINED 5;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN LIMIT ROWS EXAMINED 5;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS LIMIT ROWS EXAMINED 5;

0 comments on commit 84e0c02

Please sign in to comment.