diff options
author | Nikita Malyavin <nikitamalyavin@gmail.com> | 2020-08-21 20:05:02 +1000 |
---|---|---|
committer | Nikita Malyavin <nikitamalyavin@gmail.com> | 2020-09-01 18:27:09 +1000 |
commit | a3d66090c789dfd9f31a63187ef2cf7a85df9c1b (patch) | |
tree | 7f95e87d5e57c384de5122462dea150564819878 /support-files | |
parent | 6112a0f93d137b9754bc04449873311784e0edd9 (diff) | |
download | mariadb-git-a3d66090c789dfd9f31a63187ef2cf7a85df9c1b.tar.gz |
MDEV-18366 Crash on SELECT on a table with indexed virtual columns
The problem was in improper error handling behavior in
`row_upd_build_difference_binary`:
`innobase_free_row_for_vcol` wasn't called.
To eliminate this problem in all potential places, a refactoring has been
made:
* class ib_vcol_row is added. It owns VCOL_STORAGE and heap and maintains
it in RAII manner
* all innobase_allocate_row_for_vcol/innobase_free_row_for_vcol pairs are
substituted
with ib_vcol_row usage
* row_merge_buf_add is only left untouched because it doesn't own vheap
passed as an argument
* innobase_allocate_row_for_vcol does not allocate VCOL_STORAGE anymore and
accepts it as an argument -- this reduces a number of memory allocations
* move rec_printer out of `#ifndef DBUG_OFF` and mark it cold
Diffstat (limited to 'support-files')
0 files changed, 0 insertions, 0 deletions