• Marko Mäkelä's avatar
    MDEV-25743: Unnecessary copying of table names in InnoDB dictionary · 49e2c8f0
    Marko Mäkelä authored
    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`.
    49e2c8f0
lock0lock.cc 180 KB