diff options
author | Dmitry Shulga <dmitry.shulga@mariadb.com> | 2023-04-18 23:40:45 +0700 |
---|---|---|
committer | Dmitry Shulga <dmitry.shulga@mariadb.com> | 2023-04-18 23:55:43 +0700 |
commit | 671a9009f0b9a9460a5a16d6275d8ecf280c1c33 (patch) | |
tree | 4c4fb1cf0854dc06fb8654f51d9f38c662a394ec /storage/xtradb/include/row0import.ic | |
parent | bc3bfcf943b817b19a41e4f599b4f2e9a259b263 (diff) | |
download | mariadb-git-10.4-MDEV-30073.tar.gz |
MDEV-30073: Stored Procedure Returns Corrupt Results When Run a Second Time10.4-MDEV-30073
When name resolution is performed for a view involved in a query
executed as Prepared Statement, changes in an item list of view's select_lex
is resgistered for rollback with Item_change_list::rollback_item_tree_changes.
Later, EXISTS-to-IN transformation takes place and previously resolved items
are replace with new items created as part of EXISTS-to-IN transformation.
This change is supposed to be permanent, so it is not recorded for rollback.
On fininishing execution of a prepared statement clean-up is performed
that does rollback of changes made on phase of name resolutions.
In result, changes made by EXISTS-to-IN transformation is rolled back
that lead to output of incorrect results set.
To fix the original issue it is proposed to make permanent name resolution
for view's fields.
Unfortunately, this fix introduces another issue that takes plce when
join of a regular table and a view is run and there is condition
'where exist (subquery)'
(see test case in the patch)
Diffstat (limited to 'storage/xtradb/include/row0import.ic')
0 files changed, 0 insertions, 0 deletions