mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#29477: Not all fields of the target table were checked to have a default
value when inserting into a view. The mysql_prepare_insert function checks all fields of the target table that directly or indirectly (through a view) are specified in the INSERT statement to have a default value. This check can be skipped if the INSERT statement doesn't mention any insert fields. In case of a view this allows fields that aren't mentioned in the view to bypass the check. Now fields of the target table are always checked to have a default value when insert goes into a view.
This commit is contained in:
@ -630,7 +630,8 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
||||
if (mysql_prepare_insert(thd, table_list, table, fields, values,
|
||||
update_fields, update_values, duplic, &unused_conds,
|
||||
FALSE,
|
||||
(fields.elements || !value_count),
|
||||
(fields.elements || !value_count ||
|
||||
table_list->view != 0),
|
||||
!ignore && (thd->variables.sql_mode &
|
||||
(MODE_STRICT_TRANS_TABLES |
|
||||
MODE_STRICT_ALL_TABLES))))
|
||||
|
Reference in New Issue
Block a user