mariadb/storage/innobase/row
Marko Mäkelä 533d430d2c Merge Bug #54358 comment corrections from mysql-5.1-innodb:
------------------------------------------------------------
revno: 3533
revision-id: marko.makela@oracle.com-20100630093149-wmc37t128gic933v
parent: marko.makela@oracle.com-20100629131219-pjbkpk5rsqztmw27
committer: Marko Mäkelä <marko.makela@oracle.com>
branch nick: 5.1-innodb
timestamp: Wed 2010-06-30 12:31:49 +0300
message:
  Correct some comments that were added in the fix of Bug #54358
  (READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED columns).

  Records that lack incompletely written externally stored columns may
  be accessed by READ UNCOMMITTED transaction even without involving a
  crash during an INSERT or UPDATE operation. I verified this as follows.

  (1) added a delay after the mini-transaction for writing the clustered
  index 'stub' record was committed (patch attached)
  (2) started mysqld in gdb, setting breakpoints to the where the
  assertions about READ UNCOMMITTED were added in the bug fix
  (3) invoked ibtest3 --create-options=key_block_size=2
  to create BLOBs in a COMPRESSED table
  (4) invoked the following:
  yes 'set transaction isolation level read uncommitted;
  checksum table blobt3;select sleep(1);'|mysql -uroot test
  (5) noted that one of the breakpoints was triggered
  (return(NULL) in btr_rec_copy_externally_stored_field())

  === modified file 'storage/innodb_plugin/row/row0ins.c'
  --- storage/innodb_plugin/row/row0ins.c	2010-06-30 08:17:25 +0000
  +++ storage/innodb_plugin/row/row0ins.c	2010-06-30 08:17:25 +0000
  @@ -2120,6 +2120,7 @@ function_exit:
   		rec_t*	rec;
   		ulint*	offsets;
   		mtr_start(&mtr);
  +		os_thread_sleep(5000000);
   
   		btr_cur_search_to_nth_level(index, 0, entry, PAGE_CUR_LE,
   					    BTR_MODIFY_TREE, &cursor, 0,
  
  === modified file 'storage/innodb_plugin/row/row0upd.c'
  --- storage/innodb_plugin/row/row0upd.c	2010-06-30 08:11:55 +0000
  +++ storage/innodb_plugin/row/row0upd.c	2010-06-30 08:11:55 +0000
  @@ -1763,6 +1763,7 @@ row_upd_clust_rec(
   		rec_offs_init(offsets_);
   
   		mtr_start(mtr);
  +		os_thread_sleep(5000000);
   
   		ut_a(btr_pcur_restore_position(BTR_MODIFY_TREE, pcur, mtr));
   		rec = btr_cur_get_rec(btr_cur);
2010-06-30 12:52:41 +03:00
..
row0ext.c Renamed storage/innodb_plugin to storage/innobase, so that 1) it's the same 2009-08-07 12:16:00 +02:00
row0ins.c Bug#52199 utf32: mbminlen=4, mbmaxlen=4, type->mbminlen=0, type->mbmaxlen=4 2010-06-29 14:32:48 +03:00
row0merge.c Merge Bug#54358 fix from mysql-5.1-innodb: 2010-06-29 16:19:07 +03:00
row0mysql.c Bug#52199 utf32: mbminlen=4, mbmaxlen=4, type->mbminlen=0, type->mbmaxlen=4 2010-06-29 14:32:48 +03:00
row0purge.c Bug#54728: Replace the dulint struct with a 64-bit integer. 2010-06-23 14:06:59 +03:00
row0row.c Merge Bug#54408 fix from mysql-5.1-innodb: 2010-06-29 16:21:05 +03:00
row0sel.c Merge Bug #54358 comment corrections from mysql-5.1-innodb: 2010-06-30 12:52:41 +03:00
row0uins.c Bug#54728: Replace the dulint struct with a 64-bit integer. 2010-06-23 14:06:59 +03:00
row0umod.c Bug#54728: Replace the dulint struct with a 64-bit integer. 2010-06-23 14:06:59 +03:00
row0undo.c Merge Bug#54408 fix from mysql-5.1-innodb: 2010-06-29 16:21:05 +03:00
row0upd.c Merge Bug#54408 fix from mysql-5.1-innodb: 2010-06-29 16:21:05 +03:00
row0vers.c Bug#54728: Replace the dulint struct with a 64-bit integer. 2010-06-23 14:06:59 +03:00