mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fixed bug #28716.
The result of the CHECK OPTION condition evaluation over an updated record and records of merged tables was arbitrary and dependant on the order of records in the merged tables during the execution of SELECT statement. The CHECK OPTION expression was evaluated over expired record buffers (with arbitrary data in the fields). Rowids of tables used in the CHECK OPTION expression were added to temporary table rows. The multi_update::do_updates() method was modified to restore necessary record buffers before evaluation of the CHECK OPTION condition.
This commit is contained in:
@ -2283,6 +2283,11 @@ class multi_update :public select_result_interceptor
|
||||
List <Item> *fields, *values;
|
||||
List <Item> **fields_for_table, **values_for_table;
|
||||
uint table_count;
|
||||
/*
|
||||
List of tables referenced in the CHECK OPTION condition of
|
||||
the updated view excluding the updated table.
|
||||
*/
|
||||
List <TABLE> unupdated_check_opt_tables;
|
||||
Copy_field *copy_field;
|
||||
enum enum_duplicates handle_duplicates;
|
||||
bool do_update, trans_safe;
|
||||
|
Reference in New Issue
Block a user