diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2023-03-22 15:19:52 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2023-03-22 15:19:52 +0200 |
commit | 701399ad375fe71daded4fc7f18f347594352aa1 (patch) | |
tree | 84dbdef10a48e2224f689e4334fdddf78cf981f8 /mysql-test/main/group_min_max.result | |
parent | dccbb5a6dba21b241e1796af82a0db85de28d195 (diff) | |
download | mariadb-git-701399ad375fe71daded4fc7f18f347594352aa1.tar.gz |
MDEV-30882 Crash on ROLLBACK in a ROW_FORMAT=COMPRESSED table
btr_cur_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.
This is a 10.5 version of commit ff3d4395d808b6421d2e0714e10d48c7aa2f3c3a
(different because of commit 08ba388713946c03aa591899cd3a446a6202f882).
Diffstat (limited to 'mysql-test/main/group_min_max.result')
0 files changed, 0 insertions, 0 deletions