1. 21 Feb, 2006 3 commits
    • marko's avatar
      branches/zip: Remove temporary hooks for testing BLOB compression. · 331c8eaa
      marko authored
      dict_mem_table_create(): Initialize table->zip.
      
      btr0cur.c: Distinguish compressed BLOBs based on page_zip or table->zip.
      331c8eaa
    • marko's avatar
      branches/zip: · 69f236c2
      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().
      69f236c2
    • marko's avatar
      branches/zip: Fix bugs in the handling of externally stored columns. · 748f0694
      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.
      748f0694
  2. 17 Feb, 2006 3 commits
  3. 16 Feb, 2006 2 commits
    • marko's avatar
    • marko's avatar
      branches/zip: Implement the compression of BLOB columns. · ee5a92aa
      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.
      ee5a92aa
  4. 13 Feb, 2006 1 commit
    • marko's avatar
      branches/zip: Remove in-place updates of the "external storage" · d8e3b811
      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.
      d8e3b811
  5. 10 Feb, 2006 1 commit
    • marko's avatar
      branches/zip: Prepare for in-place updates of B-tree node pointers, · 062c64e8
      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.
      062c64e8
  6. 03 Feb, 2006 1 commit
    • marko's avatar
      branches/zip: Prepare for upcoming implementation of page_zip_compress() · c0ac96d9
      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()
      c0ac96d9
  7. 30 Nov, 2005 3 commits
    • marko's avatar
      branches/zip: · 05fbb8ca
      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.
      05fbb8ca
    • marko's avatar
      branches/zip: Minor improvements for debugging and testing purposes. · 77c570dc
      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.
      77c570dc
    • marko's avatar
      branches/zip: Merge revisions 72:79 from trunk. · ad69a826
      marko authored
      ad69a826
  8. 29 Nov, 2005 2 commits
    • marko's avatar
      branches/zip: Merge revisions 9:72 from trunk. · e12d8a0f
      marko authored
      e12d8a0f
    • marko's avatar
      branches/zip: More fixes to problems found in speedc test runs. · 1a1d2cd3
      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.
      1a1d2cd3
  9. 28 Nov, 2005 1 commit
    • marko's avatar
      branches/zip: Fixes to allow the speedc test to run without assertion failures. · 941127fd
      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.
      941127fd
  10. 25 Nov, 2005 3 commits
    • marko's avatar
      branches/zip: Minor fixes. Now one non-trivial page compresses and · 4fc27c27
      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.
      4fc27c27
    • marko's avatar
      branches/zip: Minor fixes to get a page with one record compress/decompress. · 49ef38ef
      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.
      49ef38ef
    • marko's avatar
      branches/zip: Minor fixes. Compression/decompression still fails. · 5ef5378f
      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.
      5ef5378f
  11. 24 Nov, 2005 1 commit
  12. 18 Nov, 2005 2 commits
  13. 15 Nov, 2005 1 commit
  14. 14 Nov, 2005 2 commits
    • marko's avatar
      branches/zip: Minor improvements. · 8f9d2a76
      marko authored
      page_dir_slot_set_n_owned(): Check page_zip_available().
      page_dir_add_slots(): Add parameter page_zip.
      btr_attach_half_pages(): Add parameter page_zip.
      btr_node_ptr_set_child_page_no(): Add parameter page_zip.
      Make comments about page_zip modification log usage more accurate.
      8f9d2a76
    • marko's avatar
      branches/zip: Minor improvements. · 7a696ebf
      marko authored
      page_dir_set_n_slots(): Add debug assertion that there will be enough space
      available in the modification log of the compressed page.
      page_trailer_get_len(): Simplify the formula.  Make more use of the function.
      7a696ebf
  15. 11 Nov, 2005 2 commits
    • marko's avatar
      branches/zip: Minor improvements. · a6fe621c
      marko authored
      page_set_max_trx_id(), page_update_max_trx_id(): Add parameter page_zip.
      
      Check that page_zip_decompress() is never called after modifying the
      header or trailer of the compressed page, i.e., that page_zip_decompress()
      will restore the uncompressed page as it was before the failed operation.
      a6fe621c
    • marko's avatar
      branches/zip: Restore left b-tree splits. · d4231b11
      marko authored
      page_move_rec_list_start(): Restored.  Reorganize old page if compressed.
      btr_page_split_and_insert(): Do left page splits.
      d4231b11
  16. 10 Nov, 2005 1 commit
    • marko's avatar
      branches/zip: · 69305625
      marko authored
      buf_flush_buffered_writes(): Remove bogus assertion failure.
      69305625
  17. 09 Nov, 2005 1 commit
    • marko's avatar
      branches/zip: Bug fixes and improvements. · 6ff00e1d
      marko authored
      page_header_reset_last_insert(): Add page_zip parameter.
      rec_get_next_ptr(): Return a pointer to the same page, or NULL.
      page_dir_delete_slot(): Fix off-by-one errors.
      6ff00e1d
  18. 07 Nov, 2005 1 commit
    • marko's avatar
      branches/zip: · 94d42b04
      marko authored
      Fix some (not all) bugs found by testing.
      94d42b04
  19. 04 Nov, 2005 2 commits
    • marko's avatar
      branches/zip: · 1fe2afd3
      marko authored
      Fix bugs found during testing.
      1fe2afd3
    • marko's avatar
      branches/zip: · edff1526
      marko authored
      Add page_zip parameter to page_dir_slot_set_rec().
      Improve the documentation of the page_zip parameters in page0page.
      Add function page_trailer_get_len().
      edff1526
  20. 02 Nov, 2005 1 commit
    • marko's avatar
      branches/zip: · 7de5fd6d
      marko authored
      Slightly improve error handling.
      7de5fd6d
  21. 28 Oct, 2005 1 commit
    • marko's avatar
      branches/zip: · 3ba94cbe
      marko authored
      Implement page_zip_write_header().
      Add page_zip parameter to btr_page_set_ functions.
      Allow page_copy_rec_list_end() to be called with invalid new_page_zip
      if the page has been newly created.
      3ba94cbe
  22. 27 Oct, 2005 5 commits