@@ -3242,8 +3242,10 @@ ovsdb_idl_txn_write__(const struct ovsdb_idl_row *row_,
* transaction only does writes of existing values, without making any real
* changes, we will drop the whole transaction later in
* ovsdb_idl_txn_commit().) */
- if (write_only && ovsdb_datum_equals(ovsdb_idl_read(row, column),
- datum, &column->type)) {
+ if (write_only && ((row->written && bitmap_is_set(row->written,
+ column_idx)) || row->old) &&
+ ovsdb_datum_equals(ovsdb_idl_read(row, column),
+ datum, &column->type)) {
goto discard_datum;
}