- 09 Jun, 2010 2 commits
-
-
Sergey Glukhov authored
(InnoDB plugin branch) mysql-test/suite/innodb_plugin/r/innodb_mysql.result: test case mysql-test/suite/innodb_plugin/t/innodb_mysql.test: test case storage/innodb_plugin/row/row0sel.c: init null bytes with default values as they might be left uninitialized in some cases and these uninited bytes might be copied into mysql record buffer that leads to valgrind warnings on next use of the buffer.
-
Sergey Glukhov authored
Valgrind warning happpens because of uninitialized null bytes. In row_sel_push_cache_row_for_mysql() function we fill fetch cache with necessary field values, row_sel_store_mysql_rec() is called for this and leaves null bytes untouched. Later row_sel_pop_cached_row_for_mysql() rewrites table record buffer with uninited null bytes. We can see the problem from the test case: At 'SELECT...' we call row_sel_push...->row_sel_store...->row_sel_pop_cached... chain which rewrites table->record[0] buffer with uninitialized null bytes. When we call 'UPDATE...' statement, compare_record uses this buffer and valgrind warning occurs. The fix is to init null bytes with default values. mysql-test/suite/innodb/r/innodb_mysql.result: test case mysql-test/suite/innodb/t/innodb_mysql.test: test case mysql-test/t/ps_3innodb.test: enable valgrind testing storage/innobase/row/row0sel.c: init null bytes with default values as they might be left uninitialized in some cases and these uninited bytes might be copied into mysql record buffer that leads to valgrind warnings on next use of the buffer.
-
- 08 Jun, 2010 3 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
for InnoDB plugin dict_load_table(): Pass the correct tablespace flags to fil_open_single_table_tablespace(). For ROW_FORMAT=COMPACT and REDUNDANT, the tablespace flags are 0. The table flags would be 0 or DICT_TF_COMPACT.
-
Marko Mäkelä authored
-
- 03 Jun, 2010 5 commits
-
-
Jimmy Yang authored
introduced in bug fix #53592, since dict_table_t can sufficiently unique identify the the table.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
- 02 Jun, 2010 4 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
In semi-consistent read, only unlock freshly locked non-matching records. lock_rec_lock_fast(): Return LOCK_REC_SUCCESS, LOCK_REC_SUCCESS_CREATED, or LOCK_REC_FAIL instead of TRUE/FALSE. enum db_err: Add DB_SUCCESS_LOCKED_REC for indicating a successful operation where a record lock was created. lock_sec_rec_read_check_and_lock(), lock_clust_rec_read_check_and_lock(), lock_rec_enqueue_waiting(), lock_rec_lock_slow(), lock_rec_lock(), row_ins_set_shared_rec_lock(), row_ins_set_exclusive_rec_lock(), sel_set_rec_lock(), row_sel_get_clust_rec_for_mysql(): Return DB_SUCCESS_LOCKED_REC if a new record lock was created. Adjust callers. row_unlock_for_mysql(): Correct the function documentation. row_prebuilt_t::new_rec_locks: Correct the documentation.
-
Marko Mäkelä authored
In semi-consistent read, only unlock freshly locked non-matching records. Define DB_SUCCESS_LOCKED_REC for indicating a successful operation where a record lock was created. lock_rec_lock_fast(): Return LOCK_REC_SUCCESS, LOCK_REC_SUCCESS_CREATED, or LOCK_REC_FAIL instead of TRUE/FALSE. lock_sec_rec_read_check_and_lock(), lock_clust_rec_read_check_and_lock(), lock_rec_enqueue_waiting(), lock_rec_lock_slow(), lock_rec_lock(), row_ins_set_shared_rec_lock(), row_ins_set_exclusive_rec_lock(), sel_set_rec_lock(), row_sel_get_clust_rec_for_mysql(): Return DB_SUCCESS_LOCKED_REC if a new record lock was created. Adjust callers. row_unlock_for_mysql(): Correct the function documentation. row_prebuilt_t::new_rec_locks: Correct the documentation.
-
Marko Mäkelä authored
-
- 01 Jun, 2010 5 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
rw_lock_t: Remove magic_n unless UNIV_DEBUG is defined. rw_lock_free(): Invalidate magic_n only after removing from rw_lock_list.
-
Marko Mäkelä authored
lock_rec_unlock(): Cache first_lock and rewrite while() loops as for(). btr_cur_optimistic_update(): Use common error handling return. row_create_prebuilt(): Add Valgrind instrumentation.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
row_undo_mod_upd_exist_sec(): Tolerate a failure to build the index entry for a DYNAMIC or COMPRESSED table during crash recovery.
-
- 31 May, 2010 1 commit
-
-
Vasil Dimov authored
------------------------------------------------------------ revno: 3127 revision-id: vasil.dimov@oracle.com-20100531152341-x2d4hma644icamh1 parent: vasil.dimov@oracle.com-20100531105923-kpjwl4rbgfpfj13c committer: Vasil Dimov <vasil.dimov@oracle.com> branch nick: mysql-trunk-innodb timestamp: Mon 2010-05-31 18:23:41 +0300 message: Fix Bug #53947 InnoDB: Assertion failure in thread 4224 in file .\sync\sync0sync.c line 324 Destroy the rw-lock object before freeing the memory it is occupying. If we do not do this, then the mutex that is contained in the rw-lock object btr_search_latch_temp->mutex gets "freed" and subsequently mutex_free() from sync_close() hits a mutex whose memory has been freed and crashes. Approved by: Heikki (via IRC) Discussed with: Calvin
-
- 28 May, 2010 1 commit
-
-
Jimmy Yang authored
err_index could be not a member of the share structure or prebuilt structure passed from MySQL. For now, we resort to the traditional way of scanning index->table for the index number.
-
- 27 May, 2010 1 commit
-
-
Inaam Rana authored
list a thread doing a wait_ex as an s-lock waiter.
-
- 26 May, 2010 2 commits
-
-
Jimmy Yang authored
-
Jimmy Yang authored
after fast alter table added unique key". Look up MySQL index number should go through index translation table. rb://347, approved by Marko
-
- 25 May, 2010 6 commits
-
-
Vasil Dimov authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
accessing uninitialized memory in Valgrind-instrumented builds.
-
Vasil Dimov authored
(this changeset does not introduce any changes)
-
Vasil Dimov authored
-
Vasil Dimov authored
This is a port of vasil.dimov@oracle.com-20100521175337-c1b1lqxgizqegb0w and vasil.dimov@oracle.com-20100521180951-mef23h24k023xuwq from mysql-trunk-innodb
-
- 24 May, 2010 2 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Store the max_space_id in the data dictionary header in order to avoid space_id reuse. DICT_HDR_MIX_ID: Renamed to DICT_HDR_MAX_SPACE_ID, DICT_HDR_MIX_ID_LOW. dict_hdr_get_new_id(): Return table_id, index_id, space_id or a subset of them. fil_system_t: Add ibool space_id_reuse_warned. fil_create_new_single_table_tablespace(): Get the space_id from the caller. fil_space_create(): Issue a warning if the fil_system->max_assigned_id is exceeded. fil_assign_new_space_id(): Return TRUE/FALSE and take a pointer to the space_id as a parameter. Make the function public. fil_init(): Initialize all fil_system fields by mem_zalloc(). Remove explicit initializations of certain fields to 0 or NULL.
-
- 20 May, 2010 7 commits
-
-
Vasil Dimov authored
-
Vasil Dimov authored
failures, that are described in Bug#38999 valgrind warnings for update statement in function compare_record() At the time I am adding this the failures are: main.ps_3innodb [ fail ] Found warnings/errors in server log file! Test ended at 2010-05-20 01:17:34 line ==31559== Thread 11: ==31559== Conditional jump or move depends on uninitialised value(s) ==31559== at 0x75C5BD: compare_record(st_table*) (sql_update.cc:35) ==31559== by 0x744732: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1486) ==31559== by 0x74A0D7: mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool) (sql_insert.cc:835) ==31559== by 0x6A79B4: mysql_execute_command(THD*) (sql_parse.cc:3198) ==31559== by 0x754998: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3583) ==31559== by 0x754C4F: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3258) ==31559== by 0x754F33: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2529) ==31559== by 0x6A5028: mysql_execute_command(THD*) (sql_parse.cc:2272) ==31559== by 0x6ADAE8: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5986) ==31559== by 0x6AF3A4: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1233) ==31559== by 0x6B0800: do_command(THD*) (sql_parse.cc:874) ==31559== by 0x69CB46: handle_one_connection (sql_connect.cc:1134) ==31559== by 0x33EDA062F6: start_thread (in /lib64/libpthread-2.5.so) ==31559== by 0x33ECED1B6C: clone (in /lib64/libc-2.5.so) ==31559== Conditional jump or move depends on uninitialised value(s) ==31559== at 0x75C5D0: compare_record(st_table*) (sql_update.cc:35) ==31559== by 0x744732: write_record(THD*, st_table*, st_copy_info*) (sql_insert.cc:1486) ==31559== by 0x74A0D7: mysql_insert(THD*, TABLE_LIST*, List<Item>&, List<List<Item> >&, List<Item>&, List<Item>&, enum_duplicates, bool) (sql_insert.cc:835) ==31559== by 0x6A79B4: mysql_execute_command(THD*) (sql_parse.cc:3198) ==31559== by 0x754998: Prepared_statement::execute(String*, bool) (sql_prepare.cc:3583) ==31559== by 0x754C4F: Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*) (sql_prepare.cc:3258) ==31559== by 0x754F33: mysql_sql_stmt_execute(THD*) (sql_prepare.cc:2529) ==31559== by 0x6A5028: mysql_execute_command(THD*) (sql_parse.cc:2272) ==31559== by 0x6ADAE8: mysql_parse(THD*, char const*, unsigned, char const**) (sql_parse.cc:5986) ==31559== by 0x6AF3A4: dispatch_command(enum_server_command, THD*, char*, unsigned) (sql_parse.cc:1233) ==31559== by 0x6B0800: do_command(THD*) (sql_parse.cc:874) ==31559== by 0x69CB46: handle_one_connection (sql_connect.cc:1134) ==31559== by 0x33EDA062F6: start_thread (in /lib64/libpthread-2.5.so) ==31559== by 0x33ECED1B6C: clone (in /lib64/libc-2.5.so) ^ Found warnings in /export/home4/pb2/test/sb_3-1827397-1274300957.87/mysql-5.1.48-linux-x86_64-test/mysql-test/var-n_mix/log/mysqld.1.err
-
Marko Mäkelä authored
-
Vasil Dimov authored
-
Marko Mäkelä authored
BUILD/*: Add valgrind_configs=--with-valgrind. BUILD/*: Remove -USAFEMALLOC from valgrind_flags. configure.in: Add AC_ARG_WITH(valgrind) and HAVE_VALGRIND. include/my_sys.h: Define a number of MEM_ wrappers for VALGRIND_ functions. include/my_sys.h: Make TRASH do MEM_UNDEFINED(). include/m_string.h: Remove unused macro bzero_if_purify(A,B). _mymalloc(): Declare MEM_UNDEFINED() on the allocated memory. _myfree(): Declare MEM_NOACCESS() on the freed memory. storage/innobase/include/univ.i: Enable UNIV_DEBUG_VALGRIND based on HAVE_VALGRIND rather than HAVE_purify. Possible things to do: * In my_global.h, remove the defined(HAVE_purify) condition from the _WIN32 uint3korr(). * In my_global.h *int*korr(), use | instead of + in order to keep the Valgrind V bits accurate * Consider replacing HAVE_purify with HAVE_VALGRIND * Use VALGRIND_CREATE_BLOCK, VALGRIND_DISCARD in mem_root and similar places
-
Vasil Dimov authored
------------------------------------------------------------ revno: 3094 revision-id: vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh parent: vasil.dimov@oracle.com-20100512173700-byf8xntxjur1hqov committer: Vasil Dimov <vasil.dimov@oracle.com> branch nick: mysql-trunk-innodb timestamp: Thu 2010-05-13 10:46:52 +0300 message: Followup to Bug#51920, fix binlog.binlog_killed This is a followup to the fix of Bug#51920 Innodb connections in row lock wait ignore KILL until lock wait timeout in that fix (rb://279) the behavior was changed to honor when a trx is interrupted during lock wait, but the returned error code was still "lock wait timeout" when it should be "interrupted". This change fixes the non-deterministically failing test binlog.binlog_killed, that failed like this: binlog.binlog_killed 'stmt' [ fail ] Test ended at 2010-05-12 11:39:08 CURRENT_TEST: binlog.binlog_killed mysqltest: At line 208: query 'reap' failed with wrong errno 1205: 'Lock wait timeout exceeded; try restarting transaction', instead of 0... Approved by: Sunny Bains (rb://344) ------------------------------------------------------------
-
Vasil Dimov authored
------------------------------------------------------------ revno: 3094 revision-id: vasil.dimov@oracle.com-20100513074652-0cvlhgkesgbb2bfh parent: vasil.dimov@oracle.com-20100512173700-byf8xntxjur1hqov committer: Vasil Dimov <vasil.dimov@oracle.com> branch nick: mysql-trunk-innodb timestamp: Thu 2010-05-13 10:46:52 +0300 message: Followup to Bug#51920, fix binlog.binlog_killed This is a followup to the fix of Bug#51920 Innodb connections in row lock wait ignore KILL until lock wait timeout in that fix (rb://279) the behavior was changed to honor when a trx is interrupted during lock wait, but the returned error code was still "lock wait timeout" when it should be "interrupted". This change fixes the non-deterministically failing test binlog.binlog_killed, that failed like this: binlog.binlog_killed 'stmt' [ fail ] Test ended at 2010-05-12 11:39:08 CURRENT_TEST: binlog.binlog_killed mysqltest: At line 208: query 'reap' failed with wrong errno 1205: 'Lock wait timeout exceeded; try restarting transaction', instead of 0... Approved by: Sunny Bains (rb://344) ------------------------------------------------------------ This merge is non-trivial since it has to introduce the DB_INTERRUPTED error code. Also revert vasil.dimov@oracle.com-20100408165555-9rpjh24o0sa9ad5y which adjusted the binlog.binlog_killed test to the new (wrong) behavior
-
- 19 May, 2010 1 commit
-
-
unknown authored
-