From 0c0a0ac338cdaae14282bd3f8c05126d436bc2ac Mon Sep 17 00:00:00 2001 From: Ziyang Hu Date: Wed, 3 Aug 2022 17:07:51 +0800 Subject: [PATCH] fix insertion bug --- src/data/encode.rs | 5 +++++ src/data/mod.rs | 1 + src/data/program.rs | 7 +------ src/query/compile.rs | 7 ------- src/transact/exec.rs | 2 +- 5 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/data/encode.rs b/src/data/encode.rs index b7ae9b2f..8557d3a6 100644 --- a/src/data/encode.rs +++ b/src/data/encode.rs @@ -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]); diff --git a/src/data/mod.rs b/src/data/mod.rs index a0cbfa9a..ff303150 100644 --- a/src/data/mod.rs +++ b/src/data/mod.rs @@ -9,4 +9,5 @@ pub(crate) mod value; pub(crate) mod tuple; pub(crate) mod expr; pub(crate) mod program; +pub(crate) mod aggr; diff --git a/src/data/program.rs b/src/data/program.rs index 7e95b1fe..ac9e4ea3 100644 --- a/src/data/program.rs +++ b/src/data/program.rs @@ -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>, diff --git a/src/query/compile.rs b/src/query/compile.rs index c1505319..46a6d732 100644 --- a/src/query/compile.rs +++ b/src/query/compile.rs @@ -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, diff --git a/src/transact/exec.rs b/src/transact/exec.rs index 05716893..5b03e055 100644 --- a/src/transact/exec.rs +++ b/src/transact/exec.rs @@ -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 {:?}",