Commit 0af0e7a7 authored by Sergei Golubchik's avatar Sergei Golubchik

merge XtraDB 1.1.8-27.0 from Percona-Server-5.5.25a-rel27.1

parents 80b3f747 651ac12e
......@@ -3604,6 +3604,8 @@ btr_estimate_n_rows_in_range(
n_rows = n_rows * 2;
}
DBUG_EXECUTE_IF("bug14007649", return(n_rows););
/* Do not estimate the number of rows in the range
to over 1 / 2 of the estimated rows in the whole
table */
......
......@@ -1846,8 +1846,6 @@ buf_flush_batch(
}
#endif /* UNIV_DEBUG */
srv_buf_pool_flushed += count;
return(count);
}
......@@ -1874,13 +1872,6 @@ buf_flush_common(
#endif /* UNIV_DEBUG */
srv_buf_pool_flushed += page_count;
if (flush_type == BUF_FLUSH_LRU) {
/* We keep track of all flushes happening as part of LRU
flush. When estimating the desired rate at which flush_list
should be flushed we factor in this value. */
buf_lru_flush_page_count += page_count;
}
}
/******************************************************************//**
......
......@@ -178,7 +178,7 @@ dict_print(void)
monitor printout */
mutex_enter(&kernel_mutex);
srv_fatal_semaphore_wait_threshold += 7200; /* 2 hours */
srv_fatal_semaphore_wait_threshold += SRV_SEMAPHORE_WAIT_EXTENSION;
mutex_exit(&kernel_mutex);
heap = mem_heap_create(1000);
......@@ -215,7 +215,7 @@ dict_print(void)
/* Restore the fatal semaphore wait timeout */
mutex_enter(&kernel_mutex);
srv_fatal_semaphore_wait_threshold -= 7200; /* 2 hours */
srv_fatal_semaphore_wait_threshold -= SRV_SEMAPHORE_WAIT_EXTENSION;
mutex_exit(&kernel_mutex);
}
......
......@@ -1932,7 +1932,7 @@ fil_inc_pending_ops(
if (space == NULL) {
fprintf(stderr,
"InnoDB: Error: trying to do ibuf merge to a"
"InnoDB: Error: trying to do an operation on a"
" dropped tablespace %lu\n",
(ulong) id);
}
......@@ -3440,6 +3440,7 @@ skip_info:
for (offset = 0; offset < free_limit_bytes;
offset += zip_size ? zip_size : UNIV_PAGE_SIZE) {
ibool page_is_corrupt;
ibool is_descr_page = FALSE;
success = os_file_read(file, page,
(ulint)(offset & 0xFFFFFFFFUL),
......@@ -3478,6 +3479,7 @@ skip_info:
/* store as descr page */
memcpy(descr_page, page, (zip_size ? zip_size : UNIV_PAGE_SIZE));
is_descr_page = TRUE;
} else if (descr_is_corrupt) {
/* unknown state of the page */
......@@ -3554,7 +3556,8 @@ skip_info:
}
}
if (fil_page_get_type(page) == FIL_PAGE_INDEX) {
if (fil_page_get_type(page) ==
FIL_PAGE_INDEX && !is_descr_page) {
index_id_t tmp = mach_read_from_8(page + (PAGE_HEADER + PAGE_INDEX_ID));
for (i = 0; i < n_index; i++) {
......
......@@ -4700,6 +4700,27 @@ table_opened:
DBUG_RETURN(0);
}
UNIV_INTERN
handler*
ha_innobase::clone(
/*===============*/
const char* name, /*!< in: table name */
MEM_ROOT* mem_root) /*!< in: memory context */
{
ha_innobase* new_handler;
DBUG_ENTER("ha_innobase::clone");
new_handler = static_cast<ha_innobase*>(handler::clone(name,
mem_root));
if (new_handler) {
new_handler->prebuilt->select_lock_type
= prebuilt->select_lock_type;
}
DBUG_RETURN(new_handler);
}
UNIV_INTERN
uint
ha_innobase::max_supported_key_part_length() const
......@@ -9452,7 +9473,7 @@ ha_innobase::check(
/* Enlarge the fatal lock wait timeout during CHECK TABLE. */
mutex_enter(&kernel_mutex);
srv_fatal_semaphore_wait_threshold += 7200; /* 2 hours */
srv_fatal_semaphore_wait_threshold += SRV_SEMAPHORE_WAIT_EXTENSION;
mutex_exit(&kernel_mutex);
for (index = dict_table_get_first_index(prebuilt->table);
......@@ -9593,7 +9614,7 @@ ha_innobase::check(
/* Restore the fatal lock wait timeout after CHECK TABLE. */
mutex_enter(&kernel_mutex);
srv_fatal_semaphore_wait_threshold -= 7200; /* 2 hours */
srv_fatal_semaphore_wait_threshold -= SRV_SEMAPHORE_WAIT_EXTENSION;
mutex_exit(&kernel_mutex);
prebuilt->trx->op_info = "";
......
......@@ -134,6 +134,7 @@ class ha_innobase: public handler
const key_map* keys_to_use_for_scanning();
int open(const char *name, int mode, uint test_if_locked);
handler* clone(const char *name, MEM_ROOT *mem_root);
int close(void);
double scan_time();
double read_time(uint index, uint ranges, ha_rows rows);
......
......@@ -1578,6 +1578,8 @@ i_s_sys_tables_fill_table(
DBUG_ENTER("i_s_sys_tables_fill_table");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
......@@ -1833,6 +1835,8 @@ i_s_sys_tables_fill_table_stats(
DBUG_ENTER("i_s_sys_tables_fill_table_stats");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
......@@ -2029,6 +2033,8 @@ i_s_sys_indexes_fill_table(
DBUG_ENTER("i_s_sys_indexes_fill_table");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
......@@ -2218,6 +2224,8 @@ i_s_sys_columns_fill_table(
DBUG_ENTER("i_s_sys_columns_fill_table");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
......@@ -2372,6 +2380,8 @@ i_s_sys_fields_fill_table(
DBUG_ENTER("i_s_sys_fields_fill_table");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
......@@ -2553,6 +2563,8 @@ i_s_sys_foreign_fill_table(
DBUG_ENTER("i_s_sys_foreign_fill_table");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
......@@ -2716,6 +2728,8 @@ i_s_sys_foreign_cols_fill_table(
DBUG_ENTER("i_s_sys_foreign_cols_fill_table");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
DBUG_RETURN(0);
......@@ -2883,6 +2897,8 @@ i_s_sys_stats_fill_table(
DBUG_ENTER("i_s_sys_stats_fill_table");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
DBUG_RETURN(0);
......@@ -3199,6 +3215,8 @@ i_s_innodb_table_stats_fill(
DBUG_ENTER("i_s_innodb_table_stats_fill");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
DBUG_RETURN(0);
......@@ -3262,6 +3280,8 @@ i_s_innodb_index_stats_fill(
DBUG_ENTER("i_s_innodb_index_stats_fill");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
DBUG_RETURN(0);
......@@ -3422,6 +3442,8 @@ i_s_innodb_admin_command_fill(
DBUG_ENTER("i_s_innodb_admin_command_fill");
RETURN_IF_INNODB_NOT_STARTED(tables->schema_table_name);
/* deny access to non-superusers */
if (check_global_access(thd, PROCESS_ACL)) {
DBUG_RETURN(0);
......
......@@ -301,6 +301,7 @@ extern ibool srv_print_latch_waits;
extern ulint srv_activity_count;
extern ulint srv_fatal_semaphore_wait_threshold;
#define SRV_SEMAPHORE_WAIT_EXTENSION 7200
extern ulint srv_dml_needed_delay;
extern long long srv_kill_idle_transaction;
......
......@@ -54,10 +54,7 @@ Created 1/20/1994 Heikki Tuuri
#define INNODB_VERSION_BUGFIX 8
#ifndef PERCONA_INNODB_VERSION
/* this is *not* the version of XtraDB as in Percona-Server sources,
but the version of Percona-Server, where this XtraDB was taken from.
Because Percona does not update XtraDB version for every release */
#define PERCONA_INNODB_VERSION 26.0
#define PERCONA_INNODB_VERSION 27.0
#endif
/* The following is the InnoDB version as shown in
......
......@@ -1512,8 +1512,7 @@ innobase_start_or_create_for_mysql(void)
if (!os_aio_init(io_limit,
srv_n_read_io_threads,
srv_n_write_io_threads,
SRV_MAX_N_PENDING_SYNC_IOS))
{
SRV_MAX_N_PENDING_SYNC_IOS)) {
ut_print_timestamp(stderr);
fprintf(stderr,
" InnoDB: Fatal error: cannot initialize AIO"
......
......@@ -926,6 +926,11 @@ sync_array_print_long_waits(
ibool fatal = FALSE;
double longest_diff = 0;
/* For huge tables, skip the check during CHECK TABLE etc... */
if (fatal_timeout > SRV_SEMAPHORE_WAIT_EXTENSION) {
return(FALSE);
}
#ifdef UNIV_DEBUG_VALGRIND
/* Increase the timeouts if running under valgrind because it executes
extremely slowly. UNIV_DEBUG_VALGRIND does not necessary mean that
......
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