summaryrefslogtreecommitdiff
path: root/sql/sql_class.h
diff options
context:
space:
mode:
authorgshchepa/uchum@gleb.loc <>2007-05-30 12:21:39 +0500
committergshchepa/uchum@gleb.loc <>2007-05-30 12:21:39 +0500
commit83983221f5bd098f6618d575aaa6aba23fde5d87 (patch)
tree2fd31510209f867f4c9d434c670aa5bcfc89ac64 /sql/sql_class.h
parent559063177f7d2c06394a484500eec873efd706af (diff)
downloadmariadb-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.h5
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;