1. 29 Nov, 2007 4 commits
    • 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
  2. 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
  3. 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
  4. 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
  5. 22 Nov, 2007 4 commits
  6. 21 Nov, 2007 12 commits
    • vasil's avatar
      branches/zip: · 759af551
      vasil authored
      Fix the size of the static buffer for lock_table and lock_index.
      I was not realizing that NAME_LEN contains the mbmaxlen multiplier and thus
      a quote, when converted to 2 quotes, will take 2 bytes while there are 3
      bytes reserved.
      
      Spotted by:	Marko
      Pointyhat to:	Vasil
      759af551
    • vasil's avatar
      branches/zip: · 5c8a9ce2
      vasil authored
      Add C test for innobase_convert_name() in addition to the mysql-test one.
      5c8a9ce2
    • marko's avatar
      branches/zip: When writing an externally stored column to the undo log, · 71b3c265
      marko authored
      set the "external storage" flag.  When parsing the undo log, do not
      misinterpret a SQL NULL column for externally stored.
      
      These bugs were spotted by Heikki and Sunny.
      
      trx_undo_page_report_modify(): Set the UNIV_EXTERN_STORAGE_FIELD flag
      when needed.
      
      trx_undo_rec_get_partial_row(): Check for len == UNIV_SQL_NULL.
      71b3c265
    • vasil's avatar
      branches/zip: · 5cd14d70
      vasil authored
      Fix a bug where the static buffer for innodb_locks.lock_table may not
      have enough space.
      
      Pointyhat to:	Marko
      5cd14d70
    • vasil's avatar
      branches/zip: · 6edf3ef1
      vasil authored
      Bugfix1: Set innodb_locks.lock_index to NOT NULL.
      If a column in INFORMATION_SCHEMA table has the flag
      MY_I_S_MAYBE_NULL and it is not explicitly marked as NOT NULL
      with the method ::set_notnull() then it is always rendered as
      NULL by MySQL.
      
      Bugfix2: Avoid crashes if lock_index is NULL. It is NULL for table
      level locks.
      
      Pointyhat to:	Marko
      6edf3ef1
    • vasil's avatar
      branches/zip: · 30d19bf4
      vasil authored
      Non-functional change:
      Fix consistency of the sizeof() operator with the rest of i_s.cc
      
      Pointyhat to:	Marko
      
      30d19bf4
    • vasil's avatar
      branches/zip: · 857c6501
      vasil authored
      Move test that depends on ucs2 to a separate file that is disabled if
      ucs2 is not compiled in.
      857c6501
    • vasil's avatar
      branches/zip: · 9d76b526
      vasil authored
      Move common SQL commands to an .inc file.
      9d76b526
    • vasil's avatar
      branches/zip: · 62a46de2
      vasil authored
      Synchronize the utf8 and ucs2 tests.
      62a46de2
    • marko's avatar
      branches/zip: INFORMATION_SCHEMA.INNODB_LOCKS: Quote lock_table, lock_index. · e1eb788f
      marko authored
      innodb_information_schema.test. Add tests that display most columns from
      INFORMATION_SCHEMA.INNODB_LOCKS.  Test that quoting of table names works
      and respects SQL_MODE='ANSI_QUOTES'.
      
      innobase_print_identifier(): Remove.
      
      innobase_convert_identifier(): New function,
      based on innobase_print_identifier().
      
      innobase_convert_name(): New function, similar to ut_print_namel(), but
      using a memory buffer.
      
      ut_print_namel(): Use innobase_convert_name().
      
      fill_innodb_locks_from_cache(): Convert lock_table and lock_index by
      calling innobase_convert_name().
      e1eb788f
    • marko's avatar
      f6c6980f
    • vasil's avatar
      branches/zip: · 3dfa0568
      vasil authored
      Convert INFORMATION_SCHEMA tables' names to upper case so that they are
      consistent with other INFORMATION_SCHEMA tables.
      
       mysql> show tables;
       +---------------------------------------+
       | Tables_in_information_schema          |
       +---------------------------------------+
       | CHARACTER_SETS                        | 
       | COLLATIONS                            | 
       | COLLATION_CHARACTER_SET_APPLICABILITY | 
       | COLUMNS                               | 
       | COLUMN_PRIVILEGES                     | 
       | ENGINES                               | 
       | EVENTS                                | 
       | FILES                                 | 
       | GLOBAL_STATUS                         | 
       | GLOBAL_VARIABLES                      | 
       | KEY_COLUMN_USAGE                      | 
       | PARTITIONS                            | 
       | PLUGINS                               | 
       | PROCESSLIST                           | 
       | REFERENTIAL_CONSTRAINTS               | 
       | ROUTINES                              | 
       | SCHEMATA                              | 
       | SCHEMA_PRIVILEGES                     | 
       | SESSION_STATUS                        | 
       | SESSION_VARIABLES                     | 
       | STATISTICS                            | 
       | TABLES                                | 
       | TABLE_CONSTRAINTS                     | 
       | TABLE_PRIVILEGES                      | 
       | TRIGGERS                              | 
       | USER_PRIVILEGES                       | 
       | VIEWS                                 | 
       | innodb_zip_reset                      | 
       | innodb_trx                            | 
       | innodb_locks                          | 
       | innodb_lock_waits                     | 
       | innodb_zip                            | 
       +---------------------------------------+
      
      3dfa0568
  7. 16 Nov, 2007 3 commits
  8. 15 Nov, 2007 1 commit
    • marko's avatar
      branches/zip: Introduce the function page_zip_fail_func() and · 7be8ffc2
      marko authored
      the wrapper macro page_zip_fail() for displaying error messages.
      When the error output is enabled (at compile-time), a breakpoint
      may be set in page_zip_fail_func to easily debug all decompression
      errors in the context where they occur.
      7be8ffc2
  9. 13 Nov, 2007 2 commits
    • vasil's avatar
      branches/zip: · 6162deb6
      vasil authored
      Remove unnecessary code. Environment variables are passed to children anyway,
      no need to export them.
      
      Approved by:	Sunny (via IM)
      6162deb6
    • vasil's avatar
      branches/zip: · 13c99e8b
      vasil authored
      Fix typos in comment.
      13c99e8b
  10. 12 Nov, 2007 3 commits