diff options
author | gshchepa/uchum@gleb.loc <> | 2007-05-30 12:21:39 +0500 |
---|---|---|
committer | gshchepa/uchum@gleb.loc <> | 2007-05-30 12:21:39 +0500 |
commit | 83983221f5bd098f6618d575aaa6aba23fde5d87 (patch) | |
tree | 2fd31510209f867f4c9d434c670aa5bcfc89ac64 /sql/sql_class.h | |
parent | 559063177f7d2c06394a484500eec873efd706af (diff) | |
download | mariadb-git-83983221f5bd098f6618d575aaa6aba23fde5d87.tar.gz |
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.
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r-- | sql/sql_class.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h index 5f813e82307..c3550db7e3e 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -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; |