1. 13 Dec, 2007 4 commits
  2. 12 Dec, 2007 2 commits
  3. 10 Dec, 2007 3 commits
  4. 07 Dec, 2007 2 commits
    • marko's avatar
      branches/zip: rec_convert_dtuple_to_rec_comp(): Allow externally stored · 15ef4c8f
      marko authored
      columns to be up to REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE
      bytes in a debug assertion.  This assertion could fail since r2159 in
      trx_undo_prev_version_build(), because the undo log records for updates
      and deletes would contain longer prefixes of externally stored columns.
      
      The assertion failure was reported by Sunny.
      15ef4c8f
    • marko's avatar
      branches/zip: dict_table_copy_types(): Initialize all fields to the SQL NULL · 7c5511ef
      marko authored
      value.  Document this change in behaviour, and make all callers invoke
      the function right after dtuple_create().
      
      dict_create_sys_fields_tuple(): Add a missing "break" statement to the loop
      that checks if there are any column prefixes in the index.
      
      row_get_prebuilt_insert_row(): Do not set the fields to the SQL NULL value,
      now that dict_table_copy_types() takes care of it.
      7c5511ef
  5. 05 Dec, 2007 3 commits
    • marko's avatar
      branches/zip: When logging updates or deletes in the undo log, store long · a65020d2
      marko authored
      enough prefixes of externally stored columns, so that purge will not have
      to dereference any BLOB pointers, which may be invalid.  This will not be
      necessary for logging inserts, because inserts are no-ops in purge, and
      the record will remain locked during transaction rollback.
      
      TODO: in dict_build_table_def_step() or dict_build_index_def_step(),
      prevent the creation of tables with too many columns for which a
      prefix index is defined.  This is because there is a size limit of undo
      log records, and for each prefix-indexed column, the log must store
      REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE bytes.
      
      trx_undo_page_report_insert(): Assert that the index is clustered.
      
      trx_undo_page_fetch_ext(): New function, for fetching the BLOB prefix
      in trx_undo_page_report_modify().
      
      trx_undo_page_report_modify(): Write long enough prefixes of the externally
      stored columns to the undo log.
      
      trx_undo_rec_get_partial_row(): Remove the parameter "ext".  Assert that
      the undo log contains long enough prefixes of the externally stored columns.
      
      purge_node_t: Remove the field "ext".
      a65020d2
    • marko's avatar
      branches/zip: row_build_index_entry(): Add assertions that prevent improper · 3044ef35
      marko authored
      prefix indexes from being built on externally stored columns.
      3044ef35
    • marko's avatar
      branches/zip: btr_cur_pessimistic_update(), btr_cur_pessimistic_delete(): · c4406881
      marko authored
      Use rec_offs_any_extern() as a condition for freeing externally stored
      columns.  This is only a performance optimization.
      c4406881
  6. 04 Dec, 2007 1 commit
    • marko's avatar
      branches/zip: Merge r2154 from trunk: · 244c9eed
      marko authored
      innodb.result, innodb.test: Revert the changes in r2145.
      
      The tests that were removed by MySQL
      
      ChangeSet@1.2598.2.6  2007-11-06 15:42:58-07:00  tsmith@hindu.god
      
      were moved to a new test, innodb_autoinc_lock_mode_zero, which is
      kept in the MySQL BitKeeper tree.
      244c9eed
  7. 03 Dec, 2007 2 commits
  8. 30 Nov, 2007 3 commits
  9. 29 Nov, 2007 9 commits
    • vasil's avatar
      branches/zip: · 6a6d7a9b
      vasil authored
      * Change terminology:
        wait lock -> requested lock
        waited lock -> blocking lock
        new: requesting transaction (the trx what owns the requested lock)
        new: blocking transaction (the trx that owns the blocking lock)
      
      * Add transaction ids to INFORMATION_SCHEMA.INNODB_LOCK_WAITS. This is
        somewhat redundant because transaction ids can be found in INNODB_LOCKS
        (which can be joined with INNODB_LOCK_WAITS) but would help users to
        write shorter joins (one table less) in some cases where they want to
        find which transaction is blocking which.
      
      Suggested by:	Ken
      Approved by:	Heikki
      6a6d7a9b
    • marko's avatar
      5784e7de
    • marko's avatar
      branches/zip: row_ext_create(): Remove the UNIV_INLINE that should · 603defd2
      marko authored
      have been removed in r2131.
      603defd2
    • marko's avatar
      branches/zip: row_ext: Fetch the BLOB prefixes already at row_ext_create(). · 8fb8584e
      marko authored
      Only add indexed BLOBs to row_ext.
      
      trx_undo_rec_get_partial_row(): Move the BLOB fetching to row_ext_create().
      
      row_build(): Pass only those BLOBs to row_ext_create() that are referenced by
      ordering columns of some indexes, similar to trx_undo_rec_get_partial_row().
      
      row_ext_create(): Add the parameter "tuple".  Move the implementation
      from row0ext.ic to row0ext.c.
      
      row_ext_lookup_ith(), row_ext_lookup(): Return a const pointer.  Remove
      the parameters "field" and "f_len".  Make the row_ext_t* parameter const.
      
      row_ext_t: Remove the field zip_size.
      
      field_ref_zero[]: Declare in btr0types.h instead of btr0cur.h.
      
      row_ext_lookup_low(): Rename to row_ext_cache_fill() and change the
      signature.
      8fb8584e
    • marko's avatar
      branches/zip: Clean up after r2129: · 962ed523
      marko authored
      univ.i: Do not define UNIV_DEBUG, UNIV_ZIP_DEBUG.
      
      btr_cur_del_unmark_for_ibuf(): Use the same comment in both btr0cur.c and
      btr0cur.h.  Wrap long lines.
      962ed523
    • sunny's avatar
      branches/zip: Fix a bug where the zipped page and the uncompressed page · eca3cb23
      sunny authored
      contents end up with conflicting versions of a record's state. The zipped
      page record was not being marked as "(un)deleted" because we were not
      passing the zipped page contents to the (un)delete function, which first
      (un)delete marks the uncompressed version and then based on whether
      page_zip is NULL or not (un)delete marks the record in the compressed page.
      eca3cb23
    • marko's avatar
      branches/zip: ha_innobase::final_drop_index(): Allocate a separate transaction · 1a4db95e
      marko authored
      for dropping the index trees, and set the dictionary operation flag, similar
      to what ha_innobase::add_index() does.  This should ensure correct crash
      recovery.
      1a4db95e
    • marko's avatar
      branches/zip: trx_undo_rec_get_partial_row(): Set up the row_ext cache · cf7d5b77
      marko authored
      only for those externally stored columns that occur in the ordering columns
      of indexes.  Prefetch the prefixes of those columns, because the clustered
      index record and the BLOBs may have been deleted by the time when the
      purge thread needs to read the BLOB prefixes.
      
      row_ext_create(): Add the debug assertion ut_ad(ut_is_2pow(zip_size)).
      cf7d5b77
    • marko's avatar
      branches/zip: Remove the warnings about pointer targets differing · dae1fdd6
      marko authored
      in signedness that were introduced in r2114.
      
      row_upd_index_replace_new_col_vals_index_pos(),
      row_upd_index_replace_new_col_vals(): Declare "data" as const byte*
      instead of const char*, and add casts to the dtype_get_at_most_n_mbchars()
      calls.
      dae1fdd6
  10. 28 Nov, 2007 5 commits
    • marko's avatar
      branches/zip: Fix a bug that was introduced in r2123. · 95d04ddb
      marko authored
      buf_block_is_uncompressed(): Check that the pointer is aligned.  Use the
      C modulus operator % instead of ut_align_offset(), because sizeof(buf_block_t)
      is not guaranteed to be a power of 2.
      95d04ddb
    • marko's avatar
      branches/zip: row_vers_impl_x_locked_off_kernel(): In follow-up to r2119, · 15d8cc6e
      marko authored
      assert ut_a(entry) instead of playing it safe.
      15d8cc6e
    • marko's avatar
      branches/zip: buf_page_get_gen(): Note that the guessed block may also · a3190b1f
      marko authored
      point to a buffer pool chunk that has been released when resizing the
      buffer pool.
      
      buf_block_is_uncompressed(): Check that the pointer is aligned.  Thanks
      to this check, it is safe to pass an arbitrary pointer as a guess
      to buf_page_get_gen().
      a3190b1f
    • marko's avatar
      branches/zip: Minor cleanup. · 4e37e2f8
      marko authored
      buf_page_get_release_on_io(): Removed this unused function.
      
      ibuf_build_entry_from_ibuf_rec(): Justify why it is not necessary to
      add system columns to the dummy table pointed to by the dummy secondary index.
      
      page_zip_rec_set_deleted(): Add a page_zip_validate() assertion.
      4e37e2f8
    • vasil's avatar
      branches/zip: · d4db2cf5
      vasil authored
      Add the transaction's weight to information_schema.innodb_trx table.
      
      Suggested by:	Ken
      Approved by:	Heikki
      d4db2cf5
  11. 27 Nov, 2007 3 commits
    • marko's avatar
      branches/zip: lock_sec_rec_some_has_impl_off_kernel(): Make the function · 2bf6fc8f
      marko authored
      static.  It is only called from lock0lock.c.
      2bf6fc8f
    • marko's avatar
      branches/zip: In purge, avoid dereferencing unset BLOB pointers of freshly · 06299ddd
      marko authored
      inserted, uncommitted clustered index records when determining if a
      secondary index record that contains a column prefix of an externally
      stored column is referencing the clustered index record.
      
      field_ref_zero[]: A BLOB pointer full of zero, for use in comparisons.
      
      btr_copy_externally_stored_field_prefix(): Assert that the BLOB pointer is set.
      
      row_ext_lookup_ith(), row_ext_lookup(), row_ext_lookup_low(): Document
      that field_ref_zero is returned when the BLOB cannot be fetched.
      
      row_ext_lookup_low(): Return field_ref_zero and *len = 0 when the
      BLOB pointer is unset.
      
      row_build_index_entry(): Return NULL when a needed BLOB pointer cannot
      be dereferenced (row_ext_lookup returns field_ref_zero).  Check the
      return value for NULL in callers.
      
      row_vers_impl_x_locked_off_kernel(): Avoid comparisons when
      row_build_index_entry() returns NULL.
      
      row_vers_old_has_index_entry(): Ignore records for which
      row_build_index_entry() returns NULL.  The entry should never be NULL
      in rollback, but it may be NULL in purge.
      
      row_merge_buf_add(): Assert that row_ext_lookup() does not return
      field_ref_zero.  The table will be locked during index creation.
      06299ddd
    • marko's avatar
      branches/zip: btr_cur_pessimistic_insert(): When calling · 110781a3
      marko authored
      btr_cur_optimistic_insert(), pass big_rec to it, so that
      the field references of externally stored columns (BLOB pointers)
      will not be left uninitialized after a successful optimistic insert.
      This bug was spotted by Sunny.
      110781a3
  12. 23 Nov, 2007 3 commits
    • vasil's avatar
      branches/zip: Merge 2093:2116 from trunk. · 5243af9c
      vasil authored
      5243af9c
    • marko's avatar
      branches/zip: Correct mistakes made in r2114. · 30358fe6
      marko authored
      row_upd_index_replace_new_col_vals(): Declare fetch_ext.
      
      row_upd_index_replace_new_col_vals_index_pos(): Add a type conversion
      to the initialization expression of fetch_ext, to avoid a warning about
      comparison between signed and unsigned.
      30358fe6
    • marko's avatar
      branches/zip: Fix a bug in the updates of index records that contain a · 36874d65
      marko authored
      column prefix of an externally stored column.
      
      row_upd_ext_fetch(): New function.
      
      row_upd_index_replace_new_col_vals(),
      row_upd_index_replace_new_col_vals_index_pos(): Fetch prefixes of
      externally stored columns when they are needed for column prefix
      indexes.  For memory allocation, add the parameter ext_heap.  Avoid
      repeating the inner loop after finding a  matching upd_field->field_no.
      36874d65