1. 12 Sep, 2009 7 commits
    • vasil's avatar
      branches/zip: · c548ef1b
      vasil authored
      Include ut0auxconf.h only if none of the macros it would define is defined.
      The check when to include this header was outdated from the time when there
      was only one macro involved.
      
      Move the atomics checks that are in univ.i outside of
      #if windows ... #else ... #endif
      This simplifies the code and removes some duplicates like defining
      HAVE_ATOMIC_BUILTINS if HAVE_WINDOWS_ATOMICS is defined in both branches.
      
      Do not define the same macro HAVE_ATOMIC_PTHREAD_T for different events.
      Instead define HAVE_IB_ATOMIC_PTHREAD_T_GCC and
      HAVE_IB_ATOMIC_PTHREAD_T_SOLARIS.
      c548ef1b
    • vasil's avatar
      branches/zip: · 7f153330
      vasil authored
      Move the check whether to include ut0auxconf.h before everything because
      we are now even checking for GCC atomics, we relied on MySQL to define
      this macro before.
      7f153330
    • vasil's avatar
      branches/zip: · 104e3853
      vasil authored
      Update comment to reflect reality.
      104e3853
    • vasil's avatar
      branches/zip: · 115d580f
      vasil authored
      Add the check for GCC atomics to ut0auxconf* (copied from plug.in) because
      we no longer rely on MySQL's HAVE_GCC_ATOMIC_BUILTINS.
      115d580f
    • vasil's avatar
      branches/zip: · e599d1ed
      vasil authored
      Simplify the compile time checks by splittig them into 5 independent checks:
      
      * Whether GCC atomics are available
      * Whether pthread_t can be used by GCC atomics
      * Whether Solaris libc atomics are available
      * Whether pthread_t can be used by Solaris libs atomics
      * Checking the size of pthread_t
      e599d1ed
    • vasil's avatar
      branches/zip: · 881c6ef4
      vasil authored
      Include string.h which is needed for memset().
      881c6ef4
    • vasil's avatar
      branches/zip: · 4407a642
      vasil authored
      Check that pthread_t can indeed be passed to Solaris atomic functions, instead
      of assuming that it can be passed if 0 can be assigned to it. It could be that:
      * 0 can be assigned, but pthread_t cannot be passed and
      * 0 cannot be assigned but pthread_t can be passed
      
      Better to check what we are interested in, not something else and make
      assumptions.
      4407a642
  2. 11 Sep, 2009 1 commit
    • vasil's avatar
      branches/zip: · f4303a98
      vasil authored
      Fix the indentation of the closing bracket.
      f4303a98
  3. 10 Sep, 2009 4 commits
    • marko's avatar
      branches/zip: Roll back recovered dictionary transactions before · 0425e482
      marko authored
      dropping incomplete indexes (Issue #337).
      
      trx_rollback_or_clean_recovered(ibool all): New function, split from
      trx_rollback_or_clean_all_recovered().  all==FALSE will only roll back
      dictionary transactions.
      
      recv_recovery_from_checkpoint_finish(): Call
      trx_rollback_or_clean_recovered(FALSE) before
      row_merge_drop_temp_indexes().
      
      rb://158 approved by Sunny Bains
      0425e482
    • marko's avatar
      branches/zip: Reduce mutex contention that was introduced when · 5f161630
      marko authored
      addressing Bug #45015 (Issue #316), in r5703.
      
      buf_page_set_accessed_make_young(): New auxiliary function, called by
      buf_page_get_zip(), buf_page_get_gen(),
      buf_page_optimistic_get_func(). Call ut_time_ms() outside of
      buf_pool_mutex. Use cached access_time.
      
      buf_page_set_accessed(): Add the parameter time_ms, so that
      ut_time_ms() need not be called while holding buf_pool_mutex.
      
      buf_page_optimistic_get_func(), buf_page_get_known_nowait(): Read
      buf_page_t::access_time without holding buf_pool_mutex. This should be
      OK, because the field is only used for heuristic purposes.
      
      buf_page_peek_if_too_old(): If buf_pool->freed_page_clock == 0, return
      FALSE, so that we will not waste time moving blocks in the LRU list in
      the warm-up phase or when the workload fits in the buffer pool.
      
      rb://156 approved by Sunny Bains
      5f161630
    • marko's avatar
    • marko's avatar
  4. 09 Sep, 2009 6 commits
    • calvin's avatar
      branches/zip: · 5dbaccb3
      calvin authored
      HA_ERR_TOO_MANY_CONCURRENT_TRXS is added in 5.1.38.
      But the plugin should still work with previous versions
      of MySQL.
      5dbaccb3
    • vasil's avatar
      branches/zip: · 534560bf
      vasil authored
      Fix a bug in manipulating the variable innodb_old_blocks_pct:
      
      for any value assigned it got that value -1, except for 75. When
      assigned 75, it got 75.
      
        mysql> set global innodb_old_blocks_pct=15;
        Query OK, 0 rows affected (0.00 sec)
        
        mysql> show variables like 'innodb_old_blocks_pct';
        +-----------------------+-------+
        | Variable_name         | Value |
        +-----------------------+-------+
        | innodb_old_blocks_pct | 14    | 
        +-----------------------+-------+
        1 row in set (0.00 sec)
        
        mysql> set global innodb_old_blocks_pct=75;
        Query OK, 0 rows affected (0.00 sec)
        
        mysql> show variables like 'innodb_old_blocks_pct';
        +-----------------------+-------+
        | Variable_name         | Value |
        +-----------------------+-------+
        | innodb_old_blocks_pct | 75    | 
        +-----------------------+-------+
      
      After the fix it gets exactly what was assigned.
      
      Approved by:	Marko (via IM)
      534560bf
    • marko's avatar
    • marko's avatar
      branches/zip: buf_page_peek_if_too_old(): Silence a compiler warning · 17792f8e
      marko authored
      that was introduced in r5779 on 32-bit systems.
      17792f8e
    • marko's avatar
      d9a57383
    • marko's avatar
      branches/zip: buf_page_peek_if_too_old(): Make the bitmasking work when · 54a450f6
      marko authored
      buf_pool->freed_page_clock is wider than 32 bits.
      54a450f6
  5. 08 Sep, 2009 1 commit
  6. 07 Sep, 2009 1 commit
    • calvin's avatar
      branches/zip: Build InnoDB on Windows with UNIV_HOTBACKUP · 1e3d04fa
      calvin authored
      The changes are non-functional changes for normal InnoDB,
      but needed for building the Hot Backup on Windows (with
      UNIV_HOTBACKUP defined).
      
      - Define os_aio_use_native_aio for HB.
      - Do not acquire seek mutexes for backup since HB is single threaded.
      - Do not use srv_flush_log_at_trx_commit for HB build
      
      rb://155
      
      Approved by: Marko
      1e3d04fa
  7. 03 Sep, 2009 8 commits
  8. 02 Sep, 2009 4 commits
  9. 31 Aug, 2009 2 commits
    • vasil's avatar
      branches/zip: · e63377ac
      vasil authored
      Fix Bug#46718 InnoDB plugin incompatible with gcc 4.1 (at least: on PPC): "Undefined symbol"
      
      by implementing our own check in plug.in instead of using the result from
      the check from MySQL because it is insufficient.
      
      Approved by:	Marko (rb://154)
      e63377ac
    • marko's avatar
      branches/zip: buf_chunk_not_freed(): Do not acquire block->mutex unless · 13084a65
      marko authored
      block->page.state == BUF_BLOCK_FILE_PAGE.  Check that block->page.state
      makes sense.
      
      Approved by Sunny Bains over the IM.
      13084a65
  10. 28 Aug, 2009 1 commit
    • inaam's avatar
      branches/zip rb://152 · 754d9bdf
      inaam authored
      Disable display of deprecated parameter innodb_file_io_threads in
      'show variables'.
      754d9bdf
  11. 27 Aug, 2009 5 commits
    • inaam's avatar
      branches/zip · e42bcd96
      inaam authored
      Remove redundant TRUE : FALSE from the return statement
      e42bcd96
    • inaam's avatar
      branches/zip · 089cf5c0
      inaam authored
      Remove unused macros as we erased the random readahead code in r5703.
      Also fixed some comments.
      
      089cf5c0
    • inaam's avatar
      branches/zip rb://147 · b7a0c6ac
      inaam authored
      Done away with following two status variables:
      
      innodb_buffer_pool_read_ahead_rnd
      innodb_buffer_pool_read_ahead_seq
      
      Introduced two new status variables:
      innodb_buffer_pool_read_ahead = number of pages read as part of
      readahead since server startup
      innodb_buffer_pool_read_ahead_evicted = number of pages that are read
      in as readahead but were evicted before ever being accessed since
      server startup i.e.: a measure of how badly our readahead is
      performing
      
      SHOW INNODB STATUS will show two extra numbers in buffer pool section:
      pages read ahead/sec and pages evicted without access/sec
      
      Approved by: Marko
      b7a0c6ac
    • marko's avatar
      branches/zip: dict_index_find_cols(): On column name lookup failure, · dbe4b2f2
      marko authored
      return DB_CORRUPTION (HA_ERR_CRASHED) instead of abnormally
      terminating the server.  Also, disable the previously added diagnostic
      output to the error log, because mysql-test-run does not like extra
      output in the error log.  (Bug #44571)
      
      dict_index_add_to_cache(): Handle errors from dict_index_find_cols().
      
      mysql-test/innodb_bug44571.test: A test case for triggering the bug.
      
      rb://135 approved by Sunny Bains.
      dbe4b2f2
    • marko's avatar
      branches/zip: Fix a critical bug in fast index creation that could · 986b3d5a
      marko authored
      corrupt the created indexes.
      
      row_merge(): Make "half" an in/out parameter. Determine the offset of
      half the output file. Copy the last blocks record-by-record instead of
      block-by-block, so that the records can be counted. Check that the
      input and output have matching n_rec.
      
      row_merge_sort(): Do not assume that two blocks of size N are merged
      into a block of size 2*N. The output block can be shorter than the
      input if the last page of each input block is almost empty. Use an
      accurate termination condition, based on the "half" computed by
      row_merge().
      
      row_merge_read(), row_merge_write(), row_merge_blocks(): Add debug output.
      
      merge_file_t, row_merge_file_create(): Add n_rec, the number of records
      in the merge file.
      
      row_merge_read_clustered_index(): Update n_rec.
      
      row_merge_blocks(): Update and check n_rec.
      
      row_merge_blocks_copy(): New function, for copying the last blocks in
      row_merge().  Update and check n_rec.
      
      This bug was discovered with a user-supplied test case that creates an
      index where the initial temporary file is 249 one-megabyte blocks and
      the merged files become smaller. In the test, possible merge record
      sizes are 10, 18, and 26 bytes.
      
      rb://150 approved by Sunny Bains.  This addresses Issue #320.
      986b3d5a