- 29 Sep, 2006 1 commit
-
-
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.
-
- 28 Sep, 2006 2 commits
-
-
marko authored
"On compressed pages, return NULL if incl_data > free_space." btr_page_split_and_insert(): Remove the limit check of n_iterations on compressed pages. After enough many invocations of btr_page_get_sure_split_rec(), the record will finally fit.
-
marko authored
for (;;) { ... if (condition) { ... return }} loop as do { ... } while (!condition); ... return. On compressed pages, return NULL if incl_data > free_space.
-
- 27 Sep, 2006 1 commit
-
-
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).
-
- 26 Sep, 2006 7 commits
-
-
marko authored
of externally stored columns to REC_1BYTE_OFFS_LIMIT (128) bytes. TODO: only store BTR_EXTERN_FIELD_REF_SIZE (20) bytes with the record, and store the entire column externally. (Bug #22496) dict_col_t::min_prefix: Remove.
-
marko authored
Do not augment clustered index records. When computing the prefix, use dfield (where the prefix was copied), not dfield2 (the record in the clustered index).
-
marko authored
unnecessary memset() introduced in r852. When zip_size != 0, write the compressed page to disk, not the uncompressed one.
-
marko authored
in the clustered index to be smaller than the indexed prefix in secondary indexes. row_ext_lookup(): Return NULL if the column is not stored externally. trx_undo_rec_get_partial_row(): row_build(): Add parameter row_ext_t** ext. row_build_index_entry(): Add the parameter row_ext_t* ext. Invoke row_ext_lookup() to fetch prefixes of externally stored columns. upd_node_t, undo_node_t, purge_node_t: Add the field row_ext_t* ext.
-
marko authored
mach_read_...() functions. Remove unnecessary casts.
-
marko authored
This will be needed for fixing Bug #22496. REC_MAX_INDEX_COL_LEN: New constant, copied from DICT_MAX_INDEX_COL_LEN. row_ext_create(), row_ext_lookup(), row_ext_lookup_low(): New functions.
-
marko authored
stored column. This is the first part of fixing Bug #22496. btr_copy_externally_stored_field_prefix(): New function. btr_copy_externally_stored_field(): Split to btr_copy_externally_stored_field_prefix_low(). row_sel_sec_rec_is_for_blob(): New function, used by row_sel_sec_rec_is_for_clust_rec() in selects via a secondary index.
-
- 25 Sep, 2006 1 commit
-
-
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.
-
- 22 Sep, 2006 3 commits
- 21 Sep, 2006 3 commits
-
-
marko authored
page_zip_decompress_node_ptrs(), page_zip_decompress_sec(), and page_zip_decompress_clust(). See also r856.
-
marko authored
fil_space_get_zip_size() unless zip_size is really needed (update_ibuf_bitmap || page). This avoids an assertion failure when discarding ibuf entries for a deleted tablespace, for which fil_space_get_zip_size() would return ULINT_UNDEFINED. Also, reindent ibuf0ibuf.c.
-
marko authored
page_zip_compress_sec(), and page_zip_compress_clust().
-
- 20 Sep, 2006 5 commits
-
-
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.
-
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.
-
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.
-
marko authored
Make page_zip->data point to an address different from page, to avoid calling memcpy() with overlapping source and destination.
-
marko authored
Identify DB_TRX_ID and DB_ROLL_PTR in the index.
-
- 19 Sep, 2006 2 commits
-
-
marko authored
on the ZIP_DUMMY index. Because it does not contain valid collation information, the ordering check in page_validate() may fail on pages containing non-binary data. Instead, let the callers of page_zip_decompress() invoke page_validate() when the index information is available.
-
marko authored
-
- 12 Sep, 2006 1 commit
-
-
marko authored
-
- 06 Sep, 2006 2 commits
- 05 Sep, 2006 3 commits
- 04 Sep, 2006 2 commits
- 31 Aug, 2006 2 commits
-
-
marko authored
of externally stored columns to 108 bytes when possible. This will unmask a bug in the handling of BLOBs on compressed tablespaces, especially of small page sizes. Apparently, the locally stored part must be less than 235 bytes in size for the bug to occur. dict_col_struct: Add field min_prefix. dict_index_build_internal_non_clust(): Adjust min_prefix.
-
marko authored
dtuple_convert_big_rec(). This should never happen, though.
-
- 29 Aug, 2006 2 commits
- 22 Aug, 2006 1 commit
-
-
marko authored
old value of PAGE_N_RECS. page_zip_dir_find_free_low(): Rename to page_zip_dir_find_low(). page_zip_dir_find(): Make use of page_zip_dir_find_low().
-
- 21 Aug, 2006 2 commits
-
-
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.
-
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.
-