Dml semantics
Параллельно с #257 (closed) обнаружилась проблема с текущей реализацией Op::Dml
. Несмотря на то, что Update
и Delete
в тарантуле можно делать по вторичному ключу, в журнал они попадают с первичным. Кроме того, поддерживаются только уникальные индексы, а ключ не может быть частичным (partial key).
В рамках этого тикета давайте поменяем семантику структуры Op::Dml
соответствующим образом:
diff --git a/src/traft/op.rs b/src/traft/op.rs
index 51e1d817..fca1b6af 100644
--- a/src/traft/op.rs
+++ b/src/traft/op.rs
@@ -249,16 +249,16 @@ pub enum Dml {
tuple: TupleBuffer,
},
Update {
- index: ClusterwideSpaceIndex,
+ space: ClusterwideSpace,
#[serde(with = "serde_bytes")]
- key: TupleBuffer,
+ key: TupleBuffer, // primary
#[serde(with = "vec_of_raw_byte_buf")]
ops: Vec<TupleBuffer>,
},
Delete {
- index: ClusterwideSpaceIndex,
+ space: ClusterwideSpace,
#[serde(with = "serde_bytes")]
- key: TupleBuffer,
+ key: TupleBuffer, // primary
},
}