mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug #24595937: INCORRECT BEHAVIOR WHEN LOADING DATA TO VIEW
Issue: ------ While using the LOAD statement to insert data into an updateable view, the check to verify whether a column is actually updatable is missing. Solution for 5.5 and 5.6: ------------------------- For a view whose column-list in specified in the LOAD command, this check is not performed. This fix adds the check. This is a partial backport of Bug#21097485. Solution for 5.7 and trunk: --------------------------- For a view whose column-list is specified in the LOAD command, this check is already performed. This fix adds the same check when no column-list is specified.
This commit is contained in:
@ -296,6 +296,24 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
||||
setup_fields(thd, 0, set_fields, MARK_COLUMNS_WRITE, 0, 0) ||
|
||||
check_that_all_fields_are_given_values(thd, table, table_list))
|
||||
DBUG_RETURN(TRUE);
|
||||
|
||||
/*
|
||||
Special updatability test is needed because fields_vars may contain
|
||||
a mix of column references and user variables.
|
||||
*/
|
||||
Item *item;
|
||||
List_iterator<Item> it(fields_vars);
|
||||
while ((item= it++))
|
||||
{
|
||||
if ((item->type() == Item::FIELD_ITEM ||
|
||||
item->type() == Item::REF_ITEM) &&
|
||||
item->filed_for_view_update() == NULL)
|
||||
{
|
||||
my_error(ER_NONUPDATEABLE_COLUMN, MYF(0), item->name);
|
||||
DBUG_RETURN(true);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Check whenever TIMESTAMP field with auto-set feature specified
|
||||
explicitly.
|
||||
|
Reference in New Issue
Block a user