1. 28 Sep, 2006 1 commit
  2. 27 Sep, 2006 1 commit
    • marko's avatar
      branches/zip: Replace FIL_PAGE_ZBLOB_SPACE_ID and FIL_PAGE_ZBLOB_DATA · 71e8ea62
      marko authored
      with FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID and FIL_PAGE_DATA.  The doublewrite
      buffer needs to read the space_id in order to determine the type of the page.
      Because FIL_PAGE_TYPE could contain garbage in MySQL/InnoDB 5.0 and earlier
      versions, we cannot trust fil_page_get_type().  Instead, we have to always
      store the space_id at the same location.  This modification wastes 12 bytes
      per compressed BLOB page (1.2% on 1-kilobyte pages).
      71e8ea62
  3. 26 Sep, 2006 7 commits
  4. 25 Sep, 2006 1 commit
    • marko's avatar
      branches/zip: Minor cleanup in update related code. · 8e59e994
      marko authored
      btr_push_update_extern_fields(): Instead of iterating all upd_get_n_fields(),
      stop at the first match.
      
      row_search_index_entry(): Simplify the return statements.
      
      row_upd_sec_step(): Eliminate the local variable "err".
      
      row_upd_clust_step(): Add a UNIV_UNLIKELY hint.
      8e59e994
  5. 22 Sep, 2006 3 commits
  6. 21 Sep, 2006 3 commits
  7. 20 Sep, 2006 5 commits
    • marko's avatar
      branches/zip: page_zip_empty_size(): New function to compute the · 5a21753b
      marko authored
      guaranteed free space available for inserting one record.
      
      btr_page_get_sure_split_rec(), btr_cur_pessimistic_insert():
      Use page_zip_empty_size().
      
      btr_page_split_and_insert(): Relax a debug assertion that there should
      be at least two user records on the page.  On compressed pages, we may
      be able to write only one record.
      5a21753b
    • marko's avatar
      branches/zip: Instrument the buffer pool allocator and deallocator · ff0acd76
      marko authored
      for more accurate Valgrind debugging.
      
      univ.i: Introduce UNIV_DEBUG_VALGRIND, UNIV_MEM_VALID, and UNIV_MEM_INVALID.
      
      buf_LRU_block_free_non_file_page(): Invalidate the buffer frame
      with UNIV_MEM_INVALID().
      
      buf_LRU_get_free_block(): Declare the buffer frame valid
      with UNIV_MEM_VALID().
      
      Other memory is allocated and deallocated via malloc() and free(),
      which are already overridden by Valgrind.  Without the added
      instrumentation, accesses to free pages in the buffer pool cannot
      be caught.
      
      The diagnostics could probably be improved further by declaring all
      non-latched buffer frames invalid.
      ff0acd76
    • marko's avatar
      branches/zip: Fix bugs #ifdef UNIV_DEBUG. · 3b03315f
      marko authored
      rec_convert_dtuple_to_rec_old(): Initialize the record in order to avoid
      bogus Valgrind warnings about the ut_ad() in mach_write_to_1() and
      mach_write_to_2().
      
      page_zip_compress(), page_zip_write_rec(), page_zip_write_blob_ptr():
      Replace ut_ad(page_validate(...)) with ut_ad(page_simple_validate_new(...)),
      because otherwise crash recovery would fail.
      3b03315f
    • marko's avatar
      branches/zip: fil_create_new_single_table_tablespace(): · a169d0ec
      marko authored
      Make page_zip->data point to an address different from page,
      to avoid calling memcpy() with overlapping source and destination.
      a169d0ec
    • marko's avatar
      branches/zip: mlog_parse_index(): After merge fix (r841): · 2af802d8
      marko authored
      Identify DB_TRX_ID and DB_ROLL_PTR in the index.
      2af802d8
  8. 19 Sep, 2006 2 commits
  9. 12 Sep, 2006 1 commit
  10. 06 Sep, 2006 2 commits
  11. 05 Sep, 2006 3 commits
  12. 04 Sep, 2006 2 commits
  13. 31 Aug, 2006 2 commits
  14. 29 Aug, 2006 2 commits
  15. 22 Aug, 2006 1 commit
  16. 21 Aug, 2006 4 commits
    • marko's avatar
      branches/zip: Speed up the compression and decompression of leaf pages · 1180ce98
      marko authored
      of non-clustered indexes.  On these pages, only the bytes rec[-5..-1]
      will be omitted from the compressed data stream.  Save time by not looking
      for trx_id or externally stored columns.
      1180ce98
    • marko's avatar
      branches/zip: Assert that only leaf pages of clustered indexes may contain · fb8ce599
      marko authored
      externally stored columns.  Make some use of the fact in compression and
      decompression.
      
      rec_init_offsets(): Add ut_ad(dict_index_is_clust(index)) before flagging
      external columns.
      
      page_zip_get_trailer_len(): Assert ut_ad(!page_zip->n_blobs) unless
      dict_index_is_clust(index).
      
      page_zip_get_n_prev_extern(): Add ut_ad(dict_index_is_clust(index)).
      
      page_zip_compress(), page_zip_decompress_low(): Add dict_index_is_clust()
      assertions.  Allow completely external storage of columns.  Simplify
      the computation of "externs".
      
      page_zip_write_rec(): Store leaf node records of non-clustered indexes
      with one memcpy(), avoiding rec_offs_n_extern() and the for loop.
      
      page_zip_write_blob_ptr(): Add ut_ad(dict_index_is_clust(index)).
      Simplify the computation of "externs".
      
      page_zip_clear_rec(): Only attempt to zero out BLOB pointers when
      the record belongs to a leaf page of a clustered index.
      
      page_zip_dir_delete(): Take a fast path when the record is
      not on a leaf page of a clustered index.
      Simplify the computation of "externs".
      
      page_zip_copy(): Assert that n_blobs is zero on anything else than
      leaf pages of clustered indexes.
      fb8ce599
    • marko's avatar
      branches/zip: page_zip_fields_decode(): Set index->type to DICT_CLUSTERED · 2f08aceb
      marko authored
      if and only if the records on the page contain a trx_id column.
      (Dummy indexes of non-leaf pages will always show up as non-clustered.)
      2f08aceb
    • marko's avatar