mirror of
https://github.com/MariaDB/server.git
synced 2025-02-11 07:55:36 +01:00
![]() 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. |
||
---|---|---|
.. | ||
row0ext.cc | ||
row0ftsort.cc | ||
row0import.cc | ||
row0ins.cc | ||
row0log.cc | ||
row0merge.cc | ||
row0mysql.cc | ||
row0purge.cc | ||
row0quiesce.cc | ||
row0row.cc | ||
row0sel.cc | ||
row0uins.cc | ||
row0umod.cc | ||
row0undo.cc | ||
row0upd.cc | ||
row0vers.cc |