diff options
author | unknown <acurtis@xiphis.org> | 2005-08-07 03:16:15 +0100 |
---|---|---|
committer | unknown <acurtis@xiphis.org> | 2005-08-07 03:16:15 +0100 |
commit | fdb4d307ab8c7639ced6e08c61528bfe81823fae (patch) | |
tree | 58a1759c94967db7d8ef575fe9f3af0cec92c74a /sql/sql_class.h | |
parent | 75c06af27784e6fa6ba23f4cd6803bc7574f8253 (diff) | |
download | mariadb-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.h | 14 |
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; |