Commit graph

1066 commits

Author SHA1 Message Date
marko
d81da4628e branches/zip: page_zip_compress(): Flag the compressed stream completely
initialized, although Valgrind believes that some bits in the 7th or 8th
bytes from the end are uninitialized.  (They might be, but the decompressor
should not care about those bits after encountering the end-of-stream marker
in the compressed bit stream.)
2007-10-31 20:49:16 +00:00
marko
f4b87b445c branches/zip: Check that page_zip->data is defined, not page_zip itself. 2007-10-31 16:14:18 +00:00
marko
6b2c92e19c branches/zip: Improve Valgrind instrumentation.
btr_cur_optimistic_insert(): On compressed tablespaces, check that both
the compressed and the uncompressed page are completely initialized in
the beginning of the function.

page_zip_compress(): After successful compression, check that the compressed
page is completely initialized.
2007-10-31 14:27:59 +00:00
marko
0a0f17207f branches/zip: Add some more Valgrind instrumentation.
page_zip_write_rec(), page_zip_write_blob_ptr(), page_zip_write_node_ptr(),
page_zip_write_trx_id_and_roll_ptr(), page_zip_clear_rec(),
page_zip_rec_set_deleted(), page_zip_rec_set_owned(), page_zip_dir_insert(),
page_zip_dir_delete(), page_zip_dir_add_slot(), page_zip_reorganize(),
page_zip_copy(), page_zip_get_trailer_len(), page_zip_write_header():
Assert that the complete contents of the compressed page is defined.
2007-10-31 13:19:38 +00:00
marko
aebd74e232 branches/zip: Improve Valgrind instrumentation.
page_zip_compress(): Assert that the contents of the uncompressed page
is entirely initialized.

page_zip_decompress(): Assert that the contents of the compressed page
is entirely initialized.  Assert that the uncompressed page is entirely
writeable.  Flag the uncompressed page uninitialized in the beginning.
2007-10-31 12:42:38 +00:00
marko
a2d23f497c branches/zip: buf_block_align(): Add missing type conversion. 2007-10-31 12:23:03 +00:00
marko
5b0a510222 branches/zip: Correct the Valgrind instrumentation of r2041.
Use UNIV_MEM_ASSERT_RW() instead of UNIV_MEM_VALID().  The latter
flags memory defined; the former checks that it is defined.
2007-10-31 10:44:15 +00:00
marko
e00f417abb branches/zip: buf_LRU_block_remove_hashed_page(): Add some Valgrind
instrumentation.
2007-10-31 10:40:41 +00:00
marko
d321ea1141 branches/zip: buf_buddy_relocate(): The src block may be partially freed.
Remove the Valgrind check about it.
2007-10-31 10:40:09 +00:00
marko
2d77ed4f40 branches/zip: Improve Valgrind instrumentation.
buf_buddy_relocate(): Allow the source block to contain uninitialized data.

buf0buddy.c: Replace the remaining VALGRIND_CHECK_ macros with the wrappers
defined in univ.i.
2007-10-31 09:00:08 +00:00
marko
7319444c08 branches/zip: Improve Valgrind instrumentation.
buf_LRU_free_block(): Check that the block descriptor contains valid data.

buf_buddy_relocate(): Check that the source block contains valid data.

buf_page_get_gen(): Do not dereference bpage after calling buf_relocate().
This avoids a bogus Valgrind warning; the memory itself was valid.

buf_page_hash_get(): Check that the returned block descriptor contains
valid data.
2007-10-30 09:27:09 +00:00
marko
8b6467ce0d branches/zip: trx_rollback_or_clean_all_without_sess(): Rename to
trx_rollback_or_clean_all_recovered().
2007-10-30 08:25:01 +00:00
marko
261a999b51 branches/zip: page0zip.c: Add some Valgrind instrumentation. 2007-10-30 08:19:48 +00:00
marko
6807b7731f branches/zip: trx_rollback_or_clean_all_without_sess(): Distinguish
recovered transactions from new ones.  Until r1594, they were distinguished
by trx->sess == NULL.

trx_t: Add the bitfield is_recovered.

trx_lists_init_at_db_start(): Set trx->is_recovered.

trx_create(): Initialize trx->is_recovered = 0.

trx_print(): Display information about trx->is_recovered.

trx_rollback_or_clean_all_without_sess(): Skip new transactions.
Protect all accesses of trx_sys->trx_list with kernel_mutex.

trx_roll_crash_recv_trx, trx_roll_max_undo_no, trx_roll_progress_printed_pct:
Made these variables static.
2007-10-29 15:32:19 +00:00
marko
17bb043ad3 branches/zip: row_merge_drop_temp_indexes(): Use COMMIT WORK instead of
trx_commit_for_mysql().
2007-10-29 15:25:46 +00:00
marko
8085e89f07 branches/zip: buf_block_get_frame(): Add missing parenthesis. 2007-10-29 14:03:57 +00:00
vasil
e8de094a3f branches/zip:
Add innodb_locks.lock_data column and some relevant tests.
For record locks this column represents the ordering fields of the
locked row in a human readable, SQL-valid, format.

Approved by:	Marko
2007-10-29 13:03:53 +00:00
marko
c8bbe754b9 branches/zip: Minor performance tuning based on measurement data
on mispredicted branches: opcontrol --event=BR_CND_MISSP_EXEC:45000

UT_SORT_FUNCTION_BODY(): Copy the array with memcpy(3).

cmp_dtuple_rec_with_match(), cmp_rec_rec_with_match(),
cmp_debug_dtuple_rec_with_match(): Add UNIV_UNLIKELY hints around
tests for REC_INFO_MIN_REC_FLAG.
2007-10-26 14:05:54 +00:00
marko
ada2f71ab7 branches/zip: Reduce WAIT_FOR_READ from 20 to 5 milliseconds, to correspond
to the time in which modern disks can serve a random disk read.
2007-10-26 12:34:53 +00:00
marko
021fea8f15 branches/zip: Add UNIV_UNLIKELY hints to help branch prediction. 2007-10-26 12:31:48 +00:00
marko
a4b26c4ffb branches/zip: buf_pool_t: Add n_pend_unzip. Display it in buf_print(). 2007-10-26 08:53:36 +00:00
marko
1890ec59c7 branches/zip: buf_page_get_gen(): Improve the comments about
wait_until_unfixed.
2007-10-26 08:48:01 +00:00
marko
aa8c8329f2 branches/zip: buf_pool_init(): Allocate buf_pool with mem_zalloc(). 2007-10-25 12:54:18 +00:00
marko
a14eb7445c branches/zip: buf_page_get_gen(): Reinitialize guess when re-entering the loop. 2007-10-25 12:51:18 +00:00
vasil
0165c06623 branches/zip:
Change mach_read_int_type() to return an integer type (ullint) instead
of array of bytes that later needs to be converted to an appropriate
integer type.

Approved by:	Sunny
2007-10-25 11:45:11 +00:00
vasil
976c562f81 branches/zip:
Make lock_get_type_str() to also indicate if it is a gap lock.
 
Suggested by:	Heikki
Approved by:	Marko
2007-10-25 11:21:11 +00:00
marko
dd7f702117 branches/zip: Add the function dtype_is_utf8(). 2007-10-25 07:19:43 +00:00
marko
bde9d122ad branches/zip: Minor cleanup.
log_block_calc_checksum(), log_block_get_checksum(): Add const qualifiers.

log_block_calc_checksum(): Split a long expression to more readable chunks.
Some compilers might optimize this better.
2007-10-25 07:07:25 +00:00
marko
37309546e0 branches/zip: Cast void* pointers to byte* when doing pointer arithmetics. 2007-10-25 07:03:02 +00:00
marko
c661970d75 branches/zip: Merge 1937:2015 from trunk. 2007-10-24 10:59:54 +00:00
marko
ddcf4f8d9c branches/zip: Remove some unnecessary memory references in the master thread.
srv_print_thread_releases, srv_print_lock_waits, srv_print_buf_io,
srv_print_log_io, srv_print_latch_waits: Define these variables as
constants (FALSE), unless UNIV_DEBUG is defined.  These variables
are never assigned to, and they are initialized to FALSE.  It could
be useful to set them when debugging InnoDB.

srv_slot_t: Fuse the fields type, in_use, suspended to a single machine word.

srv_meter[], srv_meter_low_water[], srv_meter_high_water[],
srv_meter_high_water2[], srv_meter_foreground[]: Enclose these arrays
inside #if 0.  The arrays are essentially constants that do not affect
the control flow.

enum srv_thread_type: New enum, to replace the #defines SRV_COM, ...
Enclose the unused values SRV_BUFFER, SRV_RECOVERY, SRV_INSERT
inside #if 0, so that some arrays and loops can be reduced.
2007-10-24 07:12:11 +00:00
marko
bd76717558 branches/zip: row_build_index_entry(): Correct a typo made in r2012. 2007-10-24 06:59:01 +00:00
marko
8bed4c4c3f branches/zip: Do not access the fields of dfield_t directly.
dfield_dup(): New function for duplicating the data pointed to by dfield_t.

dfield_set_len(), dfield_set_data(): Add Valgrind instrumentation.
2007-10-23 06:46:12 +00:00
marko
e101c352c2 branches/zip: row_rec_to_index_entry_low(): Remove a bogus assertion. 2007-10-22 10:23:13 +00:00
marko
8c57916af9 branches/zip: Fix bugs that were introduced in r1591.
row_upd_rec_in_place(): Correct a debug assertion.

row_upd_index_parse(): Initialize new_val with dfield_set_data() or
dfield_set_null().  This ensures that new_val->ext is initialized.
2007-10-22 09:57:43 +00:00
marko
9ebc9481e4 branches/zip: When seeking to a different B-tree page, update the cached
value of the block that the cursor points to.

row_ins_check_foreign_constraint(): Call btr_pcur_get_block() after
row_ins_foreign_check_on_constraint(), as it may reposition the cursor
on a different page.

row_ins_scan_sec_index_for_duplicate(): Call btr_pcur_get_block() on
every iteration of the loop.  Use do ... while instead of for (;;).
2007-10-22 08:34:12 +00:00
marko
8ab05ab1d2 branches/zip: Minor cleanup of B-tree cursor operations.
btr_pcur_get_rel_pos(): Add a const qualifier.

btr_pcur_get_btr_cur(), btr_pcur_get_page_cur(): btr_cur_get_page_cur():
Define as const-preserving macros.

btr_pcur_is_on_user_rec(), btr_pcur_is_after_last_on_page(),
btr_pcur_is_before_first_on_page(): Remove the unused parameter mtr.
Add a const qualifier.

btr_pcur_move_to_next_on_page(), btr_pcur_move_to_prev_on_page():
Remove the unused parameter mtr.

page_cur_search(): Add const qualifiers.

page_cur_get_page(), page_cur_is_before_first(), page_cur_is_after_last():
Add debug assertions.
2007-10-22 08:16:35 +00:00
marko
a2aac2f67c branches/zip: trx_set_dict_operation(): Allow a transition from
TRX_DICT_OP_TABLE to TRX_DICT_OP_TABLE.
2007-10-22 08:10:13 +00:00
marko
cd247197cd branches/zip: lock_sec_rec_read_check_and_lock(): Correct a typo in comment. 2007-10-22 07:49:54 +00:00
marko
d2f07538d1 branches/zip: trx_create(): Set trx->dict_operation directly, because
the assertion in trx_set_dict_operation() would read uninitialized data.
This mistake was made in r1998.
2007-10-22 07:02:02 +00:00
marko
db36183759 branches/zip: dict_truncate_index_tree(): When the index is not found in
the data dictionary cache, do not create the index tree.
2007-10-19 13:38:49 +00:00
marko
1561b414e1 branches/zip: Introduce two new dictionary operation modes for transactions.
enum trx_dict_op: dictionary operation modes

trx_get_dict_operation(), trx_set_dict_operation(): Accessors for
trx->dict_operation.

lock_table_enqueue_waiting(), lock_rec_enqueue_waiting(): Do not complain
about lock waits if the dictionary mode is TRX_DICT_OP_INDEX_MAY_WAIT.

row_merge_lock_table(): Remove the work-around for avoiding the warning
in lock_table_enqueue_waiting().

trx_undo_mark_as_dict_operation(): Do not write trx->table_id to the
undo log unless the dict_operation is TRX_DICT_OP_TABLE.

ha_innobase::add_index(): Set the dict_operation mode initially to
TRX_DICT_OP_INDEX_MAY_WAIT, then lock the table exclusively, and set the
mode to TRX_DICT_OP_INDEX, and optionally to TRX_DICT_OP_TABLE when
creating a temporary table.
2007-10-19 10:52:25 +00:00
marko
e6f452c7cd branches/zip: srv_suspend_mysql_thread(): Allow the transaction to
hold an X-latch to the data dictionary, to avoid an assertion failure
when a lock wait occurs in row_merge_lock_table().
2007-10-19 10:30:34 +00:00
marko
99f97f8c1d branches/zip: ha_innobase::add_index(): Lock the table before creating
any indexes.  Before this fix, other transactions could see the empty indexes
before we acquired the table lock.
2007-10-18 12:46:14 +00:00
marko
582c74c5f8 branches/zip: row_merge_lock_table(): Clear the trx->dict_operation flag
for the duration of the lock_table() call in order to avoid a bogus warning.
2007-10-18 09:18:18 +00:00
marko
d967aaa65b branches/zip: Remove const warnings reported by GCC 4.2.1.
page_cur_set_before_first(), page_cur_set_after_last(),
page_cur_position(): Add const qualifiers to buf_block_t and rec.
A better solution would be to define a const_page_cur_t and a
set of accessors, but it would lead to severe code duplication.

page_rec_get_n_recs_before(): Add const qualifiers.

page_dir_get_nth_slot(): Define as a const-preserving macro.

page_dir_slot_get_rec(), page_dir_slot_get_n_owned(),
page_dir_find_owner_slot(), page_check_dir(): Add const qualifiers.

page_rec_get_next_low(): Add const qualifiers.

page_rec_get_next_const(), page_rec_get_prev_const(): New functions,
based on the const-less page_rec_get_next() and page_rec_get_prev().

page_cur_get_page(), page_cur_get_block(), page_cur_get_page_zip(),
page_cur_get_rec(): Define as const-preserving macros.

page_cur_try_search_shortcut(), page_cur_search_with_match():
Add const qualifiers.

buf_page_get_mutex(): Add a const qualifier to buf_page_t*.

rec_get_next_ptr_const(): Const variant of rec_get_next_ptr().
2007-10-18 07:12:05 +00:00
marko
00b1b124f8 innodb-test: Allow Innodb_buffer_pool_pages_total to be 511 or 512.
The size of the buffer pool can be one page smaller than the requested
size when os_mem_alloc_large() returns something that is not
aligned by UNIV_PAGE_SIZE.  This test may still fail on systems with
a big os_large_page_size.
2007-10-18 06:58:39 +00:00
vasil
12729aea3c branches/zip:
Fix typo in comment.
2007-10-17 12:30:22 +00:00
marko
f372ed678c branches/zip: row_scan_and_check_index(): Remove the compiler warning
that tmp_heap is possibly uninitialized.  This was introduced in r1990.
2007-10-17 12:19:35 +00:00
marko
df4c733df7 branches/zip: Initialize dfield_t::ext as soon as possible. This should
fix the bugs introduced in r1591.

row_rec_to_index_entry_low(): Clear "n_ext".  Do not allow it to be NULL.
Add const qualifier to dict_index_t*.

row_rec_to_index_entry(): Add the parameters "offsets" and "n_ext".

btr_cur_optimistic_update(): Add an assertion that there are no externally
stored columns.  Remove the unreachable call to btr_cur_unmark_extern_fields()
and the preceding unnecessary call to rec_get_offsets().

btr_push_update_extern_fields(): Remove the parameters index, offsets.
Only report the additional externally stored columns of the update vector.

row_build(), trx_undo_rec_get_partial_row(): Flag externally stored columns
also with dfield_set_ext().

rec_copy_prefix_to_dtuple(): Assert that there are no externally stored
columns in the prefix.

row_build_row_ref(): Note and assert that the index is a secondary index,
and assert that there are no externally stored columns.

row_build_row_ref_fast(): Assert that there are no externally stored columns.

rec_offs_get_n_alloc(): Expose the function.

row_build_row_ref_in_tuple(): Assert that there are no externally stored
columns in a record of a secondary index.

row_build_row_ref_from_row(): Assert that there are no externally stored
columns.

row_upd_check_references_constraints(): Add the parameter offsets, to
avoid a redundant call to rec_get_offsets().

row_upd_del_mark_clust_rec(): Add the parameter offsets.  Remove
duplicated code.

row_ins_index_entry_set_vals(): Copy the external storage flag.

sel_pop_prefetched_row(): Assert that there are no externally stored
columns.

row_scan_and_check_index(): Copy offsets to a temporary heap across
the invocation of row_rec_to_index_entry().
2007-10-17 12:13:29 +00:00