diff --git a/src/transaction/transaction.rs b/src/transaction/transaction.rs index b30ef6e..9d20b00 100644 --- a/src/transaction/transaction.rs +++ b/src/transaction/transaction.rs @@ -1265,6 +1265,11 @@ struct Committer { } impl Committer { + // CheckNotExists is checked in the prewrite phase and should not appear in the commit phase. + fn filter_out_check_not_exists_mutations(&mut self) { + self.mutations.retain(|m| m.op() != Op::CheckNotExists) + } + async fn commit(mut self) -> Result> { debug!("committing"); @@ -1281,6 +1286,8 @@ impl Committer { return Ok(min_commit_ts); } + self.filter_out_check_not_exists_mutations(); + let commit_ts = if self.options.async_commit { // FIXME: min_commit_ts == 0 => fallback to normal 2PC min_commit_ts.unwrap()