diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2018-11-05 16:47:14 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2018-11-05 16:47:14 +0200 |
commit | db55b39fb29979acd3c58581e34f8e51507a1792 (patch) | |
tree | 68be252c88448e34dee858f09ea5b987a7fb06c1 | |
parent | 03977e8273cbd33c3cbfec191ceee856f973ce1a (diff) | |
download | mariadb-git-db55b39fb29979acd3c58581e34f8e51507a1792.tar.gz |
Revert some InnoDB/XtraDB changes
The relevant InnoDB/XtraDB fixes up to 5.6.42 had already
been applied to MariaDB in commit 30c3d6db328d73f1b30be537aceb55d37936fdb9.
Revert some changes that appeared in
the merge commit 87d852f102a7f733a774252d9a446377ac51a976.
-rw-r--r-- | storage/innobase/dict/dict0dict.cc | 7 | ||||
-rw-r--r-- | storage/innobase/fts/fts0fts.cc | 20 | ||||
-rw-r--r-- | storage/innobase/handler/ha_innodb.cc | 68 | ||||
-rw-r--r-- | storage/innobase/handler/handler0alter.cc | 33 | ||||
-rw-r--r-- | storage/innobase/include/os0file.h | 6 | ||||
-rw-r--r-- | storage/innobase/row/row0merge.cc | 5 | ||||
-rw-r--r-- | storage/innobase/row/row0sel.cc | 4 | ||||
-rw-r--r-- | storage/xtradb/dict/dict0dict.cc | 7 | ||||
-rw-r--r-- | storage/xtradb/fts/fts0fts.cc | 20 | ||||
-rw-r--r-- | storage/xtradb/fts/fts0pars.cc | 4 | ||||
-rw-r--r-- | storage/xtradb/fts/fts0pars.y | 4 | ||||
-rw-r--r-- | storage/xtradb/handler/ha_innodb.cc | 59 | ||||
-rw-r--r-- | storage/xtradb/include/data0type.ic | 4 | ||||
-rw-r--r-- | storage/xtradb/include/dict0mem.h | 3 | ||||
-rw-r--r-- | storage/xtradb/row/row0import.cc | 9 | ||||
-rw-r--r-- | storage/xtradb/row/row0sel.cc | 5 |
16 files changed, 104 insertions, 154 deletions
diff --git a/storage/innobase/dict/dict0dict.cc b/storage/innobase/dict/dict0dict.cc index 6c5df41e90d..7575a4aed62 100644 --- a/storage/innobase/dict/dict0dict.cc +++ b/storage/innobase/dict/dict0dict.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. Copyright (c) 2014, 2017, MariaDB Corporation. @@ -3370,10 +3370,7 @@ dict_foreign_find_index( table, col_names, columns, n_cols, index, types_idx, check_charsets, check_null, - error, err_col_no,err_index) - && (!(index->online_status == - ONLINE_INDEX_ABORTED_DROPPED - ||index->online_status == ONLINE_INDEX_ABORTED))) { + error, err_col_no,err_index)) { if (error) { *error = DB_SUCCESS; } diff --git a/storage/innobase/fts/fts0fts.cc b/storage/innobase/fts/fts0fts.cc index d4ca9cb3660..4891e572741 100644 --- a/storage/innobase/fts/fts0fts.cc +++ b/storage/innobase/fts/fts0fts.cc @@ -870,19 +870,19 @@ fts_drop_index( err = fts_drop_index_tables(trx, index); while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } - fts_free(table); + fts_free(table); return(err); } while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } current_doc_id = table->fts->cache->next_doc_id; first_doc_id = table->fts->cache->first_doc_id; @@ -901,9 +901,9 @@ fts_drop_index( if (index_cache != NULL) { while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } if (index_cache->words) { fts_words_free(index_cache->words); rbt_free(index_cache->words); diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index c775a89918c..2092cd113a5 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -2015,11 +2015,6 @@ innobase_get_lower_case_table_names(void) { return(lower_case_table_names); } -/** return one of the tmpdir path -@return tmpdir path*/ -UNIV_INTERN -char* -innobase_mysql_tmpdir(void) { return (mysql_tmpdir); } /** Create a temporary file in the location specified by the parameter path. If the path is null, then it will be created in tmpdir. @@ -10908,36 +10903,35 @@ innobase_rename_table( row_mysql_lock_data_dictionary(trx); - dict_table_t* table = NULL; - table = dict_table_open_on_name(norm_from, TRUE, FALSE, - DICT_ERR_IGNORE_NONE); + dict_table_t* table = dict_table_open_on_name(norm_from, TRUE, FALSE, + DICT_ERR_IGNORE_NONE); - /* Since DICT_BG_YIELD has sleep for 250 milliseconds, + /* Since DICT_BG_YIELD has sleep for 250 milliseconds, Convert lock_wait_timeout unit from second to 250 milliseconds */ - long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; - if (table != NULL) { - for (dict_index_t* index = dict_table_get_first_index(table); - index != NULL; - index = dict_table_get_next_index(index)) { - - if (index->type & DICT_FTS) { - /* Found */ - while (index->index_fts_syncing - && !trx_is_interrupted(trx) - && (lock_wait_timeout--) > 0) { - DICT_BG_YIELD(trx); - } - } - } - dict_table_close(table, TRUE, FALSE); - } + long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; + if (table != NULL) { + for (dict_index_t* index = dict_table_get_first_index(table); + index != NULL; + index = dict_table_get_next_index(index)) { + + if (index->type & DICT_FTS) { + /* Found */ + while (index->index_fts_syncing + && !trx_is_interrupted(trx) + && (lock_wait_timeout--) > 0) { + DICT_BG_YIELD(trx); + } + } + } + dict_table_close(table, TRUE, FALSE); + } - /* FTS sync is in progress. We shall timeout this operation */ - if (lock_wait_timeout < 0) { - error = DB_LOCK_WAIT_TIMEOUT; - row_mysql_unlock_data_dictionary(trx); - DBUG_RETURN(error); - } + /* FTS sync is in progress. We shall timeout this operation */ + if (lock_wait_timeout < 0) { + error = DB_LOCK_WAIT_TIMEOUT; + row_mysql_unlock_data_dictionary(trx); + DBUG_RETURN(error); + } /* Transaction must be flagged as a locking transaction or it hasn't been started yet. */ @@ -11092,13 +11086,11 @@ ha_innobase::rename_table( my_error(ER_TABLE_EXISTS_ERROR, MYF(0), to); error = DB_ERROR; - } + } else if (error == DB_LOCK_WAIT_TIMEOUT) { + my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), to); - else if (error == DB_LOCK_WAIT_TIMEOUT) { - my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), to); - - error = DB_LOCK_WAIT; - } + error = DB_LOCK_WAIT; + } DBUG_RETURN(convert_error_code_to_mysql(error, 0, NULL)); } diff --git a/storage/innobase/handler/handler0alter.cc b/storage/innobase/handler/handler0alter.cc index 6f43e921099..367601e1b33 100644 --- a/storage/innobase/handler/handler0alter.cc +++ b/storage/innobase/handler/handler0alter.cc @@ -4173,23 +4173,11 @@ oom: table. Either way, we should be seeing and reporting a bogus duplicate key error. */ dup_key = NULL; - } else if (prebuilt->trx->error_key_num == 0) { + } else { + DBUG_ASSERT(prebuilt->trx->error_key_num + < ha_alter_info->key_count); dup_key = &ha_alter_info->key_info_buffer[ prebuilt->trx->error_key_num]; - } else { - /* Check if there is generated cluster index column */ - if (ctx->num_to_add_index > ha_alter_info->key_count) { - DBUG_ASSERT(prebuilt->trx->error_key_num - <= ha_alter_info->key_count); - dup_key = &ha_alter_info->key_info_buffer[ - prebuilt->trx->error_key_num - 1]; - } - else { - DBUG_ASSERT(prebuilt->trx->error_key_num - < ha_alter_info->key_count); - dup_key = &ha_alter_info->key_info_buffer[ - prebuilt->trx->error_key_num]; - } } print_keydup_error(altered_table, dup_key, MYF(0)); break; @@ -5117,18 +5105,9 @@ commit_try_rebuild( FTS_DOC_ID. */ dup_key = NULL; } else { - if (ctx->num_to_add_index > ha_alter_info->key_count) { - DBUG_ASSERT(err_key <= - ha_alter_info->key_count); - dup_key = &ha_alter_info - ->key_info_buffer[err_key - 1]; - } - else { - DBUG_ASSERT(err_key < - ha_alter_info->key_count); - dup_key = &ha_alter_info - ->key_info_buffer[err_key]; - } + DBUG_ASSERT(err_key < ha_alter_info->key_count); + dup_key = &ha_alter_info + ->key_info_buffer[err_key]; } print_keydup_error(altered_table, dup_key, MYF(0)); diff --git a/storage/innobase/include/os0file.h b/storage/innobase/include/os0file.h index e73aeca6e5a..a78e3d64773 100644 --- a/storage/innobase/include/os0file.h +++ b/storage/innobase/include/os0file.h @@ -1,6 +1,6 @@ /*********************************************************************** -Copyright (c) 1995, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2009, Percona Inc. Copyright (c) 2013, 2017, MariaDB Corporation. @@ -1314,10 +1314,6 @@ os_file_get_status( file can be opened in RW mode */ #if !defined(UNIV_HOTBACKUP) - -/** return one of the tmpdir path - @return tmpdir path*/ -char *innobase_mysql_tmpdir(void); /** Create a temporary file in the location specified by the parameter path. If the path is null, then it will be created in tmpdir. @param[in] path location for creating temporary file diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc index 5d3e2d2cca6..ec9b8f79e49 100644 --- a/storage/innobase/row/row0merge.cc +++ b/storage/innobase/row/row0merge.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2005, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2005, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2014, 2018, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -3138,10 +3138,9 @@ row_merge_file_create_low( file APIs, add instrumentation to register with performance schema */ struct PSI_file_locker* locker = NULL; - PSI_file_locker_state state; if (!path) { - path = innobase_mysql_tmpdir(); + path = mysql_tmpdir; } static const char label[] = "/Innodb Merge Temp File"; char* name = static_cast<char*>( diff --git a/storage/innobase/row/row0sel.cc b/storage/innobase/row/row0sel.cc index 9426953d173..c2954742f8e 100644 --- a/storage/innobase/row/row0sel.cc +++ b/storage/innobase/row/row0sel.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1997, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1997, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2008, Google Inc. Copyright (c) 2015, 2018, MariaDB Corporation. @@ -4550,7 +4550,7 @@ no_gap_lock: prebuilt->new_rec_locks = 1; } err = DB_SUCCESS; - break; + /* fall through */ case DB_SUCCESS: break; case DB_LOCK_WAIT: diff --git a/storage/xtradb/dict/dict0dict.cc b/storage/xtradb/dict/dict0dict.cc index 04ead82dffa..b76414eeea4 100644 --- a/storage/xtradb/dict/dict0dict.cc +++ b/storage/xtradb/dict/dict0dict.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 1996, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 1996, 2017, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2012, Facebook Inc. Copyright (c) 2014, 2017, MariaDB Corporation. @@ -3387,10 +3387,7 @@ dict_foreign_find_index( table, col_names, columns, n_cols, index, types_idx, check_charsets, check_null, - error, err_col_no,err_index) - && (!(index->online_status == - ONLINE_INDEX_ABORTED_DROPPED - ||index->online_status == ONLINE_INDEX_ABORTED))) { + error, err_col_no,err_index)) { if (error) { *error = DB_SUCCESS; } diff --git a/storage/xtradb/fts/fts0fts.cc b/storage/xtradb/fts/fts0fts.cc index 9e038c2edd5..e2a479bf0ae 100644 --- a/storage/xtradb/fts/fts0fts.cc +++ b/storage/xtradb/fts/fts0fts.cc @@ -870,19 +870,19 @@ fts_drop_index( err = fts_drop_index_tables(trx, index); while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } - fts_free(table); + fts_free(table); return(err); } while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } current_doc_id = table->fts->cache->next_doc_id; first_doc_id = table->fts->cache->first_doc_id; @@ -901,9 +901,9 @@ fts_drop_index( if (index_cache != NULL) { while (index->index_fts_syncing - && !trx_is_interrupted(trx)) { - DICT_BG_YIELD(trx); - } + && !trx_is_interrupted(trx)) { + DICT_BG_YIELD(trx); + } if (index_cache->words) { fts_words_free(index_cache->words); rbt_free(index_cache->words); diff --git a/storage/xtradb/fts/fts0pars.cc b/storage/xtradb/fts/fts0pars.cc index b7fef4ea8ce..19917ccd26a 100644 --- a/storage/xtradb/fts/fts0pars.cc +++ b/storage/xtradb/fts/fts0pars.cc @@ -106,8 +106,8 @@ extern int ftserror(const char* p); typedef int (*fts_scanner)(YYSTYPE* val, yyscan_t yyscanner); struct fts_lexer_t { - fts_scanner scanner; - void* yyscanner; + fts_scanner scanner; + void* yyscanner; }; diff --git a/storage/xtradb/fts/fts0pars.y b/storage/xtradb/fts/fts0pars.y index 36dae9f7ceb..65c4189eece 100644 --- a/storage/xtradb/fts/fts0pars.y +++ b/storage/xtradb/fts/fts0pars.y @@ -52,8 +52,8 @@ extern int ftserror(const char* p); typedef int (*fts_scanner)(YYSTYPE* val, yyscan_t yyscanner); struct fts_lexer_struct { - fts_scanner scanner; - void* yyscanner; + fts_scanner scanner; + void* yyscanner; }; %} diff --git a/storage/xtradb/handler/ha_innodb.cc b/storage/xtradb/handler/ha_innodb.cc index e7992c3f161..127309a6b65 100644 --- a/storage/xtradb/handler/ha_innodb.cc +++ b/storage/xtradb/handler/ha_innodb.cc @@ -11721,36 +11721,35 @@ innobase_rename_table( row_mysql_lock_data_dictionary(trx); - dict_table_t* table = NULL; - table = dict_table_open_on_name(norm_from, TRUE, FALSE, - DICT_ERR_IGNORE_NONE); + dict_table_t* table = dict_table_open_on_name(norm_from, TRUE, FALSE, + DICT_ERR_IGNORE_NONE); - /* Since DICT_BG_YIELD has sleep for 250 milliseconds, + /* Since DICT_BG_YIELD has sleep for 250 milliseconds, Convert lock_wait_timeout unit from second to 250 milliseconds */ - long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; - if (table != NULL) { - for (dict_index_t* index = dict_table_get_first_index(table); - index != NULL; - index = dict_table_get_next_index(index)) { - - if (index->type & DICT_FTS) { - /* Found */ - while (index->index_fts_syncing - && !trx_is_interrupted(trx) - && (lock_wait_timeout--) > 0) { - DICT_BG_YIELD(trx); - } - } - } - dict_table_close(table, TRUE, FALSE); - } + long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; + if (table != NULL) { + for (dict_index_t* index = dict_table_get_first_index(table); + index != NULL; + index = dict_table_get_next_index(index)) { + + if (index->type & DICT_FTS) { + /* Found */ + while (index->index_fts_syncing + && !trx_is_interrupted(trx) + && (lock_wait_timeout--) > 0) { + DICT_BG_YIELD(trx); + } + } + } + dict_table_close(table, TRUE, FALSE); + } - /* FTS sync is in progress. We shall timeout this operation */ - if (lock_wait_timeout < 0) { - error = DB_LOCK_WAIT_TIMEOUT; - row_mysql_unlock_data_dictionary(trx); - DBUG_RETURN(error); - } + /* FTS sync is in progress. We shall timeout this operation */ + if (lock_wait_timeout < 0) { + error = DB_LOCK_WAIT_TIMEOUT; + row_mysql_unlock_data_dictionary(trx); + DBUG_RETURN(error); + } /* Transaction must be flagged as a locking transaction or it hasn't been started yet. */ @@ -11916,12 +11915,6 @@ ha_innobase::rename_table( error = DB_LOCK_WAIT; } - else if (error == DB_LOCK_WAIT_TIMEOUT) { - my_error(ER_LOCK_WAIT_TIMEOUT, MYF(0), to); - - error = DB_LOCK_WAIT; - } - DBUG_RETURN(convert_error_code_to_mysql(error, 0, NULL)); } diff --git a/storage/xtradb/include/data0type.ic b/storage/xtradb/include/data0type.ic index 63a0785744d..a7e2eb0682c 100644 --- a/storage/xtradb/include/data0type.ic +++ b/storage/xtradb/include/data0type.ic @@ -525,7 +525,7 @@ dtype_get_fixed_size_low( return(0); } #endif /* UNIV_DEBUG */ - // fallthrough + /* fall through */ case DATA_CHAR: case DATA_FIXBINARY: case DATA_INT: @@ -603,7 +603,7 @@ dtype_get_min_size_low( return(0); } #endif /* UNIV_DEBUG */ - // fallthrough + /* fall through */ case DATA_CHAR: case DATA_FIXBINARY: case DATA_INT: diff --git a/storage/xtradb/include/dict0mem.h b/storage/xtradb/include/dict0mem.h index 95f9ea0f787..e6c0aa1f252 100644 --- a/storage/xtradb/include/dict0mem.h +++ b/storage/xtradb/include/dict0mem.h @@ -292,7 +292,8 @@ dict_mem_table_add_col( const char* name, /*!< in: column name, or NULL */ ulint mtype, /*!< in: main datatype */ ulint prtype, /*!< in: precise type */ - ulint len); /*!< in: precision */ + ulint len) /*!< in: precision */ + MY_ATTRIBUTE((nonnull(1))); /**********************************************************************//** Renames a column of a table in the data dictionary cache. */ UNIV_INTERN diff --git a/storage/xtradb/row/row0import.cc b/storage/xtradb/row/row0import.cc index f3163a63754..5c42ab6f2bb 100644 --- a/storage/xtradb/row/row0import.cc +++ b/storage/xtradb/row/row0import.cc @@ -1,6 +1,6 @@ /***************************************************************************** -Copyright (c) 2012, 2018, Oracle and/or its affiliates. All Rights Reserved. +Copyright (c) 2012, 2016, Oracle and/or its affiliates. All Rights Reserved. Copyright (c) 2015, 2018, MariaDB Corporation. This program is free software; you can redistribute it and/or modify it under @@ -1969,11 +1969,7 @@ PageConverter::update_index_page( return(DB_SUCCESS); } - if (!page_is_leaf(block->frame)) { - return (DB_SUCCESS); - } - - return(update_records(block)); + return page_is_leaf(block->frame) ? update_records(block) : DB_SUCCESS; } /** @@ -3834,4 +3830,3 @@ row_import_for_mysql( return(row_import_cleanup(prebuilt, trx, err)); } - diff --git a/storage/xtradb/row/row0sel.cc b/storage/xtradb/row/row0sel.cc index ce5d74b5a3b..daef291248b 100644 --- a/storage/xtradb/row/row0sel.cc +++ b/storage/xtradb/row/row0sel.cc @@ -2736,7 +2736,8 @@ row_sel_field_store_in_mysql_format_func( case DATA_SYS: /* These column types should never be shipped to MySQL. */ ut_ad(0); - break; + /* fall through */ + case DATA_CHAR: case DATA_FIXBINARY: case DATA_FLOAT: @@ -4566,7 +4567,7 @@ no_gap_lock: prebuilt->new_rec_locks = 1; } err = DB_SUCCESS; - break; + /* fall through */ case DB_SUCCESS: break; case DB_LOCK_WAIT: |