restructuring

main
Ziyang Hu 2 years ago
parent b3505b3576
commit af591f79e0

1
.gitignore vendored

@ -13,4 +13,3 @@ Cargo.lock
# These are backup files generated by rustfmt # These are backup files generated by rustfmt
**/*.rs.bk **/*.rs.bk
/cozo_parser/target/

@ -1,2 +1,14 @@
[workspace] [package]
members = ["cozo_parser"] name = "cozo"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
pest = "2.0"
pest_derive = "2.0"
ordered-float = "2.10.0"
uuid = "0.8"
chrono = "0.4"
rocksdb = "0.18.0"

@ -1,13 +0,0 @@
[package]
name = "cozo_parser"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
pest = "2.0"
pest_derive = "2.0"
ordered-float = "2.10.0"
uuid = "0.8"
chrono = "0.4"

@ -16,6 +16,24 @@ pub struct CozoParser;
mod tests { mod tests {
use super::*; use super::*;
#[test]
fn db() {
use rocksdb::{DB, Options};
// NB: db is automatically closed at end of lifetime
let path = "_path_for_rocksdb_storage";
{
let db = DB::open_default(path).unwrap();
db.put("真二", "你好👋").unwrap();
match db.get_pinned("真二") {
Ok(Some(value)) => println!("retrieved value {}", std::str::from_utf8(&value).unwrap()),
Ok(None) => println!("value not found"),
Err(e) => println!("operational problem encountered: {}", e),
}
db.delete(b"my key").unwrap();
}
let _ = DB::destroy(&Options::default(), path);
}
#[test] #[test]
fn identifiers() { fn identifiers() {
assert_eq!(CozoParser::parse(Rule::normal_ident, "x").unwrap().as_str(), "x"); assert_eq!(CozoParser::parse(Rule::normal_ident, "x").unwrap().as_str(), "x");

@ -104,7 +104,7 @@ impl<'a> ByteArrayParser<'a> {
u if u == ValueTag::UInt as u64 => Some(ValueTag::UInt), u if u == ValueTag::UInt as u64 => Some(ValueTag::UInt),
u if u == ValueTag::List as u64 => Some(ValueTag::List), u if u == ValueTag::List as u64 => Some(ValueTag::List),
u if u == ValueTag::Dict as u64 => Some(ValueTag::Dict), u if u == ValueTag::Dict as u64 => Some(ValueTag::Dict),
// u if u == ValueTag::Uuid as u64 => Some(ValueTag::Uuid), u if u == ValueTag::Uuid as u64 => Some(ValueTag::Uuid),
_ => { _ => {
None None
} }
@ -188,42 +188,18 @@ impl<'a> ByteArrayParser<'a> {
} }
pub fn parse_value(&mut self) -> Option<Value<'a>> { pub fn parse_value(&mut self) -> Option<Value<'a>> {
match self.parse_value_tag()? { match self.parse_value_tag()? {
ValueTag::Null => { ValueTag::Null => { Some(Value::Null) }
Some(Value::Null) ValueTag::BoolTrue => { Some(Value::Bool(true)) }
} ValueTag::BoolFalse => { Some(Value::Bool(false)) }
ValueTag::BoolTrue => { ValueTag::FwdEdge => { Some(Value::EdgeDir(EdgeDir::FwdEdge)) }
Some(Value::Bool(true)) ValueTag::BwdEdge => { Some(Value::EdgeDir(EdgeDir::BwdEdge)) }
} ValueTag::Int => { Some(Value::Int(self.parse_zigzag()?)) }
ValueTag::BoolFalse => { ValueTag::Float => { Some(Value::Float(self.parse_float()?)) }
Some(Value::Bool(false)) ValueTag::String => { Some(Value::RefString(self.parse_string()?)) }
} ValueTag::UInt => { Some(Value::UInt(self.parse_varint()?)) }
ValueTag::FwdEdge => { ValueTag::List => { Some(Value::List(Box::new(self.parse_list()?))) }
Some(Value::EdgeDir(EdgeDir::FwdEdge)) ValueTag::Dict => { Some(Value::Dict(Box::new(self.parse_dict()?))) }
} ValueTag::Uuid => { Some(Value::Uuid(self.parse_uuid()?)) }
ValueTag::BwdEdge => {
Some(Value::EdgeDir(EdgeDir::BwdEdge))
}
ValueTag::Int => {
Some(Value::Int(self.parse_zigzag()?))
}
ValueTag::Float => {
Some(Value::Float(self.parse_float()?))
}
ValueTag::String => {
Some(Value::RefString(self.parse_string()?))
}
ValueTag::UInt => {
Some(Value::UInt(self.parse_varint()?))
}
ValueTag::List => {
Some(Value::List(Box::new(self.parse_list()?)))
}
ValueTag::Dict => {
Some(Value::Dict(Box::new(self.parse_dict()?)))
}
ValueTag::Uuid => {
Some(Value::Uuid(self.parse_uuid()?))
}
} }
} }
pub fn compare_value(&mut self, other: &mut Self) -> Ordering { pub fn compare_value(&mut self, other: &mut Self) -> Ordering {
@ -548,19 +524,18 @@ mod tests {
assert_eq!(i, i2); assert_eq!(i, i2);
} }
//
// #[test]
// fn size() {
// println!("{:?}", std::mem::size_of::<Value>());
// println!("{:?}", std::mem::size_of::<i64>());
// println!("{:?}", std::mem::size_of::<Uuid>());
// println!("{:?}", std::mem::size_of::<BTreeMap<Cow<str>, Value>>());
// println!("{:?}", std::mem::size_of::<Vec<Value>>());
// println!("{:?}", std::mem::size_of::<Cow<str>>());
// println!("{:?}", std::mem::size_of::<Box<Cow<str>>>());
// println!("{:?}", std::mem::size_of::<Box<Vec<Value>>>());
// println!("{:?}", std::mem::size_of::<String>());
// println!("{:?}", std::mem::size_of::<&str>());
// }
#[test]
fn size() {
println!("{:?}", std::mem::size_of::<Value>());
println!("{:?}", std::mem::size_of::<i64>());
println!("{:?}", std::mem::size_of::<Uuid>());
println!("{:?}", std::mem::size_of::<BTreeMap<Cow<str>, Value>>());
println!("{:?}", std::mem::size_of::<Vec<Value>>());
println!("{:?}", std::mem::size_of::<Cow<str>>());
println!("{:?}", std::mem::size_of::<Box<Cow<str>>>());
println!("{:?}", std::mem::size_of::<Box<Vec<Value>>>());
println!("{:?}", std::mem::size_of::<String>());
println!("{:?}", std::mem::size_of::<&str>());
}
} }
Loading…
Cancel
Save