main
Ziyang Hu 2 years ago
parent eac66d6bb6
commit 8639b60aad

@ -513,9 +513,7 @@ open_tdb_raw(const Options &options,
std::vector<ColumnFamilyHandle *> handles;
TransactionDB *txn_db = nullptr;
Status s = TransactionDB::Open(options, txn_db_options, path, &txn_db);
auto ok = s.ok();
write_status(std::move(s), status);
write_status(TransactionDB::Open(options, txn_db_options, path, &txn_db), status);
return make_shared<TDBBridge>(txn_db, txn_db, nullptr);
}
@ -525,11 +523,9 @@ inline shared_ptr<TDBBridge>
open_odb_raw(const Options &options, const string &path, BridgeStatus &status) {
OptimisticTransactionDB *txn_db = nullptr;
Status s = OptimisticTransactionDB::Open(options,
path,
&txn_db);
auto ok = s.ok();
write_status(std::move(s), status);
write_status(OptimisticTransactionDB::Open(options,
path,
&txn_db), status);
unordered_map<string, shared_ptr<ColumnFamilyHandle>> handle_map;

@ -144,7 +144,10 @@ mod ffi {
type TransactionBridge;
fn set_snapshot(self: &TransactionBridge);
fn set_readoption_snapshot_to_current(self: &TransactionBridge, opts: Pin<&mut ReadOptions>) -> bool;
fn set_readoption_snapshot_to_current(
self: &TransactionBridge,
opts: Pin<&mut ReadOptions>,
) -> bool;
fn commit(self: &TransactionBridge, status: &mut BridgeStatus);
fn rollback(self: &TransactionBridge, status: &mut BridgeStatus);
fn set_savepoint(self: &TransactionBridge);
@ -171,12 +174,7 @@ mod ffi {
slice: Pin<&mut PinnableSlice>,
status: &mut BridgeStatus,
);
fn put_txn(
self: &TransactionBridge,
key: &[u8],
val: &[u8],
status: &mut BridgeStatus,
);
fn put_txn(self: &TransactionBridge, key: &[u8], val: &[u8], status: &mut BridgeStatus);
fn put_raw(
self: &TransactionBridge,
options: &WriteOptions,
@ -184,11 +182,7 @@ mod ffi {
val: &[u8],
status: &mut BridgeStatus,
);
fn del_txn(
self: &TransactionBridge,
key: &[u8],
status: &mut BridgeStatus,
);
fn del_txn(self: &TransactionBridge, key: &[u8], status: &mut BridgeStatus);
fn del_raw(
self: &TransactionBridge,
options: &WriteOptions,
@ -202,14 +196,16 @@ mod ffi {
end_key: &[u8],
status: &mut BridgeStatus,
);
fn flush_raw(
self: &TransactionBridge,
options: &FlushOptions,
status: &mut BridgeStatus,
);
fn flush_raw(self: &TransactionBridge, options: &FlushOptions, status: &mut BridgeStatus);
fn compact_all_raw(self: &TransactionBridge, status: &mut BridgeStatus);
fn iterator_txn(self: &TransactionBridge, r_opts: &ReadOptions) -> UniquePtr<IteratorBridge>;
fn iterator_raw(self: &TransactionBridge, r_opts: &ReadOptions) -> UniquePtr<IteratorBridge>;
fn iterator_txn(
self: &TransactionBridge,
r_opts: &ReadOptions,
) -> UniquePtr<IteratorBridge>;
fn iterator_raw(
self: &TransactionBridge,
r_opts: &ReadOptions,
) -> UniquePtr<IteratorBridge>;
type TDBBridge;
fn begin_t_transaction(

@ -1,6 +1,6 @@
mod bridge;
mod status;
mod options;
mod status;
use bridge::*;
pub use options::*;
@ -14,12 +14,8 @@ pub use bridge::StatusSeverity;
pub use bridge::StatusSubCode;
use cxx::let_cxx_string;
pub use cxx::{SharedPtr, UniquePtr};
use std::fmt::Debug;
use std::fmt::{Display, Formatter};
use std::marker::PhantomData;
use std::ops::{Deref, DerefMut};
use status::Result;
use std::ops::Deref;
pub struct PinnableSlicePtr(UniquePtr<PinnableSlice>);
@ -191,16 +187,16 @@ impl TransactionPtr {
) -> Result<bool> {
let mut status = BridgeStatus::default();
let res = if transact {
let ret = self.get_txn(options, key.as_ref(), slice.0.pin_mut(), &mut status);
self.get_txn(options, key.as_ref(), slice.0.pin_mut(), &mut status);
status.check_err(())
} else {
let ret = self.get_raw(options, key.as_ref(), slice.0.pin_mut(), &mut status);
self.get_raw(options, key.as_ref(), slice.0.pin_mut(), &mut status);
status.check_err(())
};
match res {
Ok(r) => Ok(true),
Ok(_) => Ok(true),
Err(e) if e.status.code == StatusCode::kNotFound => Ok(false),
Err(e) => Err(e)
Err(e) => Err(e),
}
}
#[inline]
@ -211,20 +207,15 @@ impl TransactionPtr {
slice: &mut PinnableSlicePtr,
) -> Result<bool> {
let mut status = BridgeStatus::default();
let ret = self.get_for_update_txn(options, key.as_ref(), slice.0.pin_mut(), &mut status);
self.get_for_update_txn(options, key.as_ref(), slice.0.pin_mut(), &mut status);
match status.check_err(()) {
Ok(r) => Ok(true),
Ok(_) => Ok(true),
Err(e) if e.status.code == StatusCode::kNotFound => Ok(false),
Err(e) => Err(e)
Err(e) => Err(e),
}
}
#[inline]
pub fn del(
&self,
options: &WriteOptions,
transact: bool,
key: impl AsRef<[u8]>,
) -> Result<()> {
pub fn del(&self, options: &WriteOptions, transact: bool, key: impl AsRef<[u8]>) -> Result<()> {
let mut status = BridgeStatus::default();
if transact {
let ret = self.del_txn(key.as_ref(), &mut status);
@ -275,10 +266,7 @@ impl TransactionPtr {
}
}
#[inline]
pub fn iterator(&self,
options: &ReadOptions,
transact: bool,
) -> IteratorPtr {
pub fn iterator(&self, options: &ReadOptions, transact: bool) -> IteratorPtr {
if transact {
IteratorPtr(self.iterator_txn(options))
} else {
@ -324,14 +312,8 @@ impl DBPtr {
write_ops: WriteOptionsPtr,
) -> TransactionPtr {
TransactionPtr(match options {
TransactOptions::Optimistic(o) => self.begin_o_transaction(
write_ops.0,
o.0,
),
TransactOptions::Pessimistic(o) => self.begin_t_transaction(
write_ops.0,
o.0,
),
TransactOptions::Optimistic(o) => self.begin_o_transaction(write_ops.0, o.0),
TransactOptions::Pessimistic(o) => self.begin_t_transaction(write_ops.0, o.0),
})
}
}

@ -2,7 +2,6 @@ use crate::bridge::*;
use cxx::UniquePtr;
use std::ops::{Deref, DerefMut};
pub struct RustComparatorPtr(UniquePtr<RustComparator>);
impl RustComparatorPtr {

@ -1,7 +1,6 @@
use crate::bridge::{BridgeStatus, StatusBridgeCode, StatusCode, StatusSeverity, StatusSubCode};
use std::fmt::Debug;
use std::fmt::{Display, Formatter};
use crate::bridge::{BridgeStatus, StatusCode, StatusSubCode, StatusSeverity, StatusBridgeCode};
pub(crate) type Result<T> = std::result::Result<T, BridgeError>;

@ -9,8 +9,7 @@
// pub mod query;
// pub mod table;
pub struct DBInstance {
pub(crate) main_db: (),
session_handles: (),
}
}

@ -3,6 +3,6 @@
// pub mod relation;
// pub(crate) mod eval;
pub(crate) mod data;
pub(crate) mod db;
pub(crate) mod logger;
pub(crate) mod parser;
pub(crate) mod db;

Loading…
Cancel
Save