mariadb/storage/innobase/row
Marko Mäkelä ff3d4395d8 MDEV-30882 Crash on ROLLBACK in a ROW_FORMAT=COMPRESSED table
row_upd_rec_in_place(): Avoid calling page_zip_write_rec() if we
are not modifying any fields that are stored in compressed format.

btr_cur_update_in_place_zip_check(): New function to check if a
ROW_FORMAT=COMPRESSED record can actually be updated in place.

btr_cur_pessimistic_update(): If the BTR_KEEP_POS_FLAG is not set
(we are in a ROLLBACK and cannot write any BLOBs), ignore the potential
overflow and let page_zip_reorganize() or page_zip_compress() handle it.
This avoids a failure when an attempted UPDATE of an NULL column to 0 is
rolled back. During the ROLLBACK, we would try to move a non-updated
long column to off-page storage in order to avoid a compression failure
of the ROW_FORMAT=COMPRESSED page.

page_zip_write_trx_id_and_roll_ptr(): Remove an assertion that would fail
in row_upd_rec_in_place() because the uncompressed page would already
have been modified there.

Thanks to Jean-François Gagné for providing a copy of a page that
triggered these bugs on the ROLLBACK of UPDATE and DELETE.

A 10.6 version of this was tested by Matthias Leich using
cmake -DWITH_INNODB_EXTRA_DEBUG=ON a.k.a. UNIV_ZIP_DEBUG.
2023-03-22 14:31:00 +02:00
..
row0ext.cc Merge 10.3 into 10.4 2020-07-02 07:39:33 +03:00
row0ftsort.cc Merge 10.3 into 10.4 2021-10-28 08:28:39 +03:00
row0import.cc MDEV-29692 Assertion `(writeptr + (i * size)) != local_frame' failed upon IMPORT TABLESPACE 2023-03-21 14:33:54 +02:00
row0ins.cc Merge 10.3 into 10.4 2023-01-03 16:10:02 +02:00
row0log.cc Merge 10.3 into 10.4 2022-12-13 11:37:33 +02:00
row0merge.cc Merge 10.3 into 10.4 2023-01-03 16:10:02 +02:00
row0mysql.cc Merge 10.3 into 10.4 2023-01-03 16:10:02 +02:00
row0purge.cc Merge 10.3 into 10.4 2022-10-05 20:30:57 +03:00
row0quiesce.cc Merge 10.3 into 10.4 2022-12-13 11:37:33 +02:00
row0row.cc Merge 10.3 into 10.4 2023-01-03 16:10:02 +02:00
row0sel.cc Merge 10.3 into 10.4 2023-01-03 16:10:02 +02:00
row0uins.cc Merge 10.3 into 10.4 2022-02-21 14:10:27 +03:00
row0umod.cc Merge 10.3 into 10.4 2022-02-21 14:10:27 +03:00
row0undo.cc Merge 10.3 into 10.4 2021-06-21 12:38:25 +03:00
row0upd.cc MDEV-30882 Crash on ROLLBACK in a ROW_FORMAT=COMPRESSED table 2023-03-22 14:31:00 +02:00
row0vers.cc MDEV-30597 Assertion `flag == 1' failed in row_build_index_entry_low 2023-02-23 19:56:07 +05:30