1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-24583 SELECT aborts after failed REPLACE into table with vcol

table->move_fields wasn't undone in case of error.

1. move_fields is unconditionally undone even when error is occurred
2. cherry-pick an assertion in `ptr_in_record`, which is already in 10.5
This commit is contained in:
Nikita Malyavin
2021-03-24 01:02:26 +03:00
parent f85afa5124
commit 43e879c717
6 changed files with 191 additions and 4 deletions

View File

@ -972,8 +972,9 @@ public:
virtual void reset_fields() {}
const uchar *ptr_in_record(const uchar *record) const
{
my_ptrdiff_t l_offset= (my_ptrdiff_t) (record - table->record[0]);
return ptr + l_offset;
my_ptrdiff_t l_offset= (my_ptrdiff_t) (ptr - table->record[0]);
DBUG_ASSERT(l_offset >= 0 && table->s->rec_buff_length - l_offset > 0);
return record + l_offset;
}
virtual int set_default();