• unknown's avatar
    Applied innodb-5.1 snapshots ss799 and ss854 · bf2f50d3
    unknown authored
    Bugs fixed:
    - Bug #20877: InnoDB data dictionary memory footprint is too big
    - Bug #13544: Second delete of same row in transaction illustrates non-optimal locking
    - Bug #20791: valgrind errors in InnoDB
    
    
    storage/innobase/btr/btr0btr.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r823:
      Minor cleanup related to Bug #20877.
      
      btr_print_recursive(): Replace tree->tree_indexes with tree->index.
      This should have been done in r453.
      
      univ.i: Add UNIV_BTR_PRINT.
      
      rw_lock_t: Reduce writer_is_wait_ex to a bit and move it close to
      other bitfields.  Change the types to unsigned, in case ulint or ibool
      bitfields will not work.
      
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/btr/btr0cur.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r830:
      page_align(ptr): New utility function to replace
      ut_align_down(ptr, UNIV_PAGE_SIZE) calls.
      
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/btr/btr0pcur.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r830:
      page_align(ptr): New utility function to replace
      ut_align_down(ptr, UNIV_PAGE_SIZE) calls.
      
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/btr/btr0sea.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r824:
      Reduce the size of btr_search_t from 13 machine words to 7.  This
      structure is reserved for every index in the data dictionary cache.
      (Bug #20877)
      
      We could shrink the structure further to three 32-bit words or two
      64-bit words by turning the remaining fields to bit-fields.
      Unfortunately, the fields are not protected by any mutex, and thus we
      would better keep each field aligned to a machine word.
      
      btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side".
      Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename
      some local variables and function parameters from "ulint side" to
      "ibool left_side".
      
      btr_search_t: Remove the unused fields last_search, n_direction, direction,
      and modify_clock.  Remove the unused constants BTR_SEA_NO_DIRECTION,
      BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC.
      
      btr_search_t: Remove magic_n unless #defined UNIV_DEBUG.  Turn an assertion
      about the magic number into a debug assertion.
      
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/buf/buf0buf.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r824:
      Reduce the size of btr_search_t from 13 machine words to 7.  This
      structure is reserved for every index in the data dictionary cache.
      (Bug #20877)
      
      We could shrink the structure further to three 32-bit words or two
      64-bit words by turning the remaining fields to bit-fields.
      Unfortunately, the fields are not protected by any mutex, and thus we
      would better keep each field aligned to a machine word.
      
      btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side".
      Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename
      some local variables and function parameters from "ulint side" to
      "ibool left_side".
      
      btr_search_t: Remove the unused fields last_search, n_direction, direction,
      and modify_clock.  Remove the unused constants BTR_SEA_NO_DIRECTION,
      BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC.
      
      btr_search_t: Remove magic_n unless #defined UNIV_DEBUG.  Turn an assertion
      about the magic number into a debug assertion.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/buf/buf0flu.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/buf/buf0lru.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/buf/buf0rea.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/data/data0data.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/data/data0type.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
    storage/innobase/dict/dict0boot.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r827:
      Make dict_index_find_cols() always succeed.
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/dict/dict0crea.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r827:
      Make dict_index_find_cols() always succeed.
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r833:
      Tweak the bit-field definitions introduced since r813 to address Bug #20877.
      
      rw_lock_t: Do not make writer_is_wait_ex a bit-field.  There are no fields
      yet that could be fused to the same machine word, but we play it safe,
      because the field writer_is_wait_ex may be modified by several threads
      simultaneously.  Such fields should always be allocated an own machine
      word.
      
      dict_table_t: Change the type of all bit-fields to "unsigned".  Make
      "space" a bit-field of 32 bits.  Move name_hash and id_hash after all
      bit-fields, so that the bit-fields can be allocated together.  Do not
      make autoinc_inited a bit-field, as we cannot allocate any field
      from the same machine word.
      
      dict_build_table_def_step(): Pass a local variable to
      fil_create_new_single_table_tablespace() and initialize table->space
      from it after the call, now that table->space is a bit-field.
      
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/dict/dict0dict.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r818:
      Remove dict_col_t::hash, dict_col_t::table,
      dict_sys->col_hash, and DICT_POOL_PER_COL_HASH.  (Bug #20877)
      
      The col->table pointer was only needed for maintaining a hash table of
      all defined columns in all tables.  The hash table was only looked up
      in dict_index_find_cols().  Removing the col->hash and col->table
      pointers reduces the size of a table column by two machine words
      (usually 8 or 16 bytes).
      
      dict_col_add_to_cache(), dict_col_reposition_in_cache(),
      dict_col_remove_from_cache(): Remove.  These only updated dict_sys->col_hash.
      
      dict_index_find_cols(): Use a linear search instead of the hash table.
      The time complexity is affected, but this function is only invoked by
      dict_index_add_to_cache(), and we only search the columns of a single
      table (typically at most a few dozen) as opposed to all columns of all
      tables.
      
      
      Revision r819:
      dict_col_t: Reduce ord_part to one bit.
      
      dict_index_add_to_cache(): Instead of incrementing ord_part, set it.
      
      dict_index_remove_from_cache(): Do not touch ord_part.
      
      dtype_t: Reduce mbminlen from 3 to 2 bits.
      
      row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface.
      
      
      Revision r820:
      Remove dict_col_t::clust_pos.
      
      dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
      look-up with a linear search of all columns in the clustered index.
      
      row_upd_index_replace_new_col_vals(): Compute clust_index outside
      the loops.  Compute clust_pos outside the inner loop.
      
      row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
      Compute clust_index outside the loops.  Declare the auxiliary variables
      inside the loop scope.
      
      
      Revision r821:
      dict_table_t: Rename the integer field max_row_size
      to the Boolean field big_rows.  (Bug #20877)
      
      BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache().
      
      
      Revision r826:
      The code base was reindented in r763 and automatic .emacs indentation
      settings introduced. Some problems were found, so from this commit on one
      additional indentation rule is introduced:
      
       (add-to-list 'c-offsets-alist '(arglist-intro . +))
      
      Note that fixing some of the unfortunate line-splits done in r764 will be
      done in a future change.
      
      Revision r827:
      Make dict_index_find_cols() always succeed.
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r831:
      Add dict_col_get_clust_pos_noninline(), which was forgotten from r820.
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r836:
      Remove dict_col_t::name, replace it with a packed array of column names in
      dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit
      machines.
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
      
      Revision r845:
      Split long lines with [] operators better.
    storage/innobase/dict/dict0load.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/dict/dict0mem.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r818:
      Remove dict_col_t::hash, dict_col_t::table,
      dict_sys->col_hash, and DICT_POOL_PER_COL_HASH.  (Bug #20877)
      
      The col->table pointer was only needed for maintaining a hash table of
      all defined columns in all tables.  The hash table was only looked up
      in dict_index_find_cols().  Removing the col->hash and col->table
      pointers reduces the size of a table column by two machine words
      (usually 8 or 16 bytes).
      
      dict_col_add_to_cache(), dict_col_reposition_in_cache(),
      dict_col_remove_from_cache(): Remove.  These only updated dict_sys->col_hash.
      
      dict_index_find_cols(): Use a linear search instead of the hash table.
      The time complexity is affected, but this function is only invoked by
      dict_index_add_to_cache(), and we only search the columns of a single
      table (typically at most a few dozen) as opposed to all columns of all
      tables.
      
      
      Revision r820:
      Remove dict_col_t::clust_pos.
      
      dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
      look-up with a linear search of all columns in the clustered index.
      
      row_upd_index_replace_new_col_vals(): Compute clust_index outside
      the loops.  Compute clust_pos outside the inner loop.
      
      row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
      Compute clust_index outside the loops.  Declare the auxiliary variables
      inside the loop scope.
      
      
      Revision r821:
      dict_table_t: Rename the integer field max_row_size
      to the Boolean field big_rows.  (Bug #20877)
      
      BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache().
      
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r836:
      Remove dict_col_t::name, replace it with a packed array of column names in
      dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit
      machines.
    storage/innobase/eval/eval0eval.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r826:
      The code base was reindented in r763 and automatic .emacs indentation
      settings introduced. Some problems were found, so from this commit on one
      additional indentation rule is introduced:
      
       (add-to-list 'c-offsets-alist '(arglist-intro . +))
      
      Note that fixing some of the unfortunate line-splits done in r764 will be
      done in a future change.
    storage/innobase/eval/eval0proc.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/fil/fil0fil.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/fsp/fsp0fsp.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
      
      Revision r845:
      Split long lines with [] operators better.
    storage/innobase/handler/ha_innodb.cc:
      Applied innodb-5.1 snapshots ss799 and ss854
    storage/innobase/handler/ha_innodb.h:
      Applied innodb-5.1 snapshots ss799 and ss854
    storage/innobase/ibuf/ibuf0ibuf.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/include/btr0btr.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
    storage/innobase/include/btr0btr.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
    storage/innobase/include/btr0cur.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
    storage/innobase/include/btr0cur.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
    storage/innobase/include/btr0pcur.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r817:
      btr0pcur.h: Change FIXME to TODO.
    storage/innobase/include/btr0sea.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r824:
      Reduce the size of btr_search_t from 13 machine words to 7.  This
      structure is reserved for every index in the data dictionary cache.
      (Bug #20877)
      
      We could shrink the structure further to three 32-bit words or two
      64-bit words by turning the remaining fields to bit-fields.
      Unfortunately, the fields are not protected by any mutex, and thus we
      would better keep each field aligned to a machine word.
      
      btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side".
      Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename
      some local variables and function parameters from "ulint side" to
      "ibool left_side".
      
      btr_search_t: Remove the unused fields last_search, n_direction, direction,
      and modify_clock.  Remove the unused constants BTR_SEA_NO_DIRECTION,
      BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC.
      
      btr_search_t: Remove magic_n unless #defined UNIV_DEBUG.  Turn an assertion
      about the magic number into a debug assertion.
    storage/innobase/include/buf0buf.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r824:
      Reduce the size of btr_search_t from 13 machine words to 7.  This
      structure is reserved for every index in the data dictionary cache.
      (Bug #20877)
      
      We could shrink the structure further to three 32-bit words or two
      64-bit words by turning the remaining fields to bit-fields.
      Unfortunately, the fields are not protected by any mutex, and thus we
      would better keep each field aligned to a machine word.
      
      btr_search_t, buf_block_t: Rename "ulint side" to "ibool left_side".
      Remove BTR_SEARCH_LEFT_SIDE and BTR_SEARCH_RIGHT_SIDE, and also rename
      some local variables and function parameters from "ulint side" to
      "ibool left_side".
      
      btr_search_t: Remove the unused fields last_search, n_direction, direction,
      and modify_clock.  Remove the unused constants BTR_SEA_NO_DIRECTION,
      BTR_SEA_LEFT, BTR_SEA_RIGHT, and BTR_SEA_SAME_REC.
      
      btr_search_t: Remove magic_n unless #defined UNIV_DEBUG.  Turn an assertion
      about the magic number into a debug assertion.
    storage/innobase/include/data0data.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
    storage/innobase/include/data0type.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r819:
      dict_col_t: Reduce ord_part to one bit.
      
      dict_index_add_to_cache(): Instead of incrementing ord_part, set it.
      
      dict_index_remove_from_cache(): Do not touch ord_part.
      
      dtype_t: Reduce mbminlen from 3 to 2 bits.
      
      row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface.
      
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
    storage/innobase/include/data0type.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/include/dict0boot.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r816:
      Remove more remnants of mixed indexes.
    storage/innobase/include/dict0dict.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r816:
      Remove more remnants of mixed indexes.
      
      Revision r818:
      Remove dict_col_t::hash, dict_col_t::table,
      dict_sys->col_hash, and DICT_POOL_PER_COL_HASH.  (Bug #20877)
      
      The col->table pointer was only needed for maintaining a hash table of
      all defined columns in all tables.  The hash table was only looked up
      in dict_index_find_cols().  Removing the col->hash and col->table
      pointers reduces the size of a table column by two machine words
      (usually 8 or 16 bytes).
      
      dict_col_add_to_cache(), dict_col_reposition_in_cache(),
      dict_col_remove_from_cache(): Remove.  These only updated dict_sys->col_hash.
      
      dict_index_find_cols(): Use a linear search instead of the hash table.
      The time complexity is affected, but this function is only invoked by
      dict_index_add_to_cache(), and we only search the columns of a single
      table (typically at most a few dozen) as opposed to all columns of all
      tables.
      
      
      Revision r820:
      Remove dict_col_t::clust_pos.
      
      dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
      look-up with a linear search of all columns in the clustered index.
      
      row_upd_index_replace_new_col_vals(): Compute clust_index outside
      the loops.  Compute clust_pos outside the inner loop.
      
      row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
      Compute clust_index outside the loops.  Declare the auxiliary variables
      inside the loop scope.
      
      
      Revision r827:
      Make dict_index_find_cols() always succeed.
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r831:
      Add dict_col_get_clust_pos_noninline(), which was forgotten from r820.
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r836:
      Remove dict_col_t::name, replace it with a packed array of column names in
      dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit
      machines.
    storage/innobase/include/dict0dict.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r820:
      Remove dict_col_t::clust_pos.
      
      dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
      look-up with a linear search of all columns in the clustered index.
      
      row_upd_index_replace_new_col_vals(): Compute clust_index outside
      the loops.  Compute clust_pos outside the inner loop.
      
      row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
      Compute clust_index outside the loops.  Declare the auxiliary variables
      inside the loop scope.
      
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
    storage/innobase/include/dict0mem.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r815:
      dict_index_t: Remove tree_indexes.  It should have been removed in r453
      when the list in dict_tree_t was replaced with the pointer tree_index.
      
      
      Revision r818:
      Remove dict_col_t::hash, dict_col_t::table,
      dict_sys->col_hash, and DICT_POOL_PER_COL_HASH.  (Bug #20877)
      
      The col->table pointer was only needed for maintaining a hash table of
      all defined columns in all tables.  The hash table was only looked up
      in dict_index_find_cols().  Removing the col->hash and col->table
      pointers reduces the size of a table column by two machine words
      (usually 8 or 16 bytes).
      
      dict_col_add_to_cache(), dict_col_reposition_in_cache(),
      dict_col_remove_from_cache(): Remove.  These only updated dict_sys->col_hash.
      
      dict_index_find_cols(): Use a linear search instead of the hash table.
      The time complexity is affected, but this function is only invoked by
      dict_index_add_to_cache(), and we only search the columns of a single
      table (typically at most a few dozen) as opposed to all columns of all
      tables.
      
      
      Revision r819:
      dict_col_t: Reduce ord_part to one bit.
      
      dict_index_add_to_cache(): Instead of incrementing ord_part, set it.
      
      dict_index_remove_from_cache(): Do not touch ord_part.
      
      dtype_t: Reduce mbminlen from 3 to 2 bits.
      
      row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface.
      
      
      Revision r820:
      Remove dict_col_t::clust_pos.
      
      dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
      look-up with a linear search of all columns in the clustered index.
      
      row_upd_index_replace_new_col_vals(): Compute clust_index outside
      the loops.  Compute clust_pos outside the inner loop.
      
      row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
      Compute clust_index outside the loops.  Declare the auxiliary variables
      inside the loop scope.
      
      
      Revision r821:
      dict_table_t: Rename the integer field max_row_size
      to the Boolean field big_rows.  (Bug #20877)
      
      BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache().
      
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r833:
      Tweak the bit-field definitions introduced since r813 to address Bug #20877.
      
      rw_lock_t: Do not make writer_is_wait_ex a bit-field.  There are no fields
      yet that could be fused to the same machine word, but we play it safe,
      because the field writer_is_wait_ex may be modified by several threads
      simultaneously.  Such fields should always be allocated an own machine
      word.
      
      dict_table_t: Change the type of all bit-fields to "unsigned".  Make
      "space" a bit-field of 32 bits.  Move name_hash and id_hash after all
      bit-fields, so that the bit-fields can be allocated together.  Do not
      make autoinc_inited a bit-field, as we cannot allocate any field
      from the same machine word.
      
      dict_build_table_def_step(): Pass a local variable to
      fil_create_new_single_table_tablespace() and initialize table->space
      from it after the call, now that table->space is a bit-field.
      
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r835:
      Change the recently introduced ulint bit-fields to unsigned.
      
      
      Revision r836:
      Remove dict_col_t::name, replace it with a packed array of column names in
      dict_table_t. This saves 8-15+ bytes of memory per column on 64-bit
      machines.
    storage/innobase/include/dict0types.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
    storage/innobase/include/ibuf0ibuf.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/include/page0page.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r830:
      page_align(ptr): New utility function to replace
      ut_align_down(ptr, UNIV_PAGE_SIZE) calls.
      
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
    storage/innobase/include/page0page.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r830:
      page_align(ptr): New utility function to replace
      ut_align_down(ptr, UNIV_PAGE_SIZE) calls.
      
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/include/read0read.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/include/rem0cmp.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
    storage/innobase/include/rem0cmp.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
    storage/innobase/include/rem0rec.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
    storage/innobase/include/rem0rec.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/include/rem0types.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
    storage/innobase/include/row0upd.ic:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
    storage/innobase/include/sync0rw.h:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r823:
      Minor cleanup related to Bug #20877.
      
      btr_print_recursive(): Replace tree->tree_indexes with tree->index.
      This should have been done in r453.
      
      univ.i: Add UNIV_BTR_PRINT.
      
      rw_lock_t: Reduce writer_is_wait_ex to a bit and move it close to
      other bitfields.  Change the types to unsigned, in case ulint or ibool
      bitfields will not work.
      
      
      Revision r833:
      Tweak the bit-field definitions introduced since r813 to address Bug #20877.
      
      rw_lock_t: Do not make writer_is_wait_ex a bit-field.  There are no fields
      yet that could be fused to the same machine word, but we play it safe,
      because the field writer_is_wait_ex may be modified by several threads
      simultaneously.  Such fields should always be allocated an own machine
      word.
      
      dict_table_t: Change the type of all bit-fields to "unsigned".  Make
      "space" a bit-field of 32 bits.  Move name_hash and id_hash after all
      bit-fields, so that the bit-fields can be allocated together.  Do not
      make autoinc_inited a bit-field, as we cannot allocate any field
      from the same machine word.
      
      dict_build_table_def_step(): Pass a local variable to
      fil_create_new_single_table_tablespace() and initialize table->space
      from it after the call, now that table->space is a bit-field.
    storage/innobase/include/univ.i:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r823:
      Minor cleanup related to Bug #20877.
      
      btr_print_recursive(): Replace tree->tree_indexes with tree->index.
      This should have been done in r453.
      
      univ.i: Add UNIV_BTR_PRINT.
      
      rw_lock_t: Reduce writer_is_wait_ex to a bit and move it close to
      other bitfields.  Change the types to unsigned, in case ulint or ibool
      bitfields will not work.
    storage/innobase/lock/lock0lock.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/log/log0log.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/log/log0recv.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/mem/mem0dbg.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/mem/mem0pool.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/mtr/mtr0log.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/mtr/mtr0mtr.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/os/os0file.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/os/os0thread.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/page/page0cur.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/page/page0page.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
    storage/innobase/pars/pars0opt.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/pars/pars0pars.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/pars/pars0sym.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
    storage/innobase/read/read0read.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/rem/rem0cmp.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/rem/rem0rec.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/row/row0ins.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/row/row0mysql.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/row/row0purge.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r828:
      Remove dict_tree_t, which should have been removed in r453.
      There always was a one-to-one mapping between dict_tree_t and dict_index_t.
      
      This saves 6 machine words per B-tree index in the data dictionary
      cache plus the memory allocation overhead.  We save one mem_heap_t
      object per index (15 machine words).  Considering the internal
      fragmentation of the buddy allocator in mem_area_alloc(), this should
      save 32 machine words per index (128 bytes on 32-bit systems and 256
      bytes on 64-bit systems).  (Bug #20877)
      
      struct dict_tree_struct, dict_tree_t: Remove.
      
      struct dict_index_struct: Add page and lock.
      
      dict_tree_create(): Remove.  Replace the invocation with
      assignment to index->page and a call to rw_lock_create(&index->lock).
      
      dict_tree_free(): Remove.  Replace the invocation wtih
      a call to rw_lock_free(&index->lock).
      
      dict_index_get_tree(): Remove.
      
      dict_tree_get_space_reserve(): Rename to dict_index_get_space_reserve()
      and remove the parameter, which was unused.
      
      btr_level_list_remove(): Remove the unused parameter "tree".
      
      Replace the occurrences of "tree" with "index" in names of variables,
      functions and data types, e.g. "dict_tree_t tree" becomes
      "dict_index_t index".  Remove local variables "tree" or "index" of
      functions that needed both "tree" and "index".
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/row/row0row.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/row/row0sel.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r820:
      Remove dict_col_t::clust_pos.
      
      dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
      look-up with a linear search of all columns in the clustered index.
      
      row_upd_index_replace_new_col_vals(): Compute clust_index outside
      the loops.  Compute clust_pos outside the inner loop.
      
      row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
      Compute clust_index outside the loops.  Declare the auxiliary variables
      inside the loop scope.
      
      
      Revision r821:
      dict_table_t: Rename the integer field max_row_size
      to the Boolean field big_rows.  (Bug #20877)
      
      BIG_ROW_SIZE: Move the definition from row0sel.c to dict_table_add_to_cache().
      
      
      Revision r825:
      row_search_for_mysql(): Skip setting the next-key lock on an already 
      delete-marked record in a clustered index where the search criteria is 
      unique, within the same transaction (Bug #13544).
      
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r837:
      page_offset(): New function to replace many ut_align_offset(., UNIV_PAGE_SIZE)
      calls.
      
      dict_index_build_node_ptr(): Correct a typo in a comment.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
      
      Revision r845:
      Split long lines with [] operators better.
    storage/innobase/row/row0uins.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/row/row0umod.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/row/row0upd.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r819:
      dict_col_t: Reduce ord_part to one bit.
      
      dict_index_add_to_cache(): Instead of incrementing ord_part, set it.
      
      dict_index_remove_from_cache(): Do not touch ord_part.
      
      dtype_t: Reduce mbminlen from 3 to 2 bits.
      
      row_upd(): Add a UNIV_LIKELY hint around node->in_mysql_interface.
      
      
      Revision r820:
      Remove dict_col_t::clust_pos.
      
      dict_col_get_clust_pos(): Add parameter clust_index.  Replace the
      look-up with a linear search of all columns in the clustered index.
      
      row_upd_index_replace_new_col_vals(): Compute clust_index outside
      the loops.  Compute clust_pos outside the inner loop.
      
      row_upd_changes_ord_field_binary(), row_upd_changes_first_fields_binary():
      Compute clust_index outside the loops.  Declare the auxiliary variables
      inside the loop scope.
      
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
      
      Revision r851:
      row_upd_sec_step(): Fix false comment.
    storage/innobase/row/row0vers.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/srv/srv0srv.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
      
      
      Revision r832:
      Add dict_table_get_col_name() in preparation for getting rid of
      dict_col_t::name, and use it instead of col->name everywhere.
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/srv/srv0start.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/sync/sync0arr.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/sync/sync0rw.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r813:
      Reduce the size of the data dictionary cache.  (Bug #20877)
      
      dtype_t: Remove unused field "prec", which was supposed to be used for
      the precision of decimal columns in stand-alone InnoDB.
      
      dtype_get_prec(): Remove.
      
      dtype_set(), dict_mem_table_add_col(): Remove parameter "prec".
      
      dtype_t: Turn all fields (mtype, prtype, len, mbminlen, mbmaxlen, len)
      into bit-fields.
      
      dict_table_t, dict_index_t, dict_tree_t: Omit magic_n from non-debug builds.
      
      dict_col_t: Turn ind, clust_pos, and ord_part into bit-fields.
      
      Replace the default clust_pos value ULINT_UNDEFINED with
      REC_MAX_N_FIELDS and replace all references to clust_pos with calls to
      the accessor function dict_col_get_clust_pos().
      
      dict_field_t: Turn prefix_len and fixed_len into bit-fields.
      
      dict_tree_t: Remove pad[64].
      
      dict_table_t: Turn the fields ibd_file_missing, tablespace_discarded,
      cached, flags, stat_initialized, and autoinc_inited into bit-fields.
      Remove does_not_fit_in_memory from non-debug builds.
      
      dict_index_t: Turn the fields trx_id_offset, n_user_defined_cols,
      n_uniq, n_def, n_fields, n_nullable, and cached into bit-fields.
      
      dict_foreign_struct: Turn n_fields and type into bit-fields.
      
      rw_lock_t: Turn cline, last_s_line, and last_x_line into bit-fields.
      Omit level unless #defined UNIV_SYNC_DEBUG.
      
      Move REC_MAX_N_FIELDS (and REC_MAX_HEAP_NO and REC_MAX_N_OWNED)
      from rem0rec.c to rem0types.h, as they are needed in dict0dict.ic.
      dict_col_get_clust_pos(): Map REC_MAX_N_FIELDS to ULINT_UNDEFINED.
    storage/innobase/sync/sync0sync.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/trx/trx0purge.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/trx/trx0rec.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r834:
      dict_col_t: Copy the fields of "dtype_t type" directly to this structure,
      so that all integer fields can be packed into 64 bits.  (Bug #20877)
      
      dtype_t: Change the type of all bit-fields to unsigned.
      
      dict_table_get_nth_col(), dict_table_get_sys_col_noninline(),
      dict_table_get_sys_col(), dict_field_get_col(): Return const
      dict_col_t*, so that changes to dict_col_t can be detected more
      easily.  Add const to many dict_col_t* declarations.
      
      dict_index_get_nth_type(): Replace with dict_index_get_nth_col().
      
      dict_col_get_type(): Replace with dict_col_copy_type().
      
      dict_col_get_min_size(), dict_col_get_max_size(), dict_col_get_fixed_size(),
      dict_col_get_sql_null_size(): New functions.
      
      dtype_get_at_most_n_mbchars(): Replace the parameter dtype
      with the parameters prtype, mbminlen, mbmaxlen.
      
      dtype_get_pad_char(), cmp_data_data(), cmp_data_data_slow(),
      cmp_whole_field(): Replace the dtype_t* parameter with the ulint
      parameters mtype, prtype.
      
      dtype_copy(): Add a const qualifier to type2 (the one being copied from).
      
      dtype_set_mblen(): Replaced with dtype_get_mblen().
      
      dtype_get_fixed_size_low(), dtype_get_min_size_low(),
      dtype_get_fixed_max_low(): Replace dtype_get_fixed_size(),
      dtype_get_min_size(), and dtype_get_max_size().  These are used by the
      dict_col_get_{fixed,min,max}_size() functions.
      
      cmp_types_are_equal(): Replace with cmp_cols_are_equal().
      
      dict_table_get_col_name(): Add a const qualifier parameter to the
      parameter "table".
      
      dtype_binary, dtype_binary_val: Remove.
      
      dtype_is_fixed_size(): Remove.
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/trx/trx0rseg.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/trx/trx0sys.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r829:
      Erase the magic number in the trx sys header using a redo-logged write;
      it should be redo-logged because the data structure is file-based;
      this patch does not fix any bug; the original erase operation was added
      in r781 to fix Valgrind Bug #20791
      
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/trx/trx0trx.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    storage/innobase/trx/trx0undo.c:
      Applied innodb-5.1 snapshots ss799 and ss854
      
      Revision r838:
      Revamp the line splits done in r763 and r764 that can now be done better,
      thanks to r826.
    bf2f50d3
trx0undo.c 50.2 KB