Skip to content
Permalink
Browse files
Revert some InnoDB/XtraDB changes
The relevant InnoDB/XtraDB fixes up to 5.6.42 had already
been applied to MariaDB in commit 30c3d6d.

Revert some changes that appeared in
the merge commit 87d852f.
  • Loading branch information
dr-m committed Nov 5, 2018
1 parent 03977e8 commit db55b39
Show file tree
Hide file tree
Showing 16 changed files with 104 additions and 154 deletions.
@@ -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;
}
@@ -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);
@@ -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));
}
@@ -4173,23 +4173,11 @@ ha_innobase::inplace_alter_table(
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));
@@ -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
@@ -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*>(
@@ -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 @@ row_search_for_mysql(
prebuilt->new_rec_locks = 1;
}
err = DB_SUCCESS;
break;
/* fall through */
case DB_SUCCESS:
break;
case DB_LOCK_WAIT:
@@ -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;
}
@@ -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);
@@ -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;
};


@@ -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;
};

%}

0 comments on commit db55b39

Please sign in to comment.