diff -NurpP --minimal mysql-5.0.18/sql/ha_federated.cc mysql-5.0.18-fixed/sql/ha_federated.cc --- mysql-5.0.18/sql/ha_federated.cc 2005-12-21 20:39:39.000000000 +0100 +++ mysql-5.0.18-fixed/sql/ha_federated.cc 2006-01-14 21:13:45.000000000 +0100 @@ -1846,11 +1846,11 @@ int ha_federated::update_row(const byte /* otherwise = */ (*field)->val_str(&new_field_value); (*field)->quote_data(&new_field_value); - - if (!field_in_record_is_null(table, *field, (char*) old_data)) - where_string.append(FEDERATED_EQ); } + update_string.append(new_field_value); + new_field_value.length(0); + if (field_in_record_is_null(table, *field, (char*) old_data)) where_string.append(FEDERATED_ISNULL); else @@ -1858,12 +1858,10 @@ int ha_federated::update_row(const byte (*field)->val_str(&old_field_value, (char*) (old_data + (*field)->offset())); (*field)->quote_data(&old_field_value); + where_string.append(FEDERATED_EQ); where_string.append(old_field_value); } - update_string.append(new_field_value); - new_field_value.length(0); - /* Only append conjunctions if we have another field in which to iterate