Commit e96dc0c9 authored by Marko Mäkelä's avatar Marko Mäkelä

Merge mysql-5.1 to mysql-5.5.

parents 638dcdc3 84b2f38d
...@@ -4596,6 +4596,10 @@ btr_store_big_rec_extern_fields( ...@@ -4596,6 +4596,10 @@ btr_store_big_rec_extern_fields(
} }
} }
} }
DBUG_EXECUTE_IF("btr_store_big_rec_extern",
error = DB_OUT_OF_FILE_SPACE;
goto func_exit;);
} }
func_exit: func_exit:
...@@ -4628,9 +4632,11 @@ btr_store_big_rec_extern_fields( ...@@ -4628,9 +4632,11 @@ btr_store_big_rec_extern_fields(
field_ref = btr_rec_get_field_ref(rec, offsets, i); field_ref = btr_rec_get_field_ref(rec, offsets, i);
/* The pointer must not be zero. */ /* The pointer must not be zero if the operation
succeeded. */
ut_a(0 != memcmp(field_ref, field_ref_zero, ut_a(0 != memcmp(field_ref, field_ref_zero,
BTR_EXTERN_FIELD_REF_SIZE)); BTR_EXTERN_FIELD_REF_SIZE)
|| error != DB_SUCCESS);
/* The column must not be disowned by this record. */ /* The column must not be disowned by this record. */
ut_a(!(field_ref[BTR_EXTERN_LEN] & BTR_EXTERN_OWNER_FLAG)); ut_a(!(field_ref[BTR_EXTERN_LEN] & BTR_EXTERN_OWNER_FLAG));
} }
...@@ -4726,10 +4732,10 @@ btr_free_externally_stored_field( ...@@ -4726,10 +4732,10 @@ btr_free_externally_stored_field(
if (UNIV_UNLIKELY(!memcmp(field_ref, field_ref_zero, if (UNIV_UNLIKELY(!memcmp(field_ref, field_ref_zero,
BTR_EXTERN_FIELD_REF_SIZE))) { BTR_EXTERN_FIELD_REF_SIZE))) {
/* In the rollback of uncommitted transactions, we may /* In the rollback, we may encounter a clustered index
encounter a clustered index record whose BLOBs have record with some unwritten off-page columns. There is
not been written. There is nothing to free then. */ nothing to free then. */
ut_a(rb_ctx == RB_RECOVERY || rb_ctx == RB_RECOVERY_PURGE_REC); ut_a(rb_ctx != RB_NONE);
return; return;
} }
......
...@@ -340,13 +340,14 @@ row_undo_ins( ...@@ -340,13 +340,14 @@ row_undo_ins(
/* The database must have crashed after /* The database must have crashed after
inserting a clustered index record but before inserting a clustered index record but before
writing all the externally stored columns of writing all the externally stored columns of
that record. Because secondary index entries that record, or a statement is being rolled
are inserted after the clustered index record, back because an error occurred while storing
we may assume that the secondary index record off-page columns.
does not exist. However, this situation may
only occur during the rollback of incomplete Because secondary index entries are inserted
transactions. */ after the clustered index record, we may
ut_a(trx_is_recv(node->trx)); assume that the secondary index record does
not exist. */
} else { } else {
log_free_check(); log_free_check();
err = row_undo_ins_remove_sec(node->index, entry); err = row_undo_ins_remove_sec(node->index, entry);
......
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