diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2020-10-28 10:01:50 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2020-10-28 10:01:50 +0200 |
commit | a8de8f261d1b7621b8e16396e87dfaac14891162 (patch) | |
tree | 9b8ec45858c2757305e0bdecf237fcb59251020c /storage/innobase/dict/dict0mem.cc | |
parent | e183aec1d75ea7b424ebe237e6b1643961903f2d (diff) | |
parent | 42e1815ad850384fad292534665ff61b78dd96f6 (diff) | |
download | mariadb-git-a8de8f261d1b7621b8e16396e87dfaac14891162.tar.gz |
Merge 10.2 into 10.3
Diffstat (limited to 'storage/innobase/dict/dict0mem.cc')
-rw-r--r-- | storage/innobase/dict/dict0mem.cc | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/storage/innobase/dict/dict0mem.cc b/storage/innobase/dict/dict0mem.cc index 78ed717156c..a7201f165c0 100644 --- a/storage/innobase/dict/dict0mem.cc +++ b/storage/innobase/dict/dict0mem.cc @@ -115,19 +115,24 @@ operator<<( return(s << ut_get_name(NULL, table_name.m_name)); } -/**********************************************************************//** -Creates a table memory object. +/** Create a table memory object. +@param name table name +@param space tablespace +@param n_cols total number of columns (both virtual and non-virtual) +@param n_v_cols number of virtual columns +@param flags table flags +@param flags2 table flags2 +@param init_stats_latch whether to init the stats latch @return own: table object */ dict_table_t* dict_mem_table_create( -/*==================*/ - const char* name, /*!< in: table name */ - fil_space_t* space, /*!< in: tablespace */ - ulint n_cols, /*!< in: total number of columns including - virtual and non-virtual columns */ - ulint n_v_cols,/*!< in: number of virtual columns */ - ulint flags, /*!< in: table flags */ - ulint flags2) /*!< in: table flags2 */ + const char* name, + fil_space_t* space, + ulint n_cols, + ulint n_v_cols, + ulint flags, + ulint flags2, + bool init_stats_latch) { dict_table_t* table; mem_heap_t* heap; @@ -171,16 +176,9 @@ dict_mem_table_create( table->v_cols = static_cast<dict_v_col_t*>( mem_heap_alloc(heap, n_v_cols * sizeof(*table->v_cols))); - /* true means that the stats latch will be enabled - - dict_table_stats_lock() will not be noop. */ - dict_table_stats_latch_create(table, true); - table->autoinc_lock = static_cast<ib_lock_t*>( mem_heap_alloc(heap, lock_get_size())); - /* lazy creation of table autoinc latch */ - dict_table_autoinc_create_lazy(table); - /* If the table has an FTS index or we are in the process of building one, create the table->fts */ if (dict_table_has_fts_index(table) @@ -195,6 +193,12 @@ dict_mem_table_create( new(&table->foreign_set) dict_foreign_set(); new(&table->referenced_set) dict_foreign_set(); + if (init_stats_latch) { + rw_lock_create(dict_table_stats_key, &table->stats_latch, + SYNC_INDEX_TREE); + table->stats_latch_inited = true; + } + return(table); } @@ -223,9 +227,7 @@ dict_mem_table_free( } } - dict_table_autoinc_destroy(table); dict_mem_table_free_foreign_vcol_set(table); - dict_table_stats_latch_destroy(table); table->foreign_set.~dict_foreign_set(); table->referenced_set.~dict_foreign_set(); @@ -246,6 +248,10 @@ dict_mem_table_free( UT_DELETE(table->s_cols); } + if (table->stats_latch_inited) { + rw_lock_free(&table->stats_latch); + } + mem_heap_free(table->heap); } @@ -778,7 +784,7 @@ dict_mem_index_create( dict_mem_fill_index_struct(index, heap, index_name, type, n_fields); - dict_index_zip_pad_mutex_create_lazy(index); + mysql_mutex_init(0, &index->zip_pad.mutex, NULL); if (type & DICT_SPATIAL) { index->rtr_track = static_cast<rtr_info_track_t*>( @@ -1093,7 +1099,7 @@ dict_mem_index_free( ut_ad(index); ut_ad(index->magic_n == DICT_INDEX_MAGIC_N); - dict_index_zip_pad_mutex_destroy(index); + mysql_mutex_destroy(&index->zip_pad.mutex); if (dict_index_is_spatial(index)) { rtr_info_active::iterator it; |