mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
5.0-bugteam->5.1-bugteam merge
This commit is contained in:
@ -1115,6 +1115,33 @@ static bool mysql_prepare_insert_check_table(THD *thd, TABLE_LIST *table_list,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Get extra info for tables we insert into
|
||||
|
||||
@param table table(TABLE object) we insert into,
|
||||
might be NULL in case of view
|
||||
@param table(TABLE_LIST object) or view we insert into
|
||||
*/
|
||||
|
||||
static void prepare_for_positional_update(TABLE *table, TABLE_LIST *tables)
|
||||
{
|
||||
if (table)
|
||||
{
|
||||
if(table->reginfo.lock_type != TL_WRITE_DELAYED)
|
||||
table->prepare_for_position();
|
||||
return;
|
||||
}
|
||||
|
||||
DBUG_ASSERT(tables->view);
|
||||
List_iterator<TABLE_LIST> it(*tables->view_tables);
|
||||
TABLE_LIST *tbl;
|
||||
while ((tbl= it++))
|
||||
prepare_for_positional_update(tbl->table, tbl);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Prepare items in INSERT statement
|
||||
|
||||
@ -1264,9 +1291,8 @@ bool mysql_prepare_insert(THD *thd, TABLE_LIST *table_list,
|
||||
Only call prepare_for_posistion() if we are not performing a DELAYED
|
||||
operation. It will instead be executed by delayed insert thread.
|
||||
*/
|
||||
if ((duplic == DUP_UPDATE || duplic == DUP_REPLACE) &&
|
||||
(table->reginfo.lock_type != TL_WRITE_DELAYED))
|
||||
table->prepare_for_position();
|
||||
if (duplic == DUP_UPDATE || duplic == DUP_REPLACE)
|
||||
prepare_for_positional_update(table, table_list);
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user