summaryrefslogtreecommitdiff
path: root/sql/sql_delete.cc
diff options
context:
space:
mode:
authorunknown <istruewing@stella.local>2008-03-26 10:56:03 +0100
committerunknown <istruewing@stella.local>2008-03-26 10:56:03 +0100
commitcebc10e3c08a832ab9fffc26e4ef8633630dd082 (patch)
tree9e5ba5e508b636add1b3ab6b1fb7ca5124f9db4d /sql/sql_delete.cc
parentf77bca6940d094143ee5b57f651ca47286453531 (diff)
parent3e28618f38a3a22f4e36075cf31b8b243ad7777e (diff)
downloadmariadb-git-cebc10e3c08a832ab9fffc26e4ef8633630dd082.tar.gz
Merge stella.local:/home2/mydev/mysql-5.1-ateam
into stella.local:/home2/mydev/mysql-5.1-axmrg mysql-test/r/federated.result: Auto merged mysql-test/t/federated.test: Auto merged sql/sql_delete.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_update.cc: Auto merged storage/federated/ha_federated.cc: Auto merged mysql-test/suite/binlog/r/binlog_unsafe.result: Manual merge mysql-test/suite/binlog/t/binlog_unsafe.test: Manual merge
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r--sql/sql_delete.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc
index 4e0853dbbc4..1456b66638d 100644
--- a/sql/sql_delete.cc
+++ b/sql/sql_delete.cc
@@ -418,6 +418,19 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds)
DBUG_ENTER("mysql_prepare_delete");
List<Item> all_fields;
+ /*
+ Statement-based replication of DELETE ... LIMIT is not safe as order of
+ rows is not defined, so in mixed mode we go to row-based.
+
+ Note that we may consider a statement as safe if ORDER BY primary_key
+ is present. However it may confuse users to see very similiar statements
+ replicated differently.
+ */
+ if (thd->lex->current_select->select_limit)
+ {
+ thd->lex->set_stmt_unsafe();
+ thd->set_current_stmt_binlog_row_based_if_mixed();
+ }
thd->lex->allow_sum_func= 0;
if (setup_tables_and_check_access(thd, &thd->lex->select_lex.context,
&thd->lex->select_lex.top_join_list,