MDEV-22721 Remove bloat caused by InnoDB logger class

Introduce a new ATTRIBUTE_NOINLINE to
ib::logger member functions, and add UNIV_UNLIKELY hints to callers.

Also, remove some crash reporting output. If needed, the
information will be available using debugging tools.

Furthermore, remove some fts_enable_diag_print output that included
indexed words in raw form. The code seemed to assume that words are
NUL-terminated byte strings. It is not clear whether a NUL terminator
is always guaranteed to be present. Also, UCS2 or UTF-16 strings would
typically contain many NUL bytes.
This commit is contained in:
Marko Mäkelä 2020-06-04 10:24:10 +03:00
parent ad2bf1129c
commit eba2d10ac5
38 changed files with 227 additions and 326 deletions

View file

@ -2,6 +2,7 @@
#define MY_COMPILER_INCLUDED
/* Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
Copyright (c) 2017, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -150,6 +151,7 @@ struct my_aligned_storage
#ifdef __GNUC__
# define ATTRIBUTE_NORETURN __attribute__((noreturn))
# define ATTRIBUTE_NOINLINE __attribute__((noinline))
# if MY_GNUC_PREREQ(4,3)
/** Starting with GCC 4.3, the "cold" attribute is used to inform the
compiler that a function is unlikely executed. The function is
@ -163,8 +165,10 @@ rarely invoked function for size instead for speed. */
# endif
#elif defined _MSC_VER
# define ATTRIBUTE_NORETURN __declspec(noreturn)
# define ATTRIBUTE_NOINLINE __declspec(noinline)
#else
# define ATTRIBUTE_NORETURN /* empty */
# define ATTRIBUTE_NOINLINE /* empty */
#endif
#ifndef ATTRIBUTE_COLD

View file

@ -3725,9 +3725,9 @@ lookup:
ut_ad(!hash_lock);
dberr_t err = buf_read_page(page_id, page_size);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::error() << "Reading compressed page " << page_id
<< " failed with error: " << ut_strerr(err);
<< " failed with error: " << err;
goto err_exit;
}
@ -5250,7 +5250,8 @@ buf_page_init(
if (hash_page == NULL) {
/* Block not found in hash table */
} else if (buf_pool_watch_is_sentinel(buf_pool, hash_page)) {
} else if (UNIV_LIKELY(buf_pool_watch_is_sentinel(buf_pool,
hash_page))) {
/* Preserve the reference count. */
ib_uint32_t buf_fix_count = hash_page->buf_fix_count;
@ -5260,18 +5261,8 @@ buf_page_init(
buf_pool_watch_remove(buf_pool, hash_page);
} else {
ib::error() << "Page " << page_id
<< " already found in the hash table: "
<< hash_page << ", " << block;
ut_d(buf_page_mutex_exit(block));
ut_d(buf_pool_mutex_exit(buf_pool));
ut_d(buf_print());
ut_d(buf_LRU_print());
ut_d(buf_validate());
ut_d(buf_LRU_validate());
ut_error;
ib::fatal() << "Page already foudn in the hash table: "
<< page_id;
}
ut_ad(!block->page.in_zip_hash);
@ -7253,6 +7244,7 @@ operator<<(
return(out);
}
#if defined UNIV_DEBUG_PRINT || defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
/** Print the given buf_pool_t object.
@param[in,out] out the output stream
@param[in] buf_pool the buf_pool_t object to be printed
@ -7280,6 +7272,7 @@ operator<<(
<< ", written=" << buf_pool.stat.n_pages_written << "]";
return(out);
}
#endif /* UNIV_DEBUG_PRINT || UNIV_DEBUG || UNIV_BUF_DEBUG */
/** Encrypt a buffer of temporary tablespace
@param[in] offset Page offset

View file

@ -600,11 +600,11 @@ buf_dblwr_process()
page_id, page_size,
0, page_size.physical(), read_buf, NULL);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::warn()
<< "Double write buffer recovery: "
<< page_id << " read failed with "
<< "error: " << ut_strerr(err);
<< "error: " << err;
}
const bool is_all_zero = buf_is_zeroes(

View file

@ -578,18 +578,11 @@ buf_flush_ready_for_replace(
#endif /* UNIV_DEBUG */
ut_ad(mutex_own(buf_page_get_mutex(bpage)));
ut_ad(bpage->in_LRU_list);
ut_a(buf_page_in_file(bpage));
if (buf_page_in_file(bpage)) {
return(bpage->oldest_modification == 0
&& bpage->buf_fix_count == 0
&& buf_page_get_io_fix(bpage) == BUF_IO_NONE);
}
ib::fatal() << "Buffer block " << bpage << " state " << bpage->state
<< " in the LRU list!";
return(FALSE);
return bpage->oldest_modification == 0
&& bpage->buf_fix_count == 0
&& buf_page_get_io_fix(bpage) == BUF_IO_NONE;
}
/********************************************************************//**

View file

@ -1824,46 +1824,9 @@ buf_LRU_block_remove_hashed(
}
hashed_bpage = buf_page_hash_get_low(buf_pool, bpage->id);
if (bpage != hashed_bpage) {
ib::error() << "Page " << bpage->id
<< " not found in the hash table";
#ifdef UNIV_DEBUG
ib::error()
<< "in_page_hash:" << bpage->in_page_hash
<< " in_zip_hash:" << bpage->in_zip_hash
// << " in_free_list:"<< bpage->in_fee_list
<< " in_flush_list:" << bpage->in_flush_list
<< " in_LRU_list:" << bpage->in_LRU_list
<< " zip.data:" << bpage->zip.data
<< " zip_size:" << bpage->size.logical()
<< " page_state:" << buf_page_get_state(bpage);
#else
ib::error()
<< " zip.data:" << bpage->zip.data
<< " zip_size:" << bpage->size.logical()
<< " page_state:" << buf_page_get_state(bpage);
#endif
if (hashed_bpage) {
ib::error() << "In hash table we find block "
<< hashed_bpage << " of " << hashed_bpage->id
<< " which is not " << bpage;
}
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
mutex_exit(buf_page_get_mutex(bpage));
rw_lock_x_unlock(hash_lock);
buf_pool_mutex_exit(buf_pool);
buf_print();
buf_LRU_print();
buf_validate();
buf_LRU_validate();
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
ut_error;
if (UNIV_UNLIKELY(bpage != hashed_bpage)) {
ib::fatal() << "Page not found in the hash table: "
<< bpage->id;
}
ut_ad(!bpage->in_zip_hash);

View file

@ -1719,10 +1719,9 @@ dict_create_or_check_foreign_constraint_tables(void)
"END;\n",
FALSE, trx);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::error() << "Creation of SYS_FOREIGN and SYS_FOREIGN_COLS"
" failed: " << ut_strerr(err) << ". Tablespace is"
" failed: " << err << ". Tablespace is"
" full. Dropping incompletely created tables.";
ut_ad(err == DB_OUT_OF_FILE_SPACE
@ -1821,10 +1820,9 @@ dict_create_or_check_sys_virtual()
"END;\n",
FALSE, trx);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::error() << "Creation of SYS_VIRTUAL"
" failed: " << ut_strerr(err) << ". Tablespace is"
" failed: " << err << ". Tablespace is"
" full or too many transactions."
" Dropping incompletely created tables.";
@ -1902,9 +1900,9 @@ dict_foreign_eval_sql(
return(error);
}
if (error != DB_SUCCESS) {
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "Foreign key constraint creation failed: "
<< ut_strerr(error);
<< error;
mutex_enter(&dict_foreign_err_mutex);
ut_print_timestamp(ef);
@ -2353,10 +2351,9 @@ dict_create_or_check_sys_tablespace(void)
"END;\n",
FALSE, trx);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::error() << "Creation of SYS_TABLESPACES and SYS_DATAFILES"
" has failed with error " << ut_strerr(err)
" has failed with error " << err
<< ". Dropping incompletely created tables.";
ut_a(err == DB_OUT_OF_FILE_SPACE

View file

@ -925,7 +925,7 @@ dict_update_filepath(
trx->dict_operation_lock_mode = 0;
trx_free_for_background(trx);
if (err == DB_SUCCESS) {
if (UNIV_LIKELY(err == DB_SUCCESS)) {
/* We just updated SYS_DATAFILES due to the contents in
a link file. Make a note that we did this. */
ib::info() << "The InnoDB data dictionary table SYS_DATAFILES"
@ -935,7 +935,7 @@ dict_update_filepath(
ib::warn() << "Error occurred while updating InnoDB data"
" dictionary table SYS_DATAFILES for tablespace ID "
<< space_id << " to file " << filepath << ": "
<< ut_strerr(err) << ".";
<< err << ".";
}
return(err);

View file

@ -2355,14 +2355,14 @@ dict_stats_save_index_stat(
");\n"
"END;", trx);
if (ret != DB_SUCCESS) {
if (UNIV_UNLIKELY(ret != DB_SUCCESS)) {
if (innodb_index_stats_not_found == false &&
index->stats_error_printed == false) {
ib::error() << "Cannot save index statistics for table "
<< index->table->name
<< ", index " << index->name
<< ", stat name \"" << stat_name << "\": "
<< ut_strerr(ret);
<< ret;
index->stats_error_printed = true;
}
}
@ -2473,9 +2473,9 @@ dict_stats_save(
");\n"
"END;", NULL);
if (ret != DB_SUCCESS) {
if (UNIV_UNLIKELY(ret != DB_SUCCESS)) {
ib::error() << "Cannot save table statistics for table "
<< table->name << ": " << ut_strerr(ret);
<< table->name << ": " << ret;
mutex_exit(&dict_sys->mutex);
rw_lock_x_unlock(&dict_operation_lock);
@ -3330,7 +3330,7 @@ dict_stats_update(
" for table "
<< table->name
<< " from " TABLE_STATS_NAME_PRINT " and "
INDEX_STATS_NAME_PRINT ": " << ut_strerr(err)
INDEX_STATS_NAME_PRINT ": " << err
<< ". Using transient stats method instead.";
}

View file

@ -298,14 +298,9 @@ fil_space_read_crypt_data(const page_size_t& page_size, const byte* page)
type == CRYPT_SCHEME_1)
|| iv_length != sizeof crypt_data->iv) {
ib::error() << "Found non sensible crypt scheme: "
<< type << "," << iv_length << " for space: "
<< page_get_space_id(page) << " offset: "
<< offset << " bytes: ["
<< page[offset + 2 + MAGIC_SZ]
<< page[offset + 3 + MAGIC_SZ]
<< page[offset + 4 + MAGIC_SZ]
<< page[offset + 5 + MAGIC_SZ]
<< "].";
<< type << "," << iv_length
<< " for space: "
<< page_get_space_id(page);
return NULL;
}
@ -725,8 +720,10 @@ fil_space_decrypt(
}
ib::fatal() << "Unable to decrypt data-block "
<< " src: " << src << "srclen: "
<< srclen << " buf: " << dst << "buflen: "
<< " src: " << static_cast<const void*>(src)
<< "srclen: "
<< srclen << " buf: "
<< static_cast<const void*>(dst) << "buflen: "
<< dstlen << " return-code: " << rc
<< " Can't continue!";
}

View file

@ -3228,12 +3228,12 @@ fil_discard_tablespace(
case DB_IO_ERROR:
ib::warn() << "While deleting tablespace " << id
<< " in DISCARD TABLESPACE. File rename/delete"
" failed: " << ut_strerr(err);
" failed: " << err;
break;
case DB_TABLESPACE_NOT_FOUND:
ib::warn() << "Cannot delete tablespace " << id
<< " in DISCARD TABLESPACE: " << ut_strerr(err);
<< " in DISCARD TABLESPACE: " << err;
break;
default:
@ -5177,7 +5177,7 @@ fil_aio_wait(
ib::error() << "Failed to read file '"
<< node->name
<< "' at offset " << offset
<< ": " << ut_strerr(err);
<< ": " << err;
}
fil_space_release_for_io(space);

View file

@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2013, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, 2018, MariaDB Corporation.
Copyright (c) 2017, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@ -331,7 +331,7 @@ Datafile::read_first_page(bool read_only_mode)
ib::error()
<< "Cannot read first page of '"
<< m_filepath << "' "
<< ut_strerr(err);
<< err;
break;
}
}

View file

@ -1437,7 +1437,7 @@ fsp_alloc_free_page(
ut_a(!is_system_tablespace(space_id));
if (page_no >= FSP_EXTENT_SIZE) {
ib::error() << "Trying to extend a single-table"
" tablespace " << space << " , by single"
" tablespace " << space->name << " , by single"
" page(s) though the space size " << space_size
<< ". Page no " << page_no << ".";
return(NULL);

View file

@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2007, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, 2019, MariaDB Corporation.
Copyright (c) 2017, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@ -317,9 +317,7 @@ fts_config_get_index_ulint(
error = fts_config_get_index_value(trx, index, name, &value);
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "(" << ut_strerr(error) << ") reading `"
<< name << "'";
ib::error() << "(" << error << ") reading `" << name << "'";
} else {
*int_value = strtoul((char*) value.f_str, NULL, 10);
}
@ -357,9 +355,7 @@ fts_config_set_index_ulint(
error = fts_config_set_index_value(trx, index, name, &value);
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "(" << ut_strerr(error) << ") writing `"
<< name << "'";
ib::error() << "(" << error << ") writing `" << name << "'";
}
ut_free(value.f_str);
@ -391,8 +387,7 @@ fts_config_get_ulint(
error = fts_config_get_value(trx, fts_table, name, &value);
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "(" << ut_strerr(error) << ") reading `"
<< name << "'";
ib::error() << "(" << error << ") reading `" << name << "'";
} else {
*int_value = strtoul((char*) value.f_str, NULL, 10);
}
@ -430,8 +425,7 @@ fts_config_set_ulint(
error = fts_config_set_value(trx, fts_table, name, &value);
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "(" << ut_strerr(error) << ") writing `"
<< name << "'";
ib::error() << "(" << error << ") writing `" << name << "'";
}
ut_free(value.f_str);

View file

@ -510,7 +510,7 @@ cleanup:
for (;;) {
dberr_t error = fts_eval_sql(trx, graph);
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
fts_sql_commit(trx);
stopword_info->status = STOPWORD_USER_TABLE;
break;
@ -523,7 +523,7 @@ cleanup:
trx->error_state = DB_SUCCESS;
} else {
ib::error() << "Error '" << ut_strerr(error)
ib::error() << "Error '" << error
<< "' while reading user stopword"
" table.";
ret = FALSE;
@ -1454,9 +1454,9 @@ fts_drop_table(
error = row_drop_table_for_mysql(table_name, trx,
SQLCOM_DROP_DB, false, false);
if (error != DB_SUCCESS) {
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "Unable to drop FTS index aux table "
<< table_name << ": " << ut_strerr(error);
<< table_name << ": " << error;
}
} else {
error = DB_FAIL;
@ -2535,8 +2535,7 @@ fts_get_max_cache_size(
error = fts_config_get_value(
trx, fts_table, FTS_MAX_CACHE_SIZE_IN_MB, &value);
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
value.f_str[value.f_len] = 0;
cache_size_in_mb = strtoul((char*) value.f_str, NULL, 10);
@ -2566,7 +2565,7 @@ fts_get_max_cache_size(
cache_size_in_mb = FTS_CACHE_SIZE_LOWER_LIMIT_IN_MB;
}
} else {
ib::error() << "(" << ut_strerr(error) << ") reading max"
ib::error() << "(" << error << ") reading max"
" cache config value from config table";
}
@ -2735,13 +2734,12 @@ retry:
func_exit:
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
fts_sql_commit(trx);
} else {
*doc_id = 0;
ib::error() << "(" << ut_strerr(error) << ") while getting"
" next doc id.";
ib::error() << "(" << error << ") while getting next doc id.";
fts_sql_rollback(trx);
if (error == DB_DEADLOCK) {
@ -2816,12 +2814,11 @@ fts_update_sync_doc_id(
fts_que_graph_free_check_lock(&fts_table, NULL, graph);
if (local_trx) {
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
fts_sql_commit(trx);
cache->synced_doc_id = doc_id;
} else {
ib::error() << "(" << ut_strerr(error) << ") while"
ib::error() << "(" << error << ") while"
" updating last doc id.";
fts_sql_rollback(trx);
@ -4065,14 +4062,14 @@ fts_sync_write_words(
n_nodes += ib_vector_size(word->nodes);
if (error != DB_SUCCESS && !print_error) {
ib::error() << "(" << ut_strerr(error) << ") writing"
if (UNIV_UNLIKELY(error != DB_SUCCESS) && !print_error) {
ib::error() << "(" << error << ") writing"
" word node to FTS auxiliary index table.";
print_error = TRUE;
}
}
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
printf("Avg number of nodes: %lf\n",
(double) n_nodes / (double) (n_words > 1 ? n_words : 1));
}
@ -4098,7 +4095,7 @@ fts_sync_begin(
sync->trx = trx_allocate_for_background();
trx_start_internal(sync->trx);
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "FTS SYNC for table " << sync->table->name
<< ", deleted count: "
<< ib_vector_size(cache->deleted_doc_ids)
@ -4121,7 +4118,7 @@ fts_sync_index(
trx->op_info = "doing SYNC index";
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "SYNC words: " << rbt_size(index_cache->words);
}
@ -4218,18 +4215,14 @@ fts_sync_commit(
fts_cache_init(cache);
rw_lock_x_unlock(&cache->lock);
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
fts_sql_commit(trx);
} else if (error != DB_SUCCESS) {
} else {
fts_sql_rollback(trx);
ib::error() << "(" << ut_strerr(error) << ") during SYNC.";
ib::error() << "(" << error << ") during SYNC.";
}
if (fts_enable_diag_print && elapsed_time) {
if (UNIV_UNLIKELY(fts_enable_diag_print) && elapsed_time) {
ib::info() << "SYNC for table " << sync->table->name
<< ": SYNC time: "
<< (time(NULL) - sync->start_time)
@ -4983,7 +4976,7 @@ fts_get_rows_count(
for (;;) {
error = fts_eval_sql(trx, graph);
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
fts_sql_commit(trx);
break; /* Exit the loop. */
@ -4996,7 +4989,7 @@ fts_get_rows_count(
trx->error_state = DB_SUCCESS;
} else {
ib::error() << "(" << ut_strerr(error)
ib::error() << "(" << error
<< ") while reading FTS table.";
break; /* Exit the loop. */
@ -7061,7 +7054,7 @@ fts_drop_orphaned_tables(void)
for (;;) {
error = fts_eval_sql(trx, graph);
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
fts_check_and_drop_orphaned_tables(trx, tables);
break; /* Exit the loop. */
} else {
@ -7075,7 +7068,7 @@ fts_drop_orphaned_tables(void)
trx->error_state = DB_SUCCESS;
} else {
ib::error() << "(" << ut_strerr(error)
ib::error() << "(" << error
<< ") while reading SYS_TABLES.";
break; /* Exit the loop. */

View file

@ -525,7 +525,7 @@ fts_index_fetch_nodes(
for (;;) {
error = fts_eval_sql(trx, *graph);
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
fts_sql_commit(trx);
break; /* Exit the loop. */
@ -538,7 +538,7 @@ fts_index_fetch_nodes(
trx->error_state = DB_SUCCESS;
} else {
ib::error() << "(" << ut_strerr(error)
ib::error() << "(" << error
<< ") while reading FTS index.";
break; /* Exit the loop. */
@ -860,7 +860,7 @@ fts_index_fetch_words(
error = fts_eval_sql(optim->trx, graph);
}
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
//FIXME fts_sql_commit(optim->trx);
break;
} else {
@ -877,7 +877,7 @@ fts_index_fetch_words(
optim->trx->error_state = DB_SUCCESS;
} else {
ib::error() << "(" << ut_strerr(error)
ib::error() << "(" << error
<< ") while reading document.";
break; /* Exit the loop. */
@ -1356,12 +1356,6 @@ fts_optimize_word(
enc.src_last_doc_id = 0;
enc.src_ilist_ptr = NULL;
if (fts_enable_diag_print) {
word->text.f_str[word->text.f_len] = 0;
ib::info() << "FTS_OPTIMIZE: optimize \"" << word->text.f_str
<< "\"";
}
while (i < size) {
ulint copied;
fts_node_t* src_node;
@ -1439,11 +1433,6 @@ fts_optimize_write_word(
ut_ad(fts_table->charset);
if (fts_enable_diag_print) {
ib::info() << "FTS_OPTIMIZE: processed \"" << word->f_str
<< "\"";
}
pars_info_bind_varchar_literal(
info, "word", word->f_str, word->f_len);
@ -1461,8 +1450,8 @@ fts_optimize_write_word(
error = fts_eval_sql(trx, graph);
if (error != DB_SUCCESS) {
ib::error() << "(" << ut_strerr(error) << ") during optimize,"
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "(" << error << ") during optimize,"
" when deleting a word from the FTS index.";
}
@ -1485,8 +1474,8 @@ fts_optimize_write_word(
error = fts_write_node(
trx, &graph, fts_table, word, node);
if (error != DB_SUCCESS) {
ib::error() << "(" << ut_strerr(error) << ")"
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "(" << error << ")"
" during optimize, while adding a"
" word to the FTS index.";
}
@ -1875,9 +1864,8 @@ fts_optimize_index_completed(
error = fts_config_set_index_value(
optim->trx, index, FTS_LAST_OPTIMIZED_WORD, &word);
if (error != DB_SUCCESS) {
ib::error() << "(" << ut_strerr(error) << ") while updating"
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "(" << error << ") while updating"
" last optimized word!";
}
@ -2429,7 +2417,7 @@ fts_optimize_table(
fts_optimize_t* optim = NULL;
fts_t* fts = table->fts;
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "FTS start optimize " << table->name;
}
@ -2481,7 +2469,7 @@ fts_optimize_table(
if (error == DB_SUCCESS
&& optim->n_completed == ib_vector_size(fts->indexes)) {
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "FTS_OPTIMIZE: Completed"
" Optimize, cleanup DELETED table";
}
@ -2504,7 +2492,7 @@ fts_optimize_table(
fts_optimize_free(optim);
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "FTS end optimize " << table->name;
}
@ -2689,7 +2677,7 @@ static bool fts_optimize_del_table(const dict_table_t* table)
slot = static_cast<fts_slot_t*>(ib_vector_get(fts_slots, i));
if (slot->table == table) {
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "FTS Optimize Removing table "
<< table->name;
}

View file

@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2007, 2018, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, 2019, MariaDB Corporation.
Copyright (c) 2017, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@ -2447,9 +2447,8 @@ fts_query_match_document(
get_doc, match->doc_id, NULL, FTS_FETCH_DOC_BY_ID_EQUAL,
fts_query_fetch_document, &phrase);
if (error != DB_SUCCESS) {
ib::error() << "(" << ut_strerr(error)
<< ") matching document.";
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "(" << error << ") matching document.";
} else {
*found = phrase.found;
}
@ -2495,8 +2494,8 @@ fts_query_is_in_proximity_range(
&get_doc, match[0]->doc_id, NULL, FTS_FETCH_DOC_BY_ID_EQUAL,
fts_query_fetch_document, &phrase);
if (err != DB_SUCCESS) {
ib::error() << "(" << ut_strerr(err) << ") in verification"
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::error() << "(" << err << ") in verification"
" phase of proximity search";
}
@ -3501,14 +3500,6 @@ fts_query_calculate_idf(
/ (double) word_freq->doc_count);
}
}
if (fts_enable_diag_print) {
ib::info() << "'" << word_freq->word.f_str << "' -> "
<< query->total_docs << "/"
<< word_freq->doc_count << " "
<< std::setw(6) << std::setprecision(5)
<< word_freq->idf;
}
}
}
@ -3884,7 +3875,7 @@ fts_query_parse(
} else {
query->root = state.root;
if (fts_enable_diag_print && query->root != NULL) {
if (UNIV_UNLIKELY(fts_enable_diag_print) && query->root) {
fts_ast_node_print(query->root);
}
}
@ -4108,7 +4099,7 @@ fts_query(
ut_free(lc_query_str);
if (fts_enable_diag_print && (*result)) {
if (UNIV_UNLIKELY(fts_enable_diag_print) && (*result)) {
ulint diff_time = ut_time_ms() - start_time_ms;
ib::info() << "FTS Search Processing time: "
@ -4264,7 +4255,7 @@ fts_expand_query(
query->total_size += SIZEOF_RBT_CREATE;
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
fts_print_doc_id(query);
}

View file

@ -8128,8 +8128,7 @@ ha_innobase::write_row(
if (high_level_read_only) {
ib_senderrf(ha_thd(), IB_LOG_LEVEL_WARN, ER_READ_ONLY_MODE);
DBUG_RETURN(HA_ERR_TABLE_READONLY);
} else if (m_prebuilt->trx != trx) {
} else if (UNIV_UNLIKELY(m_prebuilt->trx != trx)) {
ib::error() << "The transaction object for the table handle is"
" at " << static_cast<const void*>(m_prebuilt->trx)
<< ", but for the current thread it is at "
@ -9989,7 +9988,7 @@ ha_innobase::ft_init_ext(
const CHARSET_INFO* char_set = key->charset();
const char* query = key->ptr();
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
{
ib::info out;
out << "keynr=" << keynr << ", '";

View file

@ -8826,7 +8826,7 @@ foreign_fail:
trx_start_for_ddl(trx, TRX_DICT_OP_TABLE);
dberr_t error = row_merge_drop_table(trx, ctx->old_table);
if (error != DB_SUCCESS) {
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "Inplace alter table " << ctx->old_table->name
<< " dropping copy of the old table failed error "
<< error

View file

@ -3474,7 +3474,7 @@ i_s_fts_index_table_fill_selected(
for (;;) {
error = fts_eval_sql(trx, graph);
if (error == DB_SUCCESS) {
if (UNIV_LIKELY(error == DB_SUCCESS)) {
fts_sql_commit(trx);
break;
@ -3488,7 +3488,7 @@ i_s_fts_index_table_fill_selected(
trx->error_state = DB_SUCCESS;
} else {
ib::error() << "Error occurred while reading"
" FTS index: " << ut_strerr(error);
" FTS index: " << error;
break;
}
}
@ -8086,9 +8086,7 @@ i_s_dict_fill_sys_tablespaces(
break;
default:
ib::error()
<< "File '" << filepath << "' "
<< ut_strerr(err);
ib::error() << "File '" << filepath << "' " << err;
break;
}

View file

@ -458,7 +458,7 @@ btr_pcur_open_low(
index, level, tuple, mode, latch_mode,
btr_cursor, 0, file, line, mtr, autoinc);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::warn() << " Error code: " << err
<< " btr_pcur_open_low "
<< " level: " << level

View file

@ -571,6 +571,7 @@ lock_has_to_wait(
locks are record locks */
/*********************************************************************//**
Reports that a transaction id is insensible, i.e., in the future. */
ATTRIBUTE_COLD
void
lock_report_trx_id_insanity(
/*========================*/

View file

@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1994, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2019, MariaDB Corporation.
Copyright (c) 2019, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@ -389,48 +389,41 @@ operator<<(
It contains a std::ostringstream object. The main purpose of this class is
to forward operator<< to the underlying std::ostringstream object. Do not
use this class directly, instead use one of the derived classes. */
class logger {
public:
template<typename T>
ATTRIBUTE_COLD
logger& operator<<(const T& rhs)
{
m_oss << rhs;
return(*this);
}
/** Write the given buffer to the internal string stream object.
@param[in] buf the buffer whose contents will be logged.
@param[in] count the length of the buffer buf.
@return the output stream into which buffer was written. */
ATTRIBUTE_COLD
std::ostream&
write(
const char* buf,
std::streamsize count)
{
return(m_oss.write(buf, count));
}
/** Write the given buffer to the internal string stream object.
@param[in] buf the buffer whose contents will be logged.
@param[in] count the length of the buffer buf.
@return the output stream into which buffer was written. */
ATTRIBUTE_COLD
std::ostream&
write(
const byte* buf,
std::streamsize count)
{
return(m_oss.write(reinterpret_cast<const char*>(buf), count));
}
std::ostringstream m_oss;
class logger
{
protected:
/* This class must not be used directly, hence making the default
constructor protected. */
ATTRIBUTE_COLD
logger() {}
/* This class must not be used directly */
ATTRIBUTE_COLD ATTRIBUTE_NOINLINE logger() {}
public:
template<typename T> ATTRIBUTE_COLD ATTRIBUTE_NOINLINE
logger& operator<<(const T& rhs)
{
m_oss << rhs;
return *this;
}
/** Handle a fixed character string in the same way as a pointer to
an unknown-length character string, to reduce object code bloat. */
template<size_t N> logger& operator<<(const char (&rhs)[N])
{ return *this << static_cast<const char*>(rhs); }
/** Output an error code name */
ATTRIBUTE_COLD logger& operator<<(dberr_t err);
/** Append a string.
@param buf string buffer
@param size buffer size
@return the output stream */
ATTRIBUTE_COLD __attribute__((noinline))
std::ostream &write(const char *buf, std::streamsize size)
{
return m_oss.write(buf, size);
}
std::ostream &write(const byte *buf, std::streamsize size)
{ return write(reinterpret_cast<const char*>(buf), size); }
std::ostringstream m_oss;
};
/** The class info is used to emit informational log messages. It is to be

View file

@ -320,6 +320,7 @@ static FILE* lock_latest_err_file;
/*********************************************************************//**
Reports that a transaction id is insensible, i.e., in the future. */
ATTRIBUTE_COLD
void
lock_report_trx_id_insanity(
/*========================*/
@ -330,7 +331,7 @@ lock_report_trx_id_insanity(
trx_id_t max_trx_id) /*!< in: trx_sys_get_max_trx_id() */
{
ib::error()
<< "Transaction id " << trx_id
<< "Transaction id " << ib::hex(trx_id)
<< " associated with record" << rec_offsets_print(rec, offsets)
<< " in index " << index->name
<< " of table " << index->table->name
@ -359,7 +360,7 @@ lock_check_trx_id_sanity(
trx_id_t max_trx_id = trx_sys_get_max_trx_id();
bool is_ok = trx_id < max_trx_id;
if (!is_ok) {
if (UNIV_UNLIKELY(!is_ok)) {
lock_report_trx_id_insanity(
trx_id, rec, index, offsets, max_trx_id);
}
@ -756,7 +757,7 @@ lock_rec_has_to_wait(
wsrep_thd_is_BF(lock2->trx->mysql_thd, TRUE)) {
mtr_t mtr;
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() <<
"BF-BF lock conflict, locking: " << for_locking;
lock_rec_print(stderr, lock2, mtr);
@ -770,7 +771,7 @@ lock_rec_has_to_wait(
lock2->trx->mysql_thd) &&
(type_mode & LOCK_MODE_MASK) == LOCK_X &&
(lock2->type_mode & LOCK_MODE_MASK) == LOCK_X) {
if (for_locking || wsrep_debug) {
if (UNIV_UNLIKELY(for_locking || wsrep_debug)) {
/* exclusive lock conflicts are not
accepted */
ib::info() <<
@ -797,7 +798,7 @@ lock_rec_has_to_wait(
lock2->index->n_user_defined_cols
operation is on uniq index
*/
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() <<
"BF conflict, modes: "
<< type_mode << ":" << lock2->type_mode
@ -1111,7 +1112,7 @@ wsrep_kill_victim(
trx->mysql_thd, lock->trx->mysql_thd))) {
if (lock->trx->lock.que_state == TRX_QUE_LOCK_WAIT) {
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() << "WSREP: BF victim waiting\n";
}
/* cannot release lock, until our lock
@ -1344,13 +1345,14 @@ lock_number_of_tables_locked(
/*============== RECORD LOCK CREATION AND QUEUE MANAGEMENT =============*/
#ifdef WITH_WSREP
ATTRIBUTE_COLD
static
void
wsrep_print_wait_locks(
/*===================*/
lock_t* c_lock) /* conflicting lock to print */
{
if (wsrep_debug && c_lock->trx->lock.wait_lock != c_lock) {
if (c_lock->trx->lock.wait_lock != c_lock) {
mtr_t mtr;
ib::info() << "WSREP: c_lock != wait lock";
ib::info() << " SQL: "
@ -1502,7 +1504,7 @@ lock_rec_create_low(
c_lock->trx->lock.was_chosen_as_deadlock_victim = TRUE;
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
wsrep_print_wait_locks(c_lock);
}
@ -1529,7 +1531,7 @@ lock_rec_create_low(
trx_mutex_exit(c_lock->trx);
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() << "WSREP: c_lock canceled "
<< ib::hex(c_lock->trx->id)
<< " SQL: "
@ -1794,7 +1796,7 @@ lock_rec_enqueue_waiting(
transaction as a victim, it is possible that we
already have the lock now granted! */
#ifdef WITH_WSREP
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() << "WSREP: BF thread got lock granted early, ID " << ib::hex(trx->id)
<< " query: " << wsrep_thd_query(trx->mysql_thd);
}
@ -2213,7 +2215,7 @@ lock_rec_has_to_wait_in_queue(
#ifdef WITH_WSREP
if (wsrep_thd_is_BF(wait_lock->trx->mysql_thd, FALSE) &&
wsrep_thd_is_BF(lock->trx->mysql_thd, TRUE)) {
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
mtr_t mtr;
ib::info() << "WSREP: waiting BF trx: " << ib::hex(wait_lock->trx->id)
<< " query: " << wsrep_thd_query(wait_lock->trx->mysql_thd);
@ -3657,7 +3659,7 @@ lock_table_create(
if (wsrep_thd_is_BF(trx->mysql_thd, FALSE)) {
ut_list_insert(table->locks, c_lock, lock,
TableLockGetNode());
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() << "table lock BF conflict for "
<< ib::hex(c_lock->trx->id)
<< " SQL: "
@ -3673,7 +3675,7 @@ lock_table_create(
if (c_lock->trx->lock.que_state == TRX_QUE_LOCK_WAIT) {
c_lock->trx->lock.was_chosen_as_deadlock_victim = TRUE;
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
wsrep_print_wait_locks(c_lock);
}
@ -3684,7 +3686,7 @@ lock_table_create(
c_lock->trx->lock.wait_lock);
trx_mutex_enter(trx);
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() << "WSREP: c_lock canceled "
<< ib::hex(c_lock->trx->id)
<< " SQL: "
@ -3957,9 +3959,9 @@ lock_table_other_has_incompatible(
#ifdef WITH_WSREP
if (lock->trx->is_wsrep()) {
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() << "WSREP: table lock abort for table:"
<< table->name.m_name;
<< table->name;
ib::info() << " SQL: "
<< wsrep_thd_query(lock->trx->mysql_thd);
}

View file

@ -589,7 +589,7 @@ fil_name_parse(
ut_ad(0); // the caller checked this
/* fall through */
case MLOG_FILE_NAME:
if (corrupt) {
if (UNIV_UNLIKELY(corrupt)) {
ib::error() << "MLOG_FILE_NAME incorrect:" << ptr;
recv_sys->found_corrupt_log = true;
break;
@ -599,7 +599,7 @@ fil_name_parse(
reinterpret_cast<char*>(ptr), len, space_id, false);
break;
case MLOG_FILE_DELETE:
if (corrupt) {
if (UNIV_UNLIKELY(corrupt)) {
ib::error() << "MLOG_FILE_DELETE incorrect:" << ptr;
recv_sys->found_corrupt_log = true;
break;
@ -627,7 +627,7 @@ fil_name_parse(
}
break;
case MLOG_FILE_RENAME2:
if (corrupt) {
if (UNIV_UNLIKELY(corrupt)) {
ib::error() << "MLOG_FILE_RENAME2 incorrect:" << ptr;
recv_sys->found_corrupt_log = true;
}
@ -668,7 +668,7 @@ fil_name_parse(
}
}
if (corrupt) {
if (UNIV_UNLIKELY(corrupt)) {
ib::error() << "MLOG_FILE_RENAME2 new_name incorrect:" << ptr
<< " new_name: " << new_name;
recv_sys->found_corrupt_log = true;
@ -2697,6 +2697,7 @@ recv_calc_lsn_on_data_add(
@param[in] space tablespace ID (could be garbage)
@param[in] page_no page number (could be garbage)
@return whether processing should continue */
ATTRIBUTE_COLD
static
bool
recv_report_corrupt_log(
@ -2713,7 +2714,8 @@ recv_report_corrupt_log(
ib::info() << "Log record type " << type << ", page " << space << ":"
<< page_no << ". Log parsing proceeded successfully up to "
<< recv_sys->recovered_lsn << ". Previous log record type "
<< recv_previous_parsed_rec_type << ", is multi "
<< recv_previous_parsed_rec_type
<< ", is multi "
<< recv_previous_parsed_rec_is_multi << " Recv offset "
<< ptr_offset << ", prev "
<< recv_previous_parsed_rec_offset;
@ -2853,12 +2855,12 @@ loop:
len = recv_parse_log_rec(&type, ptr, end_ptr, &space,
&page_no, apply, &body);
if (recv_sys->found_corrupt_log) {
if (UNIV_UNLIKELY(recv_sys->found_corrupt_log)) {
recv_report_corrupt_log(ptr, type, space, page_no);
return(true);
}
if (recv_sys->found_corrupt_fs) {
if (UNIV_UNLIKELY(recv_sys->found_corrupt_fs)) {
return(true);
}
@ -2982,7 +2984,7 @@ loop:
&type, ptr, end_ptr, &space, &page_no,
false, &body);
if (recv_sys->found_corrupt_log) {
if (UNIV_UNLIKELY(recv_sys->found_corrupt_log)) {
corrupted_log:
recv_report_corrupt_log(
ptr, type, space, page_no);
@ -3075,13 +3077,13 @@ corrupted_log:
&type, ptr, end_ptr, &space, &page_no,
apply, &body);
if (recv_sys->found_corrupt_log
if (UNIV_UNLIKELY(recv_sys->found_corrupt_log)
&& !recv_report_corrupt_log(
ptr, type, space, page_no)) {
return(true);
}
if (recv_sys->found_corrupt_fs) {
if (UNIV_UNLIKELY(recv_sys->found_corrupt_fs)) {
return(true);
}
@ -3597,7 +3599,7 @@ recv_validate_tablespace(bool rescan, bool& missing_tablespace)
for (recv_spaces_t::iterator i = recv_spaces.begin();
i != recv_spaces.end(); i++) {
if (i->second.status != file_name_t::MISSING) {
if (UNIV_LIKELY(i->second.status != file_name_t::MISSING)) {
continue;
}

View file

@ -2438,7 +2438,10 @@ page_validate(
if (UNIV_UNLIKELY((ibool) !!page_is_comp(page)
!= dict_table_is_comp(index->table))) {
ib::error() << "'compact format' flag mismatch";
goto func_exit2;
func_exit2:
ib::error() << "Apparent corruption in space "
<< page_get_space_id(page) << " page "
<< page_get_page_no(page) << " index " << index->name;
}
if (page_is_comp(page)) {
if (UNIV_UNLIKELY(!page_simple_validate_new(page))) {
@ -2480,15 +2483,14 @@ page_validate(
n_slots = page_dir_get_n_slots(page);
if (UNIV_UNLIKELY(!(page_header_get_ptr(page, PAGE_HEAP_TOP)
<= page_dir_get_nth_slot(page, n_slots - 1)))) {
const void* top = page_header_get_ptr(page, PAGE_HEAP_TOP);
const void* last_slot = page_dir_get_nth_slot(page, n_slots - 1);
if (UNIV_UNLIKELY(top > last_slot)) {
ib::warn() << "Record heap and dir overlap on space "
<< page_get_space_id(page) << " page "
<< page_get_page_no(page) << " index " << index->name
<< ", " << page_header_get_ptr(page, PAGE_HEAP_TOP)
<< ", " << page_dir_get_nth_slot(page, n_slots - 1);
<< ", " << top << ", " << last_slot;
goto func_exit;
}
@ -2747,10 +2749,7 @@ func_exit:
mem_heap_free(heap);
if (UNIV_UNLIKELY(ret == FALSE)) {
func_exit2:
ib::error() << "Apparent corruption in space "
<< page_get_space_id(page) << " page "
<< page_get_page_no(page) << " index " << index->name;
goto func_exit2;
}
return(ret);

View file

@ -864,7 +864,8 @@ loop:
num_doc_processed++;
if (fts_enable_diag_print && num_doc_processed % 10000 == 1) {
if (UNIV_UNLIKELY(fts_enable_diag_print)
&& num_doc_processed % 10000 == 1) {
ib::info() << "Number of documents processed: "
<< num_doc_processed;
#ifdef FTS_INTERNAL_DIAG_PRINT
@ -1009,7 +1010,7 @@ exit:
}
}
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
DEBUG_FTS_SORT_PRINT(" InnoDB_FTS: start merge sort\n");
}
@ -1040,7 +1041,7 @@ exit:
}
func_exit:
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
DEBUG_FTS_SORT_PRINT(" InnoDB_FTS: complete merge sort\n");
}
@ -1215,11 +1216,9 @@ row_merge_write_fts_word(
error = row_merge_write_fts_node(ins_ctx, &word->text, fts_node);
if (error != DB_SUCCESS) {
ib::error() << "Failed to write word "
<< word->text.f_str << " to FTS auxiliary"
" index table, error (" << ut_strerr(error)
<< ")";
if (UNIV_UNLIKELY(error != DB_SUCCESS)) {
ib::error() << "Failed to write word to FTS auxiliary"
" index table, error " << error;
ret = error;
}
@ -1633,7 +1632,7 @@ row_fts_merge_insert(
count_diag += (int) psort_info[i].merge_file[id]->n_rec;
}
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "InnoDB_FTS: to insert " << count_diag
<< " records";
}
@ -1801,7 +1800,7 @@ exit:
mem_heap_free(heap);
if (fts_enable_diag_print) {
if (UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "InnoDB_FTS: inserted " << count << " records";
}

View file

@ -1885,7 +1885,7 @@ PageConverter::update_index_page(
row_index_t* index = find_index(id);
if (index == 0) {
if (UNIV_UNLIKELY(!index)) {
ib::error() << "Page for tablespace " << m_space
<< " is index page with id " << id
<< " but that index is not found from"
@ -2132,7 +2132,7 @@ row_import_discard_changes(
ib::info() << "Discarding tablespace of table "
<< prebuilt->table->name
<< ": " << ut_strerr(err);
<< ": " << err;
if (trx->dict_operation_lock_mode != RW_X_LATCH) {
ut_a(trx->dict_operation_lock_mode == 0);

View file

@ -4917,7 +4917,8 @@ wait_again:
goto func_exit;
}
if (indexes[i]->type & DICT_FTS && fts_enable_diag_print) {
if (indexes[i]->type & DICT_FTS
&& UNIV_UNLIKELY(fts_enable_diag_print)) {
ib::info() << "Finished building full-text index "
<< indexes[i]->name;
}

View file

@ -782,8 +782,7 @@ handle_new_error:
" foreign constraints and try again";
goto rollback_to_savept;
default:
ib::fatal() << "Unknown error code " << err << ": "
<< ut_strerr(err);
ib::fatal() << "Unknown error " << err;
}
if (trx->error_state != DB_SUCCESS) {
@ -3161,10 +3160,10 @@ row_drop_ancillary_fts_tables(
dberr_t err = fts_drop_tables(trx, table);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::error() << " Unable to remove ancillary FTS"
" tables for table "
<< table->name << " : " << ut_strerr(err);
<< table->name << " : " << err;
return(err);
}
@ -4009,10 +4008,10 @@ loop:
table_name, trx, SQLCOM_DROP_DB);
trx_commit_for_mysql(trx);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::error() << "DROP DATABASE "
<< ut_get_name(trx, name) << " failed"
" with error (" << ut_strerr(err) << ") for"
" with error (" << err << ") for"
" table " << ut_get_name(trx, table_name);
ut_free(table_name);
break;

View file

@ -358,15 +358,8 @@ row_undo_step(
trx->error_state = err;
if (err != DB_SUCCESS) {
/* SQL error detected */
if (err == DB_OUT_OF_FILE_SPACE) {
ib::fatal() << "Out of tablespace during rollback."
" Consider increasing your tablespace.";
}
ib::fatal() << "Error (" << ut_strerr(err) << ") in rollback.";
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::fatal() << "Error (" << err << ") in rollback.";
}
return(thr);

View file

@ -2472,7 +2472,7 @@ row_upd_sec_index_entry(
err = DB_SUCCESS;
break;
case DB_LOCK_WAIT:
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::warn() << "WSREP: sec index FK lock wait"
<< " index " << index->name
<< " table " << index->table->name
@ -2480,7 +2480,7 @@ row_upd_sec_index_entry(
}
break;
case DB_DEADLOCK:
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::warn() << "WSREP: sec index FK check fail for deadlock"
<< " index " << index->name
<< " table " << index->table->name
@ -2488,7 +2488,7 @@ row_upd_sec_index_entry(
}
break;
default:
ib::error() << "WSREP: referenced FK check fail: " << ut_strerr(err)
ib::error() << "WSREP: referenced FK check fail: " << err
<< " index " << index->name
<< " table " << index->table->name
<< " query " << wsrep_thd_query(trx->mysql_thd);
@ -2787,14 +2787,14 @@ check_fk:
err = DB_SUCCESS;
break;
case DB_DEADLOCK:
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::warn() << "WSREP: sec index FK check fail for deadlock"
<< " index " << index->name
<< " table " << index->table->name;
}
goto err_exit;
default:
ib::error() << "WSREP: referenced FK check fail: " << ut_strerr(err)
ib::error() << "WSREP: referenced FK check fail: " << err
<< " index " << index->name
<< " table " << index->table->name;
goto err_exit;
@ -3013,14 +3013,14 @@ row_upd_del_mark_clust_rec(
err = DB_SUCCESS;
break;
case DB_DEADLOCK:
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::warn() << "WSREP: sec index FK check fail for deadlock"
<< " index " << index->name
<< " table " << index->table->name;
}
break;
default:
ib::error() << "WSREP: referenced FK check fail: " << ut_strerr(err)
ib::error() << "WSREP: referenced FK check fail: " << err
<< " index " << index->name
<< " table " << index->table->name;

View file

@ -119,7 +119,7 @@ row_vers_impl_x_locked_low(
if (trx == 0) {
/* The transaction that modified or inserted clust_rec is no
longer active, or it is corrupt: no implicit lock on rec */
if (corrupt) {
if (UNIV_UNLIKELY(corrupt)) {
lock_report_trx_id_insanity(
trx_id, clust_rec, clust_index, clust_offsets,
trx_sys_get_max_trx_id());

View file

@ -123,7 +123,7 @@ srv_conc_enter_innodb_with_atomics(
ulint sleep_in_us;
#ifdef WITH_WSREP
if (trx->is_wsrep() && wsrep_trx_is_aborting(trx->mysql_thd)) {
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() <<
"srv_conc_enter due to MUST_ABORT";
}
@ -324,14 +324,14 @@ wsrep_srv_conc_cancel_wait(
srv_conc_enter_innodb_with_atomics(). No need to cancel here,
thr will wake up after os_sleep and let to enter innodb
*/
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() << "WSREP: conc slot cancel, no atomics";
}
#else
// JAN: TODO: MySQL 5.7
//os_fast_mutex_lock(&srv_conc_mutex);
if (trx->wsrep_event) {
if (wsrep_debug) {
if (UNIV_UNLIKELY(wsrep_debug)) {
ib::info() << "WSREP: conc slot cancel";
}
os_event_set(trx->wsrep_event);

View file

@ -1329,7 +1329,7 @@ srv_init_abort_low(
#ifdef UNIV_DEBUG
" at " << innobase_basename(file) << "[" << line << "]"
#endif /* UNIV_DEBUG */
" with error " << ut_strerr(err) << ". You may need"
" with error " << err << ". You may need"
" to delete the ibdata1 file before trying to start"
" up again.";
} else {
@ -1337,7 +1337,7 @@ srv_init_abort_low(
#ifdef UNIV_DEBUG
" at " << innobase_basename(file) << "[" << line << "]"
#endif /* UNIV_DEBUG */
" with error " << ut_strerr(err);
" with error " << err;
}
srv_shutdown_all_bg_threads();

View file

@ -698,12 +698,11 @@ namespace undo {
os_file_close(handle);
if (err != DB_SUCCESS) {
if (UNIV_UNLIKELY(err != DB_SUCCESS)) {
ib::info()
<< "Unable to read '"
<< log_file_name << "' : "
<< ut_strerr(err);
<< err;
os_file_delete(
innodb_log_file_key, log_file_name);

View file

@ -1565,9 +1565,7 @@ trx_undo_update_rec_get_update(
<< " fields " << BUG_REPORT_MSG
<< ". Run also CHECK TABLE "
<< index->table->name << "."
" n_fields = " << n_fields << ", i = " << i
<< ", ptr " << ptr;
" n_fields = " << n_fields << ", i = " << i;
ut_ad(0);
*upd = NULL;
return(NULL);

View file

@ -478,9 +478,8 @@ trx_validate_state_before_free(trx_t* trx)
ut_ad(!trx->mysql_n_tables_locked);
ut_ad(!trx->internal);
if (trx->declared_to_be_inside_innodb) {
ib::error() << "Freeing a trx (" << trx << ", "
if (UNIV_UNLIKELY(trx->declared_to_be_inside_innodb)) {
ib::error() << "Freeing a trx ("
<< trx_get_id_for_print(trx) << ") which is declared"
" to be processing inside InnoDB";

View file

@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1994, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, 2019, MariaDB Corporation.
Copyright (c) 2017, 2020, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@ -614,6 +614,12 @@ ut_basename_noext(
namespace ib {
ATTRIBUTE_COLD logger& logger::operator<<(dberr_t err)
{
m_oss << ut_strerr(err);
return *this;
}
info::~info()
{
sql_print_information("InnoDB: %s", m_oss.str().c_str());