Commit 4f1d0440 authored by marko's avatar marko

branches/innodb+: Merge revisions 4150:4528 from branches/zip:

  ------------------------------------------------------------------------
  r4152 | marko | 2009-02-10 12:52:27 +0200 (Tue, 10 Feb 2009) | 12 lines

  branches/zip: When innodb_use_sys_malloc is set, ignore
  innodb_additional_mem_pool_size, because nothing will
  be allocated from mem_comm_pool.

  mem_pool_create(): Remove the assertion about size.  The function will
  work with any size.  However, an assertion would fail in ut_malloc_low()
  when size==0.

  mem_init(): When srv_use_sys_malloc is set, pass size=1 to mem_pool_create().

  mem0mem.c: Add #include "srv0srv.h" that is needed by mem0dbg.c.
  ------------------------------------------------------------------------
  r4153 | vasil | 2009-02-10 22:58:17 +0200 (Tue, 10 Feb 2009) | 14 lines

  branches/zip:

  (followup to r4145) Non-functional change:

  Change the os_atomic_increment() and os_compare_and_swap() functions
  to macros to avoid artificial limitations on the types of those
  functions' arguments. As a consequence typecasts from the source
  code can be removed.

  Also remove Google's copyright from os0sync.ic because that file no longer
  contains code from Google.

  Approved by:	Marko (rb://88), also ok from Inaam via IM
  ------------------------------------------------------------------------
  r4163 | marko | 2009-02-12 00:14:19 +0200 (Thu, 12 Feb 2009) | 4 lines

  branches/zip: Make innodb_thread_concurrency=0 the default.
  The old default was 8.
  ------------------------------------------------------------------------
  r4169 | calvin | 2009-02-12 10:37:10 +0200 (Thu, 12 Feb 2009) | 3 lines

  branches/zip: Adjust the result file of innodb_thread_concurrency_basic
  test. The default value of innodb_thread_concurrency is changed to 0
  (from 8) via r4163.
  ------------------------------------------------------------------------
  r4174 | vasil | 2009-02-12 17:38:27 +0200 (Thu, 12 Feb 2009) | 4 lines

  branches/zip:

  Fix pathname of the file to patch.
  ------------------------------------------------------------------------
  r4176 | vasil | 2009-02-13 10:06:31 +0200 (Fri, 13 Feb 2009) | 7 lines

  branches/zip:

  Fix the failing mysql-test partition_innodb, which failed only if run after
  innodb_trx_weight (or other test that would leave LATEST DEADLOCK ERROR into
  the output of SHOW ENGINE INNODB STATUS). Find further explanation for the
  failure at the top of the added patch partition_innodb.diff.
  ------------------------------------------------------------------------
  r4198 | vasil | 2009-02-17 09:06:07 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  Add the full text of the GPLv2 license into the root directory of the
  plugin. In previous releases this file was copied from an external source
  (https://svn.innodb.com/svn/plugin/trunk/support/COPYING) "manually" when
  creating the source and binary archives. It is less confusing to have this
  present in the root directory of the SVN branch.
  ------------------------------------------------------------------------
  r4199 | vasil | 2009-02-17 09:11:58 +0200 (Tue, 17 Feb 2009) | 4 lines

  branches/zip:

  Add Google's license into COPYING.Google.
  ------------------------------------------------------------------------
  r4200 | vasil | 2009-02-17 09:56:33 +0200 (Tue, 17 Feb 2009) | 11 lines

  branches/zip:

  To the files touched by the Google patch from c4144 (excluding
  include/os0sync.ic because later we removed Google code from that file):

  * Remove the Google license
  * Remove old Innobase copyright lines
  * Add a reference to the Google license and to the GPLv2 license at the top,
  as recommended by the lawyers at Oracle Legal.
  ------------------------------------------------------------------------
  r4201 | vasil | 2009-02-17 10:12:02 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 1/28]
  ------------------------------------------------------------------------
  r4202 | vasil | 2009-02-17 10:15:06 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 2/28]
  ------------------------------------------------------------------------
  r4203 | vasil | 2009-02-17 10:25:45 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 3/28]
  ------------------------------------------------------------------------
  r4204 | vasil | 2009-02-17 10:55:41 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 4/28]
  ------------------------------------------------------------------------
  r4205 | vasil | 2009-02-17 10:59:22 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 5/28]
  ------------------------------------------------------------------------
  r4206 | vasil | 2009-02-17 11:02:27 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 6/28]
  ------------------------------------------------------------------------
  r4207 | vasil | 2009-02-17 11:04:28 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 7/28]
  ------------------------------------------------------------------------
  r4208 | vasil | 2009-02-17 11:06:49 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 8/28]
  ------------------------------------------------------------------------
  r4209 | vasil | 2009-02-17 11:10:18 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 9/28]
  ------------------------------------------------------------------------
  r4210 | vasil | 2009-02-17 11:12:41 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 10/28]
  ------------------------------------------------------------------------
  r4211 | vasil | 2009-02-17 11:14:40 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 11/28]
  ------------------------------------------------------------------------
  r4212 | vasil | 2009-02-17 11:18:35 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 12/28]
  ------------------------------------------------------------------------
  r4213 | vasil | 2009-02-17 11:24:40 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 13/28]
  ------------------------------------------------------------------------
  r4214 | vasil | 2009-02-17 11:27:31 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 13/28]
  ------------------------------------------------------------------------
  r4215 | vasil | 2009-02-17 11:29:55 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 15/28]
  ------------------------------------------------------------------------
  r4216 | vasil | 2009-02-17 11:33:38 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 16/28]
  ------------------------------------------------------------------------
  r4217 | vasil | 2009-02-17 11:36:44 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 17/28]
  ------------------------------------------------------------------------
  r4218 | vasil | 2009-02-17 11:39:11 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 18/28]
  ------------------------------------------------------------------------
  r4219 | vasil | 2009-02-17 11:41:24 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 19/28]
  ------------------------------------------------------------------------
  r4220 | vasil | 2009-02-17 11:43:50 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 20/28]
  ------------------------------------------------------------------------
  r4221 | vasil | 2009-02-17 11:46:52 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 21/28]
  ------------------------------------------------------------------------
  r4222 | vasil | 2009-02-17 11:50:12 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 22/28]
  ------------------------------------------------------------------------
  r4223 | vasil | 2009-02-17 11:53:58 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 23/28]
  ------------------------------------------------------------------------
  r4224 | vasil | 2009-02-17 12:01:41 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 24/28]
  ------------------------------------------------------------------------
  r4225 | vasil | 2009-02-17 12:05:45 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 25/28]
  ------------------------------------------------------------------------
  r4226 | vasil | 2009-02-17 12:09:16 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 26/28]
  ------------------------------------------------------------------------
  r4227 | vasil | 2009-02-17 12:12:56 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 27/28]
  ------------------------------------------------------------------------
  r4228 | vasil | 2009-02-17 12:14:04 +0200 (Tue, 17 Feb 2009) | 8 lines

  branches/zip:

  * Remove old Innobase copyright lines from C source files
  * Add a reference to the GPLv2 license as recommended by the lawyers
  at Oracle Legal

  [Step 28/28]
  ------------------------------------------------------------------------
  r4229 | vasil | 2009-02-17 12:30:55 +0200 (Tue, 17 Feb 2009) | 4 lines

  branches/zip:

  Add the copyright notice to the non C files.
  ------------------------------------------------------------------------
  r4231 | marko | 2009-02-17 14:26:53 +0200 (Tue, 17 Feb 2009) | 12 lines

  Minor cleanup of the Google SMP patch.

  sync_array_object_signalled(): Add a (void) cast to eliminate a gcc warning
  about the return value of os_atomic_increment() being ignored.

  rw_lock_create_func(): Properly indent the preprocessor directives.

  rw_lock_x_lock_low(), rw_lock_x_lock_func_nowait(): Split lines correctly.

  rw_lock_set_writer_id_and_recursion_flag(): Silence a Valgrind warning.
  Do not mix statements and variable declarations.
  ------------------------------------------------------------------------
  r4232 | marko | 2009-02-17 14:59:54 +0200 (Tue, 17 Feb 2009) | 3 lines

  branches/zip: When assigning lock->recursive = FALSE, also flag
  lock->writer_thread invalid, so that Valgrind will catch more errors.
  This is related to Issue #175.
  ------------------------------------------------------------------------
  r4242 | marko | 2009-02-18 17:01:09 +0200 (Wed, 18 Feb 2009) | 2 lines

  branches/zip: UT_DBG_STOP: Use do{} while(0) to silence a g++-4.3.2 warning
  about a while(0); statement.  This should fix (part of) Issue #176.
  ------------------------------------------------------------------------
  r4243 | marko | 2009-02-18 17:04:03 +0200 (Wed, 18 Feb 2009) | 3 lines

  branches/zip: buf_buddy_get_slot(): Fix a gcc 4.3.2 warning
  about an empty body of a "for" statement.
  This fixes part of Issue #176.
  ------------------------------------------------------------------------
  r4244 | marko | 2009-02-18 17:25:45 +0200 (Wed, 18 Feb 2009) | 11 lines

  branches/zip: Protect ut_total_allocated_memory with ut_list_mutex.
  Unprotected updates to ut_total_allocated_memory in
  os_mem_alloc_large() and os_mem_free_large(), called during
  fast index creation, may corrupt the variable and cause assertion failures.

  Also, add UNIV_MEM_ALLOC() and UNIV_MEM_FREE() instrumentation around
  os_mem_alloc_large() and os_mem_free_large(), so that Valgrind can
  detect more errors.

  rb://90 approved by Heikki Tuuri.  This addresses Issue #177.
  ------------------------------------------------------------------------
  r4248 | marko | 2009-02-19 11:52:39 +0200 (Thu, 19 Feb 2009) | 2 lines

  branches/zip: page_zip_set_size(): Fix a g++ 4.3.2 warning
  about an empty body in a "for" statement.  This closes Issue #176.
  ------------------------------------------------------------------------
  r4251 | inaam | 2009-02-19 15:46:27 +0200 (Thu, 19 Feb 2009) | 8 lines

  branches/zip: Issue #178 rb://91

  Change plug.in to have same CXXFLAGS as CFLAGS. This is to ensure that
  both .c and .cc files get compiled with same flags. To fix the issue
  where UNIV_LINUX was defined only in .c files.

  Approved by: Marko
  ------------------------------------------------------------------------
  r4258 | vasil | 2009-02-20 11:52:19 +0200 (Fri, 20 Feb 2009) | 7 lines

  branches/zip:

  Cleanup in ChangeLog:
  * Wrap lines at 78 characters
  * Changed files are listed alphabetically
  * White-space cleanup
  ------------------------------------------------------------------------
  r4259 | vasil | 2009-02-20 11:59:42 +0200 (Fri, 20 Feb 2009) | 6 lines

  branches/zip:

  ChangeLog: Remove include/os0sync.ic from the entry about the google patch,
  this file was modified later to not include Google's code.
  ------------------------------------------------------------------------
  r4262 | vasil | 2009-02-20 14:56:59 +0200 (Fri, 20 Feb 2009) | 373 lines

  branches/zip:

  Merge revisions 4035:4261 from branches/5.1:

    ------------------------------------------------------------------------
    r4065 | sunny | 2009-01-29 16:01:36 +0200 (Thu, 29 Jan 2009) | 8 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc
       M /branches/5.1/mysql-test/innodb-autoinc.result
       M /branches/5.1/mysql-test/innodb-autoinc.test

    branches/5.1: In the last round of AUTOINC cleanup we assumed that AUTOINC
    is only defined for integer columns. This caused an assertion failure when
    we checked for the maximum value of a column type. We now calculate the
    max value for floating-point autoinc columns too.

    Fix Bug#42400 - InnoDB autoinc code can't handle floating-point columns
    rb://84 and Mantis issue://162

    ------------------------------------------------------------------------
    r4111 | sunny | 2009-02-03 22:06:52 +0200 (Tue, 03 Feb 2009) | 2 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc

    branches/5.1: Add the ULL suffix otherwise there is an overflow.

    ------------------------------------------------------------------------
    r4128 | vasil | 2009-02-08 21:36:45 +0200 (Sun, 08 Feb 2009) | 18 lines
    Changed paths:
       M /branches/5.1/mysql-test/innodb-autoinc.result
       M /branches/5.1/mysql-test/innodb-autoinc.test

    branches/5.1:

    Merge a change from MySQL:

      ------------------------------------------------------------
      revno: 2709.20.31
      committer: Timothy Smith <timothy.smith@sun.com>
      branch nick: 51
      timestamp: Fri 2008-12-19 01:28:51 +0100
      message:
        Disable part of innodb-autoinc.test, because the MySQL server asserts when
        compiled --with-debug, due to bug 39828, "autoinc wraps around when offset and
        increment > 1".  This change should be reverted when that bug is fixed (and a
        a few other minor changes to the test as described in comments).
      modified:
        mysql-test/r/innodb-autoinc.result
        mysql-test/t/innodb-autoinc.test

    ------------------------------------------------------------------------
    r4129 | vasil | 2009-02-08 21:54:25 +0200 (Sun, 08 Feb 2009) | 310 lines
    Changed paths:
       M /branches/5.1/mysql-test/innodb-autoinc.test

    branches/5.1:

    Merge a change from MySQL:

    [looks like the changes to innodb-autoinc.test were made as part of
    the following huge merge, but we are merging only changes to that file]

      ------------------------------------------------------------
      revno: 2546.47.1
      committer: Luis Soares <luis.soares@sun.com>
      branch nick: 5.1-rpl
      timestamp: Fri 2009-01-23 13:22:05 +0100
      message:
        merge: 5.1 -> 5.1-rpl
        conflicts:
          Text conflict in client/mysqltest.cc
          Text conflict in mysql-test/include/wait_until_connected_again.inc
          Text conflict in mysql-test/lib/mtr_report.pm
          Text conflict in mysql-test/mysql-test-run.pl
          Text conflict in mysql-test/r/events_bugs.result
          Text conflict in mysql-test/r/log_state.result
          Text conflict in mysql-test/r/myisam_data_pointer_size_func.result
          Text conflict in mysql-test/r/mysqlcheck.result
          Text conflict in mysql-test/r/query_cache.result
          Text conflict in mysql-test/r/status.result
          Text conflict in mysql-test/suite/binlog/r/binlog_index.result
          Text conflict in mysql-test/suite/binlog/r/binlog_innodb.result
          Text conflict in mysql-test/suite/rpl/r/rpl_packet.result
          Text conflict in mysql-test/suite/rpl/t/rpl_packet.test
          Text conflict in mysql-test/t/disabled.def
          Text conflict in mysql-test/t/events_bugs.test
          Text conflict in mysql-test/t/log_state.test
          Text conflict in mysql-test/t/myisam_data_pointer_size_func.test
          Text conflict in mysql-test/t/mysqlcheck.test
          Text conflict in mysql-test/t/query_cache.test
          Text conflict in mysql-test/t/rpl_init_slave_func.test
          Text conflict in mysql-test/t/status.test
      removed:
        mysql-test/suite/parts/r/partition_bit_ndb.result
        mysql-test/suite/parts/t/partition_bit_ndb.test
        mysql-test/suite/parts/t/partition_sessions.test
        mysql-test/suite/sys_vars/inc/tmp_table_size_basic.inc
        mysql-test/suite/sys_vars/r/tmp_table_size_basic_32.result
        mysql-test/suite/sys_vars/r/tmp_table_size_basic_64.result
        mysql-test/suite/sys_vars/t/tmp_table_size_basic_32.test
        mysql-test/suite/sys_vars/t/tmp_table_size_basic_64.test
        mysql-test/t/log_bin_trust_function_creators_func-master.opt
        mysql-test/t/rpl_init_slave_func-slave.opt
      added:
        mysql-test/include/check_events_off.inc
        mysql-test/include/cleanup_fake_relay_log.inc
        mysql-test/include/have_simple_parser.inc
        mysql-test/include/no_running_event_scheduler.inc
        mysql-test/include/no_running_events.inc
        mysql-test/include/running_event_scheduler.inc
        mysql-test/include/setup_fake_relay_log.inc
        mysql-test/include/wait_condition_sp.inc
        mysql-test/r/fulltext_plugin.result
        mysql-test/r/have_simple_parser.require
        mysql-test/r/innodb_bug38231.result
        mysql-test/r/innodb_bug39438.result
        mysql-test/r/innodb_mysql_rbk.result
        mysql-test/r/partition_innodb_semi_consistent.result
        mysql-test/r/query_cache_28249.result
        mysql-test/r/status2.result
        mysql-test/std_data/bug40482-bin.000001
        mysql-test/suite/binlog/r/binlog_innodb_row.result
        mysql-test/suite/binlog/t/binlog_innodb_row.test
        mysql-test/suite/rpl/r/rpl_binlog_corruption.result
        mysql-test/suite/rpl/t/rpl_binlog_corruption-master.opt
        mysql-test/suite/rpl/t/rpl_binlog_corruption.test
        mysql-test/suite/sys_vars/r/tmp_table_size_basic.result
        mysql-test/suite/sys_vars/t/tmp_table_size_basic.test
        mysql-test/t/fulltext_plugin-master.opt
        mysql-test/t/fulltext_plugin.test
        mysql-test/t/innodb_bug38231.test
        mysql-test/t/innodb_bug39438-master.opt
        mysql-test/t/innodb_bug39438.test
        mysql-test/t/innodb_mysql_rbk-master.opt
        mysql-test/t/innodb_mysql_rbk.test
        mysql-test/t/partition_innodb_semi_consistent-master.opt
        mysql-test/t/partition_innodb_semi_consistent.test
        mysql-test/t/query_cache_28249.test
        mysql-test/t/status2.test
      renamed:
        mysql-test/suite/funcs_1/r/is_collation_character_set_applicability.result => mysql-test/suite/funcs_1/r/is_coll_char_set_appl.result
        mysql-test/suite/funcs_1/t/is_collation_character_set_applicability.test => mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test
      modified:
        .bzr-mysql/default.conf
        CMakeLists.txt
        client/mysql.cc
        client/mysql_upgrade.c
        client/mysqlcheck.c
        client/mysqltest.cc
        configure.in
        extra/resolve_stack_dump.c
        extra/yassl/include/openssl/ssl.h
        include/config-win.h
        include/m_ctype.h
        include/my_global.h
        mysql-test/extra/binlog_tests/database.test
        mysql-test/extra/rpl_tests/rpl_auto_increment.test
        mysql-test/include/commit.inc
        mysql-test/include/have_32bit.inc
        mysql-test/include/have_64bit.inc
        mysql-test/include/index_merge1.inc
        mysql-test/include/linux_sys_vars.inc
        mysql-test/include/windows_sys_vars.inc
        mysql-test/lib/mtr_report.pm
        mysql-test/mysql-test-run.pl
        mysql-test/r/alter_table.result
        mysql-test/r/commit_1innodb.result
        mysql-test/r/create.result
        mysql-test/r/csv.result
        mysql-test/r/ctype_ucs.result
        mysql-test/r/date_formats.result
        mysql-test/r/events_bugs.result
        mysql-test/r/events_scheduling.result
        mysql-test/r/fulltext.result
        mysql-test/r/func_if.result
        mysql-test/r/func_in.result
        mysql-test/r/func_str.result
        mysql-test/r/func_time.result
        mysql-test/r/grant.result
        mysql-test/r/index_merge_myisam.result
        mysql-test/r/information_schema.result
        mysql-test/r/innodb-autoinc.result
        mysql-test/r/innodb.result
        mysql-test/r/innodb_mysql.result
        mysql-test/r/log_bin_trust_function_creators_func.result
        mysql-test/r/log_state.result
        mysql-test/r/myisampack.result
        mysql-test/r/mysql.result
        mysql-test/r/mysqlcheck.result
        mysql-test/r/partition_datatype.result
        mysql-test/r/partition_mgm.result
        mysql-test/r/partition_pruning.result
        mysql-test/r/query_cache.result
        mysql-test/r/read_buffer_size_basic.result
        mysql-test/r/read_rnd_buffer_size_basic.result
        mysql-test/r/rpl_init_slave_func.result
        mysql-test/r/select.result
        mysql-test/r/status.result
        mysql-test/r/strict.result
        mysql-test/r/temp_table.result
        mysql-test/r/type_bit.result
        mysql-test/r/type_date.result
        mysql-test/r/type_float.result
        mysql-test/r/warnings_engine_disabled.result
        mysql-test/r/xml.result
        mysql-test/suite/binlog/r/binlog_database.result
        mysql-test/suite/binlog/r/binlog_index.result
        mysql-test/suite/binlog/r/binlog_innodb.result
        mysql-test/suite/binlog/r/binlog_row_mix_innodb_myisam.result
        mysql-test/suite/binlog/t/binlog_innodb.test
        mysql-test/suite/funcs_1/r/is_columns_is.result
        mysql-test/suite/funcs_1/r/is_engines.result
        mysql-test/suite/funcs_1/r/storedproc.result
        mysql-test/suite/funcs_1/storedproc/param_check.inc
        mysql-test/suite/funcs_2/t/disabled.def
        mysql-test/suite/ndb/t/disabled.def
        mysql-test/suite/parts/r/partition_bit_innodb.result
        mysql-test/suite/parts/r/partition_bit_myisam.result
        mysql-test/suite/parts/r/partition_special_innodb.result
        mysql-test/suite/parts/t/disabled.def
        mysql-test/suite/parts/t/partition_special_innodb.test
        mysql-test/suite/parts/t/partition_value_innodb.test
        mysql-test/suite/parts/t/partition_value_myisam.test
        mysql-test/suite/parts/t/partition_value_ndb.test
        mysql-test/suite/rpl/r/rpl_auto_increment.result
        mysql-test/suite/rpl/r/rpl_packet.result
        mysql-test/suite/rpl/r/rpl_row_create_table.result
        mysql-test/suite/rpl/r/rpl_slave_skip.result
        mysql-test/suite/rpl/r/rpl_trigger.result
        mysql-test/suite/rpl/t/disabled.def
        mysql-test/suite/rpl/t/rpl_packet.test
        mysql-test/suite/rpl/t/rpl_row_create_table.test
        mysql-test/suite/rpl/t/rpl_slave_skip.test
        mysql-test/suite/rpl/t/rpl_trigger.test
        mysql-test/suite/rpl_ndb/t/disabled.def
        mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc
        mysql-test/suite/sys_vars/inc/sort_buffer_size_basic.inc
        mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result
        mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
        mysql-test/suite/sys_vars/r/sort_buffer_size_basic_32.result
        mysql-test/suite/sys_vars/r/sort_buffer_size_basic_64.result
        mysql-test/t/alter_table.test
        mysql-test/t/create.test
        mysql-test/t/csv.test
        mysql-test/t/ctype_ucs.test
        mysql-test/t/date_formats.test
        mysql-test/t/disabled.def
        mysql-test/t/events_bugs.test
        mysql-test/t/events_scheduling.test
        mysql-test/t/fulltext.test
        mysql-test/t/func_if.test
        mysql-test/t/func_in.test
        mysql-test/t/func_str.test
        mysql-test/t/func_time.test
        mysql-test/t/grant.test
        mysql-test/t/information_schema.test
        mysql-test/t/innodb-autoinc.test
        mysql-test/t/innodb.test
        mysql-test/t/innodb_mysql.test
        mysql-test/t/log_bin_trust_function_creators_func.test
        mysql-test/t/log_state.test
        mysql-test/t/myisam_data_pointer_size_func.test
        mysql-test/t/myisampack.test
        mysql-test/t/mysql.test
        mysql-test/t/mysqlcheck.test
        mysql-test/t/partition_innodb_stmt.test
        mysql-test/t/partition_mgm.test
        mysql-test/t/partition_pruning.test
        mysql-test/t/query_cache.test
        mysql-test/t/rpl_init_slave_func.test
        mysql-test/t/select.test
        mysql-test/t/status.test
        mysql-test/t/strict.test
        mysql-test/t/temp_table.test
        mysql-test/t/type_bit.test
        mysql-test/t/type_date.test
        mysql-test/t/type_float.test
        mysql-test/t/warnings_engine_disabled.test
        mysql-test/t/xml.test
        mysys/my_getopt.c
        mysys/my_init.c
        scripts/mysql_install_db.sh
        sql-common/my_time.c
        sql/field.cc
        sql/field.h
        sql/filesort.cc
        sql/ha_partition.cc
        sql/ha_partition.h
        sql/item.cc
        sql/item_cmpfunc.cc
        sql/item_func.h
        sql/item_strfunc.cc
        sql/item_sum.cc
        sql/item_timefunc.cc
        sql/item_timefunc.h
        sql/log.cc
        sql/log.h
        sql/log_event.cc
        sql/log_event.h
        sql/mysql_priv.h
        sql/mysqld.cc
        sql/opt_range.cc
        sql/partition_info.cc
        sql/repl_failsafe.cc
        sql/rpl_constants.h
        sql/set_var.cc
        sql/slave.cc
        sql/spatial.h
        sql/sql_acl.cc
        sql/sql_base.cc
        sql/sql_binlog.cc
        sql/sql_class.h
        sql/sql_cursor.cc
        sql/sql_delete.cc
        sql/sql_lex.cc
        sql/sql_lex.h
        sql/sql_locale.cc
        sql/sql_parse.cc
        sql/sql_partition.cc
        sql/sql_plugin.cc
        sql/sql_plugin.h
        sql/sql_profile.cc
        sql/sql_repl.cc
        sql/sql_select.cc
        sql/sql_select.h
        sql/sql_show.cc
        sql/sql_table.cc
        sql/sql_trigger.cc
        sql/sql_trigger.h
        sql/table.cc
        sql/table.h
        sql/unireg.cc
        storage/csv/ha_tina.cc
        storage/federated/ha_federated.cc
        storage/heap/ha_heap.cc
        storage/innobase/Makefile.am
        storage/innobase/btr/btr0sea.c
        storage/innobase/buf/buf0lru.c
        storage/innobase/dict/dict0dict.c
        storage/innobase/dict/dict0mem.c
        storage/innobase/handler/ha_innodb.cc
        storage/innobase/handler/ha_innodb.h
        storage/innobase/include/btr0sea.h
        storage/innobase/include/dict0dict.h
        storage/innobase/include/dict0mem.h
        storage/innobase/include/ha_prototypes.h
        storage/innobase/include/lock0lock.h
        storage/innobase/include/row0mysql.h
        storage/innobase/include/sync0sync.ic
        storage/innobase/include/ut0ut.h
        storage/innobase/lock/lock0lock.c
        storage/innobase/os/os0file.c
        storage/innobase/plug.in
        storage/innobase/row/row0mysql.c
        storage/innobase/row/row0sel.c
        storage/innobase/srv/srv0srv.c
        storage/innobase/srv/srv0start.c
        storage/innobase/ut/ut0ut.c
        storage/myisam/ft_boolean_search.c
        strings/ctype.c
        strings/xml.c
        tests/mysql_client_test.c
        win/configure.js
        mysql-test/suite/funcs_1/t/is_coll_char_set_appl.test

    ------------------------------------------------------------------------
    r4165 | calvin | 2009-02-12 01:34:27 +0200 (Thu, 12 Feb 2009) | 1 line
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc

    branches/5.1: minor non-functional changes.
    ------------------------------------------------------------------------
  ------------------------------------------------------------------------
  r4263 | vasil | 2009-02-20 15:00:46 +0200 (Fri, 20 Feb 2009) | 4 lines

  branches/zip:

  Add a ChangeLog entry for a change in r4262.
  ------------------------------------------------------------------------
  r4265 | marko | 2009-02-20 22:31:03 +0200 (Fri, 20 Feb 2009) | 5 lines

  branches/zip: Make innodb_use_sys_malloc=ON the default.
  Replace srv_use_sys_malloc with UNIV_LIKELY(srv_use_sys_malloc)
  to improve branch prediction in the default case.

  Approved by Ken over the IM.
  ------------------------------------------------------------------------
  r4266 | vasil | 2009-02-20 23:29:32 +0200 (Fri, 20 Feb 2009) | 7 lines

  branches/zip:

  Add a sentence at the top of COPYING.Google to clarify that this license
  does not apply to the whole InnoDB.

  Suggested by:	Ken
  ------------------------------------------------------------------------
  r4268 | marko | 2009-02-23 12:43:51 +0200 (Mon, 23 Feb 2009) | 9 lines

  branches/zip: Initialize ut_list_mutex at startup.  Without this fix,
  ut_list_mutex would be used uninitialized when innodb_use_sys_malloc=1.
  This fix addresses Issue #181.

  ut_mem_block_list_init(): Rename to ut_mem_init() and make public.

  ut_malloc_low(), ut_free_all_mem(): Add ut_a(ut_mem_block_list_inited).

  mem_init(): Call ut_mem_init().
  ------------------------------------------------------------------------
  r4269 | marko | 2009-02-23 15:09:49 +0200 (Mon, 23 Feb 2009) | 7 lines

  branches/zip: When freeing an uncompressed BLOB page, tolerate garbage in
  FIL_PAGE_TYPE.  (Bug #43043, Issue #182)

  btr_check_blob_fil_page_type(): New function.

  btr_free_externally_stored_field(), btr_copy_blob_prefix():
  Call btr_check_blob_fil_page_type() to check FIL_PAGE_TYPE.
  ------------------------------------------------------------------------
  r4272 | marko | 2009-02-23 23:10:18 +0200 (Mon, 23 Feb 2009) | 8 lines

  branches/zip: Adjust the fix of Issue #182 in r4269 per Inaam's suggestion.

  btr_check_blob_fil_page_type(): Replace the parameter
  const char* op
  with
  ibool read.  Do not print anything about page type mismatch
  when reading a BLOB page in Antelope format.
  Print space id before page number.
  ------------------------------------------------------------------------
  r4273 | marko | 2009-02-24 00:11:11 +0200 (Tue, 24 Feb 2009) | 1 line

  branches/zip: ut_mem_init(): Add the assertion !ut_mem_block_list_inited.
  ------------------------------------------------------------------------
  r4274 | marko | 2009-02-24 00:14:38 +0200 (Tue, 24 Feb 2009) | 12 lines

  branches/zip: Fix bugs in the fix of Issue #181.  Tested inside and
  outside Valgrind, with innodb_use_sys_malloc set to 0 and 1.

  mem_init(): Invoke ut_mem_init() before mem_pool_create(), because
  the latter one will invoke ut_malloc().

  srv_general_init(): Do not initialize the memory subsystem (mem_init()).

  innobase_init(): Initialize the memory subsystem (mem_init()) before
  calling srv_parse_data_file_paths_and_sizes(), which needs ut_malloc().
  Call ut_free_all_mem() in error handling to clean up after the mem_init().
  ------------------------------------------------------------------------
  r4280 | marko | 2009-02-24 15:14:59 +0200 (Tue, 24 Feb 2009) | 1 line

  branches/zip: Remove unused function os_mem_alloc_nocache().
  ------------------------------------------------------------------------
  r4281 | marko | 2009-02-24 16:02:48 +0200 (Tue, 24 Feb 2009) | 1 line

  branches/zip: Remove the unused function dict_index_get_type().
  ------------------------------------------------------------------------
  r4283 | marko | 2009-02-24 23:06:56 +0200 (Tue, 24 Feb 2009) | 1 line

  branches/zip: srv0start.c: Remove unnecessary #include "mem0pool.h".
  ------------------------------------------------------------------------
  r4284 | marko | 2009-02-24 23:26:38 +0200 (Tue, 24 Feb 2009) | 1 line

  branches/zip: mem0mem.c: Remove unnecessary #include "mach0data.h".
  ------------------------------------------------------------------------
  r4288 | vasil | 2009-02-25 10:48:07 +0200 (Wed, 25 Feb 2009) | 21 lines

  branches/zip: Merge revisions 4261:4287 from branches/5.1:

    ------------------------------------------------------------------------
    r4287 | sunny | 2009-02-25 05:32:01 +0200 (Wed, 25 Feb 2009) | 10 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc
       M /branches/5.1/mysql-test/innodb-autoinc.result
       M /branches/5.1/mysql-test/innodb-autoinc.test

    branches/5.1: Fix Bug#42714 AUTO_INCREMENT errors in 5.1.31. There are two
    changes to the autoinc handling.

    1. To fix the immediate problem from the bug report, we must ensure that the
       value written to the table is always less than the max value stored in
       dict_table_t.

    2. The second related change is that according to MySQL documentation when
       the offset is greater than the increment, we should ignore the offset.

    ------------------------------------------------------------------------
  ------------------------------------------------------------------------
  r4289 | vasil | 2009-02-25 10:53:51 +0200 (Wed, 25 Feb 2009) | 4 lines

  branches/zip:

  Add ChangeLog entry for the fix in r4288.
  ------------------------------------------------------------------------
  r4290 | vasil | 2009-02-25 11:05:44 +0200 (Wed, 25 Feb 2009) | 11 lines

  branches/zip:

  Make ChangeLog entries for bugs in bugs.mysql.com in the form:
  Fix Bug#12345 bug title
  (for bugs after 1.0.2 was released and the ChangeLog published)

  There is no need to bloat the ChangeLog with information that is available
  via bugs.mysql.com.

  Discussed with:	Marko
  ------------------------------------------------------------------------
  r4291 | vasil | 2009-02-25 11:08:32 +0200 (Wed, 25 Feb 2009) | 4 lines

  branches/zip:

  Fix Bug synopsis and remove explanation
  ------------------------------------------------------------------------
  r4292 | marko | 2009-02-25 12:09:15 +0200 (Wed, 25 Feb 2009) | 25 lines

  branches/zip: Correct the initialization of the memory subsystem once
  again, to finally put Issue #181 to rest.

  Revert some parts of r4274.  It is best not to call ut_malloc() before
  srv_general_init().

  mem_init(): Do not call ut_mem_init().

  srv_general_init(): Initialize the memory subsystem in two phases:
  first ut_mem_init(), then mem_init().  This is because os_sync_init()
  and sync_init() depend on ut_mem_init() and mem_init() depends on
  os_sync_init() or sync_init().

  srv_parse_data_file_paths_and_sizes(),
  srv_parse_log_group_home_dirs(): Remove the output parameters.  Assign
  to the global variables directly.  Allocate memory with malloc()
  instead of ut_malloc(), because these functions will be called before
  srv_general_init().

  srv_free_paths_and_sizes(): New function, for cleaning up after
  srv_parse_data_file_paths_and_sizes() and
  srv_parse_log_group_home_dirs().

  rb://92 approved by Sunny Bains
  ------------------------------------------------------------------------
  r4297 | vasil | 2009-02-25 17:19:19 +0200 (Wed, 25 Feb 2009) | 4 lines

  branches/zip:

  White-space cleanup in the ChangeLog
  ------------------------------------------------------------------------
  r4301 | vasil | 2009-02-25 21:33:32 +0200 (Wed, 25 Feb 2009) | 5 lines

  branches/zip:

  Do not output the commands that restore the environment because they depend
  on the state of the environment before the test starts executing.
  ------------------------------------------------------------------------
  r4315 | vasil | 2009-02-26 09:21:20 +0200 (Thu, 26 Feb 2009) | 5 lines

  branches/zip:

  Apply any necessary patches to the mysql tree at the end of setup.sh
  This step was previously done manually (and sometimes forgotten).
  ------------------------------------------------------------------------
  r4319 | marko | 2009-02-26 23:27:51 +0200 (Thu, 26 Feb 2009) | 6 lines

  branches/zip: btr_check_blob_fil_page_type(): Do not report
  FIL_PAGE_TYPE mismatch even when purging a BLOB.
  Heavy users may have large data files created with MySQL 5.0 or earlier,
  and they don not want to have the error log flooded with such messages.

  This fixes Issue #182.
  ------------------------------------------------------------------------
  r4320 | inaam | 2009-02-27 02:13:19 +0200 (Fri, 27 Feb 2009) | 8 lines

  branches/zip

  This is to revert the changes made to the plug.in (r4251) as a fix for
  issue# 178. Changes to plug.in will not propogate to a plugin
  installation unless autotools are rerun which is unacceptable.

  A fix for issue# 178 will be committed in a separate commit.
  ------------------------------------------------------------------------
  r4321 | inaam | 2009-02-27 02:16:46 +0200 (Fri, 27 Feb 2009) | 6 lines

  branches/zip

  This is a fix for issue#178. Instead of using UNIV_LINUX which is
  defined through CFLAGS we use compiler generated define __linux__
  that is effective for both .c and .cc files.
  ------------------------------------------------------------------------
  r4324 | vasil | 2009-02-27 13:27:18 +0200 (Fri, 27 Feb 2009) | 39 lines

  branches/zip:

  Add FreeBSD to the list of the operating systems that have
  sizeof(pthread_t) == sizeof(void*) (i.e. word size).

  On FreeBSD pthread_t is defined like:

    /usr/include/sys/_pthreadtypes.h:

    typedef struct  pthread                 *pthread_t;

  I did the following tests (per Inaam's recommendation):

  a) appropriate version of GCC is available on that platform (4.1.2 or
  higher for atomics to be available)

    On FreeBSD 6.x the default compiler is 3.4.6, on FreeBSD 7.x the default
    one is 4.2.1. One can always install the version of choice from the ports
    collection. If gcc 3.x is used then HAVE_GCC_ATOMIC_BUILTINS will not be
    defined and thus the change I am committing will make no difference.

  b) find out if sizeof(pthread_t) == sizeof(long)

    On 32 bit both are 4 bytes, on 64 bit both are 8 bytes.

  c) find out the compiler generated platform define (e.g.: __aix, __sunos__
  etc.)

    The macro is __FreeBSD__.

  d) patch univ.i with the appropriate platform define
  e) build the mysql
  f) ensure it is using atomic builtins (look at the err.log message at
  system startup. It should say we are using atomics for both mutexes and
  rw-locks)
  g) do sanity testing (keeping in view the smp changes)

    I ran the mysql-test suite. All tests pass.
  ------------------------------------------------------------------------
  r4353 | vasil | 2009-03-05 09:27:29 +0200 (Thu, 05 Mar 2009) | 6 lines

  branches/zip:

  As suggested by Ken, print a message that says that the Google SMP patch
  (GCC atomics) is disabled if it is. Also extend the message when the patch
  is partially enabled to make it clear that it is partially enabled.
  ------------------------------------------------------------------------
  r4356 | vasil | 2009-03-05 13:49:51 +0200 (Thu, 05 Mar 2009) | 4 lines

  branches/zip:

  Fix typo made in r4353.
  ------------------------------------------------------------------------
  r4357 | vasil | 2009-03-05 16:38:59 +0200 (Thu, 05 Mar 2009) | 23 lines

  branches/zip:

  Implement a check whether pthread_t objects can be used by GCC atomic
  builtin functions. This check is implemented in plug.in and defines the
  macro HAVE_ATOMIC_PTHREAD_T. This macro is checked in univ.i and the
  relevant part of the code enabled (the one that uses GCC atomics against
  pthread_t objects).

  In addition to this, the same program that is compiled as part of the
  plug.in check is added in ut/ut0auxconf.c. In the InnoDB Plugin source
  archives that are shipped to the users, a generated Makefile.in is added.
  That Makefile.in will be modified to compile ut/ut0auxconf.c and define
  the macro HAVE_ATOMIC_PTHREAD_T if the compilation succeeds. I.e.
  Makefile.in will emulate the work that is done by plug.in. This is done in
  order to make the check happen and HAVE_ATOMIC_PTHREAD_T eventually
  defined without regenerating MySQL's ./configure from
  ./storage/innobase/plug.in. The point is not to ask users to install the
  autotools and regenerate ./configure.

  rb://95

  Approved by:	Marko
  ------------------------------------------------------------------------
  r4360 | vasil | 2009-03-05 22:23:17 +0200 (Thu, 05 Mar 2009) | 21 lines

  branches/zip: Merge revisions 4287:4357 from branches/5.1:

    ------------------------------------------------------------------------
    r4325 | sunny | 2009-03-02 02:28:52 +0200 (Mon, 02 Mar 2009) | 10 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc
       M /branches/5.1/mysql-test/innodb-autoinc.result
       M /branches/5.1/mysql-test/innodb-autoinc.test

    branches/5.1: Bug#43203: Overflow from auto incrementing causes server segv
    It was not a SIGSEGV but an assertion failure. The assertion was checking
    the invariant that *first_value passed in by MySQL doesn't contain a value
    that is greater than the max value for that type. The assertion has been
    changed to a check and if the value is greater than the max we report a
    generic AUTOINC failure.

    rb://93
    Approved by Heikki

    ------------------------------------------------------------------------
  ------------------------------------------------------------------------
  r4361 | vasil | 2009-03-05 22:27:54 +0200 (Thu, 05 Mar 2009) | 30 lines

  branches/zip: Merge revision 4358 from branches/5.1 (resolving a conflict):

    ------------------------------------------------------------------------
    r4358 | vasil | 2009-03-05 21:21:10 +0200 (Thu, 05 Mar 2009) | 21 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc

    branches/5.1:

    Merge a change from MySQL:

      ------------------------------------------------------------
      revno: 2728.19.1
      committer: Alfranio Correia <alfranio.correia@sun.com>
      branch nick: mysql-5.1-bugteam
      timestamp: Tue 2009-02-03 11:36:46 +0000
      message:
        BUG#42445 Warning messages in innobase/handler/ha_innodb.cc

        There was a type casting problem in the storage/innobase/handler/ha_innodb.cc,
        (int ha_innobase::write_row(...)). Innobase uses has an internal error variable
        of type 'ulint' while mysql uses an 'int'. 

        To fix the problem the function manipulates an error variable of
        type 'ulint' and only casts it into 'int' when needs to return the value.
      modified:
        storage/innobase/handler/ha_innodb.cc

    ------------------------------------------------------------------------
  ------------------------------------------------------------------------
  r4362 | vasil | 2009-03-05 22:29:07 +0200 (Thu, 05 Mar 2009) | 23 lines

  branches/zip: Merge revision 4359 from branches/5.1:

    ------------------------------------------------------------------------
    r4359 | vasil | 2009-03-05 21:42:01 +0200 (Thu, 05 Mar 2009) | 14 lines
    Changed paths:
       M /branches/5.1/handler/ha_innodb.cc

    branches/5.1:

    Merge a change from MySQL:

      ------------------------------------------------------------
      revno: 2747
      committer: Timothy Smith <timothy.smith@sun.com>
      branch nick: 51
      timestamp: Fri 2009-01-16 17:49:07 +0100
      message:
        Add another cast to ignore int/ulong difference in error types, silence warning on Win64
      modified:
        storage/innobase/handler/ha_innodb.cc

    ------------------------------------------------------------------------
  ------------------------------------------------------------------------
  r4363 | vasil | 2009-03-05 22:31:37 +0200 (Thu, 05 Mar 2009) | 4 lines

  branches/zip:

  Add ChangeLog entry for the bugfix in c4360.
  ------------------------------------------------------------------------
  r4378 | calvin | 2009-03-09 10:10:17 +0200 (Mon, 09 Mar 2009) | 7 lines

  branches/zip: remove compile flag MYSQL_SERVER for dynamic plugin

  The dynamic plugin on Windows used to be built with MYSQL_SERVER
  compile flag, while it is not the case for other platforms.
  r3797 assumed MYSQL_SERVER was not defined for dynamic plugin,
  which introduced the engine crash during dropping a database.
  ------------------------------------------------------------------------
  r4396 | marko | 2009-03-12 09:22:27 +0200 (Thu, 12 Mar 2009) | 3 lines

  branches/zip: btr_store_big_rec_extern_fields(): Initialize FIL_PAGE_TYPE
  in a separate redo log entry.  This will make ibbackup --apply-log
  debugging easier.
  ------------------------------------------------------------------------
  r4397 | marko | 2009-03-12 09:26:11 +0200 (Thu, 12 Mar 2009) | 3 lines

  branches/zip: trx_sys_create_doublewrite_buf(): As the dummy change,
  initialize FIL_PAGE_TYPE.  This will make it easier to write the debug
  assertions for ibbackup --apply-log.
  ------------------------------------------------------------------------
  r4401 | marko | 2009-03-12 10:26:40 +0200 (Thu, 12 Mar 2009) | 19 lines

  branches/zip: Merge revisions 4359:4400 from branches/5.1:

    ------------------------------------------------------------------------
    r4399 | marko | 2009-03-12 09:38:05 +0200 (Thu, 12 Mar 2009) | 2 lines

    branches/5.1: row_sel_get_clust_rec_for_mysql(): Store the cursor position
    also for unlock_row().  (Bug #39320)
    ------------------------------------------------------------------------
    r4400 | marko | 2009-03-12 10:06:44 +0200 (Thu, 12 Mar 2009) | 5 lines

    branches/5.1: Fix a bug in multi-table semi-consistent reads.
    Remember the acquired record locks per table handle (row_prebuilt_t)
    rather than per transaction (trx_t), so that unlock_row should successfully
    unlock all non-matching rows in multi-table operations.
    This deficiency was found while investigating Bug #39320.
    ------------------------------------------------------------------------

  These were submitted as rb://94 and rb://96 and approved by Heikki Tuuri.
  ------------------------------------------------------------------------
  r4455 | marko | 2009-03-16 11:43:34 +0200 (Mon, 16 Mar 2009) | 2 lines

  branches/zip: UT_LIST_VALIDATE(): Add the parameter ASSERTION and
  adjust all callers.
  ------------------------------------------------------------------------
  r4456 | marko | 2009-03-16 12:59:25 +0200 (Mon, 16 Mar 2009) | 6 lines

  branches/zip: UT_LIST_VALIDATE(): Assert that the link is non-NULL
  before dereferencing it.  In this way, ut_list_node_313 will be
  pointing to the last non-NULL list item at the time of the assertion
  failure.  (gcc-4.3.2 -O3 seems to optimize the common subexpressions
  and make the variable NULL, though.)
  ------------------------------------------------------------------------
  r4457 | marko | 2009-03-16 14:12:02 +0200 (Mon, 16 Mar 2009) | 2 lines

  branches/zip: sync_thread_add_level(): Make the assertions about
  level == SYNC_BUF_BLOCK more readable.
  ------------------------------------------------------------------------
  r4461 | vasil | 2009-03-17 09:38:19 +0200 (Tue, 17 Mar 2009) | 6 lines

  branches/zip:

  Remove mysql-test/patches/bug32625.diff because that bug was fixed in
  the mysql repository (1 year and 4 months after sending them the simple
  patch!). See http://bugs.mysql.com/32625
  ------------------------------------------------------------------------
  r4465 | marko | 2009-03-17 12:34:19 +0200 (Tue, 17 Mar 2009) | 1 line

  branches/zip: buf0buddy.c: Add and adjust some debug assertions.
  ------------------------------------------------------------------------
  r4473 | vasil | 2009-03-17 15:50:30 +0200 (Tue, 17 Mar 2009) | 5 lines

  branches/zip:

  Increment the InnoDB Plugin version from 1.0.3 to 1.0.4 now that
  1.0.3 has been released.
  ------------------------------------------------------------------------
  r4478 | vasil | 2009-03-18 11:53:53 +0200 (Wed, 18 Mar 2009) | 5 lines

  branches/zip:

  Remove mysql-test/patches/bug41893.diff because that bug has been fixed
  in the MySQL repository, see http://bugs.mysql.com/41893.
  ------------------------------------------------------------------------
  r4479 | marko | 2009-03-18 12:43:54 +0200 (Wed, 18 Mar 2009) | 2 lines

  branches/zip: buf_LRU_block_remove_hashed_page(): Add some debug assertions.
  ------------------------------------------------------------------------
  r4480 | marko | 2009-03-18 14:32:13 +0200 (Wed, 18 Mar 2009) | 1 line

  branches/zip: buf_buddy_free_low(): Correct the function comment.
  ------------------------------------------------------------------------
  r4482 | marko | 2009-03-19 15:23:32 +0200 (Thu, 19 Mar 2009) | 12 lines

  branches/zip: Merge revisions 4400:4481 from branches/5.1:

    ------------------------------------------------------------------------
    r4481 | marko | 2009-03-19 15:01:48 +0200 (Thu, 19 Mar 2009) | 6 lines

    branches/5.1: row_unlock_for_mysql(): Do not unlock records that were
    modified by the current transaction.  This bug was introduced or unmasked
    in r4400.

    rb://97 approved by Heikki Tuuri
    ------------------------------------------------------------------------
  ------------------------------------------------------------------------
  r4490 | marko | 2009-03-20 12:33:33 +0200 (Fri, 20 Mar 2009) | 4 lines

  branches/zip: Non-functional change for reducing dependencies in InnoDB Hot Backup:

  Replace srv_sys->dummy_ind1 and srv_sys->dummy_ind2 with
  dict_ind_redundant and dict_ind_compact, initialized in dict_init().
  ------------------------------------------------------------------------
  r4491 | marko | 2009-03-20 12:45:18 +0200 (Fri, 20 Mar 2009) | 2 lines

  branches/zip: Add const qualifiers or in/out comments to some function
  parameters in log0log.
  ------------------------------------------------------------------------
  r4492 | marko | 2009-03-20 12:52:14 +0200 (Fri, 20 Mar 2009) | 5 lines

  branches/zip: page_validate(): Always report the space id and the
  name of the index.

  In Hot Backup, do not invoke comparison functions, as MySQL collations
  will be unavailable.
  ------------------------------------------------------------------------
  r4493 | marko | 2009-03-20 13:24:06 +0200 (Fri, 20 Mar 2009) | 1 line

  branches/zip: Replace fil_get_space_for_id_low() with fil_space_get_by_id().
  ------------------------------------------------------------------------
  r4494 | marko | 2009-03-20 13:51:35 +0200 (Fri, 20 Mar 2009) | 3 lines

  branches/zip: fil0fil.c: Refer to fil_system directly, not via local vars.
  This eliminates some "unused variable" warnings when building
  InnoDB Hot Backup in such a way that all mutex operations are no-ops.
  ------------------------------------------------------------------------
  r4495 | marko | 2009-03-20 14:15:52 +0200 (Fri, 20 Mar 2009) | 1 line

  branches/zip: innobase_get_at_most_n_mbchars(): Declare in ha_prototypes.h.
  ------------------------------------------------------------------------
  r4496 | marko | 2009-03-20 14:48:26 +0200 (Fri, 20 Mar 2009) | 1 line

  branches/zip: recv_recover_page(): Remove compile-time constant parameters.
  ------------------------------------------------------------------------
  r4497 | marko | 2009-03-20 14:56:19 +0200 (Fri, 20 Mar 2009) | 1 line

  branches/zip: recv_sys_init(): Remove a compile-time constant parameter.
  ------------------------------------------------------------------------
  r4498 | marko | 2009-03-20 15:08:05 +0200 (Fri, 20 Mar 2009) | 4 lines

  branches/zip: Non-functional change: Add const qualifiers.

  log_block_checksum_is_ok_or_old_format(), recv_sys_add_to_parsing_buf():
  The log block is read-only.  Make it const.
  ------------------------------------------------------------------------
  r4499 | marko | 2009-03-20 15:10:25 +0200 (Fri, 20 Mar 2009) | 1 line

  branches/zip: recv_scan_log_recs(): Remove a compile-time constant parameter.
  ------------------------------------------------------------------------
  r4500 | marko | 2009-03-20 15:47:17 +0200 (Fri, 20 Mar 2009) | 1 line

  branches/zip: fil_init(): Add the parameter hash_size.
  ------------------------------------------------------------------------
  r4501 | vasil | 2009-03-20 16:50:41 +0200 (Fri, 20 Mar 2009) | 4 lines

  branches/zip:

  Add any entry about the release of 1.0.3 in the ChangeLog.
  ------------------------------------------------------------------------
  r4515 | marko | 2009-03-23 10:49:53 +0200 (Mon, 23 Mar 2009) | 1 line

  branches/zip: hash_table_t: adaptive: Remove from UNIV_HOTBACKUP builds.
  ------------------------------------------------------------------------
  r4516 | marko | 2009-03-23 10:57:16 +0200 (Mon, 23 Mar 2009) | 2 lines

  branches/zip: Define and use ASSERT_HASH_MUTEX_OWN.
  Make it a no-op in UNIV_HOTBACKUP builds.
  ------------------------------------------------------------------------
  r4517 | marko | 2009-03-23 11:07:20 +0200 (Mon, 23 Mar 2009) | 2 lines

  branches/zip: Define and use PAGE_ZIP_MATCH.
  In UNIV_HOTBACKUP builds, assume fixed allocation.
  ------------------------------------------------------------------------
  r4521 | marko | 2009-03-23 12:05:47 +0200 (Mon, 23 Mar 2009) | 1 line

  branches/zip: buf_page_print(): Clean up the code #ifdef UNIV_HOTBACKUP.
  ------------------------------------------------------------------------
  r4522 | marko | 2009-03-23 12:20:50 +0200 (Mon, 23 Mar 2009) | 2 lines

  branches/zip: Exclude some operating system interface code
  from UNIV_HOTBACKUP builds.
  ------------------------------------------------------------------------
  r4523 | marko | 2009-03-23 13:00:43 +0200 (Mon, 23 Mar 2009) | 2 lines

  branches/zip: Remove the remaining references to hash_table_t::adapive
  from UNIV_HOTBACKUP builds.  This should have been done in r4515.
  ------------------------------------------------------------------------
  r4524 | marko | 2009-03-23 14:05:18 +0200 (Mon, 23 Mar 2009) | 2 lines

  branches/zip: Enclose recv_recovery_from_backup_on and
  recv_recovery_from_backup_is_on() in #ifdef UNIV_LOG_ARCHIVE.
  ------------------------------------------------------------------------
  r4525 | marko | 2009-03-23 14:57:45 +0200 (Mon, 23 Mar 2009) | 2 lines

  branches/zip: recv_parse_or_apply_log_rec_body(): Add debug assertions
  ensuring that FIL_PAGE_TYPE makes sense when applying log records.
  ------------------------------------------------------------------------
  r4526 | marko | 2009-03-23 16:21:34 +0200 (Mon, 23 Mar 2009) | 2 lines

  branches/zip: Remove unneeded definitions and dependencies
  from UNIV_HOTBACKUP builds.
  ------------------------------------------------------------------------
  r4527 | calvin | 2009-03-23 23:15:33 +0200 (Mon, 23 Mar 2009) | 5 lines

  branches/zip: adjust build files on Windows

  Adjust the patch positions based on the latest MySQL source.
  Also add the patches to the .bat files for vs9.
  ------------------------------------------------------------------------
parent 6e8805e0
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX") SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DSAFEMALLOC -DSAFE_MUTEX")
ADD_DEFINITIONS(-DMYSQL_SERVER -D_WIN32 -D_LIB) ADD_DEFINITIONS(-D_WIN32 -D_LIB)
# Bug 19424 - InnoDB: Possibly a memory overrun of the buffer being freed (64-bit Visual C) # Bug 19424 - InnoDB: Possibly a memory overrun of the buffer being freed (64-bit Visual C)
# Removing Win64 compiler optimizations for all innodb/mem/* files. # Removing Win64 compiler optimizations for all innodb/mem/* files.
...@@ -69,6 +69,7 @@ SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c ...@@ -69,6 +69,7 @@ SET(INNOBASE_SOURCES btr/btr0btr.c btr/btr0cur.c btr/btr0pcur.c btr/btr0sea.c
IF(NOT SOURCE_SUBLIBS) IF(NOT SOURCE_SUBLIBS)
ADD_LIBRARY(innobase ${INNOBASE_SOURCES}) ADD_LIBRARY(innobase ${INNOBASE_SOURCES})
ADD_DEPENDENCIES(innobase GenError) ADD_DEPENDENCIES(innobase GenError)
SET_TARGET_PROPERTIES(innobase PROPERTIES COMPILE_FLAGS "-DMYSQL_SERVER")
IF(INNODB_DYNAMIC_PLUGIN) IF(INNODB_DYNAMIC_PLUGIN)
# The dynamic plugin requires CMake 2.6.0 or later. Otherwise, the /DELAYLOAD property # The dynamic plugin requires CMake 2.6.0 or later. Otherwise, the /DELAYLOAD property
......
This diff is collapsed.
Portions of this software contain modifications contributed by Google, Inc.
These contributions are used with the following license:
Copyright (c) 2008, Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials
provided with the distribution.
* Neither the name of the Google Inc. nor the names of its
contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This diff is collapsed.
/*****************************************************************************
Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
The B-tree The B-tree
(c) 1994-1996 Innobase Oy
Created 6/2/1994 Heikki Tuuri Created 6/2/1994 Heikki Tuuri
*******************************************************/ *******************************************************/
...@@ -15,6 +31,8 @@ Created 6/2/1994 Heikki Tuuri ...@@ -15,6 +31,8 @@ Created 6/2/1994 Heikki Tuuri
#include "fsp0fsp.h" #include "fsp0fsp.h"
#include "page0page.h" #include "page0page.h"
#include "page0zip.h" #include "page0zip.h"
#ifndef UNIV_HOTBACKUP
#include "btr0cur.h" #include "btr0cur.h"
#include "btr0sea.h" #include "btr0sea.h"
#include "btr0pcur.h" #include "btr0pcur.h"
...@@ -908,6 +926,7 @@ btr_free_root( ...@@ -908,6 +926,7 @@ btr_free_root(
while (!fseg_free_step(header, mtr)); while (!fseg_free_step(header, mtr));
} }
#endif /* !UNIV_HOTBACKUP */
/***************************************************************** /*****************************************************************
Reorganizes an index page. */ Reorganizes an index page. */
...@@ -943,29 +962,39 @@ btr_page_reorganize_low( ...@@ -943,29 +962,39 @@ btr_page_reorganize_low(
data_size1 = page_get_data_size(page); data_size1 = page_get_data_size(page);
max_ins_size1 = page_get_max_insert_size_after_reorganize(page, 1); max_ins_size1 = page_get_max_insert_size_after_reorganize(page, 1);
#ifndef UNIV_HOTBACKUP
/* Write the log record */ /* Write the log record */
mlog_open_and_write_index(mtr, page, index, page_is_comp(page) mlog_open_and_write_index(mtr, page, index, page_is_comp(page)
? MLOG_COMP_PAGE_REORGANIZE ? MLOG_COMP_PAGE_REORGANIZE
: MLOG_PAGE_REORGANIZE, 0); : MLOG_PAGE_REORGANIZE, 0);
#endif /* !UNIV_HOTBACKUP */
/* Turn logging off */ /* Turn logging off */
log_mode = mtr_set_log_mode(mtr, MTR_LOG_NONE); log_mode = mtr_set_log_mode(mtr, MTR_LOG_NONE);
#ifndef UNIV_HOTBACKUP
temp_block = buf_block_alloc(0); temp_block = buf_block_alloc(0);
#else /* !UNIV_HOTBACKUP */
ut_ad(block == back_block1);
temp_block = back_block2;
#endif /* !UNIV_HOTBACKUP */
temp_page = temp_block->frame; temp_page = temp_block->frame;
/* Copy the old page to temporary space */ /* Copy the old page to temporary space */
buf_frame_copy(temp_page, page); buf_frame_copy(temp_page, page);
#ifndef UNIV_HOTBACKUP
if (UNIV_LIKELY(!recovery)) { if (UNIV_LIKELY(!recovery)) {
btr_search_drop_page_hash_index(block); btr_search_drop_page_hash_index(block);
} }
block->check_index_page_at_flush = TRUE;
#endif /* !UNIV_HOTBACKUP */
/* Recreate the page: note that global data on page (possible /* Recreate the page: note that global data on page (possible
segment headers, next page-field, etc.) is preserved intact */ segment headers, next page-field, etc.) is preserved intact */
page_create(block, mtr, dict_table_is_comp(index->table)); page_create(block, mtr, dict_table_is_comp(index->table));
block->check_index_page_at_flush = TRUE;
/* Copy the records from the temporary space to the recreated page; /* Copy the records from the temporary space to the recreated page;
do not copy the lock bits yet */ do not copy the lock bits yet */
...@@ -986,10 +1015,12 @@ btr_page_reorganize_low( ...@@ -986,10 +1015,12 @@ btr_page_reorganize_low(
goto func_exit; goto func_exit;
} }
#ifndef UNIV_HOTBACKUP
if (UNIV_LIKELY(!recovery)) { if (UNIV_LIKELY(!recovery)) {
/* Update the record lock bitmaps */ /* Update the record lock bitmaps */
lock_move_reorganize_page(block, temp_block); lock_move_reorganize_page(block, temp_block);
} }
#endif /* !UNIV_HOTBACKUP */
data_size2 = page_get_data_size(page); data_size2 = page_get_data_size(page);
max_ins_size2 = page_get_max_insert_size_after_reorganize(page, 1); max_ins_size2 = page_get_max_insert_size_after_reorganize(page, 1);
...@@ -1016,7 +1047,9 @@ func_exit: ...@@ -1016,7 +1047,9 @@ func_exit:
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
ut_a(!page_zip || page_zip_validate(page_zip, page)); ut_a(!page_zip || page_zip_validate(page_zip, page));
#endif /* UNIV_ZIP_DEBUG */ #endif /* UNIV_ZIP_DEBUG */
#ifndef UNIV_HOTBACKUP
buf_block_free(temp_block); buf_block_free(temp_block);
#endif /* !UNIV_HOTBACKUP */
/* Restore logging mode */ /* Restore logging mode */
mtr_set_log_mode(mtr, log_mode); mtr_set_log_mode(mtr, log_mode);
...@@ -1024,6 +1057,7 @@ func_exit: ...@@ -1024,6 +1057,7 @@ func_exit:
return(success); return(success);
} }
#ifndef UNIV_HOTBACKUP
/***************************************************************** /*****************************************************************
Reorganizes an index page. Reorganizes an index page.
IMPORTANT: if btr_page_reorganize() is invoked on a compressed leaf IMPORTANT: if btr_page_reorganize() is invoked on a compressed leaf
...@@ -1041,6 +1075,7 @@ btr_page_reorganize( ...@@ -1041,6 +1075,7 @@ btr_page_reorganize(
{ {
return(btr_page_reorganize_low(FALSE, block, index, mtr)); return(btr_page_reorganize_low(FALSE, block, index, mtr));
} }
#endif /* !UNIV_HOTBACKUP */
/*************************************************************** /***************************************************************
Parses a redo log record of reorganizing a page. */ Parses a redo log record of reorganizing a page. */
...@@ -1067,6 +1102,7 @@ btr_parse_page_reorganize( ...@@ -1067,6 +1102,7 @@ btr_parse_page_reorganize(
return(ptr); return(ptr);
} }
#ifndef UNIV_HOTBACKUP
/***************************************************************** /*****************************************************************
Empties an index page. @see btr_page_create().*/ Empties an index page. @see btr_page_create().*/
static static
...@@ -2207,6 +2243,9 @@ btr_set_min_rec_mark_log( ...@@ -2207,6 +2243,9 @@ btr_set_min_rec_mark_log(
/* Write rec offset as a 2-byte ulint */ /* Write rec offset as a 2-byte ulint */
mlog_catenate_ulint(mtr, page_offset(rec), MLOG_2BYTES); mlog_catenate_ulint(mtr, page_offset(rec), MLOG_2BYTES);
} }
#else /* !UNIV_HOTBACKUP */
# define btr_set_min_rec_mark_log(rec,comp,mtr) ((void) 0)
#endif /* !UNIV_HOTBACKUP */
/******************************************************************** /********************************************************************
Parses the redo log record for setting an index record as the predefined Parses the redo log record for setting an index record as the predefined
...@@ -2266,6 +2305,7 @@ btr_set_min_rec_mark( ...@@ -2266,6 +2305,7 @@ btr_set_min_rec_mark(
} }
} }
#ifndef UNIV_HOTBACKUP
/***************************************************************** /*****************************************************************
Deletes on the upper level the node pointer to a page. */ Deletes on the upper level the node pointer to a page. */
UNIV_INTERN UNIV_INTERN
...@@ -3641,3 +3681,4 @@ btr_validate_index( ...@@ -3641,3 +3681,4 @@ btr_validate_index(
return(TRUE); return(TRUE);
} }
#endif /* !UNIV_HOTBACKUP */
This diff is collapsed.
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
The index tree persistent cursor The index tree persistent cursor
(c) 1996 Innobase Oy
Created 2/23/1996 Heikki Tuuri Created 2/23/1996 Heikki Tuuri
*******************************************************/ *******************************************************/
......
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
Copyright (c) 2008, Google Inc.
Portions of this file contain modifications contributed and copyrighted by
Google, Inc. Those modifications are gratefully acknowledged and are described
briefly in the InnoDB documentation. The contributions by Google are
incorporated with their permission, and subject to the conditions contained in
the file COPYING.Google.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/************************************************************************ /************************************************************************
The index tree adaptive search The index tree adaptive search
(c) 1996 Innobase Oy
Created 2/17/1996 Heikki Tuuri Created 2/17/1996 Heikki Tuuri
*************************************************************************/ *************************************************************************/
/***********************************************************************
# Copyright (c) 2008, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials
# provided with the distribution.
# * Neither the name of the Google Inc. nor the names of its
# contributors may be used to endorse or promote products
# derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# Note, the BSD license applies to the new code. The old code is GPL.
***********************************************************************/
#include "btr0sea.h" #include "btr0sea.h"
#ifdef UNIV_NONINL #ifdef UNIV_NONINL
#include "btr0sea.ic" #include "btr0sea.ic"
......
/*****************************************************************************
Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
Binary buddy allocator for compressed pages Binary buddy allocator for compressed pages
(c) 2006 Innobase Oy
Created December 2006 by Marko Makela Created December 2006 by Marko Makela
*******************************************************/ *******************************************************/
...@@ -65,6 +81,8 @@ buf_buddy_add_to_free( ...@@ -65,6 +81,8 @@ buf_buddy_add_to_free(
if (b) UNIV_MEM_VALID(b, BUF_BUDDY_LOW << i); if (b) UNIV_MEM_VALID(b, BUF_BUDDY_LOW << i);
#endif /* UNIV_DEBUG_VALGRIND */ #endif /* UNIV_DEBUG_VALGRIND */
ut_ad(buf_pool_mutex_own());
ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_FREE);
ut_ad(buf_pool->zip_free[i].start != bpage); ut_ad(buf_pool->zip_free[i].start != bpage);
UT_LIST_ADD_FIRST(list, buf_pool->zip_free[i], bpage); UT_LIST_ADD_FIRST(list, buf_pool->zip_free[i], bpage);
...@@ -94,6 +112,7 @@ buf_buddy_remove_from_free( ...@@ -94,6 +112,7 @@ buf_buddy_remove_from_free(
ut_ad(!next || buf_page_get_state(next) == BUF_BLOCK_ZIP_FREE); ut_ad(!next || buf_page_get_state(next) == BUF_BLOCK_ZIP_FREE);
#endif /* UNIV_DEBUG_VALGRIND */ #endif /* UNIV_DEBUG_VALGRIND */
ut_ad(buf_pool_mutex_own());
ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_FREE); ut_ad(buf_page_get_state(bpage) == BUF_BLOCK_ZIP_FREE);
UT_LIST_REMOVE(list, buf_pool->zip_free[i], bpage); UT_LIST_REMOVE(list, buf_pool->zip_free[i], bpage);
...@@ -118,10 +137,12 @@ buf_buddy_alloc_zip( ...@@ -118,10 +137,12 @@ buf_buddy_alloc_zip(
ut_ad(buf_pool_mutex_own()); ut_ad(buf_pool_mutex_own());
ut_a(i < BUF_BUDDY_SIZES); ut_a(i < BUF_BUDDY_SIZES);
#if defined UNIV_DEBUG && !defined UNIV_DEBUG_VALGRIND #ifndef UNIV_DEBUG_VALGRIND
/* Valgrind would complain about accessing free memory. */ /* Valgrind would complain about accessing free memory. */
UT_LIST_VALIDATE(list, buf_page_t, buf_pool->zip_free[i]); ut_d(UT_LIST_VALIDATE(list, buf_page_t, buf_pool->zip_free[i],
#endif /* UNIV_DEBUG && !UNIV_DEBUG_VALGRIND */ ut_ad(buf_page_get_state(ut_list_node_313)
== BUF_BLOCK_ZIP_FREE)));
#endif /* !UNIV_DEBUG_VALGRIND */
bpage = UT_LIST_GET_FIRST(buf_pool->zip_free[i]); bpage = UT_LIST_GET_FIRST(buf_pool->zip_free[i]);
if (bpage) { if (bpage) {
...@@ -205,6 +226,7 @@ buf_buddy_block_register( ...@@ -205,6 +226,7 @@ buf_buddy_block_register(
const ulint fold = BUF_POOL_ZIP_FOLD(block); const ulint fold = BUF_POOL_ZIP_FOLD(block);
ut_ad(buf_pool_mutex_own()); ut_ad(buf_pool_mutex_own());
ut_ad(!mutex_own(&buf_pool_zip_mutex)); ut_ad(!mutex_own(&buf_pool_zip_mutex));
ut_ad(buf_block_get_state(block) == BUF_BLOCK_READY_FOR_USE);
buf_block_set_state(block, BUF_BLOCK_MEMORY); buf_block_set_state(block, BUF_BLOCK_MEMORY);
...@@ -246,10 +268,13 @@ buf_buddy_alloc_from( ...@@ -246,10 +268,13 @@ buf_buddy_alloc_from(
bpage = (buf_page_t*) ((byte*) buf + offs); bpage = (buf_page_t*) ((byte*) buf + offs);
ut_d(memset(bpage, j, BUF_BUDDY_LOW << j)); ut_d(memset(bpage, j, BUF_BUDDY_LOW << j));
bpage->state = BUF_BLOCK_ZIP_FREE; bpage->state = BUF_BLOCK_ZIP_FREE;
#if defined UNIV_DEBUG && !defined UNIV_DEBUG_VALGRIND #ifndef UNIV_DEBUG_VALGRIND
/* Valgrind would complain about accessing free memory. */ /* Valgrind would complain about accessing free memory. */
UT_LIST_VALIDATE(list, buf_page_t, buf_pool->zip_free[j]); ut_d(UT_LIST_VALIDATE(list, buf_page_t, buf_pool->zip_free[i],
#endif /* UNIV_DEBUG && !UNIV_DEBUG_VALGRIND */ ut_ad(buf_page_get_state(
ut_list_node_313)
== BUF_BLOCK_ZIP_FREE)));
#endif /* !UNIV_DEBUG_VALGRIND */
buf_buddy_add_to_free(bpage, j); buf_buddy_add_to_free(bpage, j);
} }
...@@ -489,7 +514,8 @@ buf_buddy_free_low( ...@@ -489,7 +514,8 @@ buf_buddy_free_low(
/*===============*/ /*===============*/
void* buf, /* in: block to be freed, must not be void* buf, /* in: block to be freed, must not be
pointed to by the buffer pool */ pointed to by the buffer pool */
ulint i) /* in: index of buf_pool->zip_free[] */ ulint i) /* in: index of buf_pool->zip_free[],
or BUF_BUDDY_SIZES */
{ {
buf_page_t* bpage; buf_page_t* bpage;
buf_page_t* buddy; buf_page_t* buddy;
...@@ -559,7 +585,9 @@ buddy_free2: ...@@ -559,7 +585,9 @@ buddy_free2:
#ifndef UNIV_DEBUG_VALGRIND #ifndef UNIV_DEBUG_VALGRIND
buddy_nonfree: buddy_nonfree:
/* Valgrind would complain about accessing free memory. */ /* Valgrind would complain about accessing free memory. */
ut_d(UT_LIST_VALIDATE(list, buf_page_t, buf_pool->zip_free[i])); ut_d(UT_LIST_VALIDATE(list, buf_page_t, buf_pool->zip_free[i],
ut_ad(buf_page_get_state(ut_list_node_313)
== BUF_BLOCK_ZIP_FREE)));
#endif /* UNIV_DEBUG_VALGRIND */ #endif /* UNIV_DEBUG_VALGRIND */
/* The buddy is not free. Is there a free block of this size? */ /* The buddy is not free. Is there a free block of this size? */
...@@ -585,21 +613,20 @@ buddy_nonfree: ...@@ -585,21 +613,20 @@ buddy_nonfree:
buddy = (buf_page_t*) buf_buddy_get(((byte*) bpage), buddy = (buf_page_t*) buf_buddy_get(((byte*) bpage),
BUF_BUDDY_LOW << i); BUF_BUDDY_LOW << i);
#if defined UNIV_DEBUG && !defined UNIV_DEBUG_VALGRIND #ifndef UNIV_DEBUG_VALGRIND
{ /* Valgrind would complain about accessing free memory. */
const buf_page_t* b;
/* The buddy must not be (completely) free, because /* The buddy must not be (completely) free, because we
we always recombine adjacent free blocks. always recombine adjacent free blocks.
(Parts of the buddy can be free in
buf_pool->zip_free[j] with j < i.)*/
for (b = UT_LIST_GET_FIRST(buf_pool->zip_free[i]);
b; b = UT_LIST_GET_NEXT(list, b)) {
ut_a(b != buddy); (Parts of the buddy can be free in
} buf_pool->zip_free[j] with j < i.) */
} ut_d(UT_LIST_VALIDATE(list, buf_page_t, buf_pool->zip_free[i],
#endif /* UNIV_DEBUG && !UNIV_DEBUG_VALGRIND */ ut_ad(buf_page_get_state(
ut_list_node_313)
== BUF_BLOCK_ZIP_FREE
&& ut_list_node_313 != buddy)));
#endif /* !UNIV_DEBUG_VALGRIND */
if (buf_buddy_relocate(buddy, buf, i)) { if (buf_buddy_relocate(buddy, buf, i)) {
......
This diff is collapsed.
/*****************************************************************************
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
The database buffer buf_pool flush algorithm The database buffer buf_pool flush algorithm
(c) 1995-2001 Innobase Oy
Created 11/11/1995 Heikki Tuuri Created 11/11/1995 Heikki Tuuri
*******************************************************/ *******************************************************/
...@@ -10,22 +26,22 @@ Created 11/11/1995 Heikki Tuuri ...@@ -10,22 +26,22 @@ Created 11/11/1995 Heikki Tuuri
#ifdef UNIV_NONINL #ifdef UNIV_NONINL
#include "buf0flu.ic" #include "buf0flu.ic"
#include "trx0sys.h"
#endif #endif
#include "buf0buf.h"
#include "srv0srv.h"
#include "page0zip.h"
#ifndef UNIV_HOTBACKUP
#include "ut0byte.h" #include "ut0byte.h"
#include "ut0lst.h" #include "ut0lst.h"
#include "page0page.h" #include "page0page.h"
#include "page0zip.h"
#include "fil0fil.h" #include "fil0fil.h"
#include "buf0buf.h"
#include "buf0lru.h" #include "buf0lru.h"
#include "buf0rea.h" #include "buf0rea.h"
#include "ibuf0ibuf.h" #include "ibuf0ibuf.h"
#include "log0log.h" #include "log0log.h"
#include "os0file.h" #include "os0file.h"
#include "trx0sys.h" #include "trx0sys.h"
#include "srv0srv.h"
#if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG #if defined UNIV_DEBUG || defined UNIV_BUF_DEBUG
/********************************************************************** /**********************************************************************
...@@ -377,7 +393,8 @@ buf_flush_remove( ...@@ -377,7 +393,8 @@ buf_flush_remove(
bpage->oldest_modification = 0; bpage->oldest_modification = 0;
ut_d(UT_LIST_VALIDATE(list, buf_page_t, buf_pool->flush_list)); ut_d(UT_LIST_VALIDATE(list, buf_page_t, buf_pool->flush_list,
ut_ad(ut_list_node_313->in_flush_list)));
} }
/*********************************************************************** /***********************************************************************
...@@ -780,6 +797,7 @@ try_again: ...@@ -780,6 +797,7 @@ try_again:
mutex_exit(&(trx_doublewrite->mutex)); mutex_exit(&(trx_doublewrite->mutex));
} }
#endif /* !UNIV_HOTBACKUP */
/************************************************************************ /************************************************************************
Initializes a page for writing to the tablespace. */ Initializes a page for writing to the tablespace. */
...@@ -859,6 +877,7 @@ buf_flush_init_for_writing( ...@@ -859,6 +877,7 @@ buf_flush_init_for_writing(
: BUF_NO_CHECKSUM_MAGIC); : BUF_NO_CHECKSUM_MAGIC);
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************ /************************************************************************
Does an asynchronous write of a buffer page. NOTE: in simulated aio and Does an asynchronous write of a buffer page. NOTE: in simulated aio and
also when the doublewrite buffer is used, we must call also when the doublewrite buffer is used, we must call
...@@ -1414,7 +1433,8 @@ buf_flush_validate_low(void) ...@@ -1414,7 +1433,8 @@ buf_flush_validate_low(void)
buf_page_t* bpage; buf_page_t* bpage;
const ib_rbt_node_t* rnode = NULL; const ib_rbt_node_t* rnode = NULL;
UT_LIST_VALIDATE(list, buf_page_t, buf_pool->flush_list); UT_LIST_VALIDATE(list, buf_page_t, buf_pool->flush_list,
ut_ad(ut_list_node_313->in_flush_list));
bpage = UT_LIST_GET_FIRST(buf_pool->flush_list); bpage = UT_LIST_GET_FIRST(buf_pool->flush_list);
...@@ -1471,3 +1491,4 @@ buf_flush_validate(void) ...@@ -1471,3 +1491,4 @@ buf_flush_validate(void)
return(ret); return(ret);
} }
#endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */ #endif /* UNIV_DEBUG || UNIV_BUF_DEBUG */
#endif /* !UNIV_HOTBACKUP */
/*****************************************************************************
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
The database buffer replacement algorithm The database buffer replacement algorithm
(c) 1995 Innobase Oy
Created 11/5/1995 Heikki Tuuri Created 11/5/1995 Heikki Tuuri
*******************************************************/ *******************************************************/
...@@ -1772,6 +1788,9 @@ buf_LRU_block_remove_hashed_page( ...@@ -1772,6 +1788,9 @@ buf_LRU_block_remove_hashed_page(
void* data = bpage->zip.data; void* data = bpage->zip.data;
bpage->zip.data = NULL; bpage->zip.data = NULL;
ut_ad(!bpage->in_free_list);
ut_ad(!bpage->in_flush_list);
ut_ad(!bpage->in_LRU_list);
mutex_exit(&((buf_block_t*) bpage)->mutex); mutex_exit(&((buf_block_t*) bpage)->mutex);
buf_pool_mutex_exit_forbid(); buf_pool_mutex_exit_forbid();
buf_buddy_free(data, page_zip_get_size(&bpage->zip)); buf_buddy_free(data, page_zip_get_size(&bpage->zip));
...@@ -1874,7 +1893,8 @@ buf_LRU_validate(void) ...@@ -1874,7 +1893,8 @@ buf_LRU_validate(void)
ut_a(old_len <= new_len + BUF_LRU_OLD_TOLERANCE); ut_a(old_len <= new_len + BUF_LRU_OLD_TOLERANCE);
} }
UT_LIST_VALIDATE(LRU, buf_page_t, buf_pool->LRU); UT_LIST_VALIDATE(LRU, buf_page_t, buf_pool->LRU,
ut_ad(ut_list_node_313->in_LRU_list));
bpage = UT_LIST_GET_FIRST(buf_pool->LRU); bpage = UT_LIST_GET_FIRST(buf_pool->LRU);
...@@ -1922,7 +1942,8 @@ buf_LRU_validate(void) ...@@ -1922,7 +1942,8 @@ buf_LRU_validate(void)
ut_a(buf_pool->LRU_old_len == old_len); ut_a(buf_pool->LRU_old_len == old_len);
} }
UT_LIST_VALIDATE(list, buf_page_t, buf_pool->free); UT_LIST_VALIDATE(list, buf_page_t, buf_pool->free,
ut_ad(ut_list_node_313->in_free_list));
for (bpage = UT_LIST_GET_FIRST(buf_pool->free); for (bpage = UT_LIST_GET_FIRST(buf_pool->free);
bpage != NULL; bpage != NULL;
...@@ -1931,7 +1952,9 @@ buf_LRU_validate(void) ...@@ -1931,7 +1952,9 @@ buf_LRU_validate(void)
ut_a(buf_page_get_state(bpage) == BUF_BLOCK_NOT_USED); ut_a(buf_page_get_state(bpage) == BUF_BLOCK_NOT_USED);
} }
UT_LIST_VALIDATE(unzip_LRU, buf_block_t, buf_pool->unzip_LRU); UT_LIST_VALIDATE(unzip_LRU, buf_block_t, buf_pool->unzip_LRU,
ut_ad(ut_list_node_313->in_unzip_LRU_list
&& ut_list_node_313->page.in_LRU_list));
for (block = UT_LIST_GET_FIRST(buf_pool->unzip_LRU); for (block = UT_LIST_GET_FIRST(buf_pool->unzip_LRU);
block; block;
......
/*****************************************************************************
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
The database buffer read The database buffer read
(c) 1995 Innobase Oy
Created 11/5/1995 Heikki Tuuri Created 11/5/1995 Heikki Tuuri
*******************************************************/ *******************************************************/
......
#! /bin/sh #! /bin/sh
#
# Copyright (c) 2006, 2009, Innobase Oy. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA
#
path=`dirname $0` path=`dirname $0`
. "$path/SETUP.sh" . "$path/SETUP.sh"
......
#! /bin/sh #! /bin/sh
#
# Copyright (c) 2005, 2009, Innobase Oy. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA
#
path=`dirname $0` path=`dirname $0`
. "$path/SETUP.sh" $@ --with-debug=full . "$path/SETUP.sh" $@ --with-debug=full
......
/*****************************************************************************
Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/************************************************************************ /************************************************************************
SQL data field and tuple SQL data field and tuple
(c) 1994-1996 Innobase Oy
Created 5/30/1994 Heikki Tuuri Created 5/30/1994 Heikki Tuuri
*************************************************************************/ *************************************************************************/
...@@ -12,6 +28,7 @@ Created 5/30/1994 Heikki Tuuri ...@@ -12,6 +28,7 @@ Created 5/30/1994 Heikki Tuuri
#include "data0data.ic" #include "data0data.ic"
#endif #endif
#ifndef UNIV_HOTBACKUP
#include "rem0rec.h" #include "rem0rec.h"
#include "rem0cmp.h" #include "rem0cmp.h"
#include "page0page.h" #include "page0page.h"
...@@ -20,6 +37,7 @@ Created 5/30/1994 Heikki Tuuri ...@@ -20,6 +37,7 @@ Created 5/30/1994 Heikki Tuuri
#include "btr0cur.h" #include "btr0cur.h"
#include <ctype.h> #include <ctype.h>
#endif /* !UNIV_HOTBACKUP */
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
/* data pointers of tuple fields are initialized to point here /* data pointers of tuple fields are initialized to point here
...@@ -32,6 +50,7 @@ UNIV_INTERN ulint data_dummy; ...@@ -32,6 +50,7 @@ UNIV_INTERN ulint data_dummy;
# endif /* !UNIV_DEBUG_VALGRIND */ # endif /* !UNIV_DEBUG_VALGRIND */
#endif /* UNIV_DEBUG */ #endif /* UNIV_DEBUG */
#ifndef UNIV_HOTBACKUP
/************************************************************************* /*************************************************************************
Tests if dfield data length and content is equal to the given. */ Tests if dfield data length and content is equal to the given. */
UNIV_INTERN UNIV_INTERN
...@@ -176,7 +195,9 @@ dump: ...@@ -176,7 +195,9 @@ dump:
return(TRUE); return(TRUE);
} }
#endif /* !UNIV_HOTBACKUP */
#ifdef UNIV_DEBUG
/************************************************************** /**************************************************************
Checks that a data field is typed. Asserts an error if not. */ Checks that a data field is typed. Asserts an error if not. */
UNIV_INTERN UNIV_INTERN
...@@ -222,7 +243,6 @@ dtuple_check_typed( ...@@ -222,7 +243,6 @@ dtuple_check_typed(
return(TRUE); return(TRUE);
} }
#ifdef UNIV_DEBUG
/************************************************************** /**************************************************************
Validates the consistency of a tuple which must be complete, i.e, Validates the consistency of a tuple which must be complete, i.e,
all fields must have been set. */ all fields must have been set. */
...@@ -275,6 +295,7 @@ dtuple_validate( ...@@ -275,6 +295,7 @@ dtuple_validate(
} }
#endif /* UNIV_DEBUG */ #endif /* UNIV_DEBUG */
#ifndef UNIV_HOTBACKUP
/***************************************************************** /*****************************************************************
Pretty prints a dfield value according to its data type. */ Pretty prints a dfield value according to its data type. */
UNIV_INTERN UNIV_INTERN
...@@ -740,3 +761,4 @@ dtuple_convert_back_big_rec( ...@@ -740,3 +761,4 @@ dtuple_convert_back_big_rec(
mem_heap_free(vector->heap); mem_heap_free(vector->heap);
} }
#endif /* !UNIV_HOTBACKUP */
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
Data types Data types
(c) 1996 Innobase Oy
Created 1/16/1996 Heikki Tuuri Created 1/16/1996 Heikki Tuuri
*******************************************************/ *******************************************************/
...@@ -12,26 +28,8 @@ Created 1/16/1996 Heikki Tuuri ...@@ -12,26 +28,8 @@ Created 1/16/1996 Heikki Tuuri
#include "data0type.ic" #include "data0type.ic"
#endif #endif
/********************************************************************** #ifndef UNIV_HOTBACKUP
This function is used to find the storage length in bytes of the first n # include "ha_prototypes.h"
characters for prefix indexes using a multibyte character set. The function
finds charset information and returns length of prefix_len characters in the
index field in bytes.
NOTE: the prototype of this function is copied from ha_innodb.cc! If you change
this function, you MUST change also the prototype here! */
UNIV_INTERN
ulint
innobase_get_at_most_n_mbchars(
/*===========================*/
/* out: number of bytes occupied by the first
n characters */
ulint charset_id, /* in: character set id */
ulint prefix_len, /* in: prefix length in bytes of the index
(this has to be divided by mbmaxlen to get the
number of CHARACTERS n in the prefix) */
ulint data_len, /* in: length of the string in bytes */
const char* str); /* in: character string */
/* At the database startup we store the default-charset collation number of /* At the database startup we store the default-charset collation number of
this MySQL installation to this global variable. If we have < 4.1.2 format this MySQL installation to this global variable. If we have < 4.1.2 format
...@@ -62,7 +60,6 @@ dtype_get_at_most_n_mbchars( ...@@ -62,7 +60,6 @@ dtype_get_at_most_n_mbchars(
const char* str) /* in: the string whose prefix const char* str) /* in: the string whose prefix
length is being determined */ length is being determined */
{ {
#ifndef UNIV_HOTBACKUP
ut_a(data_len != UNIV_SQL_NULL); ut_a(data_len != UNIV_SQL_NULL);
ut_ad(!mbmaxlen || !(prefix_len % mbmaxlen)); ut_ad(!mbmaxlen || !(prefix_len % mbmaxlen));
...@@ -80,13 +77,8 @@ dtype_get_at_most_n_mbchars( ...@@ -80,13 +77,8 @@ dtype_get_at_most_n_mbchars(
} }
return(data_len); return(data_len);
#else /* UNIV_HOTBACKUP */
/* This function depends on MySQL code that is not included in
InnoDB Hot Backup builds. Besides, this function should never
be called in InnoDB Hot Backup. */
ut_error;
#endif /* UNIV_HOTBACKUP */
} }
#endif /* UNIV_HOTBACKUP */
/************************************************************************* /*************************************************************************
Checks if a data main type is a string type. Also a BLOB is considered a Checks if a data main type is a string type. Also a BLOB is considered a
...@@ -186,11 +178,14 @@ dtype_validate( ...@@ -186,11 +178,14 @@ dtype_validate(
ut_a((type->prtype & DATA_MYSQL_TYPE_MASK) < DATA_N_SYS_COLS); ut_a((type->prtype & DATA_MYSQL_TYPE_MASK) < DATA_N_SYS_COLS);
} }
#ifndef UNIV_HOTBACKUP
ut_a(type->mbminlen <= type->mbmaxlen); ut_a(type->mbminlen <= type->mbmaxlen);
#endif /* !UNIV_HOTBACKUP */
return(TRUE); return(TRUE);
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************* /*************************************************************************
Prints a data type structure. */ Prints a data type structure. */
UNIV_INTERN UNIV_INTERN
...@@ -282,3 +277,4 @@ dtype_print( ...@@ -282,3 +277,4 @@ dtype_print(
fprintf(stderr, " len %lu", (ulong) len); fprintf(stderr, " len %lu", (ulong) len);
} }
#endif /* !UNIV_HOTBACKUP */
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
Data dictionary creation and booting Data dictionary creation and booting
(c) 1996 Innobase Oy
Created 4/18/1996 Heikki Tuuri Created 4/18/1996 Heikki Tuuri
*******************************************************/ *******************************************************/
...@@ -145,7 +161,7 @@ dict_hdr_create( ...@@ -145,7 +161,7 @@ dict_hdr_create(
/*--------------------------*/ /*--------------------------*/
root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE, root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE,
DICT_HDR_SPACE, 0, DICT_TABLES_ID, DICT_HDR_SPACE, 0, DICT_TABLES_ID,
srv_sys->dummy_ind1, mtr); dict_ind_redundant, mtr);
if (root_page_no == FIL_NULL) { if (root_page_no == FIL_NULL) {
return(FALSE); return(FALSE);
...@@ -156,7 +172,7 @@ dict_hdr_create( ...@@ -156,7 +172,7 @@ dict_hdr_create(
/*--------------------------*/ /*--------------------------*/
root_page_no = btr_create(DICT_UNIQUE, DICT_HDR_SPACE, 0, root_page_no = btr_create(DICT_UNIQUE, DICT_HDR_SPACE, 0,
DICT_TABLE_IDS_ID, DICT_TABLE_IDS_ID,
srv_sys->dummy_ind1, mtr); dict_ind_redundant, mtr);
if (root_page_no == FIL_NULL) { if (root_page_no == FIL_NULL) {
return(FALSE); return(FALSE);
...@@ -167,7 +183,7 @@ dict_hdr_create( ...@@ -167,7 +183,7 @@ dict_hdr_create(
/*--------------------------*/ /*--------------------------*/
root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE, root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE,
DICT_HDR_SPACE, 0, DICT_COLUMNS_ID, DICT_HDR_SPACE, 0, DICT_COLUMNS_ID,
srv_sys->dummy_ind1, mtr); dict_ind_redundant, mtr);
if (root_page_no == FIL_NULL) { if (root_page_no == FIL_NULL) {
return(FALSE); return(FALSE);
...@@ -178,7 +194,7 @@ dict_hdr_create( ...@@ -178,7 +194,7 @@ dict_hdr_create(
/*--------------------------*/ /*--------------------------*/
root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE, root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE,
DICT_HDR_SPACE, 0, DICT_INDEXES_ID, DICT_HDR_SPACE, 0, DICT_INDEXES_ID,
srv_sys->dummy_ind1, mtr); dict_ind_redundant, mtr);
if (root_page_no == FIL_NULL) { if (root_page_no == FIL_NULL) {
return(FALSE); return(FALSE);
...@@ -189,7 +205,7 @@ dict_hdr_create( ...@@ -189,7 +205,7 @@ dict_hdr_create(
/*--------------------------*/ /*--------------------------*/
root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE, root_page_no = btr_create(DICT_CLUSTERED | DICT_UNIQUE,
DICT_HDR_SPACE, 0, DICT_FIELDS_ID, DICT_HDR_SPACE, 0, DICT_FIELDS_ID,
srv_sys->dummy_ind1, mtr); dict_ind_redundant, mtr);
if (root_page_no == FIL_NULL) { if (root_page_no == FIL_NULL) {
return(FALSE); return(FALSE);
......
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
Database object creation Database object creation
(c) 1996 Innobase Oy
Created 1/8/1996 Heikki Tuuri Created 1/8/1996 Heikki Tuuri
*******************************************************/ *******************************************************/
......
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/********************************************************************** /**********************************************************************
Data dictionary system Data dictionary system
(c) 1996 Innobase Oy
Created 1/8/1996 Heikki Tuuri Created 1/8/1996 Heikki Tuuri
***********************************************************************/ ***********************************************************************/
...@@ -12,6 +28,12 @@ Created 1/8/1996 Heikki Tuuri ...@@ -12,6 +28,12 @@ Created 1/8/1996 Heikki Tuuri
#include "dict0dict.ic" #include "dict0dict.ic"
#endif #endif
/* dummy index for ROW_FORMAT=REDUNDANT supremum and infimum records */
dict_index_t* dict_ind_redundant;
/* dummy index for ROW_FORMAT=COMPACT supremum and infimum records */
dict_index_t* dict_ind_compact;
#ifndef UNIV_HOTBACKUP
#include "buf0buf.h" #include "buf0buf.h"
#include "data0type.h" #include "data0type.h"
#include "mach0data.h" #include "mach0data.h"
...@@ -29,10 +51,8 @@ Created 1/8/1996 Heikki Tuuri ...@@ -29,10 +51,8 @@ Created 1/8/1996 Heikki Tuuri
#include "que0que.h" #include "que0que.h"
#include "rem0cmp.h" #include "rem0cmp.h"
#include "row0merge.h" #include "row0merge.h"
#ifndef UNIV_HOTBACKUP #include "m_ctype.h" /* my_isspace() */
# include "m_ctype.h" /* my_isspace() */ #include "ha_prototypes.h" /* innobase_strcasecmp() */
# include "ha_prototypes.h" /* innobase_strcasecmp() */
#endif /* !UNIV_HOTBACKUP */
#include <ctype.h> #include <ctype.h>
...@@ -135,7 +155,6 @@ UNIV_INTERN FILE* dict_foreign_err_file = NULL; ...@@ -135,7 +155,6 @@ UNIV_INTERN FILE* dict_foreign_err_file = NULL;
/* mutex protecting the foreign and unique error buffers */ /* mutex protecting the foreign and unique error buffers */
UNIV_INTERN mutex_t dict_foreign_err_mutex; UNIV_INTERN mutex_t dict_foreign_err_mutex;
#ifndef UNIV_HOTBACKUP
/********************************************************************** /**********************************************************************
Makes all characters in a NUL-terminated UTF-8 string lower case. */ Makes all characters in a NUL-terminated UTF-8 string lower case. */
UNIV_INTERN UNIV_INTERN
...@@ -146,7 +165,6 @@ dict_casedn_str( ...@@ -146,7 +165,6 @@ dict_casedn_str(
{ {
innobase_casedn_str(a); innobase_casedn_str(a);
} }
#endif /* !UNIV_HOTBACKUP */
/************************************************************************ /************************************************************************
Checks if the database name in two table names is the same. */ Checks if the database name in two table names is the same. */
...@@ -243,6 +261,7 @@ dict_table_decrement_handle_count( ...@@ -243,6 +261,7 @@ dict_table_decrement_handle_count(
mutex_exit(&dict_sys->mutex); mutex_exit(&dict_sys->mutex);
} }
} }
#endif /* !UNIV_HOTBACKUP */
/************************************************************************** /**************************************************************************
Returns a column's name. */ Returns a column's name. */
...@@ -274,7 +293,7 @@ dict_table_get_col_name( ...@@ -274,7 +293,7 @@ dict_table_get_col_name(
return(s); return(s);
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************ /************************************************************************
Acquire the autoinc lock.*/ Acquire the autoinc lock.*/
UNIV_INTERN UNIV_INTERN
...@@ -373,6 +392,7 @@ dict_index_get_on_id_low( ...@@ -373,6 +392,7 @@ dict_index_get_on_id_low(
return(NULL); return(NULL);
} }
#endif /* !UNIV_HOTBACKUP */
/************************************************************************ /************************************************************************
Looks for column n in an index. */ Looks for column n in an index. */
...@@ -416,6 +436,7 @@ dict_index_get_nth_col_pos( ...@@ -416,6 +436,7 @@ dict_index_get_nth_col_pos(
return(ULINT_UNDEFINED); return(ULINT_UNDEFINED);
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************ /************************************************************************
Returns TRUE if the index contains a column or a prefix of that column. */ Returns TRUE if the index contains a column or a prefix of that column. */
UNIV_INTERN UNIV_INTERN
...@@ -656,6 +677,7 @@ dict_table_get( ...@@ -656,6 +677,7 @@ dict_table_get(
return(table); return(table);
} }
#endif /* !UNIV_HOTBACKUP */
/************************************************************************** /**************************************************************************
Adds system columns to a table object. */ Adds system columns to a table object. */
...@@ -703,6 +725,7 @@ dict_table_add_system_columns( ...@@ -703,6 +725,7 @@ dict_table_add_system_columns(
#endif #endif
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************** /**************************************************************************
Adds a table object to the dictionary cache. */ Adds a table object to the dictionary cache. */
UNIV_INTERN UNIV_INTERN
...@@ -1691,6 +1714,7 @@ found: ...@@ -1691,6 +1714,7 @@ found:
; ;
} }
} }
#endif /* !UNIV_HOTBACKUP */
/*********************************************************************** /***********************************************************************
Adds a column to index. */ Adds a column to index. */
...@@ -1738,6 +1762,7 @@ dict_index_add_col( ...@@ -1738,6 +1762,7 @@ dict_index_add_col(
} }
} }
#ifndef UNIV_HOTBACKUP
/*********************************************************************** /***********************************************************************
Copies fields contained in index2 to index1. */ Copies fields contained in index2 to index1. */
static static
...@@ -2177,7 +2202,6 @@ dict_foreign_remove_from_cache( ...@@ -2177,7 +2202,6 @@ dict_foreign_remove_from_cache(
dict_foreign_free(foreign); dict_foreign_free(foreign);
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************** /**************************************************************************
Looks for the foreign constraint from the foreign and referenced lists Looks for the foreign constraint from the foreign and referenced lists
of a table. */ of a table. */
...@@ -3845,7 +3869,6 @@ syntax_error: ...@@ -3845,7 +3869,6 @@ syntax_error:
return(DB_CANNOT_DROP_CONSTRAINT); return(DB_CANNOT_DROP_CONSTRAINT);
} }
#endif /* UNIV_HOTBACKUP */
/*==================== END OF FOREIGN KEY PROCESSING ====================*/ /*==================== END OF FOREIGN KEY PROCESSING ====================*/
...@@ -4604,7 +4627,43 @@ dict_index_name_print( ...@@ -4604,7 +4627,43 @@ dict_index_name_print(
fputs(" of table ", file); fputs(" of table ", file);
ut_print_name(file, trx, TRUE, index->table_name); ut_print_name(file, trx, TRUE, index->table_name);
} }
#endif /* !UNIV_HOTBACKUP */
/**************************************************************************
Inits dict_ind_redundant and dict_ind_compact. */
UNIV_INTERN
void
dict_ind_init(void)
/*===============*/
{
dict_table_t* table;
/* create dummy table and index for REDUNDANT infimum and supremum */
table = dict_mem_table_create("SYS_DUMMY1", DICT_HDR_SPACE, 1, 0);
dict_mem_table_add_col(table, NULL, NULL, DATA_CHAR,
DATA_ENGLISH | DATA_NOT_NULL, 8);
dict_ind_redundant = dict_mem_index_create("SYS_DUMMY1", "SYS_DUMMY1",
DICT_HDR_SPACE, 0, 1);
dict_index_add_col(dict_ind_redundant, table,
dict_table_get_nth_col(table, 0), 0);
dict_ind_redundant->table = table;
/* create dummy table and index for COMPACT infimum and supremum */
table = dict_mem_table_create("SYS_DUMMY2",
DICT_HDR_SPACE, 1, DICT_TF_COMPACT);
dict_mem_table_add_col(table, NULL, NULL, DATA_CHAR,
DATA_ENGLISH | DATA_NOT_NULL, 8);
dict_ind_compact = dict_mem_index_create("SYS_DUMMY2", "SYS_DUMMY2",
DICT_HDR_SPACE, 0, 1);
dict_index_add_col(dict_ind_compact, table,
dict_table_get_nth_col(table, 0), 0);
dict_ind_compact->table = table;
/* avoid ut_ad(index->cached) in dict_index_get_n_unique_in_tree */
dict_ind_redundant->cached = dict_ind_compact->cached = TRUE;
}
#ifndef UNIV_HOTBACKUP
/************************************************************************** /**************************************************************************
Get index by name */ Get index by name */
UNIV_INTERN UNIV_INTERN
...@@ -4729,3 +4788,4 @@ dict_table_check_for_dup_indexes( ...@@ -4729,3 +4788,4 @@ dict_table_check_for_dup_indexes(
} }
} }
#endif /* UNIV_DEBUG */ #endif /* UNIV_DEBUG */
#endif /* !UNIV_HOTBACKUP */
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
Loads to the memory cache database object definitions Loads to the memory cache database object definitions
from dictionary tables from dictionary tables
(c) 1996 Innobase Oy
Created 4/24/1996 Heikki Tuuri Created 4/24/1996 Heikki Tuuri
*******************************************************/ *******************************************************/
......
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/********************************************************************** /**********************************************************************
Data dictionary memory object creation Data dictionary memory object creation
(c) 1996 Innobase Oy
Created 1/8/1996 Heikki Tuuri Created 1/8/1996 Heikki Tuuri
***********************************************************************/ ***********************************************************************/
...@@ -16,7 +32,9 @@ Created 1/8/1996 Heikki Tuuri ...@@ -16,7 +32,9 @@ Created 1/8/1996 Heikki Tuuri
#include "data0type.h" #include "data0type.h"
#include "mach0data.h" #include "mach0data.h"
#include "dict0dict.h" #include "dict0dict.h"
#include "lock0lock.h" #ifndef UNIV_HOTBACKUP
# include "lock0lock.h"
#endif /* !UNIV_HOTBACKUP */
#define DICT_HEAP_SIZE 100 /* initial memory heap size when #define DICT_HEAP_SIZE 100 /* initial memory heap size when
creating a table or index object */ creating a table or index object */
...@@ -56,6 +74,7 @@ dict_mem_table_create( ...@@ -56,6 +74,7 @@ dict_mem_table_create(
table->cols = mem_heap_alloc(heap, (n_cols + DATA_N_SYS_COLS) table->cols = mem_heap_alloc(heap, (n_cols + DATA_N_SYS_COLS)
* sizeof(dict_col_t)); * sizeof(dict_col_t));
#ifndef UNIV_HOTBACKUP
table->autoinc_lock = mem_heap_alloc(heap, lock_get_size()); table->autoinc_lock = mem_heap_alloc(heap, lock_get_size());
mutex_create(&table->autoinc_mutex, SYNC_DICT_AUTOINC_MUTEX); mutex_create(&table->autoinc_mutex, SYNC_DICT_AUTOINC_MUTEX);
...@@ -65,10 +84,9 @@ dict_mem_table_create( ...@@ -65,10 +84,9 @@ dict_mem_table_create(
/* The number of transactions that are either waiting on the /* The number of transactions that are either waiting on the
AUTOINC lock or have been granted the lock. */ AUTOINC lock or have been granted the lock. */
table->n_waiting_or_granted_auto_inc_locks = 0; table->n_waiting_or_granted_auto_inc_locks = 0;
#endif /* !UNIV_HOTBACKUP */
#ifdef UNIV_DEBUG ut_d(table->magic_n = DICT_TABLE_MAGIC_N);
table->magic_n = DICT_TABLE_MAGIC_N;
#endif /* UNIV_DEBUG */
return(table); return(table);
} }
...@@ -150,8 +168,10 @@ dict_mem_table_add_col( ...@@ -150,8 +168,10 @@ dict_mem_table_add_col(
ulint len) /* in: precision */ ulint len) /* in: precision */
{ {
dict_col_t* col; dict_col_t* col;
#ifndef UNIV_HOTBACKUP
ulint mbminlen; ulint mbminlen;
ulint mbmaxlen; ulint mbmaxlen;
#endif /* !UNIV_HOTBACKUP */
ulint i; ulint i;
ut_ad(table); ut_ad(table);
...@@ -183,10 +203,12 @@ dict_mem_table_add_col( ...@@ -183,10 +203,12 @@ dict_mem_table_add_col(
col->prtype = (unsigned int) prtype; col->prtype = (unsigned int) prtype;
col->len = (unsigned int) len; col->len = (unsigned int) len;
#ifndef UNIV_HOTBACKUP
dtype_get_mblen(mtype, prtype, &mbminlen, &mbmaxlen); dtype_get_mblen(mtype, prtype, &mbminlen, &mbmaxlen);
col->mbminlen = (unsigned int) mbminlen; col->mbminlen = (unsigned int) mbminlen;
col->mbmaxlen = (unsigned int) mbmaxlen; col->mbmaxlen = (unsigned int) mbmaxlen;
#endif /* !UNIV_HOTBACKUP */
} }
/************************************************************************** /**************************************************************************
...@@ -216,7 +238,9 @@ dict_mem_index_create( ...@@ -216,7 +238,9 @@ dict_mem_index_create(
index->heap = heap; index->heap = heap;
index->type = type; index->type = type;
#ifndef UNIV_HOTBACKUP
index->space = (unsigned int) space; index->space = (unsigned int) space;
#endif /* !UNIV_HOTBACKUP */
index->name = mem_heap_strdup(heap, index_name); index->name = mem_heap_strdup(heap, index_name);
index->table_name = table_name; index->table_name = table_name;
index->n_fields = (unsigned int) n_fields; index->n_fields = (unsigned int) n_fields;
......
/*****************************************************************************
Copyright (c) 1996, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
The dynamically allocated array The dynamically allocated array
(c) 1996 Innobase Oy
Created 2/5/1996 Heikki Tuuri Created 2/5/1996 Heikki Tuuri
*******************************************************/ *******************************************************/
......
/*****************************************************************************
Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
SQL evaluator: evaluates simple data structures, like expressions, in SQL evaluator: evaluates simple data structures, like expressions, in
a query graph a query graph
(c) 1997 Innobase Oy
Created 12/29/1997 Heikki Tuuri Created 12/29/1997 Heikki Tuuri
*******************************************************/ *******************************************************/
......
/*****************************************************************************
Copyright (c) 1998, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
Executes SQL stored procedures and their control structures Executes SQL stored procedures and their control structures
(c) 1998 Innobase Oy
Created 1/20/1998 Heikki Tuuri Created 1/20/1998 Heikki Tuuri
*******************************************************/ *******************************************************/
......
This diff is collapsed.
/*****************************************************************************
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/********************************************************************** /**********************************************************************
File space management File space management
(c) 1995 Innobase Oy
Created 11/29/1995 Heikki Tuuri Created 11/29/1995 Heikki Tuuri
***********************************************************************/ ***********************************************************************/
...@@ -14,18 +30,23 @@ Created 11/29/1995 Heikki Tuuri ...@@ -14,18 +30,23 @@ Created 11/29/1995 Heikki Tuuri
#include "buf0buf.h" #include "buf0buf.h"
#include "fil0fil.h" #include "fil0fil.h"
#include "sync0sync.h"
#include "mtr0log.h" #include "mtr0log.h"
#include "fut0fut.h"
#include "ut0byte.h" #include "ut0byte.h"
#include "srv0srv.h" #include "page0page.h"
#include "page0zip.h" #include "page0zip.h"
#include "ibuf0ibuf.h" #ifdef UNIV_HOTBACKUP
#include "btr0btr.h" # include "fut0lst.h"
#include "btr0sea.h" #else /* UNIV_HOTBACKUP */
#include "dict0boot.h" # include "sync0sync.h"
# include "fut0fut.h"
# include "srv0srv.h"
# include "ibuf0ibuf.h"
# include "btr0btr.h"
# include "btr0sea.h"
# include "dict0boot.h"
# include "log0log.h"
#endif /* UNIV_HOTBACKUP */
#include "dict0mem.h" #include "dict0mem.h"
#include "log0log.h"
#define FSP_HEADER_OFFSET FIL_PAGE_DATA /* Offset of the space header #define FSP_HEADER_OFFSET FIL_PAGE_DATA /* Offset of the space header
...@@ -209,6 +230,7 @@ the extent are free and which contain old tuple version to clean. */ ...@@ -209,6 +230,7 @@ the extent are free and which contain old tuple version to clean. */
/* Offset of the descriptor array on a descriptor page */ /* Offset of the descriptor array on a descriptor page */
#define XDES_ARR_OFFSET (FSP_HEADER_OFFSET + FSP_HEADER_SIZE) #define XDES_ARR_OFFSET (FSP_HEADER_OFFSET + FSP_HEADER_SIZE)
#ifndef UNIV_HOTBACKUP
/************************************************************************** /**************************************************************************
Returns an extent to the free list of a space. */ Returns an extent to the free list of a space. */
static static
...@@ -309,7 +331,7 @@ fseg_alloc_free_page_low( ...@@ -309,7 +331,7 @@ fseg_alloc_free_page_low(
direction they go alphabetically: FSP_DOWN, direction they go alphabetically: FSP_DOWN,
FSP_UP, FSP_NO_DIR */ FSP_UP, FSP_NO_DIR */
mtr_t* mtr); /* in: mtr handle */ mtr_t* mtr); /* in: mtr handle */
#endif /* !UNIV_HOTBACKUP */
/************************************************************************** /**************************************************************************
Reads the file space size stored in the header page. */ Reads the file space size stored in the header page. */
...@@ -323,6 +345,7 @@ fsp_get_size_low( ...@@ -323,6 +345,7 @@ fsp_get_size_low(
return(mach_read_from_4(page + FSP_HEADER_OFFSET + FSP_SIZE)); return(mach_read_from_4(page + FSP_HEADER_OFFSET + FSP_SIZE));
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************** /**************************************************************************
Gets a pointer to the space header and x-locks its page. */ Gets a pointer to the space header and x-locks its page. */
UNIV_INLINE UNIV_INLINE
...@@ -813,6 +836,7 @@ xdes_get_offset( ...@@ -813,6 +836,7 @@ xdes_get_offset(
+ ((page_offset(descr) - XDES_ARR_OFFSET) / XDES_SIZE) + ((page_offset(descr) - XDES_ARR_OFFSET) / XDES_SIZE)
* FSP_EXTENT_SIZE); * FSP_EXTENT_SIZE);
} }
#endif /* !UNIV_HOTBACKUP */
/*************************************************************** /***************************************************************
Inits a file page whose prior contents should be ignored. */ Inits a file page whose prior contents should be ignored. */
...@@ -825,7 +849,9 @@ fsp_init_file_page_low( ...@@ -825,7 +849,9 @@ fsp_init_file_page_low(
page_t* page = buf_block_get_frame(block); page_t* page = buf_block_get_frame(block);
page_zip_des_t* page_zip= buf_block_get_page_zip(block); page_zip_des_t* page_zip= buf_block_get_page_zip(block);
#ifndef UNIV_HOTBACKUP
block->check_index_page_at_flush = FALSE; block->check_index_page_at_flush = FALSE;
#endif /* !UNIV_HOTBACKUP */
if (UNIV_LIKELY_NULL(page_zip)) { if (UNIV_LIKELY_NULL(page_zip)) {
memset(page, 0, UNIV_PAGE_SIZE); memset(page, 0, UNIV_PAGE_SIZE);
...@@ -852,6 +878,7 @@ fsp_init_file_page_low( ...@@ -852,6 +878,7 @@ fsp_init_file_page_low(
memset(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM, 0, 8); memset(page + UNIV_PAGE_SIZE - FIL_PAGE_END_LSN_OLD_CHKSUM, 0, 8);
} }
#ifndef UNIV_HOTBACKUP
/*************************************************************** /***************************************************************
Inits a file page whose prior contents should be ignored. */ Inits a file page whose prior contents should be ignored. */
static static
...@@ -866,6 +893,7 @@ fsp_init_file_page( ...@@ -866,6 +893,7 @@ fsp_init_file_page(
mlog_write_initial_log_record(buf_block_get_frame(block), mlog_write_initial_log_record(buf_block_get_frame(block),
MLOG_INIT_FILE_PAGE, mtr); MLOG_INIT_FILE_PAGE, mtr);
} }
#endif /* !UNIV_HOTBACKUP */
/*************************************************************** /***************************************************************
Parses a redo log record of a file page init. */ Parses a redo log record of a file page init. */
...@@ -922,6 +950,7 @@ fsp_header_init_fields( ...@@ -922,6 +950,7 @@ fsp_header_init_fields(
flags); flags);
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************** /**************************************************************************
Initializes the space header of a new created space and creates also the Initializes the space header of a new created space and creates also the
insert buffer tree root if space == 0. */ insert buffer tree root if space == 0. */
...@@ -978,11 +1007,12 @@ fsp_header_init( ...@@ -978,11 +1007,12 @@ fsp_header_init(
fsp_fill_free_list(FALSE, space, header, mtr); fsp_fill_free_list(FALSE, space, header, mtr);
btr_create(DICT_CLUSTERED | DICT_UNIVERSAL | DICT_IBUF, btr_create(DICT_CLUSTERED | DICT_UNIVERSAL | DICT_IBUF,
0, 0, ut_dulint_add(DICT_IBUF_ID_MIN, space), 0, 0, ut_dulint_add(DICT_IBUF_ID_MIN, space),
srv_sys->dummy_ind1, mtr); dict_ind_redundant, mtr);
} else { } else {
fsp_fill_free_list(TRUE, space, header, mtr); fsp_fill_free_list(TRUE, space, header, mtr);
} }
} }
#endif /* !UNIV_HOTBACKUP */
/************************************************************************** /**************************************************************************
Reads the space id from the first page of a tablespace. */ Reads the space id from the first page of a tablespace. */
...@@ -1041,6 +1071,7 @@ fsp_header_get_zip_size( ...@@ -1041,6 +1071,7 @@ fsp_header_get_zip_size(
return(dict_table_flags_to_zip_size(flags)); return(dict_table_flags_to_zip_size(flags));
} }
#ifndef UNIV_HOTBACKUP
/************************************************************************** /**************************************************************************
Increases the space size field of a space. */ Increases the space size field of a space. */
UNIV_INTERN UNIV_INTERN
...@@ -4266,3 +4297,4 @@ fsp_print( ...@@ -4266,3 +4297,4 @@ fsp_print(
fprintf(stderr, "NUMBER of file segments: %lu\n", (ulong) n_segs); fprintf(stderr, "NUMBER of file segments: %lu\n", (ulong) n_segs);
} }
#endif /* !UNIV_HOTBACKUP */
/*****************************************************************************
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/********************************************************************** /**********************************************************************
File-based utilities File-based utilities
(c) 1995 Innobase Oy
Created 12/13/1995 Heikki Tuuri Created 12/13/1995 Heikki Tuuri
***********************************************************************/ ***********************************************************************/
......
/*****************************************************************************
Copyright (c) 1995, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/********************************************************************** /**********************************************************************
File-based list utilities File-based list utilities
(c) 1995 Innobase Oy
Created 11/28/1995 Heikki Tuuri Created 11/28/1995 Heikki Tuuri
***********************************************************************/ ***********************************************************************/
......
/*****************************************************************************
Copyright (c) 1994, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/************************************************************************ /************************************************************************
The hash table with external chains The hash table with external chains
(c) 1994-1997 Innobase Oy
Created 8/22/1994 Heikki Tuuri Created 8/22/1994 Heikki Tuuri
*************************************************************************/ *************************************************************************/
...@@ -36,12 +52,16 @@ ha_create_func( ...@@ -36,12 +52,16 @@ ha_create_func(
hash table: must be a power of 2, or 0 */ hash table: must be a power of 2, or 0 */
{ {
hash_table_t* table; hash_table_t* table;
#ifndef UNIV_HOTBACKUP
ulint i; ulint i;
#endif /* !UNIV_HOTBACKUP */
table = hash_create(n); table = hash_create(n);
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
# ifndef UNIV_HOTBACKUP
table->adaptive = TRUE; table->adaptive = TRUE;
# endif /* !UNIV_HOTBACKUP */
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
/* Creating MEM_HEAP_BTR_SEARCH type heaps can potentially fail, /* Creating MEM_HEAP_BTR_SEARCH type heaps can potentially fail,
but in practise it never should in this case, hence the asserts. */ but in practise it never should in this case, hence the asserts. */
...@@ -54,6 +74,7 @@ ha_create_func( ...@@ -54,6 +74,7 @@ ha_create_func(
return(table); return(table);
} }
#ifndef UNIV_HOTBACKUP
hash_create_mutexes(table, n_mutexes, mutex_level); hash_create_mutexes(table, n_mutexes, mutex_level);
table->heaps = mem_alloc(n_mutexes * sizeof(void*)); table->heaps = mem_alloc(n_mutexes * sizeof(void*));
...@@ -62,6 +83,7 @@ ha_create_func( ...@@ -62,6 +83,7 @@ ha_create_func(
table->heaps[i] = mem_heap_create_in_btr_search(4096); table->heaps[i] = mem_heap_create_in_btr_search(4096);
ut_a(table->heaps[i]); ut_a(table->heaps[i]);
} }
#endif /* !UNIV_HOTBACKUP */
return(table); return(table);
} }
...@@ -81,12 +103,14 @@ ha_clear( ...@@ -81,12 +103,14 @@ ha_clear(
ut_ad(rw_lock_own(&btr_search_latch, RW_LOCK_EXCLUSIVE)); ut_ad(rw_lock_own(&btr_search_latch, RW_LOCK_EXCLUSIVE));
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
#ifndef UNIV_HOTBACKUP
/* Free the memory heaps. */ /* Free the memory heaps. */
n = table->n_mutexes; n = table->n_mutexes;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
mem_heap_free(table->heaps[i]); mem_heap_free(table->heaps[i]);
} }
#endif /* !UNIV_HOTBACKUP */
/* Clear the hash table. */ /* Clear the hash table. */
n = hash_get_n_cells(table); n = hash_get_n_cells(table);
...@@ -125,7 +149,7 @@ ha_insert_for_fold_func( ...@@ -125,7 +149,7 @@ ha_insert_for_fold_func(
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
ut_a(block->frame == page_align(data)); ut_a(block->frame == page_align(data));
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold))); ASSERT_HASH_MUTEX_OWN(table, fold);
hash = hash_calc_hash(fold, table); hash = hash_calc_hash(fold, table);
...@@ -136,6 +160,7 @@ ha_insert_for_fold_func( ...@@ -136,6 +160,7 @@ ha_insert_for_fold_func(
while (prev_node != NULL) { while (prev_node != NULL) {
if (prev_node->fold == fold) { if (prev_node->fold == fold) {
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
# ifndef UNIV_HOTBACKUP
if (table->adaptive) { if (table->adaptive) {
buf_block_t* prev_block = prev_node->block; buf_block_t* prev_block = prev_node->block;
ut_a(prev_block->frame ut_a(prev_block->frame
...@@ -144,6 +169,7 @@ ha_insert_for_fold_func( ...@@ -144,6 +169,7 @@ ha_insert_for_fold_func(
prev_block->n_pointers--; prev_block->n_pointers--;
block->n_pointers++; block->n_pointers++;
} }
# endif /* !UNIV_HOTBACKUP */
prev_node->block = block; prev_node->block = block;
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
...@@ -171,10 +197,13 @@ ha_insert_for_fold_func( ...@@ -171,10 +197,13 @@ ha_insert_for_fold_func(
ha_node_set_data(node, block, data); ha_node_set_data(node, block, data);
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
# ifndef UNIV_HOTBACKUP
if (table->adaptive) { if (table->adaptive) {
block->n_pointers++; block->n_pointers++;
} }
# endif /* !UNIV_HOTBACKUP */
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
node->fold = fold; node->fold = fold;
node->next = NULL; node->next = NULL;
...@@ -208,12 +237,15 @@ ha_delete_hash_node( ...@@ -208,12 +237,15 @@ ha_delete_hash_node(
ha_node_t* del_node) /* in: node to be deleted */ ha_node_t* del_node) /* in: node to be deleted */
{ {
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
# ifndef UNIV_HOTBACKUP
if (table->adaptive) { if (table->adaptive) {
ut_a(del_node->block->frame = page_align(del_node->data)); ut_a(del_node->block->frame = page_align(del_node->data));
ut_a(del_node->block->n_pointers > 0); ut_a(del_node->block->n_pointers > 0);
del_node->block->n_pointers--; del_node->block->n_pointers--;
} }
# endif /* !UNIV_HOTBACKUP */
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
HASH_DELETE_AND_COMPACT(ha_node_t, next, table, del_node); HASH_DELETE_AND_COMPACT(ha_node_t, next, table, del_node);
} }
...@@ -230,7 +262,7 @@ ha_delete( ...@@ -230,7 +262,7 @@ ha_delete(
{ {
ha_node_t* node; ha_node_t* node;
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold))); ASSERT_HASH_MUTEX_OWN(table, fold);
node = ha_search_with_data(table, fold, data); node = ha_search_with_data(table, fold, data);
...@@ -256,7 +288,7 @@ ha_search_and_update_if_found_func( ...@@ -256,7 +288,7 @@ ha_search_and_update_if_found_func(
{ {
ha_node_t* node; ha_node_t* node;
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold))); ASSERT_HASH_MUTEX_OWN(table, fold);
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
ut_a(new_block->frame == page_align(new_data)); ut_a(new_block->frame == page_align(new_data));
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
...@@ -265,11 +297,13 @@ ha_search_and_update_if_found_func( ...@@ -265,11 +297,13 @@ ha_search_and_update_if_found_func(
if (node) { if (node) {
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG #if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
# ifndef UNIV_HOTBACKUP
if (table->adaptive) { if (table->adaptive) {
ut_a(node->block->n_pointers > 0); ut_a(node->block->n_pointers > 0);
node->block->n_pointers--; node->block->n_pointers--;
new_block->n_pointers++; new_block->n_pointers++;
} }
# endif /* !UNIV_HOTBACKUP */
node->block = new_block; node->block = new_block;
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */ #endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
...@@ -277,6 +311,7 @@ ha_search_and_update_if_found_func( ...@@ -277,6 +311,7 @@ ha_search_and_update_if_found_func(
} }
} }
#ifndef UNIV_HOTBACKUP
/********************************************************************* /*********************************************************************
Removes from the chain determined by fold all nodes whose data pointer Removes from the chain determined by fold all nodes whose data pointer
points to the page given. */ points to the page given. */
...@@ -290,7 +325,7 @@ ha_remove_all_nodes_to_page( ...@@ -290,7 +325,7 @@ ha_remove_all_nodes_to_page(
{ {
ha_node_t* node; ha_node_t* node;
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold))); ASSERT_HASH_MUTEX_OWN(table, fold);
node = ha_chain_get_first(table, fold); node = ha_chain_get_first(table, fold);
...@@ -424,3 +459,4 @@ builds, see http://bugs.mysql.com/36941 */ ...@@ -424,3 +459,4 @@ builds, see http://bugs.mysql.com/36941 */
(ulong) n_bufs); (ulong) n_bufs);
} }
} }
#endif /* !UNIV_HOTBACKUP */
/*****************************************************************************
Copyright (c) 2007, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
Hash storage. Hash storage.
Provides a data structure that stores chunks of data in Provides a data structure that stores chunks of data in
its own storage, avoiding duplicates. its own storage, avoiding duplicates.
(c) 2007 Innobase Oy
Created September 22, 2007 Vasil Dimov Created September 22, 2007 Vasil Dimov
*******************************************************/ *******************************************************/
......
/*****************************************************************************
Copyright (c) 1997, 2009, Innobase Oy. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place, Suite 330, Boston, MA 02111-1307 USA
*****************************************************************************/
/****************************************************** /******************************************************
The simple hash table utility The simple hash table utility
(c) 1997 Innobase Oy
Created 5/20/1997 Heikki Tuuri Created 5/20/1997 Heikki Tuuri
*******************************************************/ *******************************************************/
...@@ -13,6 +29,7 @@ Created 5/20/1997 Heikki Tuuri ...@@ -13,6 +29,7 @@ Created 5/20/1997 Heikki Tuuri
#include "mem0mem.h" #include "mem0mem.h"
#ifndef UNIV_HOTBACKUP
/**************************************************************** /****************************************************************
Reserves the mutex for a fold value in a hash table. */ Reserves the mutex for a fold value in a hash table. */
UNIV_INTERN UNIV_INTERN
...@@ -68,6 +85,7 @@ hash_mutex_exit_all( ...@@ -68,6 +85,7 @@ hash_mutex_exit_all(
mutex_exit(table->mutexes + i); mutex_exit(table->mutexes + i);
} }
} }
#endif /* !UNIV_HOTBACKUP */
/***************************************************************** /*****************************************************************
Creates a hash table with >= n array cells. The actual number of cells is Creates a hash table with >= n array cells. The actual number of cells is
...@@ -89,14 +107,16 @@ hash_create( ...@@ -89,14 +107,16 @@ hash_create(
array = ut_malloc(sizeof(hash_cell_t) * prime); array = ut_malloc(sizeof(hash_cell_t) * prime);
#if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
table->adaptive = FALSE;
#endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
table->array = array; table->array = array;
table->n_cells = prime; table->n_cells = prime;
#ifndef UNIV_HOTBACKUP
# if defined UNIV_AHI_DEBUG || defined UNIV_DEBUG
table->adaptive = FALSE;
# endif /* UNIV_AHI_DEBUG || UNIV_DEBUG */
table->n_mutexes = 0; table->n_mutexes = 0;
table->mutexes = NULL; table->mutexes = NULL;
table->heaps = NULL; table->heaps = NULL;
#endif /* !UNIV_HOTBACKUP */
table->heap = NULL; table->heap = NULL;
table->magic_n = HASH_TABLE_MAGIC_N; table->magic_n = HASH_TABLE_MAGIC_N;
...@@ -114,12 +134,15 @@ hash_table_free( ...@@ -114,12 +134,15 @@ hash_table_free(
/*============*/ /*============*/
hash_table_t* table) /* in, own: hash table */ hash_table_t* table) /* in, own: hash table */
{ {
#ifndef UNIV_HOTBACKUP
ut_a(table->mutexes == NULL); ut_a(table->mutexes == NULL);
#endif /* !UNIV_HOTBACKUP */
ut_free(table->array); ut_free(table->array);
mem_free(table); mem_free(table);
} }
#ifndef UNIV_HOTBACKUP
/***************************************************************** /*****************************************************************
Creates a mutex array to protect a hash table. */ Creates a mutex array to protect a hash table. */
UNIV_INTERN UNIV_INTERN
...@@ -147,3 +170,4 @@ hash_create_mutexes_func( ...@@ -147,3 +170,4 @@ hash_create_mutexes_func(
table->n_mutexes = n_mutexes; table->n_mutexes = n_mutexes;
} }
#endif /* !UNIV_HOTBACKUP */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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