Commit graph

20 commits

Author SHA1 Message Date
marko
723a9fc1d9 branches/zip: Fix a bug in the insertion of a record.
page_dir_split_slot(): Do not pass page_zip to page_dir_slot_set_n_owned(),
because the caller will rewrite the dense page directory later.  At this
point of execution, the dense directory will not contain the newly inserted
record, which may end up being written to new_slot.
2006-03-09 13:35:04 +00:00
marko
16f3d27113 branches/zip: Fix various bugs.
btr_root_raise_and_insert(): Because btr_page_set_level() must not
change level from non-zero to zero on compressed pages, invoke
btr_page_set_level() with page_zip==NULL and compress the entire
root page after creating it from the scratch.

btr_attach_half_pages(): Simplify the computation of lower_page_zip
and upper_page_zip.  Invoke btr_node_ptr_set_child_page_no() with
the correct page_zip.

page0page.h: Add __attribute__((const)) to functions testing for
infimum or supremum.

page_zip_dir_delete(): Note that the third parameter may be NULL.
Correct offset errors.

page_zip_available(): Use n_heap instead of n_recs.

page_zip_dir_find(), page_zip_dir_find_free(): Fix off-by-one error.

page_zip_fields_encode(), page_zip_fields_decode(): Encode and decode
index->n_nullable for non-leaf pages.

page_zip_apply_log(): Write REC_NEW_HEAP_NO before calling
rec_offs_make_valid().

page_zip_write_node_ptr(): Correct off-by-one error.

page_cur_search_with_match(): Make use of page_is_leaf().

page_dir_add_slots(): Replaced with page_dir_add_slot().  Use memmove().
2006-03-08 22:19:20 +00:00
marko
7c8b6bda4b branches/zip: Make page_delete_rec_list_start() work on compressed pages,
now that deletion of records on compressed pages is guaranteed to succeed.
2006-02-27 12:38:49 +00:00
marko
82d38b63e3 branches/zip: Merge revisions 236:247 from trunk. 2006-02-27 09:33:26 +00:00
marko
f40121415d branches/zip: Merge revisions 200:236 from trunk. 2006-02-23 19:25:29 +00:00
marko
c952dc5b49 branches/zip: When allocating records from the free list,
do not allow extra_size to decrease on compressed pages.

Split page_mem_alloc() to page_mem_alloc_free() and page_mem_alloc_heap().

page_cur_insert_rec_low(): Remove parameter "tuple".  Implement some of the
logic from page_mem_alloc().

page_cur_tuple_insert(): Convert the tuple to a record and calculate offsets.

page_zip_validate(): Assert that the page is in compact format.
2006-02-23 14:45:12 +00:00
marko
c04ddfef05 branches/zip: Try to synchronize the updates of uncompressed and
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.
2006-02-22 13:02:40 +00:00
marko
6ce8427cb8 branches/zip: Merge revisions 79:200 from trunk. 2006-02-17 14:19:39 +00:00
marko
062c64e87e branches/zip: Prepare for in-place updates of B-tree node pointers,
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.
2006-02-10 15:06:17 +00:00
marko
c0ac96d9b4 branches/zip: Prepare for upcoming implementation of page_zip_compress()
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()
2006-02-03 14:44:29 +00:00
marko
941127fd9d branches/zip: Fixes to allow the speedc test to run without assertion failures.
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.
2005-11-28 11:32:52 +00:00
marko
8f9d2a767c branches/zip: Minor improvements.
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.
2005-11-14 15:46:12 +00:00
marko
a6fe621ca1 branches/zip: Minor improvements.
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.
2005-11-11 21:18:42 +00:00
marko
d4231b11c5 branches/zip: Restore left b-tree splits.
page_move_rec_list_start(): Restored.  Reorganize old page if compressed.
btr_page_split_and_insert(): Do left page splits.
2005-11-11 13:59:40 +00:00
marko
6ff00e1dbb branches/zip: Bug fixes and improvements.
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.
2005-11-09 15:43:36 +00:00
marko
94d42b0430 branches/zip:
Fix some (not all) bugs found by testing.
2005-11-07 14:24:37 +00:00
marko
edff1526a6 branches/zip:
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().
2005-11-04 08:50:25 +00:00
marko
3ba94cbe8e branches/zip:
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.
2005-10-28 10:45:20 +00:00
marko
88e6d6863d branches/zip:
Initial import of the zip-like compression of B-tree pages.
2005-10-27 11:48:10 +00:00
osku
c307820962 Import 5.0 code. 2005-10-27 07:29:40 +00:00