mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-25743: Unnecessary copying of table names in InnoDB dictionary
Many InnoDB data dictionary cache operations require that the table name be copied so that it will be NUL terminated. (For example, SYS_TABLES.NAME is not guaranteed to be NUL-terminated.) dict_table_t::is_garbage_name(): Check if a name belongs to the background drop table queue. dict_check_if_system_table_exists(): Remove. dict_sys_t::load_sys_tables(): Load the non-hard-coded system tables SYS_FOREIGN, SYS_FOREIGN_COLS, SYS_VIRTUAL on startup. dict_sys_t::create_or_check_sys_tables(): Replaces dict_create_or_check_foreign_constraint_tables() and dict_create_or_check_sys_virtual(). dict_sys_t::load_table(): Replaces dict_table_get_low() and dict_load_table(). dict_sys_t::find_table(): Renamed from get_table(). dict_sys_t::sys_tables_exist(): Check whether all the non-hard-coded tables SYS_FOREIGN, SYS_FOREIGN_COLS, SYS_VIRTUAL exist. trx_t::has_stats_table_lock(): Moved to dict0stats.cc. Some error messages will now report table names in the internal databasename/tablename format, instead of `databasename`.`tablename`.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
call mtr.add_suppression("InnoDB: Operating system error number ");
|
||||
call mtr.add_suppression("InnoDB: (The error means|If you are|Cannot open datafile) ");
|
||||
call mtr.add_suppression("InnoDB: Ignoring tablespace for `test`\.`t`");
|
||||
call mtr.add_suppression("InnoDB: Ignoring tablespace for test/t ");
|
||||
call mtr.add_suppression("InnoDB: Table test/t .* does not exist");
|
||||
CREATE TABLE t (a SERIAL) ENGINE=InnoDB;
|
||||
INSERT INTO t() VALUES();
|
||||
|
Reference in New Issue
Block a user