fix insertion bug

main
Ziyang Hu 2 years ago
parent 71269f989f
commit 0c0a0ac338

@ -278,6 +278,11 @@ pub(crate) fn encode_aev_key(
#[inline]
pub(crate) fn decode_ae_key(src: &[u8]) -> Result<(AttrId, EntityId, Validity)> {
debug_assert!(
src[0] == StorageTag::TripleAttrEntityValue as u8
|| src[0] == StorageTag::TripleAttrValueEntity as u8
);
debug_assert!(src.len() >= VEC_SIZE_24);
let aid = AttrId::from_bytes(&src[0..VEC_SIZE_8]);
let eid = EntityId::from_bytes(&src[VEC_SIZE_8..VEC_SIZE_16]);
let vld = Validity::from_bytes(&src[VEC_SIZE_16..VEC_SIZE_24]);

@ -9,4 +9,5 @@ pub(crate) mod value;
pub(crate) mod tuple;
pub(crate) mod expr;
pub(crate) mod program;
pub(crate) mod aggr;

@ -3,6 +3,7 @@ use std::fmt::{Debug, Formatter};
use anyhow::Result;
use smallvec::SmallVec;
use crate::data::aggr::Aggregation;
use crate::data::attr::Attribute;
use crate::data::expr::Expr;
@ -22,12 +23,6 @@ impl TempKwGen {
}
}
#[derive(Clone, Debug, Default)]
pub(crate) enum Aggregation {
#[default]
Todo,
}
#[derive(Debug, Clone)]
pub(crate) struct InputProgram {
pub(crate) prog: BTreeMap<Keyword, Vec<InputRule>>,

@ -1,5 +1,4 @@
use std::collections::{BTreeMap, BTreeSet};
use std::fmt::Debug;
use anyhow::{anyhow, ensure, Result};
@ -9,12 +8,6 @@ use crate::query::relation::Relation;
use crate::runtime::temp_store::TempStore;
use crate::runtime::transact::SessionTx;
#[derive(Clone, Debug, Default)]
pub(crate) enum Aggregation {
#[default]
None,
}
impl SessionTx {
pub(crate) fn compile_magic_rule_body(
&mut self,

@ -219,7 +219,7 @@ impl SessionTx {
);
}
} else if let Some(v_slice) = self.tx.get(&ave_encoded, false)? {
let (_, found_eid, _) = decode_ae_key(&v_slice)?;
let found_eid = decode_value_from_val(&v_slice)?.get_entity_id()?;
ensure!(
found_eid == eid,
"unique constraint violated for attr {} with value {:?}",

Loading…
Cancel
Save