Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.1-opt
into magare.gmz:/home/kgeorge/mysql/autopush/B29157-5.1-opt
This commit is contained in:
commit
2ca2b232e3
@ -396,7 +396,9 @@ enum ha_base_keytype {
|
|||||||
#define HA_ERR_AUTOINC_READ_FAILED 166 /* Failed to get next autoinc value */
|
#define HA_ERR_AUTOINC_READ_FAILED 166 /* Failed to get next autoinc value */
|
||||||
#define HA_ERR_AUTOINC_ERANGE 167 /* Failed to set row autoinc value */
|
#define HA_ERR_AUTOINC_ERANGE 167 /* Failed to set row autoinc value */
|
||||||
#define HA_ERR_GENERIC 168 /* Generic error */
|
#define HA_ERR_GENERIC 168 /* Generic error */
|
||||||
#define HA_ERR_LAST 168 /*Copy last error nr.*/
|
#define HA_ERR_RECORD_IS_THE_SAME 169 /* row not actually updated :
|
||||||
|
new values same as the old values */
|
||||||
|
#define HA_ERR_LAST 169 /*Copy last error nr.*/
|
||||||
/* Add error numbers before HA_ERR_LAST and change it accordingly. */
|
/* Add error numbers before HA_ERR_LAST and change it accordingly. */
|
||||||
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
|
#define HA_ERR_ERRORS (HA_ERR_LAST - HA_ERR_FIRST + 1)
|
||||||
|
|
||||||
|
@ -7171,8 +7171,10 @@ replace_record(THD *thd, TABLE *table,
|
|||||||
{
|
{
|
||||||
error=table->file->ha_update_row(table->record[1],
|
error=table->file->ha_update_row(table->record[1],
|
||||||
table->record[0]);
|
table->record[0]);
|
||||||
if (error)
|
if (error && error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
table->file->print_error(error, MYF(0));
|
table->file->print_error(error, MYF(0));
|
||||||
|
else
|
||||||
|
error= 0;
|
||||||
DBUG_RETURN(error);
|
DBUG_RETURN(error);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -7856,6 +7858,8 @@ int Update_rows_log_event::do_exec_row(TABLE *table)
|
|||||||
database into the after image delivered from the master.
|
database into the after image delivered from the master.
|
||||||
*/
|
*/
|
||||||
error= table->file->ha_update_row(table->record[1], table->record[0]);
|
error= table->file->ha_update_row(table->record[1], table->record[0]);
|
||||||
|
if (error == HA_ERR_RECORD_IS_THE_SAME)
|
||||||
|
error= 0;
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -715,8 +715,11 @@ sp_update_routine(THD *thd, int type, sp_name *name, st_sp_chistics *chistics)
|
|||||||
table->field[MYSQL_PROC_FIELD_COMMENT]->store(chistics->comment.str,
|
table->field[MYSQL_PROC_FIELD_COMMENT]->store(chistics->comment.str,
|
||||||
chistics->comment.length,
|
chistics->comment.length,
|
||||||
system_charset_info);
|
system_charset_info);
|
||||||
if ((table->file->ha_update_row(table->record[1],table->record[0])))
|
if ((ret= table->file->ha_update_row(table->record[1],table->record[0])) &&
|
||||||
|
ret != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
ret= SP_WRITE_ROW_FAILED;
|
ret= SP_WRITE_ROW_FAILED;
|
||||||
|
else
|
||||||
|
ret= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret == SP_OK)
|
if (ret == SP_OK)
|
||||||
|
@ -1825,7 +1825,8 @@ static bool update_user_table(THD *thd, TABLE *table,
|
|||||||
}
|
}
|
||||||
store_record(table,record[1]);
|
store_record(table,record[1]);
|
||||||
table->field[2]->store(new_password, new_password_len, system_charset_info);
|
table->field[2]->store(new_password, new_password_len, system_charset_info);
|
||||||
if ((error=table->file->ha_update_row(table->record[1],table->record[0])))
|
if ((error=table->file->ha_update_row(table->record[1],table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
{
|
{
|
||||||
table->file->print_error(error,MYF(0)); /* purecov: deadcode */
|
table->file->print_error(error,MYF(0)); /* purecov: deadcode */
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
@ -2041,12 +2042,18 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo,
|
|||||||
We should NEVER delete from the user table, as a uses can still
|
We should NEVER delete from the user table, as a uses can still
|
||||||
use mysqld even if he doesn't have any privileges in the user table!
|
use mysqld even if he doesn't have any privileges in the user table!
|
||||||
*/
|
*/
|
||||||
if (cmp_record(table,record[1]) &&
|
if (cmp_record(table,record[1]))
|
||||||
(error=table->file->ha_update_row(table->record[1],table->record[0])))
|
{
|
||||||
{ // This should never happen
|
if ((error=
|
||||||
table->file->print_error(error,MYF(0)); /* purecov: deadcode */
|
table->file->ha_update_row(table->record[1],table->record[0])) &&
|
||||||
error= -1; /* purecov: deadcode */
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
goto end; /* purecov: deadcode */
|
{ // This should never happen
|
||||||
|
table->file->print_error(error,MYF(0)); /* purecov: deadcode */
|
||||||
|
error= -1; /* purecov: deadcode */
|
||||||
|
goto end; /* purecov: deadcode */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
error= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((error=table->file->ha_write_row(table->record[0]))) // insert
|
else if ((error=table->file->ha_write_row(table->record[0]))) // insert
|
||||||
@ -2161,7 +2168,8 @@ static int replace_db_table(TABLE *table, const char *db,
|
|||||||
if (rights)
|
if (rights)
|
||||||
{
|
{
|
||||||
if ((error= table->file->ha_update_row(table->record[1],
|
if ((error= table->file->ha_update_row(table->record[1],
|
||||||
table->record[0])))
|
table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
goto table_error; /* purecov: deadcode */
|
goto table_error; /* purecov: deadcode */
|
||||||
}
|
}
|
||||||
else /* must have been a revoke of all privileges */
|
else /* must have been a revoke of all privileges */
|
||||||
@ -2543,12 +2551,14 @@ static int replace_column_table(GRANT_TABLE *g_t,
|
|||||||
error=table->file->ha_update_row(table->record[1],table->record[0]);
|
error=table->file->ha_update_row(table->record[1],table->record[0]);
|
||||||
else
|
else
|
||||||
error=table->file->ha_delete_row(table->record[1]);
|
error=table->file->ha_delete_row(table->record[1]);
|
||||||
if (error)
|
if (error && error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
{
|
{
|
||||||
table->file->print_error(error,MYF(0)); /* purecov: inspected */
|
table->file->print_error(error,MYF(0)); /* purecov: inspected */
|
||||||
result= -1; /* purecov: inspected */
|
result= -1; /* purecov: inspected */
|
||||||
goto end; /* purecov: inspected */
|
goto end; /* purecov: inspected */
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
error= 0;
|
||||||
grant_column= column_hash_search(g_t, column->column.ptr(),
|
grant_column= column_hash_search(g_t, column->column.ptr(),
|
||||||
column->column.length());
|
column->column.length());
|
||||||
if (grant_column) // Should always be true
|
if (grant_column) // Should always be true
|
||||||
@ -2608,7 +2618,8 @@ static int replace_column_table(GRANT_TABLE *g_t,
|
|||||||
{
|
{
|
||||||
int tmp_error;
|
int tmp_error;
|
||||||
if ((tmp_error=table->file->ha_update_row(table->record[1],
|
if ((tmp_error=table->file->ha_update_row(table->record[1],
|
||||||
table->record[0])))
|
table->record[0])) &&
|
||||||
|
tmp_error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
{ /* purecov: deadcode */
|
{ /* purecov: deadcode */
|
||||||
table->file->print_error(tmp_error,MYF(0)); /* purecov: deadcode */
|
table->file->print_error(tmp_error,MYF(0)); /* purecov: deadcode */
|
||||||
result= -1; /* purecov: deadcode */
|
result= -1; /* purecov: deadcode */
|
||||||
@ -2730,7 +2741,9 @@ static int replace_table_table(THD *thd, GRANT_TABLE *grant_table,
|
|||||||
{
|
{
|
||||||
if (store_table_rights || store_col_rights)
|
if (store_table_rights || store_col_rights)
|
||||||
{
|
{
|
||||||
if ((error=table->file->ha_update_row(table->record[1],table->record[0])))
|
if ((error=table->file->ha_update_row(table->record[1],
|
||||||
|
table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
goto table_error; /* purecov: deadcode */
|
goto table_error; /* purecov: deadcode */
|
||||||
}
|
}
|
||||||
else if ((error = table->file->ha_delete_row(table->record[1])))
|
else if ((error = table->file->ha_delete_row(table->record[1])))
|
||||||
@ -2848,7 +2861,9 @@ static int replace_routine_table(THD *thd, GRANT_NAME *grant_name,
|
|||||||
{
|
{
|
||||||
if (store_proc_rights)
|
if (store_proc_rights)
|
||||||
{
|
{
|
||||||
if ((error=table->file->ha_update_row(table->record[1],table->record[0])))
|
if ((error=table->file->ha_update_row(table->record[1],
|
||||||
|
table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
goto table_error;
|
goto table_error;
|
||||||
}
|
}
|
||||||
else if ((error= table->file->ha_delete_row(table->record[1])))
|
else if ((error= table->file->ha_delete_row(table->record[1])))
|
||||||
@ -4914,8 +4929,12 @@ static int modify_grant_table(TABLE *table, Field *host_field,
|
|||||||
system_charset_info);
|
system_charset_info);
|
||||||
user_field->store(user_to->user.str, user_to->user.length,
|
user_field->store(user_to->user.str, user_to->user.length,
|
||||||
system_charset_info);
|
system_charset_info);
|
||||||
if ((error= table->file->ha_update_row(table->record[1], table->record[0])))
|
if ((error= table->file->ha_update_row(table->record[1],
|
||||||
|
table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
table->file->print_error(error, MYF(0));
|
table->file->print_error(error, MYF(0));
|
||||||
|
else
|
||||||
|
error= 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1423,7 +1423,8 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
|
|||||||
compare_record(table))
|
compare_record(table))
|
||||||
{
|
{
|
||||||
if ((error=table->file->ha_update_row(table->record[1],
|
if ((error=table->file->ha_update_row(table->record[1],
|
||||||
table->record[0])))
|
table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
{
|
{
|
||||||
if (info->ignore &&
|
if (info->ignore &&
|
||||||
!table->file->is_fatal_error(error, HA_CHECK_DUP_KEY))
|
!table->file->is_fatal_error(error, HA_CHECK_DUP_KEY))
|
||||||
@ -1433,7 +1434,10 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
info->updated++;
|
if (error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
|
info->updated++;
|
||||||
|
else
|
||||||
|
error= 0;
|
||||||
/*
|
/*
|
||||||
If ON DUP KEY UPDATE updates a row instead of inserting one, it's
|
If ON DUP KEY UPDATE updates a row instead of inserting one, it's
|
||||||
like a regular UPDATE statement: it should not affect the value of a
|
like a regular UPDATE statement: it should not affect the value of a
|
||||||
@ -1481,9 +1485,13 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
|
|||||||
(!table->triggers || !table->triggers->has_delete_triggers()))
|
(!table->triggers || !table->triggers->has_delete_triggers()))
|
||||||
{
|
{
|
||||||
if ((error=table->file->ha_update_row(table->record[1],
|
if ((error=table->file->ha_update_row(table->record[1],
|
||||||
table->record[0])))
|
table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
goto err;
|
goto err;
|
||||||
info->deleted++;
|
if (error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
|
info->deleted++;
|
||||||
|
else
|
||||||
|
error= 0;
|
||||||
thd->record_first_successful_insert_id_in_cur_stmt(table->file->insert_id_for_cur_row);
|
thd->record_first_successful_insert_id_in_cur_stmt(table->file->insert_id_for_cur_row);
|
||||||
/*
|
/*
|
||||||
Since we pretend that we have done insert we should call
|
Since we pretend that we have done insert we should call
|
||||||
|
@ -872,11 +872,15 @@ update_server_record(TABLE *table, FOREIGN_SERVER *server)
|
|||||||
/* ok, so we can update since the record exists in the table */
|
/* ok, so we can update since the record exists in the table */
|
||||||
store_record(table,record[1]);
|
store_record(table,record[1]);
|
||||||
store_server_fields(table, server);
|
store_server_fields(table, server);
|
||||||
if ((error=table->file->ha_update_row(table->record[1],table->record[0])))
|
if ((error=table->file->ha_update_row(table->record[1],
|
||||||
|
table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info",("problems with ha_update_row %d", error));
|
DBUG_PRINT("info",("problems with ha_update_row %d", error));
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
error= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
end:
|
end:
|
||||||
|
@ -548,9 +548,12 @@ int mysql_update(THD *thd,
|
|||||||
error= table->file->ha_update_row(table->record[1],
|
error= table->file->ha_update_row(table->record[1],
|
||||||
table->record[0]);
|
table->record[0]);
|
||||||
}
|
}
|
||||||
if (!error)
|
if (!error || error == HA_ERR_RECORD_IS_THE_SAME)
|
||||||
{
|
{
|
||||||
updated++;
|
if (error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
|
updated++;
|
||||||
|
else
|
||||||
|
error= 0;
|
||||||
thd->no_trans_update.stmt= !transactional_table;
|
thd->no_trans_update.stmt= !transactional_table;
|
||||||
|
|
||||||
if (table->triggers &&
|
if (table->triggers &&
|
||||||
@ -1524,7 +1527,8 @@ bool multi_update::send_data(List<Item> ¬_used_values)
|
|||||||
main_table->file->extra(HA_EXTRA_PREPARE_FOR_UPDATE);
|
main_table->file->extra(HA_EXTRA_PREPARE_FOR_UPDATE);
|
||||||
}
|
}
|
||||||
if ((error=table->file->ha_update_row(table->record[1],
|
if ((error=table->file->ha_update_row(table->record[1],
|
||||||
table->record[0])))
|
table->record[0])) &&
|
||||||
|
error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
{
|
{
|
||||||
updated--;
|
updated--;
|
||||||
if (!ignore ||
|
if (!ignore ||
|
||||||
@ -1542,6 +1546,11 @@ bool multi_update::send_data(List<Item> ¬_used_values)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (error == HA_ERR_RECORD_IS_THE_SAME)
|
||||||
|
{
|
||||||
|
error= 0;
|
||||||
|
updated--;
|
||||||
|
}
|
||||||
/* non-transactional or transactional table got modified */
|
/* non-transactional or transactional table got modified */
|
||||||
/* either multi_update class' flag is raised in its branch */
|
/* either multi_update class' flag is raised in its branch */
|
||||||
if (table->file->has_transactions())
|
if (table->file->has_transactions())
|
||||||
@ -1768,13 +1777,17 @@ int multi_update::do_updates(bool from_send_error)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if ((local_error=table->file->ha_update_row(table->record[1],
|
if ((local_error=table->file->ha_update_row(table->record[1],
|
||||||
table->record[0])))
|
table->record[0])) &&
|
||||||
|
local_error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
{
|
{
|
||||||
if (!ignore ||
|
if (!ignore ||
|
||||||
table->file->is_fatal_error(local_error, HA_CHECK_DUP_KEY))
|
table->file->is_fatal_error(local_error, HA_CHECK_DUP_KEY))
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
updated++;
|
if (local_error != HA_ERR_RECORD_IS_THE_SAME)
|
||||||
|
updated++;
|
||||||
|
else
|
||||||
|
local_error= 0;
|
||||||
|
|
||||||
if (table->triggers &&
|
if (table->triggers &&
|
||||||
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
|
table->triggers->process_triggers(thd, TRG_EVENT_UPDATE,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user