Commit 0b29085c authored by Vasil Dimov's avatar Vasil Dimov

Merge mysql-5.5-innodb -> mysql-5.5-bugteam

parents 2330a5e2 0062e693
...@@ -13,7 +13,6 @@ kill : Bug#37780 2008-12-03 HHunger need some changes to be ...@@ -13,7 +13,6 @@ kill : Bug#37780 2008-12-03 HHunger need some changes to be
lowercase_table3 : Bug#54845 2010-06-30 alik main.lowercase_table3 on Mac OSX lowercase_table3 : Bug#54845 2010-06-30 alik main.lowercase_table3 on Mac OSX
mysqlhotcopy_myisam : Bug#54129 2010-08-31 alik mysqlhotcopy* fails mysqlhotcopy_myisam : Bug#54129 2010-08-31 alik mysqlhotcopy* fails
mysqlhotcopy_archive : Bug#54129 2010-08-31 alik mysqlhotcopy* fails mysqlhotcopy_archive : Bug#54129 2010-08-31 alik mysqlhotcopy* fails
partition_innodb_plugin : Bug#53307 2010-04-30 VasilDimov valgrind warnings
query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically query_cache_28249 : Bug#43861 2009-03-25 main.query_cache_28249 fails sporadically
sp_sync : Bug#48157 2010-02-06 5.5-m3 demands a differnt solution sp_sync : Bug#48157 2010-02-06 5.5-m3 demands a differnt solution
ctype_utf8mb4_ndb : Bug#55799, Bug#51907, disabled by Konstantin 2010-08-06 ctype_utf8mb4_ndb : Bug#55799, Bug#51907, disabled by Konstantin 2010-08-06
...@@ -9635,7 +9635,11 @@ ha_innobase::innobase_peek_autoinc(void) ...@@ -9635,7 +9635,11 @@ ha_innobase::innobase_peek_autoinc(void)
auto_inc = dict_table_autoinc_read(innodb_table); auto_inc = dict_table_autoinc_read(innodb_table);
ut_a(auto_inc > 0); if (auto_inc == 0) {
ut_print_timestamp(stderr);
fprintf(stderr, " InnoDB: AUTOINC next value generation "
"is disabled for '%s'\n", innodb_table->name);
}
dict_table_autoinc_unlock(innodb_table); dict_table_autoinc_unlock(innodb_table);
......
...@@ -3342,6 +3342,7 @@ row_search_for_mysql( ...@@ -3342,6 +3342,7 @@ row_search_for_mysql(
mem_heap_t* heap = NULL; mem_heap_t* heap = NULL;
ulint offsets_[REC_OFFS_NORMAL_SIZE]; ulint offsets_[REC_OFFS_NORMAL_SIZE];
ulint* offsets = offsets_; ulint* offsets = offsets_;
ibool table_lock_waited = FALSE;
rec_offs_init(offsets_); rec_offs_init(offsets_);
...@@ -3728,13 +3729,15 @@ release_search_latch_if_needed: ...@@ -3728,13 +3729,15 @@ release_search_latch_if_needed:
trx_assign_read_view(trx); trx_assign_read_view(trx);
prebuilt->sql_stat_start = FALSE; prebuilt->sql_stat_start = FALSE;
} else { } else {
wait_table_again:
err = lock_table(0, index->table, err = lock_table(0, index->table,
prebuilt->select_lock_type == LOCK_S prebuilt->select_lock_type == LOCK_S
? LOCK_IS : LOCK_IX, thr); ? LOCK_IS : LOCK_IX, thr);
if (err != DB_SUCCESS) { if (err != DB_SUCCESS) {
goto lock_wait_or_error; table_lock_waited = TRUE;
goto lock_table_wait;
} }
prebuilt->sql_stat_start = FALSE; prebuilt->sql_stat_start = FALSE;
} }
...@@ -4545,6 +4548,7 @@ lock_wait_or_error: ...@@ -4545,6 +4548,7 @@ lock_wait_or_error:
btr_pcur_store_position(pcur, &mtr); btr_pcur_store_position(pcur, &mtr);
lock_table_wait:
mtr_commit(&mtr); mtr_commit(&mtr);
mtr_has_extra_clust_latch = FALSE; mtr_has_extra_clust_latch = FALSE;
...@@ -4562,6 +4566,14 @@ lock_wait_or_error: ...@@ -4562,6 +4566,14 @@ lock_wait_or_error:
thr->lock_state = QUE_THR_LOCK_NOLOCK; thr->lock_state = QUE_THR_LOCK_NOLOCK;
mtr_start(&mtr); mtr_start(&mtr);
/* Table lock waited, go try to obtain table lock
again */
if (table_lock_waited) {
table_lock_waited = FALSE;
goto wait_table_again;
}
sel_restore_position_for_mysql(&same_user_rec, sel_restore_position_for_mysql(&same_user_rec,
BTR_SEARCH_LEAF, pcur, BTR_SEARCH_LEAF, pcur,
moves_up, &mtr); moves_up, &mtr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment