mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merge of 5.1-main into 5.1-maria; MyISAM changes are also ported to Maria.
This commit is contained in:
@ -51,6 +51,11 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
|
||||
THD::killed_state killed_status= THD::NOT_KILLED;
|
||||
DBUG_ENTER("mysql_delete");
|
||||
|
||||
THD::enum_binlog_query_type query_type=
|
||||
thd->lex->sql_command == SQLCOM_TRUNCATE ?
|
||||
THD::STMT_QUERY_TYPE :
|
||||
THD::ROW_QUERY_TYPE;
|
||||
|
||||
if (open_and_lock_tables(thd, table_list))
|
||||
DBUG_RETURN(TRUE);
|
||||
if (!(table= table_list->table))
|
||||
@ -135,6 +140,11 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds,
|
||||
DBUG_PRINT("debug", ("Trying to use delete_all_rows()"));
|
||||
if (!(error=table->file->ha_delete_all_rows()))
|
||||
{
|
||||
/*
|
||||
If delete_all_rows() is used, it is not possible to log the
|
||||
query in row format, so we have to log it in statement format.
|
||||
*/
|
||||
query_type= THD::STMT_QUERY_TYPE;
|
||||
error= -1; // ok
|
||||
deleted= maybe_deleted;
|
||||
goto cleanup;
|
||||
@ -374,6 +384,11 @@ cleanup:
|
||||
{
|
||||
if (mysql_bin_log.is_open())
|
||||
{
|
||||
bool const is_trans=
|
||||
thd->lex->sql_command == SQLCOM_TRUNCATE ?
|
||||
FALSE :
|
||||
transactional_table;
|
||||
|
||||
if (error < 0)
|
||||
thd->clear_error();
|
||||
/*
|
||||
@ -381,10 +396,13 @@ cleanup:
|
||||
storage engine does not inject the rows itself, we replicate
|
||||
statement-based; otherwise, 'ha_delete_row()' was used to
|
||||
delete specific rows which we might log row-based.
|
||||
|
||||
Note that TRUNCATE TABLE is not transactional and should
|
||||
therefore be treated as a DDL.
|
||||
*/
|
||||
int log_result= thd->binlog_query(THD::ROW_QUERY_TYPE,
|
||||
int log_result= thd->binlog_query(query_type,
|
||||
thd->query, thd->query_length,
|
||||
transactional_table, FALSE, killed_status);
|
||||
is_trans, FALSE, killed_status);
|
||||
|
||||
if (log_result && transactional_table)
|
||||
{
|
||||
|
Reference in New Issue
Block a user