fixing bad comparator

main
Ziyang Hu 2 years ago
parent b9f3ec7be6
commit e010667722

@ -546,7 +546,7 @@ mod tests {
let mut eval = Evaluator::new("_path_for_rocksdb_storagex".to_string()).unwrap(); let mut eval = Evaluator::new("_path_for_rocksdb_storagex".to_string()).unwrap();
eval.build_table(parsed).unwrap(); eval.build_table(parsed).unwrap();
eval.restore_metadata().unwrap(); eval.restore_metadata().unwrap();
eval.storage.delete().unwrap(); // eval.storage.delete().unwrap();
println!("{:#?}", eval.s_envs.resolve("Person")); println!("{:#?}", eval.s_envs.resolve("Person"));
println!("{:#?}", eval.s_envs.resolve("Friend")); println!("{:#?}", eval.s_envs.resolve("Friend"));
} }

@ -18,8 +18,8 @@ impl Storage {
options.create_if_missing(true); options.create_if_missing(true);
options.set_comparator("cozo_comparator_v1", cozo_comparator_v1); options.set_comparator("cozo_comparator_v1", cozo_comparator_v1);
let temp_cf = ColumnFamilyDescriptor::new("temp", options.clone()); // let temp_cf = ColumnFamilyDescriptor::new("temp", options.clone());
let db = DB::open_cf_descriptors(&options, &path, vec![temp_cf])?; let db = DB::open(&options, &path)?;
Ok(Storage { db: Some(db), options, path }) Ok(Storage { db: Some(db), options, path })
} }

@ -250,7 +250,7 @@ impl<'a> ByteArrayParser<'a> {
#[inline] #[inline]
pub fn compare_string(&mut self, other: &mut Self) -> Ordering { pub fn compare_string(&mut self, other: &mut Self) -> Ordering {
let len_a = self.parse_varint().expect("Failed to get String length when comparing"); let len_a = self.parse_varint().expect("Failed to get String length when comparing");
let len_b = self.parse_varint().expect("Failed to get String length when comparing"); let len_b = other.parse_varint().expect("Failed to get String length when comparing");
for _ in 0..min(len_a, len_b) { for _ in 0..min(len_a, len_b) {
let byte_a = self.advance(1).expect("Unexpected end of String when comparing")[0]; let byte_a = self.advance(1).expect("Unexpected end of String when comparing")[0];
let byte_b = other.advance(1).expect("Unexpected end of String when comparing")[0]; let byte_b = other.advance(1).expect("Unexpected end of String when comparing")[0];
@ -472,6 +472,7 @@ impl<T: Write> ByteArrayBuilder<T> {
pub fn cozo_comparator_v1(a: &[u8], b: &[u8]) -> Ordering { pub fn cozo_comparator_v1(a: &[u8], b: &[u8]) -> Ordering {
cmp_data(&mut ByteArrayParser { bytes: a, current: 0 }, cmp_data(&mut ByteArrayParser { bytes: a, current: 0 },
&mut ByteArrayParser { bytes: b, current: 0 }) &mut ByteArrayParser { bytes: b, current: 0 })
} }
pub fn cmp_data<'a>(pa: &mut ByteArrayParser<'a>, pb: &mut ByteArrayParser<'a>) -> Ordering { pub fn cmp_data<'a>(pa: &mut ByteArrayParser<'a>, pb: &mut ByteArrayParser<'a>) -> Ordering {

Loading…
Cancel
Save