- 13 Dec, 2007 5 commits
-
-
marko authored
is an overlap between BLOB pointers and the modification log or the zlib stream. page_zip_decompress_clust_ext(): Remove the improper check. The d_stream->avail_in cannot be decremented here, because we do not know at this point if the record is deleted. No space is reserved for the BLOB pointers in deleted records. page_zip_decompress_clust(): Check for the overlap here, right before copying the BLOB pointers. page_zip_decompress_clust(): Also check that the target column is long enough, and return FALSE instead of ut_ad() failure.
-
vasil authored
Add some clarification to a comment.
-
marko authored
is_clust, to avoid a warning about unused variable when the definition of page_zip_fail() is empty.
-
marko authored
some decompression functions. page_zip_apply_log_ext(), page_zip_apply_log(): Call page_zip_fail() with appropriate diagnostics before returning NULL. page_zip_decompress_node_ptrs(), page_zip_decompress_sec(), page_zip_decompress_clust(): When detecting that the zlib stream followed by the modification log overlaps the trailer, do not let an assertion fail, but invoke page_zip_fail() and return FALSE. Corrupt data should never lead into assertion failures in decompression functions.
-
marko authored
ASSERT_ZERO() and ASSERT_ZERO_BLOB() for asserting that certain blocks of memory are filled with zero.
-
- 12 Dec, 2007 2 commits
-
-
marko authored
allocating compressed page frames or their control blocks. Also note that if buf_buddy_alloc() is used for allocating a control block, it must be initialized before releasing buf_pool->mutex. buf_page_init_for_read(): When the page hash check fails after buf_buddy_alloc(), free the uninitialized control block before freeing the compressed page frame. This fixes a potential error in buf_buddy_relocate_block().
-
marko authored
are interfaced with the buffer pool.
-
- 10 Dec, 2007 3 commits
-
-
marko authored
buf_zip_decompress() and return NULL on decompression failure.
-
marko authored
supposed to be fixed in r2163.
-
marko authored
mutex is temporarily released. buf_LRU_free_block(), buf_buddy_alloc_clean(): Add an output parameter that will be assigned TRUE when the buffer pool mutex is released. This bug was spotted by and fix provided by Sunny.
-
- 07 Dec, 2007 2 commits
-
-
marko authored
columns to be up to REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE bytes in a debug assertion. This assertion could fail since r2159 in trx_undo_prev_version_build(), because the undo log records for updates and deletes would contain longer prefixes of externally stored columns. The assertion failure was reported by Sunny.
-
marko authored
value. Document this change in behaviour, and make all callers invoke the function right after dtuple_create(). dict_create_sys_fields_tuple(): Add a missing "break" statement to the loop that checks if there are any column prefixes in the index. row_get_prebuilt_insert_row(): Do not set the fields to the SQL NULL value, now that dict_table_copy_types() takes care of it.
-
- 05 Dec, 2007 3 commits
-
-
marko authored
enough prefixes of externally stored columns, so that purge will not have to dereference any BLOB pointers, which may be invalid. This will not be necessary for logging inserts, because inserts are no-ops in purge, and the record will remain locked during transaction rollback. TODO: in dict_build_table_def_step() or dict_build_index_def_step(), prevent the creation of tables with too many columns for which a prefix index is defined. This is because there is a size limit of undo log records, and for each prefix-indexed column, the log must store REC_MAX_INDEX_COL_LEN + BTR_EXTERN_FIELD_REF_SIZE bytes. trx_undo_page_report_insert(): Assert that the index is clustered. trx_undo_page_fetch_ext(): New function, for fetching the BLOB prefix in trx_undo_page_report_modify(). trx_undo_page_report_modify(): Write long enough prefixes of the externally stored columns to the undo log. trx_undo_rec_get_partial_row(): Remove the parameter "ext". Assert that the undo log contains long enough prefixes of the externally stored columns. purge_node_t: Remove the field "ext".
-
marko authored
prefix indexes from being built on externally stored columns.
-
marko authored
Use rec_offs_any_extern() as a condition for freeing externally stored columns. This is only a performance optimization.
-
- 04 Dec, 2007 1 commit
-
-
marko authored
innodb.result, innodb.test: Revert the changes in r2145. The tests that were removed by MySQL ChangeSet@1.2598.2.6 2007-11-06 15:42:58-07:00 tsmith@hindu.god were moved to a new test, innodb_autoinc_lock_mode_zero, which is kept in the MySQL BitKeeper tree.
-
- 03 Dec, 2007 2 commits
-
-
marko authored
when row_build() was changed to prefetch all externally stored column prefixes that occur in ordering fields of an index. row_build(): Add the parameter col_table for determining which externally stored columns need to be fetched. row_merge_read_clustered_index(): Pass new_table as the said parameter, so that newly added indexes containing column prefix indexes of externally stored columns will work.
-
marko authored
of the record containing the field reference may change.
-
- 30 Nov, 2007 3 commits
- 29 Nov, 2007 9 commits
-
-
vasil authored
* Change terminology: wait lock -> requested lock waited lock -> blocking lock new: requesting transaction (the trx what owns the requested lock) new: blocking transaction (the trx that owns the blocking lock) * Add transaction ids to INFORMATION_SCHEMA.INNODB_LOCK_WAITS. This is somewhat redundant because transaction ids can be found in INNODB_LOCKS (which can be joined with INNODB_LOCK_WAITS) but would help users to write shorter joins (one table less) in some cases where they want to find which transaction is blocking which. Suggested by: Ken Approved by: Heikki
-
marko authored
in r2131.
-
marko authored
have been removed in r2131.
-
marko authored
Only add indexed BLOBs to row_ext. trx_undo_rec_get_partial_row(): Move the BLOB fetching to row_ext_create(). row_build(): Pass only those BLOBs to row_ext_create() that are referenced by ordering columns of some indexes, similar to trx_undo_rec_get_partial_row(). row_ext_create(): Add the parameter "tuple". Move the implementation from row0ext.ic to row0ext.c. row_ext_lookup_ith(), row_ext_lookup(): Return a const pointer. Remove the parameters "field" and "f_len". Make the row_ext_t* parameter const. row_ext_t: Remove the field zip_size. field_ref_zero[]: Declare in btr0types.h instead of btr0cur.h. row_ext_lookup_low(): Rename to row_ext_cache_fill() and change the signature.
-
marko authored
univ.i: Do not define UNIV_DEBUG, UNIV_ZIP_DEBUG. btr_cur_del_unmark_for_ibuf(): Use the same comment in both btr0cur.c and btr0cur.h. Wrap long lines.
-
sunny authored
contents end up with conflicting versions of a record's state. The zipped page record was not being marked as "(un)deleted" because we were not passing the zipped page contents to the (un)delete function, which first (un)delete marks the uncompressed version and then based on whether page_zip is NULL or not (un)delete marks the record in the compressed page.
-
marko authored
for dropping the index trees, and set the dictionary operation flag, similar to what ha_innobase::add_index() does. This should ensure correct crash recovery.
-
marko authored
only for those externally stored columns that occur in the ordering columns of indexes. Prefetch the prefixes of those columns, because the clustered index record and the BLOBs may have been deleted by the time when the purge thread needs to read the BLOB prefixes. row_ext_create(): Add the debug assertion ut_ad(ut_is_2pow(zip_size)).
-
marko authored
in signedness that were introduced in r2114. row_upd_index_replace_new_col_vals_index_pos(), row_upd_index_replace_new_col_vals(): Declare "data" as const byte* instead of const char*, and add casts to the dtype_get_at_most_n_mbchars() calls.
-
- 28 Nov, 2007 5 commits
-
-
marko authored
buf_block_is_uncompressed(): Check that the pointer is aligned. Use the C modulus operator % instead of ut_align_offset(), because sizeof(buf_block_t) is not guaranteed to be a power of 2.
-
marko authored
assert ut_a(entry) instead of playing it safe.
-
marko authored
point to a buffer pool chunk that has been released when resizing the buffer pool. buf_block_is_uncompressed(): Check that the pointer is aligned. Thanks to this check, it is safe to pass an arbitrary pointer as a guess to buf_page_get_gen().
-
marko authored
buf_page_get_release_on_io(): Removed this unused function. ibuf_build_entry_from_ibuf_rec(): Justify why it is not necessary to add system columns to the dummy table pointed to by the dummy secondary index. page_zip_rec_set_deleted(): Add a page_zip_validate() assertion.
-
vasil authored
Add the transaction's weight to information_schema.innodb_trx table. Suggested by: Ken Approved by: Heikki
-
- 27 Nov, 2007 3 commits
-
-
marko authored
static. It is only called from lock0lock.c.
-
marko authored
inserted, uncommitted clustered index records when determining if a secondary index record that contains a column prefix of an externally stored column is referencing the clustered index record. field_ref_zero[]: A BLOB pointer full of zero, for use in comparisons. btr_copy_externally_stored_field_prefix(): Assert that the BLOB pointer is set. row_ext_lookup_ith(), row_ext_lookup(), row_ext_lookup_low(): Document that field_ref_zero is returned when the BLOB cannot be fetched. row_ext_lookup_low(): Return field_ref_zero and *len = 0 when the BLOB pointer is unset. row_build_index_entry(): Return NULL when a needed BLOB pointer cannot be dereferenced (row_ext_lookup returns field_ref_zero). Check the return value for NULL in callers. row_vers_impl_x_locked_off_kernel(): Avoid comparisons when row_build_index_entry() returns NULL. row_vers_old_has_index_entry(): Ignore records for which row_build_index_entry() returns NULL. The entry should never be NULL in rollback, but it may be NULL in purge. row_merge_buf_add(): Assert that row_ext_lookup() does not return field_ref_zero. The table will be locked during index creation.
-
marko authored
btr_cur_optimistic_insert(), pass big_rec to it, so that the field references of externally stored columns (BLOB pointers) will not be left uninitialized after a successful optimistic insert. This bug was spotted by Sunny.
-
- 23 Nov, 2007 2 commits