3968 Marko Mäkelä 2012-06-12
row_log_table_apply_convert_mrec(): The clustered index tree of the
source table should already be X-latched in row_log_table_apply().
modified:
storage/innobase/row/row0log.cc
3967 Marko Mäkelä 2012-06-12
innobase_create_index_field_def(): Remove unused parameter heap.
modified:
storage/innobase/handler/handler0alter.cc
3966 Marko Mäkelä 2012-06-12
WL#6255 Portability fix. Use ut_snprintf instead of my_snprintf(),
so that UINT64PF will work as desired on Windows platforms.
modified:
storage/innobase/handler/handler0alter.cc
=== modified file 'storage/innobase/handler/handler0alter.cc'
--- a/storage/innobase/handler/handler0alter.cc revid:marko.makela@stripped8rj9v
+++ b/storage/innobase/handler/handler0alter.cc revid:marko.makela@strippedn
@@ -1231,7 +1231,7 @@ name_ok:
/*******************************************************************//**
Create index field definition for key part */
-static __attribute__((nonnull(2,3,4)))
+static __attribute__((nonnull(2,3)))
void
innobase_create_index_field_def(
/*============================*/
@@ -1240,7 +1240,6 @@ innobase_create_index_field_def(
if a new clustered index is
not being created */
const KEY_PART_INFO* key_part, /*!< in: MySQL key definition */
- mem_heap_t* heap, /*!< in: memory heap */
merge_index_field_t* index_field) /*!< out: index field
definition for key_part */
{
@@ -1344,8 +1343,7 @@ innobase_create_index_def(
for (i = 0; i < n_fields; i++) {
innobase_create_index_field_def(
- altered_table, &key->key_part[i],
- heap, &index->fields[i]);
+ altered_table, &key->key_part[i], &index->fields[i]);
}
DBUG_VOID_RETURN;
=== modified file 'storage/innobase/row/row0log.cc'
--- a/storage/innobase/row/row0log.cc revid:marko.makela@strippedm-20120612094948-hypff3db1fz8rj9v
+++ b/storage/innobase/row/row0log.cc revid:marko.makela@stripped48-6zwi4r5jaehbw50n
@@ -1039,6 +1039,12 @@ row_log_table_apply_convert_mrec(
{
dtuple_t* row;
+#ifdef UNIV_SYNC_DEBUG
+ /* This prevents BLOBs from being freed, in case an insert
+ transaction rollback starts after row_log_table_is_rollback(). */
+ ut_ad(rw_lock_own(dict_index_get_lock(index), RW_LOCK_EX));
+#endif /* UNIV_SYNC_DEBUG */
+
if (row_log_table_is_rollback(index, trx_id)) {
row = NULL;
goto func_exit;
@@ -1058,15 +1064,6 @@ row_log_table_apply_convert_mrec(
dict_table_copy_types(row, log->table);
}
- if (rec_offs_any_extern(offsets)) {
- rw_lock_s_lock(&index->lock);
- }
-
- if (row_log_table_is_rollback(index, trx_id)) {
- row = NULL;
- goto skip_row;
- }
-
for (ulint i = 0; i < rec_offs_n_fields(offsets); i++) {
const dict_field_t* ind_field
= dict_index_get_nth_field(index, i);
@@ -1137,11 +1134,6 @@ row_log_table_apply_convert_mrec(
dfield_get_type(dfield)));
}
-skip_row:
- if (rec_offs_any_extern(offsets)) {
- rw_lock_s_unlock(&index->lock);
- }
-
func_exit:
*error = DB_SUCCESS;
return(row);
No bundle (reason: useless for push emails).| Thread |
|---|
| • bzr push into mysql-trunk-wl6255 branch (marko.makela:3966 to 3968) | marko.makela | 13 Jun |