|
|
|
@ -133,7 +133,7 @@ impl SessionTx {
|
|
|
|
|
format!("{:?}", v),
|
|
|
|
|
format!("{:?}", stored_v),
|
|
|
|
|
)
|
|
|
|
|
.into());
|
|
|
|
|
.into());
|
|
|
|
|
}
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|
|
|
|
@ -225,7 +225,7 @@ impl SessionTx {
|
|
|
|
|
attr.keyword.clone(),
|
|
|
|
|
format!("{:?}", v),
|
|
|
|
|
)
|
|
|
|
|
.into());
|
|
|
|
|
.into());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// fwd scan in time
|
|
|
|
@ -236,7 +236,7 @@ impl SessionTx {
|
|
|
|
|
attr.keyword.clone(),
|
|
|
|
|
format!("{:?}", v),
|
|
|
|
|
)
|
|
|
|
|
.into());
|
|
|
|
|
.into());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else if let Some(v_slice) = self.tx.get(&ave_encoded, false)? {
|
|
|
|
@ -246,7 +246,7 @@ impl SessionTx {
|
|
|
|
|
attr.keyword.clone(),
|
|
|
|
|
format!("{:?}", v),
|
|
|
|
|
)
|
|
|
|
|
.into());
|
|
|
|
|
.into());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -424,7 +424,7 @@ impl SessionTx {
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn restore_bottom_value(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
eid: EntityId,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
vld: Validity,
|
|
|
|
@ -437,128 +437,128 @@ impl SessionTx {
|
|
|
|
|
decode_value(&res.as_ref()[1..])
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_ea_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
eid: EntityId,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
) -> impl Iterator<Item=Result<(EntityId, AttrId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(EntityId, AttrId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
let lower = encode_eav_key(eid, aid, &DataValue::Null, Validity::MAX);
|
|
|
|
|
let upper = encode_eav_key(eid, aid, &DataValue::Bottom, Validity::MIN);
|
|
|
|
|
TripleEntityAttrIter::new(self.tx.iterator(), lower, upper)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_ea_before_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
eid: EntityId,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
before: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(EntityId, AttrId, DataValue)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(EntityId, AttrId, DataValue)>> {
|
|
|
|
|
let lower = encode_eav_key(eid, aid, &DataValue::Null, Validity::MAX);
|
|
|
|
|
let upper = encode_eav_key(eid, aid, &DataValue::Bottom, Validity::MIN);
|
|
|
|
|
TripleEntityAttrBeforeIter::new(self.tx.iterator(), lower, upper, before)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_ae_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
eid: EntityId,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, EntityId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, EntityId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
let lower = encode_aev_key(aid, eid, &DataValue::Null, Validity::MAX);
|
|
|
|
|
let upper = encode_aev_key(aid, eid, &DataValue::Bottom, Validity::MIN);
|
|
|
|
|
TripleAttrEntityIter::new(self.tx.iterator(), lower, upper)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_ae_before_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
eid: EntityId,
|
|
|
|
|
before: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, EntityId, DataValue)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, EntityId, DataValue)>> {
|
|
|
|
|
let lower = encode_aev_key(aid, eid, &DataValue::Null, Validity::MAX);
|
|
|
|
|
let upper = encode_aev_key(aid, eid, &DataValue::Bottom, Validity::MIN);
|
|
|
|
|
TripleAttrEntityBeforeIter::new(self.tx.iterator(), lower, upper, before)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_av_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
v: &DataValue,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, DataValue, EntityId, Validity, StoreOp)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, DataValue, EntityId, Validity, StoreOp)>> {
|
|
|
|
|
let lower = encode_ave_key(aid, v, EntityId::MIN_PERM, Validity::MAX);
|
|
|
|
|
let upper = encode_ave_key(aid, v, EntityId::MAX_PERM, Validity::MIN);
|
|
|
|
|
TripleAttrValueIter::new(self.tx.iterator(), lower, upper)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_av_before_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
v: &DataValue,
|
|
|
|
|
before: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, DataValue, EntityId)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, DataValue, EntityId)>> {
|
|
|
|
|
let lower = encode_ave_key(aid, v, EntityId::MIN_PERM, Validity::MAX);
|
|
|
|
|
let upper = encode_ave_key(aid, v, EntityId::MAX_PERM, Validity::MIN);
|
|
|
|
|
TripleAttrValueBeforeIter::new(self.tx.iterator(), lower, upper, before)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_av_after_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
v: &DataValue,
|
|
|
|
|
after: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, DataValue, EntityId)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, DataValue, EntityId)>> {
|
|
|
|
|
let lower = encode_ave_key(aid, v, EntityId::MIN_PERM, Validity::MAX);
|
|
|
|
|
let upper = encode_ave_key(aid, v, EntityId::MAX_PERM, Validity::MIN);
|
|
|
|
|
TripleAttrValueAfterIter::new(self.tx.iterator(), lower, upper, after)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_vref_a_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
v_eid: EntityId,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
) -> impl Iterator<Item=Result<(EntityId, AttrId, EntityId, Validity, StoreOp)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(EntityId, AttrId, EntityId, Validity, StoreOp)>> {
|
|
|
|
|
let lower = encode_vae_key(v_eid, aid, EntityId::MIN_PERM, Validity::MAX);
|
|
|
|
|
let upper = encode_vae_key(v_eid, aid, EntityId::MAX_PERM, Validity::MIN);
|
|
|
|
|
TripleValueRefAttrIter::new(self.tx.iterator(), lower, upper)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_vref_a_before_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
v_eid: EntityId,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
before: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(EntityId, AttrId, EntityId)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(EntityId, AttrId, EntityId)>> {
|
|
|
|
|
let lower = encode_vae_key(v_eid, aid, EntityId::MIN_PERM, Validity::MAX);
|
|
|
|
|
let upper = encode_vae_key(v_eid, aid, EntityId::MAX_PERM, Validity::MIN);
|
|
|
|
|
TripleValueRefAttrBeforeIter::new(self.tx.iterator(), lower, upper, before)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_e_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
eid: EntityId,
|
|
|
|
|
) -> impl Iterator<Item=Result<(EntityId, AttrId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(EntityId, AttrId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
let lower = encode_eav_key(eid, AttrId::MIN_PERM, &DataValue::Null, Validity::MAX);
|
|
|
|
|
let upper = encode_eav_key(eid, AttrId::MAX_PERM, &DataValue::Bottom, Validity::MIN);
|
|
|
|
|
TripleEntityAttrIter::new(self.tx.iterator(), lower, upper)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_e_before_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
eid: EntityId,
|
|
|
|
|
before: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(EntityId, AttrId, DataValue)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(EntityId, AttrId, DataValue)>> {
|
|
|
|
|
let lower = encode_eav_key(eid, AttrId::MIN_PERM, &DataValue::Null, Validity::MAX);
|
|
|
|
|
let upper = encode_eav_key(eid, AttrId::MAX_PERM, &DataValue::Bottom, Validity::MIN);
|
|
|
|
|
TripleEntityAttrBeforeIter::new(self.tx.iterator(), lower, upper, before)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_a_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, EntityId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, EntityId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
let lower = encode_aev_key(aid, EntityId::MIN_PERM, &DataValue::Null, Validity::MAX);
|
|
|
|
|
let upper = encode_aev_key(aid, EntityId::MAX_PERM, &DataValue::Bottom, Validity::MIN);
|
|
|
|
|
TripleAttrEntityIter::new(self.tx.iterator(), lower, upper)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_a_before_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
aid: AttrId,
|
|
|
|
|
before: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, EntityId, DataValue)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, EntityId, DataValue)>> {
|
|
|
|
|
let lower = encode_aev_key(aid, EntityId::MIN_PERM, &DataValue::Null, Validity::MAX);
|
|
|
|
|
let upper = encode_aev_key(aid, EntityId::MAX_PERM, &DataValue::Bottom, Validity::MIN);
|
|
|
|
|
TripleAttrEntityBeforeIter::new(self.tx.iterator(), lower, upper, before)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_a_scan_all(
|
|
|
|
|
&mut self,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, EntityId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
&self,
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, EntityId, DataValue, Validity, StoreOp)>> {
|
|
|
|
|
let lower = encode_aev_key(
|
|
|
|
|
AttrId::MIN_PERM,
|
|
|
|
|
EntityId::MIN_PERM,
|
|
|
|
@ -574,9 +574,9 @@ impl SessionTx {
|
|
|
|
|
TripleAttrEntityIter::new(self.tx.iterator(), lower, upper)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_a_before_scan_all(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
before: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(AttrId, EntityId, DataValue)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(AttrId, EntityId, DataValue)>> {
|
|
|
|
|
let lower = encode_aev_key(
|
|
|
|
|
AttrId::MIN_PERM,
|
|
|
|
|
EntityId::MIN_PERM,
|
|
|
|
@ -592,18 +592,18 @@ impl SessionTx {
|
|
|
|
|
TripleAttrEntityBeforeIter::new(self.tx.iterator(), lower, upper, before)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_vref_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
v_eid: EntityId,
|
|
|
|
|
) -> impl Iterator<Item=Result<(EntityId, AttrId, EntityId, Validity, StoreOp)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(EntityId, AttrId, EntityId, Validity, StoreOp)>> {
|
|
|
|
|
let lower = encode_vae_key(v_eid, AttrId::MIN_PERM, EntityId::MIN_PERM, Validity::MAX);
|
|
|
|
|
let upper = encode_vae_key(v_eid, AttrId::MAX_PERM, EntityId::MAX_PERM, Validity::MIN);
|
|
|
|
|
TripleValueRefAttrIter::new(self.tx.iterator(), lower, upper)
|
|
|
|
|
}
|
|
|
|
|
pub(crate) fn triple_vref_before_scan(
|
|
|
|
|
&mut self,
|
|
|
|
|
&self,
|
|
|
|
|
v_eid: EntityId,
|
|
|
|
|
before: Validity,
|
|
|
|
|
) -> impl Iterator<Item=Result<(EntityId, AttrId, EntityId)>> {
|
|
|
|
|
) -> impl Iterator<Item = Result<(EntityId, AttrId, EntityId)>> {
|
|
|
|
|
let lower = encode_vae_key(v_eid, AttrId::MIN_PERM, EntityId::MIN_PERM, Validity::MAX);
|
|
|
|
|
let upper = encode_vae_key(v_eid, AttrId::MAX_PERM, EntityId::MAX_PERM, Validity::MIN);
|
|
|
|
|
TripleValueRefAttrBeforeIter::new(self.tx.iterator(), lower, upper, before)
|
|
|
|
|