summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authormonty@hundin.mysql.fi <>2001-12-13 02:31:19 +0200
committermonty@hundin.mysql.fi <>2001-12-13 02:31:19 +0200
commit87fd219d67dc6a0630e882d4be6ced589bd3f0f6 (patch)
tree47a4c1a60e94a3e70ea5564124a296f7cd71605e /sql/sql_delete.cc
parent8bef3771f4bf0880e0bbb2f4f526903f8e72082c (diff)
downloadmariadb-git-87fd219d67dc6a0630e882d4be6ced589bd3f0f6.tar.gz
Fixed sleep time in mysql-test-run
Fixed bug in query cache. Cleaned up des_crypt code.
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r--sql/sql_delete.cc41
1 files changed, 20 insertions, 21 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index c0c0e4244d9..eed6e4e5f81 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -384,6 +384,13 @@ void multi_delete::send_error(uint errcode,const char *err)
}
+/*
+ Do delete from other tables.
+ Returns values:
+ 0 ok
+ 1 error
+*/
+
int multi_delete::do_deletes (bool from_send_error)
{
int error = 0, counter = 0;
@@ -420,7 +427,8 @@ int multi_delete::do_deletes (bool from_send_error)
{
TABLE_LIST table_list;
bzero((char*) &table_list,sizeof(table_list));
- table_list.name=table->table_name; table_list.real_name=table_being_deleted->real_name;
+ table_list.name=table->table_name;
+ table_list.real_name=table_being_deleted->real_name;
table_list.table=table;
table_list.grant=table->grant;
table_list.db = table_being_deleted->db;
@@ -432,23 +440,20 @@ int multi_delete::do_deletes (bool from_send_error)
#endif /* USE_REGENERATE_TABLE */
READ_RECORD info;
- error=0;
init_read_record(&info,thd,table,NULL,0,0);
bool not_trans_safe = some_table_is_not_transaction_safe(delete_tables);
while (!(error=info.read_record(&info)) &&
(!thd->killed || from_send_error || not_trans_safe))
{
- error=table->file->delete_row(table->record[0]);
- if (error)
+ if ((error=table->file->delete_row(table->record[0])))
{
table->file->print_error(error,MYF(0));
break;
}
- else
- deleted++;
+ deleted++;
}
end_read_record(&info);
- if (error == -1)
+ if (error == -1) // End of file
error = 0;
}
return error;
@@ -464,7 +469,6 @@ bool multi_delete::send_eof()
/* reset used flags */
delete_tables->table->no_keyread=0;
- if (error == -1) error = 0;
thd->proc_info="end";
if (error)
{
@@ -477,22 +481,17 @@ bool multi_delete::send_eof()
was a non-transaction-safe table involved, since
modifications in it cannot be rolled back. */
- if (deleted &&
- (!error || some_table_is_not_transaction_safe(delete_tables)))
+ if (deleted || some_table_is_not_transaction_safe(delete_tables))
{
mysql_update_log.write(thd,thd->query,thd->query_length);
- Query_log_event qinfo(thd, thd->query);
-
- /* mysql_bin_log is not open if binlogging or replication
- is not used */
-
- if (mysql_bin_log.is_open() && mysql_bin_log.write(&qinfo) &&
- !some_table_is_not_transaction_safe(delete_tables))
- error=1; /* Log write failed: roll back
- the SQL statement */
-
+ if (mysql_bin_log.is_open())
+ {
+ Query_log_event qinfo(thd, thd->query);
+ if (mysql_bin_log.write(&qinfo) &&
+ !some_table_is_not_transaction_safe(delete_tables))
+ error=1; // Log write failed: roll back the SQL statement
+ }
/* Commit or rollback the current SQL statement */
-
VOID(ha_autocommit_or_rollback(thd,error > 0));
}