List:Commits« Previous MessageNext Message »
From:marko.makela Date:June 12 2012 7:05pm
Subject:bzr push into mysql-trunk-wl6255 branch (marko.makela:3966 to 3968)
View as plain text  
 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.makela13 Jun