1. 06 Mar, 2006 1 commit
    • marko's avatar
      branches/zip: Fix some bugs in the insertion of records. · 1aca6cad
      marko authored
      row_upd_rec_in_place(), page_zip_write_rec(): Add parameter "index".
      
      page_dir_set_n_heap(): Add a debug assertion that on compressed
      pages, n_heap will always be incremented by one.  Improve code formatting.
      
      page_zip_dir_add_slot(): New function, called from
      page_cur_insert_rec_low() after page_mem_alloc_heap().
      
      rec_set_n_owned_new(): Do not call page_zip_rec_set_owned()
      on the supremum record.
      
      rec_offs_make_valid(): Add debug assertions.
      
      page_zip_dir_user_size(): Correct an off-by-one error in the debug assertion.
      
      page_zip_apply_log(): Add parameter trx_id_col.  Skip trx_id and roll_ptr.
      
      page_zip_decompress(): Simplify the handling of "storage" in the loop that
      copies the uncompressed fields.
      
      page_zip_write_rec(): Store trx_id and roll_ptr separately.
      
      page_zip_write_trx_id(), page_zip_write_roll_ptr(): Fix off-by-one errors.
      
      page_cur_insert_rec_low(): Call page_zip_dir_add_slot() after
      page_mem_alloc_heap().  Remove some redundant assertions.
      Pass page_zip to page_dir_split_slot().
      1aca6cad
  2. 03 Mar, 2006 4 commits
  3. 02 Mar, 2006 1 commit
    • marko's avatar
      branches/zip: Fix some bugs in incremental compression. · 7f2d91cb
      marko authored
      btr_create(): page_zip_compress() returns FALSE on failure.
      
      page_zip_write_header(): Write to page_zip->data[] instead of page_zip[].
      
      buf_flush_init_for_writing(): Add parameter page_zip and set the fields
      also in the header of the compressed page.
      
      btr_cur_search_to_nth_level(): Add ut_ad() on page_zip_validate().
      7f2d91cb
  4. 01 Mar, 2006 3 commits
  5. 28 Feb, 2006 1 commit
    • marko's avatar
      branches/zip: In page_zip_compress(), do not touch page_zip unless the · f7814d29
      marko authored
      operation succeeds.
      
      page_zip_dir_set(): Remove, as the slots will be written to a temporary
      buffer.
      
      page_zip_dir_encode(): Replace page_zip with buf.  Make some assertions
      more accurate.  Write the dense page directory to buf.
      
      page_zip_compress(): Allocate a temporary buffer for the compressed page
      except the page header.  Make some assertions more accurate.
      
      page_zip_compress(), page_zip_decompress(): Remove 2 bytes of empty space
      adjacent to the area reserved for storing uncompressed columns.
      f7814d29
  6. 27 Feb, 2006 5 commits
    • marko's avatar
      branches/zip: Fix a memory management bug. · e7acbec3
      marko authored
      page_zip_decompress(): Free index and heap at the end of the function.
      Do not write the index to the MLOG_ZIP_DECOMPRESS record, since it can be
      decoded from the compressed page.
      e7acbec3
    • marko's avatar
      branches/zip: Make page_delete_rec_list_start() work on compressed pages, · a71a1e9c
      marko authored
      now that deletion of records on compressed pages is guaranteed to succeed.
      a71a1e9c
    • marko's avatar
      branches/zip: Remove the possibility to relocate reallocated records · 897d28ca
      marko authored
      on a compressed page.
      
      page_zip_get_n_relocated(), page_zip_set_n_relocated(),
      page_zip_get_relocated(): Remove.
      
      page0zip.c, page0zip.ic: Remove all references to n_relocated.
      
      page_cur_insert_rec_low(): On pages that are compressed,
      never relocate records that are allocated from the free list.
      897d28ca
    • marko's avatar
      branches/zip: Correct bugs found by running ibtestblob. · 942ec176
      marko authored
      page_zip_compress(): Add assertions !c_stream.avail_in where appropriate.
      Add assertions on c_stream.next_in.  Correct malformed assertion on
      externs > c_stream.next_in.  Note that there may be trailing garbage after
      the last record.
      
      page_zip_fields_decode(): Correctly decode variable-length fields having
      maximum length greater than 255 bytes.
      
      page_zip_decompress(): Remove the special treatment of the case !n_dense.
      Replace the Z_NO_FLUSH argument of inflate() with Z_SYNC_FLUSH.
      Treat Z_OK return value the same as Z_BUF_ERROR: always check avail_out.
      After decompressing all records, decompress any trailing garbage.
      942ec176
    • marko's avatar
      branches/zip: Merge revisions 236:247 from trunk. · 40b0bf78
      marko authored
      40b0bf78
  7. 23 Feb, 2006 3 commits
  8. 22 Feb, 2006 2 commits
    • marko's avatar
      branches/zip: Minor cleanup. · 77a09481
      marko authored
      Remove the declaration of the undefined function
      page_zip_available_noninline().
      
      Make page_zip_available() private to page0zip.c and page0zip.ic.
      77a09481
    • marko's avatar
      branches/zip: Try to synchronize the updates of uncompressed and · 47da8abc
      marko authored
      compressed pages.
      
      btr_root_raise_and_insert(): Distinguish root_page_zip and new_page_zip.
      
      btr_cur_set_ownership_of_extern_field(): Do not log the write on the
      uncompressed page if it will be logged for page_zip.
      
      lock_rec_insert_check_and_lock(), lock_sec_rec_modify_check_and_lock():
      Update the max_trx_id field also on the compressed page.
      
      mlog_write_ulint(): Add UNIV_UNLIKELY hints.  Remove trailing white space.
      
      mlog_log_string(): Remove trailing white space.
      
      rec_set_field_extern_bits(): Remove parameter mtr, as the write will either
      occur in the heap, or it will be logged at a higher level.
      
      recv_parse_or_apply_log_rec_body(),
      page_zip_write_header(): Add log record type MLOG_ZIP_WRITE_HEADER.
      
      page_header_set_field(): Pass mtr=NULL to page_zip_write_header().
      
      page_header_reset_last_insert(): Pass mtr to page_zip_write_header().
      
      btr_page_set_index_id(), btr_page_set_level(),
      btr_page_set_next(), btr_page_set_prev(): Pass mtr to page_zip_write_header().
      
      row_upd_rec_sys_fields(): Pass mtr=NULL to page_zip_write_trx_id() and
      page_zip_write_roll_ptr(), since the write will be logged at a higher level.
      
      page_zip_write_header(): Add parameter mtr.
      page_zip_write_header_log(): New function.
      
      Remove rec_set_nth_field_extern_bit().
      Make rec_set_nth_field_extern_bit_old() static.
      Rename rec_set_nth_field_extern_bit_new()
      to rec_set_field_extern_bits_new() and make it static.
      
      row_ins_index_entry_low(): Remove bogus TODO comment.
      47da8abc
  9. 21 Feb, 2006 3 commits
    • marko's avatar
      branches/zip: Remove temporary hooks for testing BLOB compression. · 03a6c35b
      marko authored
      dict_mem_table_create(): Initialize table->zip.
      
      btr0cur.c: Distinguish compressed BLOBs based on page_zip or table->zip.
      03a6c35b
    • marko's avatar
      branches/zip: · 9d4fa728
      marko authored
      Fix the way how btr_free_externally_stored_field() is called in purge.
      
      btr_free_externally_stored_field(): Add parameter field_ref that points
      directly to the BLOB reference.  Use rec, offsets, page_zip, and i
      only for the page_zip_write_blob_ptr() call.
      
      row_purge_upd_exist_or_extern(): Do not assume that the undo log contains
      the entire record.  Only pass the BLOB reference to
      btr_free_externally_stored_field().
      9d4fa728
    • marko's avatar
      branches/zip: Fix bugs in the handling of externally stored columns. · 0d4b8a31
      marko authored
      btr_cur_pessimistic_insert(): Pass the "extern storage" flags to
      btr_root_raise_and_insert() or btr_page_split_and_insert().
      
      btr_copy_externally_stored_field(): Include local_len in the returned length.
      0d4b8a31
  10. 17 Feb, 2006 3 commits
  11. 16 Feb, 2006 2 commits
    • marko's avatar
    • marko's avatar
      branches/zip: Implement the compression of BLOB columns. · 1b7710af
      marko authored
      This has not been extensively tested yet, because some other part of the
      code breaks in "ibtestblob".
      
      btr_free_page_low(): Add parameters "space" and "page_no", because they
      are omitted from compressed BLOB pages.
      
      btr0cur.c: Implement the compression and decompression of BLOB columns,
      enabled at compile-time (#define ZIP_BLOB TRUE) for now.
      
      btr_rec_free_externally_stored_fields(),
      btr_copy_externally_stored_field(): Made static
      
      mlog_log_string(): New function, split from mlog_write_string(), allows
      to avoid a dummy memcpy() of compressed BLOB pages.
      1b7710af
  12. 13 Feb, 2006 1 commit
    • marko's avatar
      branches/zip: Remove in-place updates of the "external storage" · 4b3be43c
      marko authored
      flag of records.  The flags may only be updated in heap-allocated
      copies of records.
      
      btr_root_raise_and_insert(),
      btr_page_split_and_insert(),
      btr_cur_insert_if_possible(),
      btr_cur_optimistic_insert(),
      btr_cur_pessimistic_insert(),
      page_cur_tuple_insert(),
      page_cur_insert_rec_low(): Add parameters "ext" and "n_ext".
      
      dtuple_convert_big_rec(): Make parameter "ext" const.
      4b3be43c
  13. 10 Feb, 2006 1 commit
    • marko's avatar
      branches/zip: Prepare for in-place updates of B-tree node pointers, · 12050c5c
      marko authored
      BLOB pointers, trx_id, and roll_ptr.
      
      btr_empty(), btr_create(), page_create(): Add parameter "index", as some
      index information will be encoded on the compressed page.
      
      Define REC_NODE_PTR_SIZE as 4.
      
      Allow btr_page_reorganize() and btr_page_reorganize_low() to fail.
      
      Define the error code DB_ZIP_OVERFLOW.
      
      Make row_ins_index_entry_low() static.
      
      page0zip: Encode the index, log reorganized records, and store uncompressed
      fields separately from the compressed data stream.
      12050c5c
  14. 03 Feb, 2006 1 commit
    • marko's avatar
      branches/zip: Prepare for upcoming implementation of page_zip_compress() · d5f33daf
      marko authored
      that will require complete index information.
      
      dict_create_index_step(): invoke dict_index_add_to_cache() before btr_create()
      
      dict_index_remove_from_cache(): make public
      
      dict_index_get_if_in_cache_low(): new function, for holding dict_sys->mutex
      
      buf_flush_init_for_writing(): remove the temporary hook to page_zip_compress()
      
      page_create(): add temporary hook to page_zip_compress()
      d5f33daf
  15. 30 Nov, 2005 3 commits
    • marko's avatar
      branches/zip: · 3a55efc4
      marko authored
      buf_flush_init_for_writing(): The reported dense page directory size was
      4 bytes too much.  Subtract 2 (infimum and supremum) from n_heap.
      
      page_zip_decompress(): When decompressing the last user record, only set
      heap_no and the status bits if there is data to decode, i.e., there
      are user records on the page.
      3a55efc4
    • marko's avatar
      branches/zip: Minor improvements for debugging and testing purposes. · 82c74a75
      marko authored
      buf_flush_init_for_writing(): Improve the diagnostics and make the
      condition for skipping pages accurate.
      
      univ.i: Introduce UNIV_ZIP_DEBUG for enabling some page_zip_validate() tests.
      
      page0zip.h, page0zip.c: Define and use page_zip_validate() in
      page_zip_compress() and page_zip_write() if UNIV_ZIP_DEBUG or UNIV_DEBUG
      is defined.
      82c74a75
    • marko's avatar
      branches/zip: Merge revisions 72:79 from trunk. · fe9e164f
      marko authored
      fe9e164f
  16. 29 Nov, 2005 2 commits
    • marko's avatar
      branches/zip: Merge revisions 9:72 from trunk. · 0bf7f4bd
      marko authored
      0bf7f4bd
    • marko's avatar
      branches/zip: More fixes to problems found in speedc test runs. · 541fcfcd
      marko authored
      Before the speedc test was interrupted, 121,765 B-tree pages were written.
      
      buf_flush_init_for_writing(): Do not compress other than B-tree pages
      outside the system tablespace.  Report non-B-tree pages.
      
      page_zip_decompress(): Clear the unused heap space on the uncompressed page,
      so that the whole buffer for the uncompressed page will be initialized and
      page_zip_validate() will always succeed.
      541fcfcd
  17. 28 Nov, 2005 1 commit
    • marko's avatar
      branches/zip: Fixes to allow the speedc test to run without assertion failures. · de60fbdf
      marko authored
      page_zip_dir_decode(): Correct the handling of the free list.
      
      page_zip_set_extra_bytes(): Remove off-by-one error in the first loop.
      
      page_zip_apply_log(): Replace parameter end with size, and let end=data+size.
      
      page_zip_decompress(): Properly handle pages where the first user record has
      more than REC_N_NEW_EXTRA_BYTES extra bytes.
      
      page_delete_rec_list_end(): Remove page_zip_temp.  This operation will be
      done completely in-place on page_zip.  If page_zip is specified, clear the
      data bytes and the info and status bits of deleted records and clear the
      removed directory slots.
      
      page_dir_delete_slot(): Clear the last directory slot, which will be removed.
      de60fbdf
  18. 25 Nov, 2005 3 commits
    • marko's avatar
      branches/zip: Minor fixes. Now one non-trivial page compresses and · 818d1229
      marko authored
      decompresses properly.
      
      page_mem_free(): Adjust the temporary condition for zeroing data.
      
      page_zip_compress(): Do not accept Z_STREAM_END from non-final deflate().
      Tighten the assertion on c_stream.avail_in.
      
      page_zip_dir_sort(): Note that the high bound is not inclusive.
      
      page_zip_dir_decode(): Remove off-by-one error in page_zip_dir_sort() call.
      
      page_zip_set_extra_bytes(): Add the termination condition that was forgotten
      from the second for loop.  Simplify the code a little.
      
      page_zip_decompress(): Do not accept Z_STREAM_END from non-final inflate().
      Tighten the assertion on d_stream.avail_out.  Increment heap_status correctly.
      818d1229
    • marko's avatar
      branches/zip: Minor fixes to get a page with one record compress/decompress. · d1f9c8ec
      marko authored
      A page with multiple records or deleted records still does not compress
      or decompress properly.
      
      buf_flush_init_for_writing(): Initialize block->page_zip properly so that all
      assertions in page0zip can be enabled.
      
      page_zip_decompress(): Note that corrupt data should not lead to assertions.
      
      page_zip_dir_set(): Correct the interface.  Fix off-by-one error.
      page_zip_dir_get(): Fix off-by-one error.
      
      page0zip.c: Replace n_heap with n_dense and add comments about
      the infimum and supremum records whenever we subtract 2 from heap_no.
      Fix some programming errors.
      d1f9c8ec
    • marko's avatar
      branches/zip: Minor fixes. Compression/decompression still fails. · 13002bdf
      marko authored
      buf0flu.c: Allocate the temporary buffer from buf_frame_alloc().
      
      page_zip_simple_validate(): Do not assert page_zip->m_start >= PAGE_DATA.
      
      page_zip_compress(): Replace some assertions with page_zip_simple_validate(),
      and do not assert anything about page_zip->data contents.
      
      page_zip_validate(): Do not compare the page trailer bytes.
      
      page_zip_write(): Assert that the entire page headers match and
      that page_zip->m_start >= PAGE_DATA.
      13002bdf