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