Author: arekm                        Date: Sat Feb 19 22:36:00 2011 GMT
Module: packages                      Tag: MYSQL_5_1
---- Log message:
- up to 5.1.11

---- Files affected:
packages/mysql:
   mysql-bug677407.patch (1.1.2.1 -> 1.1.2.2) , mysql-error_pad.patch (1.1.2.1 
-> 1.1.2.2) , mysql-i_s_innodb_buffer_pool_pages.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_adjust_defaults.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_admin_command_base.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_deadlock_count.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_dict_size_limit.patch (1.2.2.1 -> 1.2.2.2) , 
mysql-innodb_expand_import.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_expand_undo_slots.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_extend_slow.patch (1.2 -> 1.2.2.1) , mysql-innodb_extra_rseg.patch 
(1.2.2.1 -> 1.2.2.2) , mysql-innodb_fast_checksum.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_files_extend.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_fix_misc.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_io_patches.patch (1.1.4.1 -> 1.1.4.2) , 
mysql-innodb_lru_dump_restore.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_overwrite_relay_log_info.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_pass_corrupt_table.patch (
 1.1.2.1 -> 1.1.2.2) , mysql-innodb_purge_thread.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_recovery_patches.patch (1.1.4.1 -> 1.1.4.2) , 
mysql-innodb_separate_doublewrite.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_show_enhancements.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_show_lock_name.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_show_status.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_show_sys_tables.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_split_buf_pool_mutex.patch (1.3 -> 1.3.2.1) , 
mysql-innodb_stats.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_swap_builtin_plugin.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-innodb_thread_concurrency_timer_based.patch (1.2.2.1 -> 1.2.2.2) , 
mysql-microsec_process.patch (1.3 -> 1.3.2.1) , mysql-optimizer_fix.patch 
(1.1.2.1 -> 1.1.2.2) , mysql-profiling_slow.patch (1.2.2.1 -> 1.2.2.2) , 
mysql-query_cache_enhance.patch (1.1.2.1 -> 1.1.2.2) , mysql-show_patches.patch 
(1.1.4.1 -> 1.1.4.2) , mysql-show_temp_51.patch (1.1.2.1 -> 1.1.2.2) , 
mysql-slow_extended.p
 atch (1.1.2.1 -> 1.1.2.2) , mysql-suppress_log_warning_1592.patch (1.1.2.1 -> 
1.1.2.2) , mysql-userstat.patch (1.2 -> 1.2.2.1) , mysql.spec (1.496.2.4 -> 
1.496.2.5) , plugin-avoid-version.patch (1.3 -> 1.3.2.1) 

---- Diffs:

================================================================
Index: packages/mysql/mysql-bug677407.patch
diff -u packages/mysql/mysql-bug677407.patch:1.1.2.1 
packages/mysql/mysql-bug677407.patch:1.1.2.2
--- packages/mysql/mysql-bug677407.patch:1.1.2.1        Fri Dec 17 12:41:48 2010
+++ packages/mysql/mysql-bug677407.patch        Sat Feb 19 23:35:53 2011
@@ -49,6 +49,7 @@
 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+diff -ruN a/storage/innodb_plugin/trx/trx0i_s.c 
b/storage/innodb_plugin/trx/trx0i_s.c
 --- a/storage/innodb_plugin/trx/trx0i_s.c      2010-11-03 16:39:54.000000000 
+0300
 +++ b/storage/innodb_plugin/trx/trx0i_s.c      2010-11-30 13:57:03.000000000 
+0300
 @@ -157,10 +157,6 @@
@@ -62,7 +63,7 @@
        i_s_table_cache_t innodb_trx;   /*!< innodb_trx table */
        i_s_table_cache_t innodb_locks; /*!< innodb_locks table */
        i_s_table_cache_t innodb_lock_waits;/*!< innodb_lock_waits table */
-@@ -1101,13 +1097,6 @@
+@@ -1142,13 +1138,6 @@
  {
        ullint  now;
  
@@ -76,7 +77,7 @@
  #ifdef UNIV_SYNC_DEBUG
        ut_a(rw_lock_own(&cache->rw_lock, RW_LOCK_EX));
  #endif
-@@ -1205,6 +1194,12 @@
+@@ -1246,6 +1235,12 @@
  /*===================================*/
        trx_i_s_cache_t*        cache)  /*!< in/out: cache */
  {
@@ -89,7 +90,7 @@
        if (!can_cache_be_updated(cache)) {
  
                return(1);
-@@ -1217,6 +1212,10 @@
+@@ -1258,6 +1253,10 @@
  
        mutex_exit(&kernel_mutex);
  
@@ -100,7 +101,7 @@
        return(0);
  }
  
-@@ -1247,16 +1246,12 @@
+@@ -1288,16 +1287,12 @@
        release kernel_mutex
        release trx_i_s_cache_t::rw_lock
        acquire trx_i_s_cache_t::rw_lock, S
@@ -117,7 +118,7 @@
        table_cache_init(&cache->innodb_trx, sizeof(i_s_trx_row_t));
        table_cache_init(&cache->innodb_locks, sizeof(i_s_locks_row_t));
        table_cache_init(&cache->innodb_lock_waits,
-@@ -1307,18 +1302,10 @@
+@@ -1348,18 +1343,10 @@
  /*===================*/
        trx_i_s_cache_t*        cache)  /*!< in: cache */
  {

================================================================
Index: packages/mysql/mysql-error_pad.patch
diff -u packages/mysql/mysql-error_pad.patch:1.1.2.1 
packages/mysql/mysql-error_pad.patch:1.1.2.2
--- packages/mysql/mysql-error_pad.patch:1.1.2.1        Fri Dec 17 12:41:48 2010
+++ packages/mysql/mysql-error_pad.patch        Sat Feb 19 23:35:53 2011
@@ -61,7 +61,7 @@
 -      goto err;
 +        int padd_to= tmp_error->d_code;
 +        char* padd_message= tmp->text;
-+        while ((row_nr+er_offset) < padd_to)
++        while ((int) row_nr + er_offset < padd_to)
 +        {
 +          if (copy_rows(to, padd_message,row_nr,start_pos))
 +          {
@@ -177,7 +177,7 @@
 +    fprintf(stderr, "Failed to parse the error padd string '%s' '%s' (d_code 
doesn't parse)!\n",er_name,str);
 +    DBUG_RETURN(0);
 +  }
-+  if (d_code < (er_offset + er_count))
++  if (d_code < (uint) er_offset + er_count)
 +  {
 +    fprintf(stderr, "Error to padding less current error number!\n");
 +    DBUG_RETURN(0);

================================================================
Index: packages/mysql/mysql-i_s_innodb_buffer_pool_pages.patch
diff -u packages/mysql/mysql-i_s_innodb_buffer_pool_pages.patch:1.1.2.1 
packages/mysql/mysql-i_s_innodb_buffer_pool_pages.patch:1.1.2.2
--- packages/mysql/mysql-i_s_innodb_buffer_pool_pages.patch:1.1.2.1     Fri Dec 
17 12:41:48 2010
+++ packages/mysql/mysql-i_s_innodb_buffer_pool_pages.patch     Sat Feb 19 
23:35:53 2011
@@ -26,7 +26,7 @@
 diff -ruN a/storage/innodb_plugin/handler/ha_innodb.cc 
b/storage/innodb_plugin/handler/ha_innodb.cc
 --- a/storage/innodb_plugin/handler/ha_innodb.cc       2010-04-29 
15:55:25.000000000 +0900
 +++ b/storage/innodb_plugin/handler/ha_innodb.cc       2010-04-29 
16:04:05.000000000 +0900
-@@ -11173,6 +11173,9 @@
+@@ -11175,6 +11175,9 @@
    innobase_system_variables, /* system variables */
    NULL /* reserved */
  },

================================================================
Index: packages/mysql/mysql-innodb_adjust_defaults.patch
diff -u packages/mysql/mysql-innodb_adjust_defaults.patch:1.1.2.1 
packages/mysql/mysql-innodb_adjust_defaults.patch:1.1.2.2
--- packages/mysql/mysql-innodb_adjust_defaults.patch:1.1.2.1   Fri Dec 17 
12:41:48 2010
+++ packages/mysql/mysql-innodb_adjust_defaults.patch   Sat Feb 19 23:35:53 2011
@@ -8,7 +8,7 @@
 diff -ruN a/storage/innodb_plugin/handler/ha_innodb.cc 
b/storage/innodb_plugin/handler/ha_innodb.cc
 --- a/storage/innodb_plugin/handler/ha_innodb.cc       2010-04-30 
16:39:14.000000000 +0900
 +++ b/storage/innodb_plugin/handler/ha_innodb.cc       2010-04-30 
16:43:26.000000000 +0900
-@@ -11178,7 +11178,7 @@
+@@ -11223,7 +11223,7 @@
  static MYSQL_SYSVAR_ULONG(use_purge_thread, srv_use_purge_thread,
    PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
    "Number of purge devoted threads. #### over 1 is EXPERIMENTAL ####",
@@ -17,7 +17,7 @@
  
  static MYSQL_SYSVAR_BOOL(overwrite_relay_log_info, 
innobase_overwrite_relay_log_info,
    PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
-@@ -11278,7 +11278,7 @@
+@@ -11323,7 +11323,7 @@
  static MYSQL_SYSVAR_BOOL(adaptive_flushing, srv_adaptive_flushing,
    PLUGIN_VAR_NOCMDARG,
    "Attempt flushing dirty pages to avoid IO bursts at checkpoints.",
@@ -26,7 +26,7 @@
  
  static MYSQL_SYSVAR_ULONG(max_purge_lag, srv_max_purge_lag,
    PLUGIN_VAR_RQCMDARG,
-@@ -11523,7 +11523,7 @@
+@@ -11568,7 +11568,7 @@
  static MYSQL_SYSVAR_ULONG(ibuf_active_contract, srv_ibuf_active_contract,
    PLUGIN_VAR_RQCMDARG,
    "Enable/Disable active_contract of insert buffer. 0:disable 1:enable",
@@ -35,13 +35,13 @@
  
  static MYSQL_SYSVAR_ULONG(ibuf_accel_rate, srv_ibuf_accel_rate,
    PLUGIN_VAR_RQCMDARG,
-@@ -11601,8 +11601,8 @@
+@@ -11648,8 +11648,8 @@
  };
  static MYSQL_SYSVAR_ENUM(adaptive_checkpoint, srv_adaptive_checkpoint,
    PLUGIN_VAR_RQCMDARG,
--  "Enable/Disable flushing along modified age. ([none], reflex, estimate)",
+-  "Enable/Disable flushing along modified age. ([none], reflex, estimate, 
keep_average)",
 -  NULL, innodb_adaptive_checkpoint_update, 0, &adaptive_checkpoint_typelib);
-+  "Enable/Disable flushing along modified age. (none, reflex, [estimate])",
++  "Enable/Disable flushing along modified age. (none, reflex, [estimate], 
keep_average)",
 +  NULL, innodb_adaptive_checkpoint_update, 2, &adaptive_checkpoint_typelib);
  
  static MYSQL_SYSVAR_ULONG(enable_unsafe_group_commit, 
srv_enable_unsafe_group_commit,

================================================================
Index: packages/mysql/mysql-innodb_admin_command_base.patch
diff -u packages/mysql/mysql-innodb_admin_command_base.patch:1.1.2.1 
packages/mysql/mysql-innodb_admin_command_base.patch:1.1.2.2
--- packages/mysql/mysql-innodb_admin_command_base.patch:1.1.2.1        Fri Dec 
17 12:41:48 2010
+++ packages/mysql/mysql-innodb_admin_command_base.patch        Sat Feb 19 
23:35:53 2011
@@ -8,7 +8,7 @@
 diff -ruN a/storage/innodb_plugin/handler/ha_innodb.cc 
b/storage/innodb_plugin/handler/ha_innodb.cc
 --- a/storage/innodb_plugin/handler/ha_innodb.cc       2010-08-27 
16:27:30.222410116 +0900
 +++ b/storage/innodb_plugin/handler/ha_innodb.cc       2010-08-27 
16:27:44.073104773 +0900
-@@ -11532,6 +11532,7 @@
+@@ -11547,6 +11547,7 @@
  i_s_innodb_cmpmem_reset,
  i_s_innodb_table_stats,
  i_s_innodb_index_stats,
@@ -19,7 +19,7 @@
 diff -ruN a/storage/innodb_plugin/handler/i_s.cc 
b/storage/innodb_plugin/handler/i_s.cc
 --- a/storage/innodb_plugin/handler/i_s.cc     2010-08-27 16:22:04.261021936 
+0900
 +++ b/storage/innodb_plugin/handler/i_s.cc     2010-08-27 16:27:44.077058655 
+0900
-@@ -2948,3 +2948,139 @@
+@@ -2947,3 +2947,139 @@
        STRUCT_FLD(system_vars, NULL),
        STRUCT_FLD(__reserved1, NULL)
  };

================================================================
Index: packages/mysql/mysql-innodb_deadlock_count.patch
diff -u packages/mysql/mysql-innodb_deadlock_count.patch:1.1.2.1 
packages/mysql/mysql-innodb_deadlock_count.patch:1.1.2.2
--- packages/mysql/mysql-innodb_deadlock_count.patch:1.1.2.1    Fri Dec 17 
12:41:48 2010
+++ packages/mysql/mysql-innodb_deadlock_count.patch    Sat Feb 19 23:35:53 2011
@@ -8,7 +8,7 @@
 diff -ruN a/storage/innodb_plugin/handler/ha_innodb.cc 
b/storage/innodb_plugin/handler/ha_innodb.cc
 --- a/storage/innodb_plugin/handler/ha_innodb.cc       2010-08-10 
15:32:14.468241191 +0400
 +++ b/storage/innodb_plugin/handler/ha_innodb.cc       2010-08-10 
15:32:14.926992081 +0400
-@@ -546,6 +546,8 @@
+@@ -547,6 +547,8 @@
    (char*) &export_vars.innodb_data_written,             SHOW_LONG},
    {"dblwr_pages_written",
    (char*) &export_vars.innodb_dblwr_pages_written,      SHOW_LONG},
@@ -53,7 +53,7 @@
 diff -ruN a/storage/innodb_plugin/srv/srv0srv.c 
b/storage/innodb_plugin/srv/srv0srv.c
 --- a/storage/innodb_plugin/srv/srv0srv.c      2010-08-10 15:32:14.478241628 
+0400
 +++ b/storage/innodb_plugin/srv/srv0srv.c      2010-08-10 15:32:14.936991959 
+0400
-@@ -435,7 +435,7 @@
+@@ -438,7 +438,7 @@
  static ulint  srv_n_rows_updated_old          = 0;
  static ulint  srv_n_rows_deleted_old          = 0;
  static ulint  srv_n_rows_read_old             = 0;
@@ -62,7 +62,7 @@
  UNIV_INTERN ulint             srv_n_lock_wait_count           = 0;
  UNIV_INTERN ulint             srv_n_lock_wait_current_count   = 0;
  UNIV_INTERN ib_int64_t        srv_n_lock_wait_time            = 0;
-@@ -2146,6 +2146,8 @@
+@@ -2149,6 +2149,8 @@
                = UT_LIST_GET_LEN(buf_pool->flush_list);
        export_vars.innodb_buffer_pool_pages_free
                = UT_LIST_GET_LEN(buf_pool->free);

================================================================
Index: packages/mysql/mysql-innodb_dict_size_limit.patch
diff -u packages/mysql/mysql-innodb_dict_size_limit.patch:1.2.2.1 
packages/mysql/mysql-innodb_dict_size_limit.patch:1.2.2.2
--- packages/mysql/mysql-innodb_dict_size_limit.patch:1.2.2.1   Fri Dec 17 
12:41:48 2010
+++ packages/mysql/mysql-innodb_dict_size_limit.patch   Sat Feb 19 23:35:53 2011
@@ -8,7 +8,7 @@
 diff -ruN a/storage/innodb_plugin/btr/btr0sea.c 
b/storage/innodb_plugin/btr/btr0sea.c
 --- a/storage/innodb_plugin/btr/btr0sea.c      2010-08-04 02:24:19.000000000 
+0900
 +++ b/storage/innodb_plugin/btr/btr0sea.c      2010-08-27 16:09:42.926020757 
+0900
-@@ -1173,6 +1173,126 @@
+@@ -1173,6 +1173,173 @@
        mem_free(folds);
  }
  
@@ -20,7 +20,7 @@
 +/*=====================================*/
 +      dict_index_t*   index)          /* in: record descriptor */
 +{
-+      buf_page_t*     bpage;
++
 +      hash_table_t*   table;
 +      buf_block_t*    block;
 +      ulint           n_fields;
@@ -36,96 +36,143 @@
 +      ulint           i;
 +      mem_heap_t*     heap    = NULL;
 +      ulint*          offsets;
++      ibool           released_search_latch;
 +
-+      rw_lock_x_lock(&btr_search_latch);
-+      buf_pool_mutex_enter();
++      rw_lock_s_lock(&btr_search_latch);
 +
 +      table = btr_search_sys->hash_index;
 +
-+      bpage = UT_LIST_GET_LAST(buf_pool->LRU);
++      do {
++              buf_chunk_t*    chunks  = buf_pool->chunks;
++              buf_chunk_t*    chunk   = chunks + buf_pool->n_chunks;
++
++              released_search_latch = FALSE;
++
++              while (--chunk >= chunks) {
++                      block   = chunk->blocks;
++                      i       = chunk->size;
++
++retry:
++                      for (; i--; block++) {
++                              if (buf_block_get_state(block)
++                                  != BUF_BLOCK_FILE_PAGE
++                                  || block->index != index
++                                  || !block->is_hashed) {
++                                      continue;
++                              }
++
++                              page = block->frame;
++
++                              /* from btr_search_drop_page_hash_index() */
++                              n_fields = block->curr_n_fields;
++                              n_bytes = block->curr_n_bytes;
 +
-+      while (bpage != NULL) {
-+              block = (buf_block_t*) bpage;
-+              if (block->index == index && block->is_hashed) {
-+                      page = block->frame;
 +
-+                      /* from btr_search_drop_page_hash_index() */
-+                      n_fields = block->curr_n_fields;
-+                      n_bytes = block->curr_n_bytes;
++                              /* keeping latch order */
++                              rw_lock_s_unlock(&btr_search_latch);
++                              released_search_latch = TRUE;
++                              rw_lock_x_lock(&block->lock);
 +
-+                      ut_a(n_fields + n_bytes > 0);
 +
-+                      n_recs = page_get_n_recs(page);
++                              ut_a(n_fields + n_bytes > 0);
 +
-+                      /* Calculate and cache fold values into an array for 
fast deletion
-+                      from the hash index */
++                              n_recs = page_get_n_recs(page);
 +
-+                      folds = mem_alloc(n_recs * sizeof(ulint));
++                              /* Calculate and cache fold values into an 
array for fast deletion
++                              from the hash index */
 +
-+                      n_cached = 0;
++                              folds = mem_alloc(n_recs * sizeof(ulint));
 +
-+                      rec = page_get_infimum_rec(page);
-+                      rec = page_rec_get_next_low(rec, page_is_comp(page));
++                              n_cached = 0;
 +
-+                      index_id = btr_page_get_index_id(page);
++                              rec = page_get_infimum_rec(page);
++                              rec = page_rec_get_next_low(rec, 
page_is_comp(page));
++
++                              index_id = btr_page_get_index_id(page);
 +      
-+                      ut_a(0 == ut_dulint_cmp(index_id, index->id));
++                              ut_a(0 == ut_dulint_cmp(index_id, index->id));
 +
-+                      prev_fold = 0;
++                              prev_fold = 0;
 +
-+                      offsets = NULL;
++                              offsets = NULL;
 +
-+                      while (!page_rec_is_supremum(rec)) {
-+                              offsets = rec_get_offsets(rec, index, offsets,
-+                                                      n_fields + (n_bytes > 
0), &heap);
-+                              ut_a(rec_offs_n_fields(offsets) == n_fields + 
(n_bytes > 0));
-+                              fold = rec_fold(rec, offsets, n_fields, 
n_bytes, index_id);
++                              while (!page_rec_is_supremum(rec)) {
++                                      offsets = rec_get_offsets(rec, index, 
offsets,
++                                                              n_fields + 
(n_bytes > 0), &heap);
++                                      ut_a(rec_offs_n_fields(offsets) == 
n_fields + (n_bytes > 0));
++                                      fold = rec_fold(rec, offsets, n_fields, 
n_bytes, index_id);
 +
-+                              if (fold == prev_fold && prev_fold != 0) {
++                                      if (fold == prev_fold && prev_fold != 
0) {
 +
-+                                      goto next_rec;
-+                              }
++                                              goto next_rec;
++                                      }
 +
-+                              /* Remove all hash nodes pointing to this page 
from the
-+                              hash chain */
++                                      /* Remove all hash nodes pointing to 
this page from the
++                                      hash chain */
 +
-+                              folds[n_cached] = fold;
-+                              n_cached++;
++                                      folds[n_cached] = fold;
++                                      n_cached++;
 +next_rec:
-+                              rec = page_rec_get_next_low(rec, 
page_rec_is_comp(rec));
-+                              prev_fold = fold;
-+                      }
++                                      rec = page_rec_get_next_low(rec, 
page_rec_is_comp(rec));
++                                      prev_fold = fold;
++                              }
 +
-+                      for (i = 0; i < n_cached; i++) {
++                              if (UNIV_LIKELY_NULL(heap)) {
++                                      mem_heap_empty(heap);
++                              }
 +
-+                              ha_remove_all_nodes_to_page(table, folds[i], 
page);
-+                      }
++                              rw_lock_x_lock(&btr_search_latch);
 +
-+                      ut_a(index->search_info->ref_count > 0);
-+                      index->search_info->ref_count--;
++                              if (UNIV_UNLIKELY(!block->is_hashed)) {
++                                      goto cleanup;
++                              }
 +
-+                      block->is_hashed = FALSE;
-+                      block->index = NULL;
-+      
++                              ut_a(block->index == index);
++
++                              if (UNIV_UNLIKELY(block->curr_n_fields != 
n_fields)
++                                  || UNIV_UNLIKELY(block->curr_n_bytes != 
n_bytes)) {
++                                      rw_lock_x_unlock(&btr_search_latch);
++                                      rw_lock_x_unlock(&block->lock);
++
++                                      mem_free(folds);
++
++                                      rw_lock_s_lock(&btr_search_latch);
++                                      goto retry;
++                              }
++
++                              for (i = 0; i < n_cached; i++) {
++
++                                      ha_remove_all_nodes_to_page(table, 
folds[i], page);
++                              }
++
++                              ut_a(index->search_info->ref_count > 0);
++                              index->search_info->ref_count--;
++
++                              block->is_hashed = FALSE;
++                              block->index = NULL;
++
++cleanup:      
 +#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
-+                      if (UNIV_UNLIKELY(block->n_pointers)) {
-+                              /* Corruption */
-+                              ut_print_timestamp(stderr);
-+                              fprintf(stderr,
++                              if (UNIV_UNLIKELY(block->n_pointers)) {
++                                      /* Corruption */
++                                      ut_print_timestamp(stderr);
++                                      fprintf(stderr,
 +"  InnoDB: Corruption of adaptive hash index. After dropping\n"
 +"InnoDB: the hash index to a page of %s, still %lu hash nodes remain.\n",
-+                                      index->name, (ulong) block->n_pointers);
-+                      }
++                                              index->name, (ulong) 
block->n_pointers);
++                              }
 +#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
++                              rw_lock_x_unlock(&btr_search_latch);
++                              rw_lock_x_unlock(&block->lock);
 +
-+                      mem_free(folds);
-+              }
++                              mem_free(folds);
 +
-+              bpage = UT_LIST_GET_PREV(LRU, bpage);
-+      }
++                              rw_lock_s_lock(&btr_search_latch);
++                      }
++              }
++      } while (released_search_latch);
 +
-+      buf_pool_mutex_exit();
-+      rw_lock_x_unlock(&btr_search_latch);
++      rw_lock_s_unlock(&btr_search_latch);
 +
 +      if (UNIV_LIKELY_NULL(heap)) {
 +              mem_heap_free(heap);
@@ -198,7 +245,7 @@
 diff -ruN a/storage/innodb_plugin/dict/dict0dict.c 
b/storage/innodb_plugin/dict/dict0dict.c
 --- a/storage/innodb_plugin/dict/dict0dict.c   2010-08-04 02:24:19.000000000 
+0900
 +++ b/storage/innodb_plugin/dict/dict0dict.c   2010-08-27 16:09:42.930057360 
+0900
-@@ -582,6 +582,8 @@
+@@ -613,6 +613,8 @@
  
        table = dict_table_get_on_id_low(table_id);
  
@@ -207,7 +254,7 @@
        mutex_exit(&(dict_sys->mutex));
  
        return(table);
-@@ -697,6 +699,8 @@
+@@ -728,6 +730,8 @@
                table->n_mysql_handles_opened++;
        }
  
@@ -216,7 +263,7 @@
        mutex_exit(&(dict_sys->mutex));
  
        if (table != NULL) {
-@@ -1211,6 +1215,64 @@
+@@ -1241,6 +1245,64 @@
        dict_mem_table_free(table);
  }
  
@@ -281,7 +328,7 @@
  /****************************************************************//**
  If the given column name is reserved for InnoDB system columns, return
  TRUE.
-@@ -1673,6 +1735,11 @@
+@@ -1703,6 +1765,11 @@
        ut_ad(index->magic_n == DICT_INDEX_MAGIC_N);
        ut_ad(mutex_own(&(dict_sys->mutex)));
  
@@ -305,7 +352,7 @@
    {"have_atomic_builtins",
    (char*) &export_vars.innodb_have_atomic_builtins,     SHOW_BOOL},
    {"log_waits",
-@@ -11308,6 +11310,11 @@
+@@ -11310,6 +11312,11 @@
    "Number of extra user rollback segments when create new database.",
    NULL, NULL, 0, 0, 126, 0);
  
@@ -317,7 +364,7 @@
  static struct st_mysql_sys_var* innobase_system_variables[]= {
    MYSQL_SYSVAR(additional_mem_pool_size),
    MYSQL_SYSVAR(autoextend_increment),
-@@ -11375,6 +11382,7 @@
+@@ -11377,6 +11384,7 @@
    MYSQL_SYSVAR(flush_log_at_trx_commit_session),
    MYSQL_SYSVAR(enable_unsafe_group_commit),
    MYSQL_SYSVAR(extra_rsegments),
@@ -366,7 +413,7 @@
 diff -ruN a/storage/innodb_plugin/include/dict0dict.h 
b/storage/innodb_plugin/include/dict0dict.h
 --- a/storage/innodb_plugin/include/dict0dict.h        2010-08-04 
02:24:19.000000000 +0900
 +++ b/storage/innodb_plugin/include/dict0dict.h        2010-08-27 
16:09:42.953188223 +0900
-@@ -1132,6 +1132,12 @@
+@@ -1131,6 +1131,12 @@
  /*====================================*/
        dict_table_t*   table,  /*!< in: table */
        const char*     name);  /*!< in: name of the index to find */

================================================================
Index: packages/mysql/mysql-innodb_expand_import.patch
diff -u packages/mysql/mysql-innodb_expand_import.patch:1.1.2.1 
packages/mysql/mysql-innodb_expand_import.patch:1.1.2.2
--- packages/mysql/mysql-innodb_expand_import.patch:1.1.2.1     Fri Dec 17 
12:41:48 2010
+++ packages/mysql/mysql-innodb_expand_import.patch     Sat Feb 19 23:35:53 2011
@@ -21,7 +21,7 @@
  #ifndef UNIV_HOTBACKUP
  # include "buf0lru.h"
  # include "ibuf0ibuf.h"
-@@ -2983,7 +2989,7 @@
+@@ -3029,7 +3035,7 @@
        ut_a(!(flags & (~0UL << DICT_TF_BITS)));
  
        file = os_file_create_simple_no_error_handling(
@@ -30,12 +30,12 @@
        if (!success) {
                /* The following call prints an error message */
                os_file_get_last_error(TRUE);
-@@ -3030,6 +3036,464 @@
+@@ -3076,6 +3082,464 @@
        space_id = fsp_header_get_space_id(page);
        space_flags = fsp_header_get_flags(page);
  
-+      if (srv_expand_import
-+          && (space_id != id || space_flags != (flags & ~(~0 << 
DICT_TF_BITS)))) {
++      if (srv_expand_import) {
++
 +              ibool           file_is_corrupt = FALSE;
 +              byte*           buf3;
 +              byte*           descr_page;
@@ -498,7 +498,22 @@
 diff -ruN a/storage/innodb_plugin/handler/ha_innodb.cc 
b/storage/innodb_plugin/handler/ha_innodb.cc
 --- a/storage/innodb_plugin/handler/ha_innodb.cc       2010-04-29 
16:54:08.000000000 +0900
 +++ b/storage/innodb_plugin/handler/ha_innodb.cc       2010-04-30 
10:28:05.000000000 +0900
-@@ -11305,6 +11305,11 @@
+@@ -7106,6 +7106,14 @@
+               err = row_discard_tablespace_for_mysql(dict_table->name, trx);
+       } else {
+               err = row_import_tablespace_for_mysql(dict_table->name, trx);
++
++              /* in expanded import mode re-initialize auto_increment again */
++              if ((err == DB_SUCCESS) && srv_expand_import &&
++                  (table->found_next_number_field != NULL)) {
++                      dict_table_autoinc_lock(dict_table);
++                      innobase_initialize_autoinc();
++                      dict_table_autoinc_unlock(dict_table);
++              }
+       }
+ 
+       err = convert_error_code_to_mysql(err, dict_table->flags, NULL);
+@@ -11307,6 +11315,11 @@
    "Enable/Disable unsafe group commit when support_xa=OFF and use with binlog 
or other XA storage engine.",
    NULL, NULL, 0, 0, 1, 0);
  
@@ -510,7 +525,7 @@
  static MYSQL_SYSVAR_ULONG(extra_rsegments, srv_extra_rsegments,
    PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
    "Number of extra user rollback segments when create new database.",
-@@ -11381,6 +11386,7 @@
+@@ -11383,6 +11396,7 @@
    MYSQL_SYSVAR(adaptive_checkpoint),
    MYSQL_SYSVAR(flush_log_at_trx_commit_session),
    MYSQL_SYSVAR(enable_unsafe_group_commit),

================================================================
Index: packages/mysql/mysql-innodb_expand_undo_slots.patch
diff -u packages/mysql/mysql-innodb_expand_undo_slots.patch:1.1.2.1 
packages/mysql/mysql-innodb_expand_undo_slots.patch:1.1.2.2
--- packages/mysql/mysql-innodb_expand_undo_slots.patch:1.1.2.1 Fri Dec 17 
12:41:48 2010
+++ packages/mysql/mysql-innodb_expand_undo_slots.patch Sat Feb 19 23:35:53 2011
@@ -39,7 +39,7 @@
  static MYSQL_SYSVAR_BOOL(doublewrite, innobase_use_doublewrite,
    PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
    "Enable InnoDB doublewrite buffer (enabled by default). "
-@@ -11095,6 +11105,7 @@
+@@ -11097,6 +11107,7 @@
    MYSQL_SYSVAR(data_file_path),
    MYSQL_SYSVAR(data_home_dir),
    MYSQL_SYSVAR(doublewrite),

================================================================
Index: packages/mysql/mysql-innodb_extend_slow.patch
diff -u packages/mysql/mysql-innodb_extend_slow.patch:1.2 
packages/mysql/mysql-innodb_extend_slow.patch:1.2.2.1
--- packages/mysql/mysql-innodb_extend_slow.patch:1.2   Fri Dec 17 12:41:48 2010
+++ packages/mysql/mysql-innodb_extend_slow.patch       Sat Feb 19 23:35:53 2011
@@ -37,9 +37,9 @@
 +                                      block->page.offset, DPAH_SIZE << 3);
 +      block_hash_byte = block_hash >> 3;
 +      block_hash_offset = (byte) block_hash & 0x07;
-+      if (block_hash_byte < 0 || block_hash_byte >= DPAH_SIZE)
++      if (block_hash_byte >= DPAH_SIZE)
 +              fprintf(stderr, "!!! block_hash_byte = %lu  block_hash_offset = 
%d !!!\n", block_hash_byte, block_hash_offset);
-+      if (block_hash_offset < 0 || block_hash_offset > 7)
++      if (block_hash_offset > 7)
 +              fprintf(stderr, "!!! block_hash_byte = %lu  block_hash_offset = 
%d !!!\n", block_hash_byte, block_hash_offset);
 +      if ((trx->distinct_page_access_hash[block_hash_byte] & ((byte) 0x01 << 
block_hash_offset)) == 0)
 +              trx->distinct_page_access++;
@@ -337,7 +337,7 @@
 diff -ruN a/storage/innodb_plugin/fil/fil0fil.c 
b/storage/innodb_plugin/fil/fil0fil.c
 --- a/storage/innodb_plugin/fil/fil0fil.c      2010-08-27 16:15:55.187400372 
+0900
 +++ b/storage/innodb_plugin/fil/fil0fil.c      2010-08-27 16:30:47.346992376 
+0900
-@@ -4325,7 +4325,7 @@
+@@ -4371,7 +4371,7 @@
                                 node->name, node->handle, buf,
                                 offset_low, offset_high,
                                 page_size * n_pages,
@@ -346,7 +346,7 @@
  #endif
                if (success) {
                        node->size += n_pages;
-@@ -4652,7 +4652,7 @@
+@@ -4698,7 +4698,7 @@
  i/o on a tablespace which does not exist */
  UNIV_INTERN
<<Diff was trimmed, longer than 597 lines>>

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-bug677407.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-error_pad.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-i_s_innodb_buffer_pool_pages.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_adjust_defaults.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_admin_command_base.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_deadlock_count.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_dict_size_limit.patch?r1=1.2.2.1&r2=1.2.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_expand_import.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_expand_undo_slots.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_extend_slow.patch?r1=1.2&r2=1.2.2.1&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_extra_rseg.patch?r1=1.2.2.1&r2=1.2.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_fast_checksum.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_files_extend.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_fix_misc.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_io_patches.patch?r1=1.1.4.1&r2=1.1.4.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_lru_dump_restore.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_overwrite_relay_log_info.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_pass_corrupt_table.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_purge_thread.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_recovery_patches.patch?r1=1.1.4.1&r2=1.1.4.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_separate_doublewrite.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_show_enhancements.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_show_lock_name.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_show_status.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_show_sys_tables.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_split_buf_pool_mutex.patch?r1=1.3&r2=1.3.2.1&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_stats.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_swap_builtin_plugin.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-innodb_thread_concurrency_timer_based.patch?r1=1.2.2.1&r2=1.2.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-microsec_process.patch?r1=1.3&r2=1.3.2.1&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-optimizer_fix.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-profiling_slow.patch?r1=1.2.2.1&r2=1.2.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-query_cache_enhance.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-show_patches.patch?r1=1.1.4.1&r2=1.1.4.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-show_temp_51.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-slow_extended.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-suppress_log_warning_1592.patch?r1=1.1.2.1&r2=1.1.2.2&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql-userstat.patch?r1=1.2&r2=1.2.2.1&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/mysql.spec?r1=1.496.2.4&r2=1.496.2.5&f=u
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/mysql/plugin-avoid-version.patch?r1=1.3&r2=1.3.2.1&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to