summaryrefslogtreecommitdiff
path: root/storage/xtradb/include/row0import.ic
diff options
context:
space:
mode:
authorDmitry Shulga <dmitry.shulga@mariadb.com>2023-04-18 23:40:45 +0700
committerDmitry Shulga <dmitry.shulga@mariadb.com>2023-04-18 23:55:43 +0700
commit671a9009f0b9a9460a5a16d6275d8ecf280c1c33 (patch)
tree4c4fb1cf0854dc06fb8654f51d9f38c662a394ec /storage/xtradb/include/row0import.ic
parentbc3bfcf943b817b19a41e4f599b4f2e9a259b263 (diff)
downloadmariadb-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