Commit bae21bfb authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 10.0 into 10.1

parents d63e1980 db55b39f
/***************************************************************************** /*****************************************************************************
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) 2012, Facebook Inc.
Copyright (c) 2013, 2018, MariaDB Corporation. Copyright (c) 2013, 2018, MariaDB Corporation.
...@@ -3381,10 +3381,7 @@ dict_foreign_find_index( ...@@ -3381,10 +3381,7 @@ dict_foreign_find_index(
table, col_names, columns, n_cols, table, col_names, columns, n_cols,
index, types_idx, index, types_idx,
check_charsets, check_null, check_charsets, check_null,
error, err_col_no,err_index) error, err_col_no,err_index)) {
&& (!(index->online_status ==
ONLINE_INDEX_ABORTED_DROPPED
||index->online_status == ONLINE_INDEX_ABORTED))) {
if (error) { if (error) {
*error = DB_SUCCESS; *error = DB_SUCCESS;
} }
......
...@@ -870,19 +870,19 @@ fts_drop_index( ...@@ -870,19 +870,19 @@ fts_drop_index(
err = fts_drop_index_tables(trx, index); err = fts_drop_index_tables(trx, index);
while (index->index_fts_syncing while (index->index_fts_syncing
&& !trx_is_interrupted(trx)) { && !trx_is_interrupted(trx)) {
DICT_BG_YIELD(trx); DICT_BG_YIELD(trx);
} }
fts_free(table); fts_free(table);
return(err); return(err);
} }
while (index->index_fts_syncing while (index->index_fts_syncing
&& !trx_is_interrupted(trx)) { && !trx_is_interrupted(trx)) {
DICT_BG_YIELD(trx); DICT_BG_YIELD(trx);
} }
current_doc_id = table->fts->cache->next_doc_id; current_doc_id = table->fts->cache->next_doc_id;
first_doc_id = table->fts->cache->first_doc_id; first_doc_id = table->fts->cache->first_doc_id;
...@@ -901,9 +901,9 @@ fts_drop_index( ...@@ -901,9 +901,9 @@ fts_drop_index(
if (index_cache != NULL) { if (index_cache != NULL) {
while (index->index_fts_syncing while (index->index_fts_syncing
&& !trx_is_interrupted(trx)) { && !trx_is_interrupted(trx)) {
DICT_BG_YIELD(trx); DICT_BG_YIELD(trx);
} }
if (index_cache->words) { if (index_cache->words) {
fts_words_free(index_cache->words); fts_words_free(index_cache->words);
rbt_free(index_cache->words); rbt_free(index_cache->words);
......
...@@ -2357,11 +2357,6 @@ innobase_get_lower_case_table_names(void) ...@@ -2357,11 +2357,6 @@ innobase_get_lower_case_table_names(void)
{ {
return(lower_case_table_names); 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 /** Create a temporary file in the location specified by the parameter
path. If the path is null, then it will be created in tmpdir. path. If the path is null, then it will be created in tmpdir.
...@@ -12872,36 +12867,35 @@ innobase_rename_table( ...@@ -12872,36 +12867,35 @@ innobase_rename_table(
row_mysql_lock_data_dictionary(trx); row_mysql_lock_data_dictionary(trx);
dict_table_t* table = NULL; dict_table_t* table = dict_table_open_on_name(norm_from, TRUE, FALSE,
table = dict_table_open_on_name(norm_from, TRUE, FALSE, DICT_ERR_IGNORE_NONE);
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 */ Convert lock_wait_timeout unit from second to 250 milliseconds */
long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4;
if (table != NULL) { if (table != NULL) {
for (dict_index_t* index = dict_table_get_first_index(table); for (dict_index_t* index = dict_table_get_first_index(table);
index != NULL; index != NULL;
index = dict_table_get_next_index(index)) { index = dict_table_get_next_index(index)) {
if (index->type & DICT_FTS) { if (index->type & DICT_FTS) {
/* Found */ /* Found */
while (index->index_fts_syncing while (index->index_fts_syncing
&& !trx_is_interrupted(trx) && !trx_is_interrupted(trx)
&& (lock_wait_timeout--) > 0) { && (lock_wait_timeout--) > 0) {
DICT_BG_YIELD(trx); DICT_BG_YIELD(trx);
} }
} }
} }
dict_table_close(table, TRUE, FALSE); dict_table_close(table, TRUE, FALSE);
} }
/* FTS sync is in progress. We shall timeout this operation */ /* FTS sync is in progress. We shall timeout this operation */
if (lock_wait_timeout < 0) { if (lock_wait_timeout < 0) {
error = DB_LOCK_WAIT_TIMEOUT; error = DB_LOCK_WAIT_TIMEOUT;
row_mysql_unlock_data_dictionary(trx); row_mysql_unlock_data_dictionary(trx);
DBUG_RETURN(error); DBUG_RETURN(error);
} }
/* Transaction must be flagged as a locking transaction or it hasn't /* Transaction must be flagged as a locking transaction or it hasn't
been started yet. */ been started yet. */
...@@ -13056,13 +13050,11 @@ ha_innobase::rename_table( ...@@ -13056,13 +13050,11 @@ ha_innobase::rename_table(
my_error(ER_TABLE_EXISTS_ERROR, MYF(0), to); my_error(ER_TABLE_EXISTS_ERROR, MYF(0), to);
error = DB_ERROR; 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)); DBUG_RETURN(convert_error_code_to_mysql(error, 0, NULL));
} }
......
...@@ -4283,23 +4283,11 @@ ha_innobase::inplace_alter_table( ...@@ -4283,23 +4283,11 @@ ha_innobase::inplace_alter_table(
table. Either way, we should be seeing and table. Either way, we should be seeing and
reporting a bogus duplicate key error. */ reporting a bogus duplicate key error. */
dup_key = NULL; 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[ dup_key = &ha_alter_info->key_info_buffer[
prebuilt->trx->error_key_num]; 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)); print_keydup_error(altered_table, dup_key, MYF(0));
break; break;
...@@ -5234,18 +5222,9 @@ commit_try_rebuild( ...@@ -5234,18 +5222,9 @@ commit_try_rebuild(
FTS_DOC_ID. */ FTS_DOC_ID. */
dup_key = NULL; dup_key = NULL;
} else { } else {
if (ctx->num_to_add_index > ha_alter_info->key_count) { DBUG_ASSERT(err_key < ha_alter_info->key_count);
DBUG_ASSERT(err_key <= dup_key = &ha_alter_info
ha_alter_info->key_count); ->key_info_buffer[err_key];
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];
}
} }
print_keydup_error(altered_table, dup_key, MYF(0)); print_keydup_error(altered_table, dup_key, MYF(0));
......
/*********************************************************************** /***********************************************************************
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) 2009, Percona Inc.
Copyright (c) 2013, 2017, MariaDB Corporation. Copyright (c) 2013, 2017, MariaDB Corporation.
...@@ -1323,10 +1323,6 @@ os_file_get_status( ...@@ -1323,10 +1323,6 @@ os_file_get_status(
file can be opened in RW mode */ file can be opened in RW mode */
#if !defined(UNIV_HOTBACKUP) #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 /** Create a temporary file in the location specified by the parameter
path. If the path is null, then it will be created in tmpdir. path. If the path is null, then it will be created in tmpdir.
@param[in] path location for creating temporary file @param[in] path location for creating temporary file
......
/***************************************************************************** /*****************************************************************************
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. Copyright (c) 2014, 2018, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
...@@ -3339,10 +3339,9 @@ row_merge_file_create_low( ...@@ -3339,10 +3339,9 @@ row_merge_file_create_low(
file APIs, add instrumentation to register with file APIs, add instrumentation to register with
performance schema */ performance schema */
struct PSI_file_locker* locker = NULL; struct PSI_file_locker* locker = NULL;
PSI_file_locker_state state; PSI_file_locker_state state;
if (!path) { if (!path) {
path = innobase_mysql_tmpdir(); path = mysql_tmpdir;
} }
static const char label[] = "/Innodb Merge Temp File"; static const char label[] = "/Innodb Merge Temp File";
char* name = static_cast<char*>( char* name = static_cast<char*>(
......
/***************************************************************************** /*****************************************************************************
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) 2008, Google Inc.
Copyright (c) 2015, 2018, MariaDB Corporation. Copyright (c) 2015, 2018, MariaDB Corporation.
...@@ -4721,7 +4721,7 @@ row_search_for_mysql( ...@@ -4721,7 +4721,7 @@ row_search_for_mysql(
prebuilt->new_rec_locks = 1; prebuilt->new_rec_locks = 1;
} }
err = DB_SUCCESS; err = DB_SUCCESS;
break; /* fall through */
case DB_SUCCESS: case DB_SUCCESS:
break; break;
case DB_LOCK_WAIT: case DB_LOCK_WAIT:
......
/***************************************************************************** /*****************************************************************************
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) 2012, Facebook Inc.
Copyright (c) 2013, 2018, MariaDB Corporation. Copyright (c) 2013, 2018, MariaDB Corporation.
...@@ -3394,10 +3394,7 @@ dict_foreign_find_index( ...@@ -3394,10 +3394,7 @@ dict_foreign_find_index(
table, col_names, columns, n_cols, table, col_names, columns, n_cols,
index, types_idx, index, types_idx,
check_charsets, check_null, check_charsets, check_null,
error, err_col_no,err_index) error, err_col_no,err_index)) {
&& (!(index->online_status ==
ONLINE_INDEX_ABORTED_DROPPED
||index->online_status == ONLINE_INDEX_ABORTED))) {
if (error) { if (error) {
*error = DB_SUCCESS; *error = DB_SUCCESS;
} }
......
...@@ -870,19 +870,19 @@ fts_drop_index( ...@@ -870,19 +870,19 @@ fts_drop_index(
err = fts_drop_index_tables(trx, index); err = fts_drop_index_tables(trx, index);
while (index->index_fts_syncing while (index->index_fts_syncing
&& !trx_is_interrupted(trx)) { && !trx_is_interrupted(trx)) {
DICT_BG_YIELD(trx); DICT_BG_YIELD(trx);
} }
fts_free(table); fts_free(table);
return(err); return(err);
} }
while (index->index_fts_syncing while (index->index_fts_syncing
&& !trx_is_interrupted(trx)) { && !trx_is_interrupted(trx)) {
DICT_BG_YIELD(trx); DICT_BG_YIELD(trx);
} }
current_doc_id = table->fts->cache->next_doc_id; current_doc_id = table->fts->cache->next_doc_id;
first_doc_id = table->fts->cache->first_doc_id; first_doc_id = table->fts->cache->first_doc_id;
...@@ -901,9 +901,9 @@ fts_drop_index( ...@@ -901,9 +901,9 @@ fts_drop_index(
if (index_cache != NULL) { if (index_cache != NULL) {
while (index->index_fts_syncing while (index->index_fts_syncing
&& !trx_is_interrupted(trx)) { && !trx_is_interrupted(trx)) {
DICT_BG_YIELD(trx); DICT_BG_YIELD(trx);
} }
if (index_cache->words) { if (index_cache->words) {
fts_words_free(index_cache->words); fts_words_free(index_cache->words);
rbt_free(index_cache->words); rbt_free(index_cache->words);
......
...@@ -106,8 +106,8 @@ extern int ftserror(const char* p); ...@@ -106,8 +106,8 @@ extern int ftserror(const char* p);
typedef int (*fts_scanner)(YYSTYPE* val, yyscan_t yyscanner); typedef int (*fts_scanner)(YYSTYPE* val, yyscan_t yyscanner);
struct fts_lexer_t { struct fts_lexer_t {
fts_scanner scanner; fts_scanner scanner;
void* yyscanner; void* yyscanner;
}; };
......
...@@ -52,8 +52,8 @@ extern int ftserror(const char* p); ...@@ -52,8 +52,8 @@ extern int ftserror(const char* p);
typedef int (*fts_scanner)(YYSTYPE* val, yyscan_t yyscanner); typedef int (*fts_scanner)(YYSTYPE* val, yyscan_t yyscanner);
struct fts_lexer_struct { struct fts_lexer_struct {
fts_scanner scanner; fts_scanner scanner;
void* yyscanner; void* yyscanner;
}; };
%} %}
......
...@@ -13464,36 +13464,35 @@ innobase_rename_table( ...@@ -13464,36 +13464,35 @@ innobase_rename_table(
row_mysql_lock_data_dictionary(trx); row_mysql_lock_data_dictionary(trx);
dict_table_t* table = NULL; dict_table_t* table = dict_table_open_on_name(norm_from, TRUE, FALSE,
table = dict_table_open_on_name(norm_from, TRUE, FALSE, DICT_ERR_IGNORE_NONE);
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 */ Convert lock_wait_timeout unit from second to 250 milliseconds */
long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4; long int lock_wait_timeout = thd_lock_wait_timeout(thd) * 4;
if (table != NULL) { if (table != NULL) {
for (dict_index_t* index = dict_table_get_first_index(table); for (dict_index_t* index = dict_table_get_first_index(table);
index != NULL; index != NULL;
index = dict_table_get_next_index(index)) { index = dict_table_get_next_index(index)) {
if (index->type & DICT_FTS) { if (index->type & DICT_FTS) {
/* Found */ /* Found */
while (index->index_fts_syncing while (index->index_fts_syncing
&& !trx_is_interrupted(trx) && !trx_is_interrupted(trx)
&& (lock_wait_timeout--) > 0) { && (lock_wait_timeout--) > 0) {
DICT_BG_YIELD(trx); DICT_BG_YIELD(trx);
} }
} }
} }
dict_table_close(table, TRUE, FALSE); dict_table_close(table, TRUE, FALSE);
} }
/* FTS sync is in progress. We shall timeout this operation */ /* FTS sync is in progress. We shall timeout this operation */
if (lock_wait_timeout < 0) { if (lock_wait_timeout < 0) {
error = DB_LOCK_WAIT_TIMEOUT; error = DB_LOCK_WAIT_TIMEOUT;
row_mysql_unlock_data_dictionary(trx); row_mysql_unlock_data_dictionary(trx);
DBUG_RETURN(error); DBUG_RETURN(error);
} }
/* Transaction must be flagged as a locking transaction or it hasn't /* Transaction must be flagged as a locking transaction or it hasn't
been started yet. */ been started yet. */
...@@ -13659,12 +13658,6 @@ ha_innobase::rename_table( ...@@ -13659,12 +13658,6 @@ ha_innobase::rename_table(
error = DB_LOCK_WAIT; 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)); DBUG_RETURN(convert_error_code_to_mysql(error, 0, NULL));
} }
......
...@@ -525,7 +525,7 @@ dtype_get_fixed_size_low( ...@@ -525,7 +525,7 @@ dtype_get_fixed_size_low(
return(0); return(0);
} }
#endif /* UNIV_DEBUG */ #endif /* UNIV_DEBUG */
// fallthrough /* fall through */
case DATA_CHAR: case DATA_CHAR:
case DATA_FIXBINARY: case DATA_FIXBINARY:
case DATA_INT: case DATA_INT:
...@@ -603,7 +603,7 @@ dtype_get_min_size_low( ...@@ -603,7 +603,7 @@ dtype_get_min_size_low(
return(0); return(0);
} }
#endif /* UNIV_DEBUG */ #endif /* UNIV_DEBUG */
// fallthrough /* fall through */
case DATA_CHAR: case DATA_CHAR:
case DATA_FIXBINARY: case DATA_FIXBINARY:
case DATA_INT: case DATA_INT:
......
...@@ -378,7 +378,8 @@ dict_mem_table_add_col( ...@@ -378,7 +378,8 @@ dict_mem_table_add_col(
const char* name, /*!< in: column name, or NULL */ const char* name, /*!< in: column name, or NULL */
ulint mtype, /*!< in: main datatype */ ulint mtype, /*!< in: main datatype */
ulint prtype, /*!< in: precise type */ 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. */ Renames a column of a table in the data dictionary cache. */
UNIV_INTERN UNIV_INTERN
......
/***************************************************************************** /*****************************************************************************
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. Copyright (c) 2015, 2018, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under This program is free software; you can redistribute it and/or modify it under
...@@ -1949,11 +1949,7 @@ PageConverter::update_index_page( ...@@ -1949,11 +1949,7 @@ PageConverter::update_index_page(
return(DB_SUCCESS); return(DB_SUCCESS);
} }
if (!page_is_leaf(block->frame)) { return page_is_leaf(block->frame) ? update_records(block) : DB_SUCCESS;
return (DB_SUCCESS);
}
return(update_records(block));
} }
/** /**
...@@ -4239,4 +4235,3 @@ row_import_for_mysql( ...@@ -4239,4 +4235,3 @@ row_import_for_mysql(
return(row_import_cleanup(prebuilt, trx, err)); return(row_import_cleanup(prebuilt, trx, err));
} }
...@@ -2738,7 +2738,8 @@ row_sel_field_store_in_mysql_format_func( ...@@ -2738,7 +2738,8 @@ row_sel_field_store_in_mysql_format_func(
case DATA_SYS: case DATA_SYS:
/* These column types should never be shipped to MySQL. */ /* These column types should never be shipped to MySQL. */
ut_ad(0); ut_ad(0);
break; /* fall through */
case DATA_CHAR: case DATA_CHAR:
case DATA_FIXBINARY: case DATA_FIXBINARY:
case DATA_FLOAT: case DATA_FLOAT:
...@@ -4729,7 +4730,7 @@ row_search_for_mysql( ...@@ -4729,7 +4730,7 @@ row_search_for_mysql(
prebuilt->new_rec_locks = 1; prebuilt->new_rec_locks = 1;
} }
err = DB_SUCCESS; err = DB_SUCCESS;
break; /* fall through */
case DB_SUCCESS: case DB_SUCCESS:
break; break;
case DB_LOCK_WAIT: case DB_LOCK_WAIT:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment