summaryrefslogtreecommitdiff
path: root/storage/innobase/include/dict0dict.h
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2017-07-21 16:05:20 +0300
committerJan Lindström <jan.lindstrom@mariadb.com>2017-07-21 16:05:20 +0300
commit92cbe388b6839bc1e21abb9859c54c58fc1769cf (patch)
treee34c5a03f82d2feba7ea91d0d7ca7bd6de0ceb92 /storage/innobase/include/dict0dict.h
parent0ec147b6174a8069c303a6d0bd4e3822fe16e4c2 (diff)
downloadmariadb-git-bb-10.0-jan.tar.gz
MDEV-13325: InnoDB assert dict_sys->size > 0 during ALTER TABLEbb-10.0-jan
Problem was that dict_sys->size tries to maintain used memory occupied by the data dictionary table and index objects. However at least on table objects table->heap size can increase between when table object is inserted to dict_sys and when it is removed from dict_sys causing inconsistency on amount of memory added to and removed from dict_sys->size variable. Removed unnecessary dict_sys:size variable as it is really used only for status output. Introduced dict_sys_get_size function to calculate memory occupied by the data dictionary table and index objects that is then used on show engine innodb output. dict_table_add_to_cache(), dict_table_rename_in_cache(), dict_table_remove_from_cache_low(), dict_index_remove_from_cache_low(), Remove size calculation. srv_printf_innodb_monitor(): Use dict_sys_get_size function to get dictionary memory allocated. xtradb_internal_hash_tables_fill_table(): Use dict_sys_get_size function to get dictionary memory allocated.
Diffstat (limited to 'storage/innobase/include/dict0dict.h')
-rw-r--r--storage/innobase/include/dict0dict.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/storage/innobase/include/dict0dict.h b/storage/innobase/include/dict0dict.h
index 7c00ac096cb..bee291910ed 100644
--- a/storage/innobase/include/dict0dict.h
+++ b/storage/innobase/include/dict0dict.h
@@ -1614,9 +1614,6 @@ struct dict_sys_t{
on name */
hash_table_t* table_id_hash; /*!< hash table of the tables, based
on id */
- ulint size; /*!< varying space in bytes occupied
- by the data dictionary table and
- index objects */
dict_table_t* sys_tables; /*!< SYS_TABLES table */
dict_table_t* sys_columns; /*!< SYS_COLUMNS table */
dict_table_t* sys_indexes; /*!< SYS_INDEXES table */
@@ -1861,6 +1858,13 @@ dict_table_get_index_on_first_col(
ulint col_index); /*!< in: position of column
in table */
+/** Calculate the used memory occupied by the data dictionary
+table and index objects.
+@return number of bytes occupied. */
+UNIV_INTERN
+ulint
+dict_sys_get_size();
+
#endif /* !UNIV_HOTBACKUP */
#ifndef UNIV_NONINL