diff options
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r-- | sql/sql_insert.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc index 707b8a0d3bf..17d69cd0e71 100644 --- a/sql/sql_insert.cc +++ b/sql/sql_insert.cc @@ -276,7 +276,7 @@ static int check_insert_fields(THD *thd, TABLE_LIST *table_list, unfix_fields(fields); res= setup_fields(thd, Ref_ptr_array(), - fields, MARK_COLUMNS_WRITE, 0, NULL, 0); + fields, MARK_COLUMNS_WRITE, 0, NULL, 0, 0); /* Restore the current context. */ ctx_state.restore_state(context, table_list); @@ -388,7 +388,7 @@ static int check_update_fields(THD *thd, TABLE_LIST *insert_table_list, /* Check the fields we are going to modify */ if (setup_fields(thd, Ref_ptr_array(), - update_fields, MARK_COLUMNS_WRITE, 0, NULL, 0)) + update_fields, MARK_COLUMNS_WRITE, 0, NULL, 0, 0)) return -1; if (insert_table_list->is_view() && @@ -839,7 +839,7 @@ bool mysql_insert(THD *thd, TABLE_LIST *table_list, goto abort; } if (setup_fields(thd, Ref_ptr_array(), - *values, MARK_COLUMNS_READ, 0, NULL, 0)) + *values, MARK_COLUMNS_READ, 0, NULL, 0, 0)) goto abort; switch_to_nullable_trigger_fields(*values, table); } @@ -1671,13 +1671,14 @@ int mysql_prepare_insert(THD *thd, TABLE_LIST *table_list, res= setup_returning_fields(thd, table_list) || setup_fields(thd, Ref_ptr_array(), - *values, MARK_COLUMNS_READ, 0, NULL, 0) || + *values, MARK_COLUMNS_READ, 0, NULL, 0, 1) || check_insert_fields(thd, context->table_list, fields, *values, !insert_into_view, 0, &map); + if (!res) res= setup_fields(thd, Ref_ptr_array(), - update_values, MARK_COLUMNS_READ, 0, NULL, 0); + update_values, MARK_COLUMNS_READ, 0, NULL, 0, 0); if (!res && duplic == DUP_UPDATE) { @@ -3866,7 +3867,7 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u) res= (setup_returning_fields(thd, table_list) || setup_fields(thd, Ref_ptr_array(), values, MARK_COLUMNS_READ, 0, 0, - 0) || + 0, 0) || check_insert_fields(thd, table_list, *fields, values, !insert_into_view, 1, &map)); @@ -3923,7 +3924,7 @@ select_insert::prepare(List<Item> &values, SELECT_LEX_UNIT *u) } res= res || setup_fields(thd, Ref_ptr_array(), *info.update_values, - MARK_COLUMNS_READ, 0, NULL, 0); + MARK_COLUMNS_READ, 0, NULL, 0, 0); if (!res) { /* |