mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
5.5.48-37.8
This commit is contained in:
parent
3cfd36bbe2
commit
c9e56d5ca9
6 changed files with 62 additions and 19 deletions
|
@ -1,6 +1,6 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1995, 2011, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
|
||||
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
|
||||
|
@ -2217,7 +2217,10 @@ buf_flush_stat_update(void)
|
|||
ib_uint64_t lsn;
|
||||
ulint n_flushed;
|
||||
|
||||
lsn = log_get_lsn();
|
||||
if (!log_peek_lsn(&lsn)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (buf_flush_stat_cur.redo == 0) {
|
||||
/* First time around. Just update the current LSN
|
||||
and return. */
|
||||
|
|
|
@ -4498,7 +4498,7 @@ building based on the assumption that there is no concurrent
|
|||
index creation/drop and DMLs that requires index lookup. All table
|
||||
handle will be closed before the index creation/drop.
|
||||
@return TRUE if index translation table built successfully */
|
||||
static
|
||||
UNIV_INTERN
|
||||
ibool
|
||||
innobase_build_index_translation(
|
||||
/*=============================*/
|
||||
|
|
|
@ -347,3 +347,26 @@ innobase_index_name_is_reserved(
|
|||
ulint num_of_keys); /*!< in: Number of indexes to
|
||||
be created. */
|
||||
|
||||
/*******************************************************************//**
|
||||
This function builds a translation table in INNOBASE_SHARE
|
||||
structure for fast index location with mysql array number from its
|
||||
table->key_info structure. This also provides the necessary translation
|
||||
between the key order in mysql key_info and Innodb ib_table->indexes if
|
||||
they are not fully matched with each other.
|
||||
Note we do not have any mutex protecting the translation table
|
||||
building based on the assumption that there is no concurrent
|
||||
index creation/drop and DMLs that requires index lookup. All table
|
||||
handle will be closed before the index creation/drop.
|
||||
@return TRUE if index translation table built successfully */
|
||||
UNIV_INTERN
|
||||
ibool
|
||||
innobase_build_index_translation(
|
||||
/*=============================*/
|
||||
const TABLE* table, /*!< in: table in MySQL data
|
||||
dictionary */
|
||||
dict_table_t* ib_table, /*!< in: table in Innodb data
|
||||
dictionary */
|
||||
INNOBASE_SHARE* share); /*!< in/out: share structure
|
||||
where index translation table
|
||||
will be constructed in. */
|
||||
|
||||
|
|
|
@ -1082,6 +1082,22 @@ ha_innobase::final_add_index(
|
|||
|
||||
trx_free_for_mysql(trx);
|
||||
|
||||
/* Rebuild index translation table now for temporary tables if we are
|
||||
restoring secondary keys, as ha_innobase::open will not be called for
|
||||
the next access. */
|
||||
if (add->indexed_table == prebuilt->table
|
||||
&& dict_table_is_temporary(prebuilt->table))
|
||||
{
|
||||
if (!innobase_build_index_translation(add_arg->table,
|
||||
prebuilt->table, share))
|
||||
{
|
||||
/* We don't know whether index translation build failed
|
||||
because of DD mismatch or OOM, return non-specific
|
||||
error code. */
|
||||
err = -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* There might be work for utility threads.*/
|
||||
srv_active_wake_master_thread();
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ component, i.e. we show M.N.P as M.N */
|
|||
(INNODB_VERSION_MAJOR << 8 | INNODB_VERSION_MINOR)
|
||||
|
||||
#ifndef PERCONA_INNODB_VERSION
|
||||
#define PERCONA_INNODB_VERSION 37.7
|
||||
#define PERCONA_INNODB_VERSION 37.8
|
||||
#endif
|
||||
|
||||
#define INNODB_VERSION_STR MYSQL_SERVER_VERSION
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*****************************************************************************
|
||||
|
||||
Copyright (c) 1995, 2013, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 1995, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||
Copyright (c) 2008, 2009 Google Inc.
|
||||
Copyright (c) 2009, Percona Inc.
|
||||
|
||||
|
@ -2880,6 +2880,8 @@ exit_func:
|
|||
/*********************************************************************//**
|
||||
A thread which prints warnings about semaphore waits which have lasted
|
||||
too long. These can be used to track bugs which cause hangs.
|
||||
Note: In order to make sync_arr_wake_threads_if_sema_free work as expected,
|
||||
we should avoid waiting any mutexes in this function!
|
||||
@return a dummy parameter */
|
||||
UNIV_INTERN
|
||||
os_thread_ret_t
|
||||
|
@ -2917,9 +2919,7 @@ loop:
|
|||
|
||||
/* Try to track a strange bug reported by Harald Fuchs and others,
|
||||
where the lsn seems to decrease at times */
|
||||
|
||||
new_lsn = log_get_lsn();
|
||||
|
||||
if (log_peek_lsn(&new_lsn)) {
|
||||
if (new_lsn < old_lsn) {
|
||||
ut_print_timestamp(stderr);
|
||||
fprintf(stderr,
|
||||
|
@ -2933,6 +2933,7 @@ loop:
|
|||
}
|
||||
|
||||
old_lsn = new_lsn;
|
||||
}
|
||||
|
||||
if (difftime(time(NULL), srv_last_monitor_time) > 60) {
|
||||
/* We referesh InnoDB Monitor values so that averages are
|
||||
|
|
Loading…
Reference in a new issue