• marko's avatar
    branches/zip: dtuple_convert_big_rec(): Do not store anything locally · 174bd7b7
    marko authored
    of externally stored columns, and fix bugs introduced in r873.  (Bug #22496)
    
    btr_page_get_sure_split_rec(), btr_page_insert_fits(),
    rec_get_converted_size(), rec_convert_dtuple_to_rec(),
    rec_convert_dtuple_to_rec_old(), rec_convert_dtuple_to_rec_new():
    Add parameters ext and n_ext.  Flag external fields during the
    conversion.
    
    rec_set_field_extern_bits(), rec_set_field_extern_bits_new(),
    rec_offs_set_nth_extern(), rec_set_nth_field_extern_bit_old():
    Remove.  The bits are set by rec_convert_dtuple_to_rec().
    
    page_cur_insert_rec_low(): Remove the parameters ext and n_ext.
    
    btr_cur_add_ext(): New utility function for updating and sorting ext[].
    Low-level functions now expect the array to be in ascending order
    for performance reasons.  Used in btr_cur_optimistic_insert(),
    btr_cur_pessimistic_insert(), and btr_cur_pessimistic_update().
    
    btr_cur_optimistic_insert(): Remove some defensive code, because we cannot
    compute the added parameters of rec_get_converted_size().
    
    btr_push_update_extern_fields(): Sort the array.  Require the array to
    be twice the maximum usage, so that ut_ulint_sort() can be used.
    
    dtuple_convert_big_rec(): Allocate new space for the BLOB pointer,
    to avoid overwriting prefix indexes to the same column.  Adapt
    dtuple_convert_back_big_rec().
    
    row_build_index_entry(): Fetch the columns also for prefix indexes of
    the clustered index.
    
    page_zip_apply_log(), page_zip_decompress_clust(): Allow externally
    stored fields to lack a locally stored part.
    174bd7b7
page0zip.c 101 KB