summaryrefslogtreecommitdiff
path: root/sql/sql_class.h
diff options
context:
space:
mode:
authorunknown <acurtis@xiphis.org>2005-08-07 03:16:15 +0100
committerunknown <acurtis@xiphis.org>2005-08-07 03:16:15 +0100
commitfdb4d307ab8c7639ced6e08c61528bfe81823fae (patch)
tree58a1759c94967db7d8ef575fe9f3af0cec92c74a /sql/sql_class.h
parent75c06af27784e6fa6ba23f4cd6803bc7574f8253 (diff)
downloadmariadb-git-fdb4d307ab8c7639ced6e08c61528bfe81823fae.tar.gz
Bug#10109
"INSERT .. SELECT ... ON DUPLICATE KEY UPDATE fails" Ensure that check_insert_fields() is only called once when doing an INSERT..SELECT mysql-test/r/insert_update.result: Test for bug 10109 mysql-test/t/insert_update.test: Test for bug 10109 sql/sql_class.h: select_insert needs more state sql/sql_insert.cc: ensure that check_insert_fields() is only called once when doing an INSERT...SELECT sql/sql_parse.cc: more args for select_insert constructor
Diffstat (limited to 'sql/sql_class.h')
-rw-r--r--sql/sql_class.h14
1 files changed, 11 insertions, 3 deletions
diff --git a/sql/sql_class.h b/sql/sql_class.h
index b6bf0dcdc45..bc651b32d94 100644
--- a/sql/sql_class.h
+++ b/sql/sql_class.h
@@ -1236,19 +1236,27 @@ class select_insert :public select_result_interceptor {
List<Item> *fields;
ulonglong last_insert_id;
COPY_INFO info;
+ TABLE_LIST *insert_table_list;
+ TABLE_LIST *dup_table_list;
select_insert(TABLE *table_par, List<Item> *fields_par,
enum_duplicates duplic, bool ignore)
- :table(table_par), fields(fields_par), last_insert_id(0)
+ :table(table_par), fields(fields_par), last_insert_id(0),
+ insert_table_list(0), dup_table_list(0)
{
bzero((char*) &info,sizeof(info));
info.ignore= ignore;
info.handle_duplicates=duplic;
}
- select_insert(TABLE *table_par, List<Item> *fields_par,
+ select_insert(TABLE *table_par,
+ TABLE_LIST *insert_table_list_par,
+ TABLE_LIST *dup_table_list_par,
+ List<Item> *fields_par,
List<Item> *update_fields, List<Item> *update_values,
enum_duplicates duplic, bool ignore)
- :table(table_par), fields(fields_par), last_insert_id(0)
+ :table(table_par), fields(fields_par), last_insert_id(0),
+ insert_table_list(insert_table_list_par),
+ dup_table_list(dup_table_list_par)
{
bzero((char*) &info,sizeof(info));
info.ignore= ignore;