From 2737a722785589eca70f4e25eaaa0d8f594462df Mon Sep 17 00:00:00 2001 From: Mattias Jonsson Date: Wed, 1 Dec 2010 22:47:40 +0100 Subject: Bug#58147: ALTER TABLE w/ TRUNCATE PARTITION fails but the statement is written to binlog TRUNCATE PARTITION was written to the binlog even if it failed before calling any partition's truncate function. Solved by adding an argument to truncate_partition, to flag if it should be written to the binlog or not. It should be written to the binlog when a call to any partitions truncate function is done. mysql-test/r/partition_binlog.result: New result file mysql-test/t/partition_binlog.test: New test file, including DROP PARTITION binlog test sql/ha_partition.cc: Added argument to avoid binlogging failed truncate_partition that have not yet changed any data. sql/ha_partition.h: Added argument to avoid excessive binlogging sql/sql_partition_admin.cc: Avoid to binlog TRUNCATE PARTITION if it fails before any partition has tried to truncate. --- sql/ha_partition.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sql/ha_partition.h') diff --git a/sql/ha_partition.h b/sql/ha_partition.h index f1abc0cefe2..cb91dcba6a3 100644 --- a/sql/ha_partition.h +++ b/sql/ha_partition.h @@ -362,7 +362,7 @@ public: @remark This method is a partitioning-specific hook and thus not a member of the general SE API. */ - int truncate_partition(Alter_info *); + int truncate_partition(Alter_info *, bool *to_binlog); virtual bool is_fatal_error(int error, uint flags) { -- cgit v1.2.1