summaryrefslogtreecommitdiff
path: root/storage/innobase/btr/btr0cur.cc
diff options
context:
space:
mode:
Diffstat (limited to 'storage/innobase/btr/btr0cur.cc')
-rw-r--r--storage/innobase/btr/btr0cur.cc18
1 files changed, 12 insertions, 6 deletions
diff --git a/storage/innobase/btr/btr0cur.cc b/storage/innobase/btr/btr0cur.cc
index 913b2088f24..ecc17188770 100644
--- a/storage/innobase/btr/btr0cur.cc
+++ b/storage/innobase/btr/btr0cur.cc
@@ -4708,6 +4708,10 @@ next_zip_page:
}
}
}
+
+ DBUG_EXECUTE_IF("btr_store_big_rec_extern",
+ error = DB_OUT_OF_FILE_SPACE;
+ goto func_exit;);
}
func_exit:
@@ -4740,9 +4744,11 @@ func_exit:
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,
- BTR_EXTERN_FIELD_REF_SIZE));
+ BTR_EXTERN_FIELD_REF_SIZE)
+ || error != DB_SUCCESS);
/* The column must not be disowned by this record. */
ut_a(!(field_ref[BTR_EXTERN_LEN] & BTR_EXTERN_OWNER_FLAG));
}
@@ -4837,10 +4843,10 @@ btr_free_externally_stored_field(
if (UNIV_UNLIKELY(!memcmp(field_ref, field_ref_zero,
BTR_EXTERN_FIELD_REF_SIZE))) {
- /* In the rollback of uncommitted transactions, we may
- encounter a clustered index record whose BLOBs have
- not been written. There is nothing to free then. */
- ut_a(rb_ctx == RB_RECOVERY || rb_ctx == RB_RECOVERY_PURGE_REC);
+ /* In the rollback, we may encounter a clustered index
+ record with some unwritten off-page columns. There is
+ nothing to free then. */
+ ut_a(rb_ctx != RB_NONE);
return;
}