change C++ header file location

main
Ziyang Hu 2 years ago
parent 7f599b79c1
commit f7850122f6

14
.gitignore vendored

@ -14,4 +14,16 @@ Cargo.lock
**/*.rs.bk **/*.rs.bk
_path* _path*
*.db *.db### CMake template
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps

@ -1 +0,0 @@
rocksdb

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$/rocksdb"> <component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$/cozo-rocks">
<contentRoot DIR="$PROJECT_DIR$" /> <contentRoot DIR="$PROJECT_DIR$" />
</component> </component>
</project> </project>

@ -9,5 +9,4 @@ void write_status_impl(Status &status, StatusCode code, StatusSubCode subcode, S
status.code = code; status.code = code;
status.subcode = subcode; status.subcode = subcode;
status.severity = severity; status.severity = severity;
} }

@ -21,7 +21,7 @@ typedef RDB::Status::Code StatusCode;
typedef RDB::Status::SubCode StatusSubCode; typedef RDB::Status::SubCode StatusSubCode;
typedef RDB::Status::Severity StatusSeverity; typedef RDB::Status::Severity StatusSeverity;
std::unique_ptr<RDB::DB> new_db(); std::unique_ptr <RDB::DB> new_db();
struct ReadOptionsBridge { struct ReadOptionsBridge {
mutable RDB::ReadOptions inner; mutable RDB::ReadOptions inner;
@ -38,19 +38,21 @@ public:
typedef rust::Fn<std::int8_t(rust::Slice<const std::uint8_t>, rust::Slice<const std::uint8_t>)> RustComparatorFn; typedef rust::Fn<std::int8_t(rust::Slice<const std::uint8_t>, rust::Slice<const std::uint8_t>)> RustComparatorFn;
class RustComparator: public RDB::Comparator { class RustComparator : public RDB::Comparator {
public: public:
inline int Compare(const rocksdb::Slice& a, const rocksdb::Slice& b ) const { inline int Compare(const rocksdb::Slice &a, const rocksdb::Slice &b) const {
auto ra = rust::Slice(reinterpret_cast<const std::uint8_t *>(a.data()), a.size()); auto ra = rust::Slice(reinterpret_cast<const std::uint8_t *>(a.data()), a.size());
auto rb = rust::Slice(reinterpret_cast<const std::uint8_t *>(b.data()), b.size()); auto rb = rust::Slice(reinterpret_cast<const std::uint8_t *>(b.data()), b.size());
return int(rust_compare(ra, rb)); return int(rust_compare(ra, rb));
} }
const char* Name() const { const char *Name() const {
return "RustComparator"; return "RustComparator";
} }
void FindShortestSeparator(std::string*, const rocksdb::Slice&) const { }
void FindShortSuccessor(std::string*) const { } void FindShortestSeparator(std::string *, const rocksdb::Slice &) const {}
void FindShortSuccessor(std::string *) const {}
void set_fn(RustComparatorFn f) const { void set_fn(RustComparatorFn f) const {
rust_compare = f; rust_compare = f;
@ -93,15 +95,15 @@ public:
} }
}; };
inline std::unique_ptr<ReadOptionsBridge> new_read_options() { inline std::unique_ptr <ReadOptionsBridge> new_read_options() {
return std::unique_ptr<ReadOptionsBridge>(new ReadOptionsBridge); return std::unique_ptr<ReadOptionsBridge>(new ReadOptionsBridge);
} }
inline std::unique_ptr<WriteOptionsBridge> new_write_options() { inline std::unique_ptr <WriteOptionsBridge> new_write_options() {
return std::unique_ptr<WriteOptionsBridge>(new WriteOptionsBridge); return std::unique_ptr<WriteOptionsBridge>(new WriteOptionsBridge);
} }
inline std::unique_ptr<OptionsBridge> new_options() { inline std::unique_ptr <OptionsBridge> new_options() {
return std::unique_ptr<OptionsBridge>(new OptionsBridge); return std::unique_ptr<OptionsBridge>(new OptionsBridge);
} }
@ -124,7 +126,7 @@ inline void write_status(RDB::Status &&rstatus, Status &status) {
} }
struct DBBridge { struct DBBridge {
mutable std::unique_ptr<RDB::DB> inner; mutable std::unique_ptr <RDB::DB> inner;
DBBridge(RDB::DB *inner_) : inner(inner_) {} DBBridge(RDB::DB *inner_) : inner(inner_) {}
@ -142,7 +144,7 @@ struct DBBridge {
); );
} }
inline std::unique_ptr<PinnableSliceBridge> get( inline std::unique_ptr <PinnableSliceBridge> get(
const ReadOptionsBridge &options, const ReadOptionsBridge &options,
rust::Slice<const uint8_t> key, rust::Slice<const uint8_t> key,
Status &status Status &status
@ -159,7 +161,16 @@ struct DBBridge {
} }
}; };
inline std::unique_ptr<DBBridge> open_db(const OptionsBridge &options, const rust::Slice<const uint8_t> path) { inline std::vector <std::string> list_column_families(const OptionsBridge &options,
const rust::Slice<const uint8_t> path) {
std::vector <std::string> column_families;
RDB::DB::ListColumnFamilies(options.inner,
std::string(reinterpret_cast<const char *>(path.data()), path.size()),
&column_families);
return column_families;
}
inline std::unique_ptr <DBBridge> open_db(const OptionsBridge &options, const rust::Slice<const uint8_t> path) {
RDB::DB *db_ptr; RDB::DB *db_ptr;
RDB::Status s = RDB::DB::Open(options.inner, RDB::Status s = RDB::DB::Open(options.inner,
std::string(reinterpret_cast<const char *>(path.data()), path.size()), std::string(reinterpret_cast<const char *>(path.data()), path.size()),

@ -91,7 +91,6 @@ mod ffi {
} }
use std::sync::atomic::Ordering;
use cxx::UniquePtr; use cxx::UniquePtr;
pub use ffi::*; pub use ffi::*;
@ -177,6 +176,7 @@ impl Default for WriteOptions {
pub struct DB { pub struct DB {
bridge: UniquePtr<DBBridge>, bridge: UniquePtr<DBBridge>,
#[allow(dead_code)]
options: Options, options: Options,
default_read_options: ReadOptions, default_read_options: ReadOptions,
default_write_options: WriteOptions, default_write_options: WriteOptions,

@ -6,9 +6,9 @@ use crate::error::Result;
use crate::error::CozoError::*; use crate::error::CozoError::*;
use crate::eval::Evaluator; use crate::eval::Evaluator;
use crate::storage::Storage; use crate::storage::Storage;
use crate::typing::{Col, Columns, Edge, Index, Node, StorageStatus, Structured, TableId, Typing}; use crate::typing::{Col, Columns, Edge, Index, Node, Structured, TableId, Typing};
use crate::typing::StorageStatus::{Planned, Stored}; use crate::typing::StorageStatus::{Planned, Stored};
use crate::value::{ByteArrayBuilder, ByteArrayParser, Value}; use crate::value::{ByteArrayBuilder, Value};
use crate::parser::{Parser, Rule}; use crate::parser::{Parser, Rule};
use pest::Parser as PestParser; use pest::Parser as PestParser;
// use rocksdb::IteratorMode; // use rocksdb::IteratorMode;
@ -291,6 +291,7 @@ pub enum TableKind {
} }
impl Storage { impl Storage {
#[allow(unused_variables)]
fn all_metadata(&self, env: &StructuredEnvItem) -> Result<Vec<Structured>> { fn all_metadata(&self, env: &StructuredEnvItem) -> Result<Vec<Structured>> {
todo!() todo!()
// let it = self.db.as_ref().ok_or(DatabaseClosed)?.full_iterator(IteratorMode::Start); // let it = self.db.as_ref().ok_or(DatabaseClosed)?.full_iterator(IteratorMode::Start);

@ -1,10 +1,9 @@
use crate::error::CozoError::DatabaseClosed;
use crate::error::Result; use crate::error::Result;
use crate::value::cozo_comparator_v1;
pub struct Storage { pub struct Storage {
pub db: Option<()>, pub db: Option<()>,
#[allow(dead_code)]
path: String, path: String,
} }
// //
@ -28,6 +27,7 @@ impl Storage {
pub fn no_storage() -> Self { pub fn no_storage() -> Self {
Self { db: None, path: "".to_string() } Self { db: None, path: "".to_string() }
} }
#[allow(unused_variables)]
pub fn new(path: String) -> Result<Self> { pub fn new(path: String) -> Result<Self> {
unimplemented!() unimplemented!()
// let options = make_options(); // let options = make_options();
@ -41,37 +41,40 @@ impl Storage {
// let db = DB::open_cf_descriptors(&options, &path, cfs)?; // let db = DB::open_cf_descriptors(&options, &path, cfs)?;
// Ok(Storage { db: Some(db), path }) // Ok(Storage { db: Some(db), path })
} }
#[allow(unused_variables)]
pub fn delete(&mut self) -> Result<()> { pub fn delete(&mut self) -> Result<()> {
unimplemented!(); unimplemented!()
// drop(self.db.take()); // drop(self.db.take());
// DB::destroy(&make_options(), &self.path)?; // DB::destroy(&make_options(), &self.path)?;
Ok(()) // Ok(())
} }
#[allow(unused_variables)]
pub fn put_global(&self, k: &[u8], v: &[u8]) -> Result<()> { pub fn put_global(&self, k: &[u8], v: &[u8]) -> Result<()> {
// let db = self.db.as_ref().ok_or(DatabaseClosed)?; // let db = self.db.as_ref().ok_or(DatabaseClosed)?;
// db.put(k, v)?; // db.put(k, v)?;
unimplemented!(); unimplemented!()
Ok(()) // Ok(())
} }
#[allow(unused_variables)]
pub fn create_table(&mut self, name: &str, _global: bool) -> Result<()> { pub fn create_table(&mut self, name: &str, _global: bool) -> Result<()> {
unimplemented!(); unimplemented!()
// let db = self.db.as_mut().ok_or(DatabaseClosed)?; // let db = self.db.as_mut().ok_or(DatabaseClosed)?;
// db.create_cf(name, &make_options())?; // db.create_cf(name, &make_options())?;
Ok(()) // Ok(())
} }
#[allow(unused_variables)]
pub fn drop_table(&mut self, name: &str, _global: bool) -> Result<()> { pub fn drop_table(&mut self, name: &str, _global: bool) -> Result<()> {
unimplemented!(); unimplemented!()
// let db = self.db.as_mut().ok_or(DatabaseClosed)?; // let db = self.db.as_mut().ok_or(DatabaseClosed)?;
// db.drop_cf(name)?; // db.drop_cf(name)?;
Ok(()) // Ok(())
} }
} }
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use std::str::from_utf8; use std::str::from_utf8;
use crate::value::{ByteArrayBuilder, Value}; use crate::value::{ByteArrayBuilder, cozo_comparator_v1, Value};
use super::*;
#[test] #[test]
fn import() { fn import() {

Loading…
Cancel
Save