]> git.pld-linux.org Git - packages/mysql.git/blobdiff - innodb_fix_misc.patch
- up to 5.5.18
[packages/mysql.git] / innodb_fix_misc.patch
index 794ed60449a6669058723dd73d460104e5c5739d..06e42224ba8473596aca1e2e8b7cf5425e6b4b94 100644 (file)
@@ -12,7 +12,7 @@
 # should be done or reviewed by the maintainer!
 --- a/storage/innobase/buf/buf0buf.c
 +++ b/storage/innobase/buf/buf0buf.c
-@@ -2040,6 +2040,27 @@
+@@ -1944,6 +1944,27 @@
  #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
        }
  
@@ -40,7 +40,7 @@
        if (UNIV_UNLIKELY(!bpage->zip.data)) {
                /* There is no compressed page. */
  err_exit:
-@@ -2549,6 +2570,27 @@
+@@ -2452,6 +2473,27 @@
                block = (buf_block_t*) buf_page_hash_get_low(
                        buf_pool, space, offset, fold);
                if (block) {
@@ -68,7 +68,7 @@
                        block_mutex = buf_page_get_mutex_enter((buf_page_t*)block);
                        ut_a(block_mutex);
                }
-@@ -3467,11 +3509,28 @@
+@@ -3374,11 +3416,28 @@
  
        fold = buf_page_address_fold(space, offset);
  
@@ -97,7 +97,7 @@
        if (watch_page && !buf_pool_watch_is_sentinel(buf_pool, watch_page)) {
                /* The page is already in the buffer pool. */
                watch_page = NULL;
-@@ -3602,6 +3661,7 @@
+@@ -3509,6 +3568,7 @@
                bpage->state    = BUF_BLOCK_ZIP_PAGE;
                bpage->space    = space;
                bpage->offset   = offset;
  
  #ifdef UNIV_DEBUG
                bpage->in_page_hash = FALSE;
-@@ -3686,6 +3746,7 @@
+@@ -3593,6 +3653,7 @@
  
        fold = buf_page_address_fold(space, offset);
  
        //buf_pool_mutex_enter(buf_pool);
        mutex_enter(&buf_pool->LRU_list_mutex);
        rw_lock_x_lock(&buf_pool->page_hash_latch);
-@@ -3693,6 +3754,21 @@
+@@ -3600,6 +3661,21 @@
        block = (buf_block_t*) buf_page_hash_get_low(
                buf_pool, space, offset, fold);
  
        if (block
            && buf_page_in_file(&block->page)
            && !buf_pool_watch_is_sentinel(buf_pool, &block->page)) {
-@@ -3984,8 +4060,11 @@
+@@ -3953,8 +4029,11 @@
        }
  
        if (io_type == BUF_IO_WRITE
 +                      for (k = chunk->size; k--; block++) {
 +                              if (buf_block_get_state(block)
 +                                  != BUF_BLOCK_FILE_PAGE
-+                                  || !block->is_hashed
++                                  || !block->index
 +                                  || buf_page_get_space(&block->page) != id) {
 +                                      continue;
 +                              }
        ut_a(ret);
 --- a/storage/innobase/handler/ha_innodb.cc
 +++ b/storage/innobase/handler/ha_innodb.cc
-@@ -12023,6 +12023,12 @@
+@@ -12141,6 +12141,12 @@
    "except for the deletion.",
    NULL, NULL, 0, &corrupt_table_action_typelib);
  
  static struct st_mysql_sys_var* innobase_system_variables[]= {
    MYSQL_SYSVAR(page_size),
    MYSQL_SYSVAR(log_block_size),
-@@ -12114,6 +12120,7 @@
+@@ -12235,6 +12241,7 @@
    MYSQL_SYSVAR(purge_batch_size),
    MYSQL_SYSVAR(rollback_segments),
    MYSQL_SYSVAR(corrupt_table_action),
    NULL
  };
  
-@@ -12123,7 +12130,7 @@
+@@ -12244,7 +12251,7 @@
    &innobase_storage_engine,
    innobase_hton_name,
    plugin_author,
    NULL, /* Plugin Deinit */
 --- a/storage/innobase/include/buf0buf.h
 +++ b/storage/innobase/include/buf0buf.h
-@@ -1477,6 +1477,7 @@
+@@ -1455,6 +1455,7 @@
                                        0 if the block was never accessed
                                        in the buffer pool */
        /* @} */
        ibool           file_page_was_freed;
 --- a/storage/innobase/include/buf0buf.ic
 +++ b/storage/innobase/include/buf0buf.ic
-@@ -408,6 +408,7 @@
+@@ -426,6 +426,7 @@
        buf_block_set_state(block, BUF_BLOCK_FILE_PAGE);
        block->page.space = space;
        block->page.offset = page_no;
  
 --- a/storage/innobase/include/srv0srv.h
 +++ b/storage/innobase/include/srv0srv.h
-@@ -244,6 +244,8 @@
+@@ -249,6 +249,8 @@
  extern ulint  srv_pass_corrupt_table;
  
  extern ulint  srv_dict_size_limit;
  extern ulint  srv_n_rows_inserted;
 --- a/storage/innobase/include/sync0sync.h
 +++ b/storage/innobase/include/sync0sync.h
-@@ -693,6 +693,7 @@
+@@ -689,6 +689,7 @@
  #define       SYNC_BUF_POOL           150     /* Buffer pool mutex */
  #define       SYNC_BUF_FLUSH_LIST     145     /* Buffer flush list mutex */
  #define SYNC_DOUBLEWRITE      140
 +#define       SYNC_OUTER_ANY_LATCH    136
  #define       SYNC_ANY_LATCH          135
- #define SYNC_THR_LOCAL                133
  #define       SYNC_MEM_HASH           131
+ #define       SYNC_MEM_POOL           130
 --- a/storage/innobase/include/univ.i
 +++ b/storage/innobase/include/univ.i
-@@ -52,6 +52,11 @@
+@@ -53,6 +53,11 @@
  #define INNODB_VERSION_MINOR  1
  #define INNODB_VERSION_BUGFIX 8
  
  /* The following is the InnoDB version as shown in
  SELECT plugin_version FROM information_schema.plugins;
  calculated in make_version_string() in sql/sql_show.cc like this:
-@@ -64,7 +69,8 @@
+@@ -65,7 +70,8 @@
  #define INNODB_VERSION_STR                    \
        IB_TO_STR(INNODB_VERSION_MAJOR) "."     \
        IB_TO_STR(INNODB_VERSION_MINOR) "."     \
  
  /** Provide optional 4.x backwards compatibility for 5.0 and above */
  UNIV_INTERN ibool     row_rollback_on_timeout = FALSE;
-@@ -1191,6 +1192,13 @@
+@@ -1192,6 +1193,13 @@
  
        thr = que_fork_get_first_thr(prebuilt->ins_graph);
  
        if (prebuilt->sql_stat_start) {
                node->state = INS_NODE_SET_IX_LOCK;
                prebuilt->sql_stat_start = FALSE;
-@@ -2575,10 +2583,29 @@
+@@ -2576,10 +2584,29 @@
  
                        err = DB_ERROR;
                } else {
                }
        }
  
-@@ -2927,6 +2954,19 @@
+@@ -2928,6 +2955,19 @@
                        table->space = space;
                        index = dict_table_get_first_index(table);
                        do {
                        } while (index);
 --- a/storage/innobase/row/row0sel.c
 +++ b/storage/innobase/row/row0sel.c
-@@ -3367,6 +3367,7 @@
+@@ -3418,6 +3418,7 @@
        ulint           offsets_[REC_OFFS_NORMAL_SIZE];
        ulint*          offsets                         = offsets_;
        ibool           table_lock_waited               = FALSE;
  
        rec_offs_init(offsets_);
  
-@@ -3738,6 +3739,17 @@
+@@ -3796,6 +3797,17 @@
  
        /* Do some start-of-statement preparations */
  
        if (!prebuilt->sql_stat_start) {
                /* No need to set an intention lock or assign a read view */
  
-@@ -3748,6 +3760,18 @@
+@@ -3806,6 +3818,18 @@
                              " perform a consistent read\n"
                              "InnoDB: but the read view is not assigned!\n",
                              stderr);
                        ut_error;
 --- a/storage/innobase/srv/srv0srv.c
 +++ b/storage/innobase/srv/srv0srv.c
-@@ -441,6 +441,8 @@
+@@ -447,6 +447,8 @@
  UNIV_INTERN ulint     srv_pass_corrupt_table = 0; /* 0:disable 1:enable */
  
  UNIV_INTERN ulint     srv_dict_size_limit = 0;
  UNIV_INTERN ulong     srv_n_free_tickets_to_enter = 500;
 --- a/storage/innobase/srv/srv0start.c
 +++ b/storage/innobase/srv/srv0start.c
-@@ -2161,7 +2161,7 @@
+@@ -2167,7 +2167,7 @@
        if (srv_print_verbose_log) {
                ut_print_timestamp(stderr);
                fprintf(stderr,
        }
 --- a/storage/innobase/sync/sync0sync.c
 +++ b/storage/innobase/sync/sync0sync.c
-@@ -1225,6 +1225,7 @@
+@@ -1219,6 +1219,7 @@
+       case SYNC_LOG:
        case SYNC_LOG_FLUSH_ORDER:
-       case SYNC_THR_LOCAL:
        case SYNC_ANY_LATCH:
 +      case SYNC_OUTER_ANY_LATCH:
        case SYNC_FILE_FORMAT_TAG:
This page took 0.049802 seconds and 4 git commands to generate.