An error occurred fetching the project authors.
  1. 07 Jun, 2012 1 commit
    • Narayanan Venkateswaran's avatar
      WL#6161 Integrating with InnoDB codebase in MySQL 5.5 · 164080e4
      Narayanan Venkateswaran authored
            
      Changes in the InnoDB codebase required to compile and
      integrate the MEB codebase with MySQL 5.5.
      
      @ storage/innobase/btr/btr0btr.c
        Excluded buffer pool usage from MEB build.
       
        buf_pool_from_bpage calls are in buf0buf.ic, and
        the buffer pool functions from that file are
        disabled in MEB.
      @ storage/innobase/buf/buf0buf.c
        Disabling more buffer pool functions unused in MEB.
      @ storage/innobase/dict/dict0dict.c
        Disabling dict_ind_free that is unused in MEB.
      @ storage/innobase/dict/dict0mem.c
        The include
      
        #include "ha_prototypes.h"
      
        Was causing conflicts with definitions in my_global.h
      
        Linking C executable mysqlbackup
        libinnodb.a(dict0mem.c.o): In function `dict_mem_foreign_table_name_lookup_set':
        dict0mem.c:(.text+0x91c): undefined reference to `innobase_get_lower_case_table_names'
        libinnodb.a(dict0mem.c.o): In function `dict_mem_referenced_table_name_lookup_set':
        dict0mem.c:(.text+0x9fc): undefined reference to `innobase_get_lower_case_table_names'
        libinnodb.a(dict0mem.c.o): In function `dict_mem_foreign_table_name_lookup_set':
        dict0mem.c:(.text+0x96e): undefined reference to `innobase_casedn_str'
        libinnodb.a(dict0mem.c.o): In function `dict_mem_referenced_table_name_lookup_set':
        dict0mem.c:(.text+0xa4e): undefined reference to `innobase_casedn_str'
        collect2: ld returned 1 exit status
        make[2]: *** [mysqlbackup] Error 1
      
        innobase_get_lower_case_table_names
        innobase_casedn_str
        are functions that are part of ha_innodb.cc that is not part of the build
              
        dict_mem_foreign_table_name_lookup_set
        function is not there in the current codebase, meaning we do not use it in MEB.
      @ storage/innobase/fil/fil0fil.c
        The srv_fast_shutdown variable is declared in
        srv0srv.c that is not compiled in the
        mysqlbackup codebase.
      
        This throws an undeclared error.
      
        From the Manual
        ---------------
      
        innodb_fast_shutdown
        --------------------
      
        The InnoDB shutdown mode. The default value is 1
        as of MySQL 3.23.50, which causes a “fast� shutdown
        (the normal type of shutdown). If the value is 0,
        InnoDB does a full purge and an insert buffer merge
        before a shutdown. These operations can take minutes,
        or even hours in extreme cases. If the value is 1,
        InnoDB skips these operations at shutdown.
      
        This ideally does not matter from mysqlbackup
        @ storage/innobase/ha/ha0ha.c
        In file included from /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/ha/ha0ha.c:34:0:
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/btr0sea.h:286:17: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
        make[2]: *** [CMakeFiles/innodb.dir/home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/ha/ha0ha.c.o] Error 1
        make[1]: *** [CMakeFiles/innodb.dir/all] Error 2
        make: *** [all] Error 2
      
        # include "sync0rw.h" is excluded from hotbackup compilation in dict0dict.h
      
        This causes extern rw_lock_t*	btr_search_latch_temp; to throw a failure because
        the definition of rw_lock_t is not found.
      @ storage/innobase/include/buf0buf.h
        Excluding buffer pool functions that are unused from the
        MEB codebase.
      @ storage/innobase/include/buf0buf.ic
        replicated the exclusion of
      
        #include "buf0flu.h"
        #include "buf0lru.h"
        #include "buf0rea.h"
      
        by looking at the current codebase in <meb-trunk>/src/innodb
        @ storage/innobase/include/dict0dict.h
        dict_table_x_lock_indexes, dict_table_x_unlock_indexes, dict_table_is_corrupted,
        dict_index_is_corrupted, buf_block_buf_fix_inc_func are unused in MEB and was
        leading to compilation errors and hence excluded.
      @ storage/innobase/include/dict0dict.ic
        dict_table_x_lock_indexes, dict_table_x_unlock_indexes, dict_table_is_corrupted,
        dict_index_is_corrupted, buf_block_buf_fix_inc_func are unused in MEB and was
        leading to compilation errors and hence excluded.
      @ storage/innobase/include/log0log.h
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/log0log.h: At top level:
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/log0log.h:767:2: error: expected specifier-qualifier-list before Ã¢â  ‚¬Ëœmutex_t’
      
        mutex_t definitions were excluded as seen from ambient code
        hence excluding definition for log_flush_order_mutex also.
      @ storage/innobase/include/os0file.h
        Bug in InnoDB code, create_mode should have been create.
      @ storage/innobase/include/srv0srv.h
        In file included from /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/buf/buf0buf.c:50:0:
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/srv0srv.h: At top level:
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/srv0srv.h:120:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘srv_use_native_aio’
      
        srv_use_native_aio - we do not use native aio of the OS anyway from MEB. MEB does not compile
        InnoDB with this option. Hence disabling it.
      @ storage/innobase/include/trx0sys.h
        [ 56%] Building C object CMakeFiles/innodb.dir/home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c.o
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c: In function ‘trx_sys_read_file_format_id’:
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c:1499:20: error: ‘TRX_SYS_FILE_FORMAT_TAG_MAGIC_N’   undeclared (first use in this function)
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c:1499:20: note: each undeclared identifier is reported only once for  each function it appears in
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c: At top level:
        /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/buf0buf.h:607:1: warning: ‘buf_block_buf_fix_inc_func’ declared ‘static’ but never defined
        make[2]: *** [CMakeFiles/innodb.dir/home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c.o] Error 1
      
        unused calls excluded to enable compilation
      @ storage/innobase/mem/mem0dbg.c
          excluding #include "ha_prototypes.h" that lead to definitions in ha_innodb.cc
      @ storage/innobase/os/os0file.c
          InnoDB not compiled with aio support from MEB anyway. Hence excluding this from
          the compilation.
      @ storage/innobase/page/page0zip.c
        page0zip.c:(.text+0x4e9e): undefined reference to `buf_pool_from_block'
        collect2: ld returned 1 exit status
      
        buf_pool_from_block defined in buf0buf.ic, most of the file is excluded for compilation of MEB
      @ storage/innobase/ut/ut0dbg.c
        excluding #include "ha_prototypes.h" since it leads to definitions in ha_innodb.cc
        innobase_basename(file) is defined in ha_innodb.cc. Hence excluding that also.
      @ storage/innobase/ut/ut0ut.c
        cal_tm unused from MEB, was leading to earnings, hence disabling for MEB.
      164080e4
  2. 21 Mar, 2012 1 commit
  3. 20 Mar, 2012 1 commit
  4. 02 Feb, 2012 1 commit
    • Marko Mäkelä's avatar
      Bug #13651627 Move ut_ad(0) from the beginning to the end of buf_page_print(), · 39100cd9
      Marko Mäkelä authored
      print page dump
      
      buf_page_print(): Remove the ut_ad(0) from the beginning. Add two flags
      (enum buf_page_print_flags) that can be bitwise-ORed together:
      
      BUF_PAGE_PRINT_NO_CRASH:
        Do not crash debug builds at the end of buf_page_print().
      BUF_PAGE_PRINT_NO_FULL:
        Do not print the full page dump. This can be useful when adding
        diagnostic printout to flushing or to the doublewrite buffer.
      
      trx_sys_doublewrite_init_or_restore_page(): Replace exit(1) with ut_error,
      so that we can get a core dump if this extraordinary condition happens.
      
      rb:924 approved by Sunny Bains
      39100cd9
  5. 26 Jan, 2012 1 commit
    • Marko Mäkelä's avatar
      Bug #13413535 61104: INNODB: FAILING ASSERTION: PAGE_GET_N_RECS(PAGE) > 1 · d84c9557
      Marko Mäkelä authored
      This fix does not remove the underlying cause of the assertion
      failure. It just works around the problem, allowing a corrupted
      secondary index to be fixed by DROP INDEX and CREATE INDEX (or in the
      worst case, by re-creating the table).
      
      ibuf_delete(): If the record to be purged is the last one in the page
      or it is not delete-marked, refuse to purge it. Instead, write an
      error message to the error log and let a debug assertion fail.
      
      ibuf_set_del_mark(): If the record to be delete-marked is not found,
      display some more information in the error log and let a debug
      assertion fail.
      
      row_undo_mod_del_unmark_sec_and_undo_update(),
      row_upd_sec_index_entry(): Let a debug assertion fail when the record
      to be delete-marked is not found.
      
      buf_page_print(): Add ut_ad(0) so that corruption will be more
      prominent in stress testing with debug binaries. Add ut_ad(0) here and
      there where corruption is noticed.
      
      btr_corruption_report(): Display some data on page_is_comp() mismatch.
      
      btr_assert_not_corrupted(): A wrapper around btr_corruption_report().
      Assert that page_is_comp() agrees with the table flags.
      
      rb:911 approved by Inaam Rana
      d84c9557
  6. 28 Dec, 2011 1 commit
    • Marko Mäkelä's avatar
      Bug#13418934 REMOVE HAVE_PURIFY DEPENDENCES FROM INNODB · e498a1bf
      Marko Mäkelä authored
      InnoDB: Remove HAVE_purify, UNIV_INIT_MEM_TO_ZERO, UNIV_SET_MEM_TO_ZERO.
      
      The compile-time setting HAVE_purify can mask potential bugs.
      It is being set in PB2 Valgrind runs. We should simply get rid of it,
      and replace it with UNIV_MEM_INVALID() to declare uninitialized memory
      as such in Valgrind-instrumented binaries.
      
      os_mem_alloc_large(), ut_malloc_low(): Remove the parameter set_to_zero.
      
      ut_malloc(): Define as a macro that invokes ut_malloc_low().
      
      buf_pool_init(): Never initialize the buffer pool frames. All pages
      must be initialized before flushing them to disk.
      
      mem_heap_alloc(): Never initialize the allocated memory block.
      
      os_mem_alloc_nocache(), ut_test_malloc(): Unused function, remove.
      
      rb:813 approved by Jimmy Yang
      e498a1bf
  7. 07 Dec, 2011 1 commit
    • Inaam Rana's avatar
      Bug#11759044 - 51325: DROPPING AN EMPTY INNODB TABLE TAKES A LONG TIME · 358a31df
      Inaam Rana authored
      WITH LARGE BUFFER POOL
      
      (Note: this a backport of revno:3472 from mysql-trunk)
      
      rb://845
      approved by: Marko
      
        When dropping a table (with an .ibd file i.e.: with
        innodb_file_per_table set) we scan entire LRU to invalidate pages from
        that table. This can be painful in case of large buffer pools as we hold
        the buf_pool->mutex for the scan. Note that gravity of the problem does
        not depend on the size of the table. Even with an empty table but a
        large and filled up buffer pool we'll end up scanning a very long LRU
        list.
        
        The fix is to scan flush_list and just remove the blocks belonging to
        the table from the flush_list, marking them as non-dirty. The blocks
        are left in the LRU list for eventual eviction due to aging. The
        flush_list is typically much smaller than the LRU list but for cases
        where it is very long we have the solution of releasing the
        buf_pool->mutex after scanning 1K pages.
        
        buf_page_[set|unset]_sticky(): Use new IO-state BUF_IO_PIN to ensure
        that a block stays in the flush_list and LRU list when we release
        buf_pool->mutex. Previously we have been abusing BUF_IO_READ to achieve
        this.
      358a31df
  8. 18 Nov, 2011 1 commit
  9. 03 Nov, 2011 1 commit
  10. 30 Sep, 2011 2 commits
  11. 29 Aug, 2011 1 commit
    • Marko Mäkelä's avatar
      Bug#12704861 Corruption after a crash during BLOB update · 41f229cd
      Marko Mäkelä authored
      The fix of Bug#12612184 broke crash recovery. When a record that
      contains off-page columns (BLOBs) is updated, we must first write redo
      log about the BLOB page writes, and only after that write the redo log
      about the B-tree changes. The buggy fix would log the B-tree changes
      first, meaning that after recovery, we could end up having a record
      that contains a null BLOB pointer.
      
      Because we will be redo logging the writes off the off-page columns
      before the B-tree changes, we must make sure that the pages chosen for
      the off-page columns are free both before and after the B-tree
      changes. In this way, the worst thing that can happen in crash
      recovery is that the BLOBs are written to free pages, but the B-tree
      changes are not applied. The BLOB pages would correctly remain free in
      this case. To achieve this, we must allocate the BLOB pages in the
      mini-transaction of the B-tree operation. A further quirk is that BLOB
      pages are allocated from the same file segment as leaf pages. Because
      of this, we must temporarily "hide" any leaf pages that were freed
      during the B-tree operation by "fake allocating" them prior to writing
      the BLOBs, and freeing them again before the mtr_commit() of the
      B-tree operation, in btr_mark_freed_leaves().
      
      btr_cur_mtr_commit_and_start(): Remove this faulty function that was
      introduced in the Bug#12612184 fix. The problem that this function was
      trying to address was that when we did mtr_commit() the BLOB writes
      before the mtr_commit() of the update, the new BLOB pages could have
      overwritten clustered index B-tree leaf pages that were freed during
      the update. If recovery applied the redo log of the BLOB writes but
      did not see the log of the record update, the index tree would be
      corrupted. The correct solution is to make the freed clustered index
      pages unavailable to the BLOB allocation. This function is also a
      likely culprit of InnoDB hangs that were observed when testing the
      Bug#12612184 fix.
      
      btr_mark_freed_leaves(): Mark all freed clustered index leaf pages of
      a mini-transaction allocated (nonfree=TRUE) before storing the BLOBs,
      or freed (nonfree=FALSE) before committing the mini-transaction.
      
      btr_freed_leaves_validate(): A debug function for checking that all
      clustered index leaf pages that have been marked free in the
      mini-transaction are consistent (have not been zeroed out).
      
      btr_page_alloc_low(): Refactored from btr_page_alloc(). Return the
      number of the allocated page, or FIL_NULL if out of space. Add the
      parameter "mtr_t* init_mtr" for specifying the mini-transaction where
      the page should be initialized, or if this is a "fake allocation"
      (init_mtr=NULL) by btr_mark_freed_leaves(nonfree=TRUE).
      
      btr_page_alloc(): Add the parameter init_mtr, allowing the page to be
      initialized and X-latched in a different mini-transaction than the one
      that is used for the allocation. Invoke btr_page_alloc_low(). If a
      clustered index leaf page was previously freed in mtr, remove it from
      the memo of previously freed pages.
      
      btr_page_free(): Assert that the page is a B-tree page and it has been
      X-latched by the mini-transaction. If the freed page was a leaf page
      of a clustered index, link it by a MTR_MEMO_FREE_CLUST_LEAF marker to
      the mini-transaction.
      
      btr_store_big_rec_extern_fields_func(): Add the parameter alloc_mtr,
      which is NULL (old behaviour in inserts) and the same as local_mtr in
      updates. If alloc_mtr!=NULL, the BLOB pages will be allocated from it
      instead of the mini-transaction that is used for writing the BLOBs.
      
      fsp_alloc_from_free_frag(): Refactored from
      fsp_alloc_free_page(). Allocate the specified page from a partially
      free extent.
      
      fseg_alloc_free_page_low(), fseg_alloc_free_page_general(): Add the
      parameter "mtr_t* init_mtr" for specifying the mini-transaction where
      the page should be initialized, or NULL if this is a "fake allocation"
      that prevents the reuse of a previously freed B-tree page for BLOB
      storage. If init_mtr==NULL, try harder to reallocate the specified page
      and assert that it succeeded.
      
      fsp_alloc_free_page(): Add the parameter "mtr_t* init_mtr" for
      specifying the mini-transaction where the page should be initialized.
      Do not allow init_mtr == NULL, because this function is never to be
      used for "fake allocations".
      
      mtr_t: Add the operation MTR_MEMO_FREE_CLUST_LEAF and the flag
      mtr->freed_clust_leaf for quickly determining if any
      MTR_MEMO_FREE_CLUST_LEAF operations have been posted.
      
      row_ins_index_entry_low(): When columns are being made off-page in
      insert-by-update, invoke btr_mark_freed_leaves(nonfree=TRUE) and pass
      the mini-transaction as the alloc_mtr to
      btr_store_big_rec_extern_fields(). Finally, invoke
      btr_mark_freed_leaves(nonfree=FALSE) to avoid leaking pages.
      
      row_build(): Correct a comment, and add a debug assertion that a
      record that contains NULL BLOB pointers must be a fresh insert.
      
      row_upd_clust_rec(): When columns are being moved off-page, invoke
      btr_mark_freed_leaves(nonfree=TRUE) and pass the mini-transaction as
      the alloc_mtr to btr_store_big_rec_extern_fields(). Finally, invoke
      btr_mark_freed_leaves(nonfree=FALSE) to avoid leaking pages.
      
      buf_reset_check_index_page_at_flush(): Remove. The function
      fsp_init_file_page_low() already sets
      bpage->check_index_page_at_flush=FALSE.
      
      There is a known issue in tablespace extension. If the request to
      allocate a BLOB page leads to the tablespace being extended, crash
      recovery could see BLOB writes to pages that are off the tablespace
      file bounds. This should trigger an assertion failure in fil_io() at
      crash recovery. The safe thing would be to write redo log about the
      tablespace extension to the mini-transaction of the BLOB write, not to
      the mini-transaction of the record update. However, there is no redo
      log record for file extension in the current redo log format.
      
      rb:693 approved by Sunny Bains
      41f229cd
  12. 17 Aug, 2011 2 commits
  13. 20 Jun, 2011 1 commit
  14. 17 Jun, 2011 1 commit
  15. 24 May, 2011 1 commit
    • Marko Mäkelä's avatar
      Backport an InnoDB Bug #58815 (Bug #11765812) work-around from mysql-trunk: · 34e5d474
      Marko Mäkelä authored
      ------------------------------------------------------------
      revno 2876.244.305
      revision id marko.makela@oracle.com-20110413082211-e6ouhjz5rmqxcqap
      parent  marko.makela@oracle.com-20110413075948-kvytmc37ye1nt7d9
      committer  Marko Mäkelä <marko.makela@oracle.com>
      branch nick 5.6-innodb
      timestamp Wed 2011-04-13 11:22:11 +0300
      message:
        Suppress the Bug #58815 (Bug #11765812) assertion failure.
      
        buf_page_get_gen(): Introduce BUF_GET_POSSIBLY_FREED for suppressing the
        check that the file page must not have been freed.
      
        btr_estimate_n_rows_in_range_on_level(): Pass BUF_GET_POSSIBLY_FREED and
        explain in the comments why this is needed and why it should be mostly
        harmless to ignore the problem. If InnoDB had always initialized all
        unused fields in data files, no problem would exist.
      
        This change does not fix the bug, it just "shoots the messenger".
      
        rb:647 approved by Jimmy Yang
      34e5d474
  16. 24 Mar, 2011 1 commit
    • Marko Mäkelä's avatar
      Bug#11766305 - 59392: Remove thr0loc.c and ibuf_inside() [part 4 of 4] · 85dbe88d
      Marko Mäkelä authored
      ibuf_inside(), ibuf_enter(), ibuf_exit(): Add the parameter mtr. The
      flag is no longer kept in the thread-local storage but in the
      mini-transaction (mtr->inside_ibuf).
      
      mtr_start(): Clean up the comment and remove the unused return value.
      mtr_commit(): Assert !ibuf_inside(mtr) in debug builds.
      
      ibuf_mtr_start(): Like mtr_start(), but sets the flag.
      ibuf_mtr_commit(), ibuf_btr_pcur_commit_specify_mtr(): Wrappers that
      assert ibuf_inside().
      
      buf_page_get_zip(), buf_page_init_for_read(),
      buf_read_ibuf_merge_pages(), fil_io(), ibuf_free_excess_pages(),
      ibuf_contract_ext(): Remove assertions on ibuf_inside(), because a
      mini-transaction is not available.
      
      buf_read_ahead_linear(): Add the parameter inside_ibuf.
      
      ibuf_restore_pos(): When this function returns FALSE, it commits mtr
      and must therefore do ibuf_exit(mtr).
      
      ibuf_delete_rec(): This function commits mtr and must therefore do
      ibuf_exit(mtr).
      
      ibuf_rec_get_page_no(), ibuf_rec_get_space(), ibuf_rec_get_info(),
      ibuf_rec_get_op_type(), ibuf_build_entry_from_ibuf_rec(),
      ibuf_rec_get_volume(), ibuf_get_merge_page_nos(),
      ibuf_get_volume_buffered_count(), ibuf_get_entry_counter_low(): Add
      the parameter mtr in debug builds, for asserting ibuf_inside(mtr).
      
      rb:585 approved by Sunny Bains
      85dbe88d
  17. 15 Mar, 2011 1 commit
  18. 12 Jan, 2011 1 commit
  19. 06 Jan, 2011 1 commit
  20. 01 Dec, 2010 1 commit
    • Marko Mäkelä's avatar
      Bug#58212 Possible deadlock in change buffer in debug builds · 9bfb5ece
      Marko Mäkelä authored
      ibuf_page(): Renamed to ibuf_page_low(). Add the parameters file, line
      so that the latch diagnostics will be more meaningful.
      In debug builds, add the parameter ibool x_latch. When x_latch=FALSE,
      do not x-latch the page, but only buffer-fix it for reading the bit.
      In UNIV_SYNC_DEBUG, display a message if an insert buffer bitmap page
      was already latched. (The message should be displayed in those cases
      where the code would have previously failed.)
      
      ibuf_page(): A wrapper macro for ibuf_page_low(). Pass x_latch=TRUE.
      
      ibuf_bitmap_page_get_bits(): Renamed to ibuf_bitmap_page_get_bits_low().
      In UNIV_DEBUG, add the parameter latch_mode.
      Remove the parameter mtr unless UNIV_DEBUG is defined.
      
      ibuf_bitmap_page_get_bits(): A wrapper macro for
      ibuf_bitmap_page_get_bits_low(). Pass latch_type=MTR_MEMO_PAGE_X_FIX.
      
      buf_page_get_gen(): Use ibuf_page_low(x_latch=FALSE) in the debug assertion.
      This avoids the possible deadlock.
      9bfb5ece
  21. 29 Nov, 2010 1 commit
  22. 27 Oct, 2010 2 commits
    • Marko Mäkelä's avatar
      Fix a bogus debug assertion in the fix of Bug #57707. · 712beace
      Marko Mäkelä authored
      buf_pool_init(): Replace ut_ad(n_instances < MAX_BUFFER_POOLS)
      with ut_ad(n_instances <= MAX_BUFFER_POOLS).
      (Spotted by Michael Izioumtchenko.)
      Add ut_ad(n_instances > 0).
      712beace
    • Marko Mäkelä's avatar
      Bug #57707 InnoDB buf_page_t size has doubled on 32-bit systems · 26d81a2a
      Marko Mäkelä authored
      buf_page_t: Remove the buf_pool pointer. Add buf_pool_index:6 next to
      buf_fix_count:19 (it was buf_fix_count:25). This will limit the number
      of concurrent transactions to somewhere around 524,288.
      
      buf_pool_index(buf_pool): A new function to determine the index of a
      buffer pool in buf_pool_ptr[].
      
      buf_pool_ptr: Make this a dynamically allocated array instead of an
      array of pointers. Allocate the array in buf_pool_init() and free in
      buf_pool_free().
      
      buf_pool_free_instance(): No longer free the buf_pool object, as it is
      allocated from a big array.
      
      buf_pool_from_bpage(), buf_pool_from_block(): Move the definitions to
      the beginning of the files, because some compilers have (had) problems
      with forward definitions of inline functions. Calculate the buffer
      pool from buf_pool_index.
      
      buf_pool_from_array(): Add debug assertions for input validation.
      26d81a2a
  23. 20 Oct, 2010 1 commit
    • Marko Mäkelä's avatar
      Fix bit-rot left by the multiple buffer pools patch. · 67a0d9c0
      Marko Mäkelä authored
      Rename buf_pool_watch, buf_pool_mutex, buf_pool_zip_mutex
      to buf_pool->watch, buf_pool->mutex, buf_pool->zip_mutex
      in comments. Refer to buf_pool->flush_list_mutex instead of
      flush_list_mutex.
      
      Remove obsolete declarations of buf_pool_mutex and buf_pool_zip_mutex.
      67a0d9c0
  24. 19 Oct, 2010 1 commit
    • Marko Mäkelä's avatar
      Bug #56680 wrong InnoDB results from a case-insensitive covering index · a8f2f7af
      Marko Mäkelä authored
      row_search_for_mysql(): When a secondary index record might not be
      visible in the current transaction's read view and we consult the
      clustered index and optionally some undo log records, return the
      relevant columns of the clustered index record to MySQL instead of the
      secondary index record.
      
      REC_INFO_DELETED_FLAG: Move the definition from rem0rec.ic to rem0rec.h.
      
      ibuf_insert_to_index_page_low(): New function, refactored from
      ibuf_insert_to_index_page().
      
      ibuf_insert_to_index_page(): When we are inserting a record in place
      of a delete-marked record and some fields of the record differ, update
      that record just like row_ins_sec_index_entry_by_modify() would do.
      
      mysql_row_templ_t: Add clust_rec_field_no.
      
      row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql(): Add the
      flag rec_clust, for returning data at clust_rec_field_no instead of
      rec_field_no. Resurrect the debug assertion that the record not be
      marked for deletion. (Bug #55626)
      
      buf_LRU_free_block(): Refactored from
      buf_LRU_search_and_free_block(). This is needed for the
      innodb_change_buffering_debug diagnostics.
      
      [UNIV_DEBUG || UNIV_IBUF_DEBUG] ibuf_debug, buf_page_get_gen(),
      buf_flush_page_try():
      Implement innodb_change_buffering_debug=1 for evicting pages from the
      buffer pool, so that change buffering will be attempted more
      frequently.
      a8f2f7af
  25. 23 Jun, 2010 1 commit
  26. 08 Jun, 2010 1 commit
    • Marko Mäkelä's avatar
      Merge a change from mysql-5.1-innodb: · d264c3af
      Marko Mäkelä authored
      ------------------------------------------------------------
      revno: 3502
      revision-id: marko.makela@oracle.com-20100608114055-7b04ytuqz0lde6v1
      parent: jimmy.yang@oracle.com-20100603134448-itzduhwgbw0b8nlh
      committer: Marko Mäkelä <marko.makela@oracle.com>
      branch nick: 5.1-innodb
      timestamp: Tue 2010-06-08 14:40:55 +0300
      message:
        buf_page_get_gen(): Pass file,line to rw_lock_x_lock().
      d264c3af
  27. 18 May, 2010 1 commit
  28. 17 May, 2010 1 commit
    • Vasil Dimov's avatar
      Silence a spurious valrgind warning: · a6142ed8
      Vasil Dimov authored
      ==2229== Uninitialised byte(s) found during client check request
      ==2229==    at 0x9A599D: buf_page_get_gen (buf0buf.c:3003)
      ==2229==    by 0x9D58CD: fsp_header_init (fsp0fsp.c:974)
      ==2229==    by 0x95BEAE: innobase_start_or_create_for_mysql (srv0start.c:1537)
      ==2229==    by 0x91DDBB: innobase_init(void*) (ha_innodb.cc:2409)
      ==2229==    by 0x73AF1F: ha_initialize_handlerton(st_plugin_int*) (handler.cc:475)
      ==2229==    by 0x5DBAE3: plugin_initialize(st_plugin_int*) (sql_plugin.cc:1057)
      ==2229==    by 0x5DD185: plugin_init(int*, char**, int) (sql_plugin.cc:1343)
      ==2229==    by 0x53830A: init_server_components() (mysqld.cc:4141)
      ==2229==    by 0x539048: mysqld_main(int, char**) (mysqld.cc:4742)
      ==2229==    by 0x52D412: main (main.cc:24)
      ==2229==  Address 0x998B00C is not stack'd, malloc'd or (recently) free'd
      ==2229== (Memcheck does not allow error to be suppressed)
      
      Approved by:	Marko (rb://345)
      a6142ed8
  29. 04 May, 2010 1 commit
    • Vasil Dimov's avatar
      Merge from mysql-5.1-innodb: · b0d1eaab
      Vasil Dimov authored
        ------------------------------------------------------------
        revno: 3436
        revision-id: marko.makela@oracle.com-20100503122859-k73bl51re93o0mt4
        parent: vasil.dimov@oracle.com-20100430100236-9ncldjxpi14ec7el
        committer: Marko M?kel? <marko.makela@oracle.com>
        branch nick: 5.1-innodb
        timestamp: Mon 2010-05-03 15:28:59 +0300
        message:
          buf_zip_decompress(): Allow BUF_NO_CHECKSUM_MAGIC as the stamped checksum.
          buf_page_get_gen(): Assert that buf_zip_decompress() succeeds.
          Callers are not prepared for a NULL return value. (Bug #53248)
        modified:
          storage/innodb_plugin/ChangeLog 2425@16c675df-0fcb-4bc9-8058-dcc011a37293:branches%2Fzip%2FChangeLog
          storage/innodb_plugin/buf/buf0buf.c 2@16c675df-0fcb-4bc9-8058-dcc011a37293:trunk%2Fbuf%2Fbuf0buf.c
        ------------------------------------------------------------
      b0d1eaab
  30. 26 Feb, 2010 1 commit
    • Sergey Vojtovich's avatar
      Applying InnoDB snapshot, fixes BUG#38901 · 70564eb6
      Sergey Vojtovich authored
      Detailed revision comments:
      
      r6613 | inaam | 2010-02-09 20:23:09 +0200 (Tue, 09 Feb 2010) | 11 lines
      branches/5.1: Fix Bug #38901
      InnoDB logs error repeatedly when trying to load page into buffer pool
      
      In buf_page_get_gen() if we are unable to read a page (because of
      corruption or some other reason) we keep on retrying. This fills up
      error log with millions of entries in no time and we'd eventually run
      out of disk space. This patch limits the number of attempts that we
      make (currently set to 100) and after that we abort with a message.
      
      rb://241 Approved by: Heikki
      70564eb6
  31. 16 Oct, 2009 1 commit
  32. 07 Aug, 2009 1 commit
    • Guilhem Bichot's avatar
      Renamed storage/innodb_plugin to storage/innobase, so that 1) it's the same · 7ceb29ff
      Guilhem Bichot authored
      layout as we always had in trees containing only the builtin
      2) win\configure.js WITH_INNOBASE_STORAGE_ENGINE still works.
      
      storage/innobase/CMakeLists.txt:
        fix to new directory name (and like 5.1)
      storage/innobase/Makefile.am:
        fix to new directory name (and like 5.1)
      storage/innobase/handler/ha_innodb.cc:
        fix to new directory name (and like 5.1)
      storage/innobase/plug.in:
        fix to new directory name (and like 5.1)
      7ceb29ff
  33. 30 Jul, 2009 1 commit
  34. 27 May, 2009 1 commit