pub struct DatabaseReader { /* private fields */ }
Expand description

Read a database in key-timestamp sorted format.

Open a database with new and then get, get_filter or get_range to select which keys to read.

Implementations§

source§

impl DatabaseReader

source

pub fn new(dir: &Path) -> Result<DatabaseReader>

Open a database at the given path.

All of the committed transactions are opened.

Any transactions that appear after new is called are not opened (create a new DatabaseReader).

source

pub fn without_main_db(dir: &Path) -> Result<DatabaseReader>

Open a database at the given path, but not the main file.

This is only useful for doing a minor compaction.

source

pub fn num_txes(&self) -> usize

Number of tx files found in this iteration This reduces the likelihood of file ulimit errors

An arbitrary limit is only set during compaction, Normal accesses don’t have a limit, so that data doesn’t go missing (instead, the program fails)

source

pub fn transaction_paths(&self) -> Vec<PathBuf>

Get the filenames of each transaction.

This is useful for compacting, because after compaction is complete, you would delete all of the transaction files.

This function also returns the path for main, which is overwritten. Don’t delete that.

This function doesn’t return the transactions that contain deletions.

source

pub fn delete_txes_paths(&self) -> impl Iterator<Item = &Path>

Get the filenames of the transactions that have a delete marker in them.

source

pub fn get<'rdr>(&'rdr self, key: &'rdr str) -> DatabaseRecordReader<'rdr>

Get a reader for only a single key

Returns an object that will read all of the records for only one key.

source

pub fn get_range<'d>( &'d self, range: impl RangeBounds<&'d str> + 'd + Clone ) -> DatabaseRecordReader<'d>

Get a reader for a lexicographic range of keys

Use inclusive or exclusive range syntax to select a range.

Example: rdr.get_range("chimpan-ay" ..= "chimpan-zee")

Range queries are always efficient and readahead may occur.

source

pub fn empty_transaction_files(&self) -> &[PathBuf]

Return a list of detected transaction files that are empty.

This function is used by the CLI to output warnings that the files exist. Empty files sometimes may appear, but should not be considered an error

If the main file is empty, it will always be listed first.

source

pub fn get_range_keys<'d>( &'d self, range: impl RangeBounds<&'d str> + 'd + Clone ) -> DatabaseKeyReader<'d>

Get a key reader for a lexicographic range of keys feature=by-key

Each iterator represents a given key, you may iterate over each of those to get each record for that key.

Use inclusive or exclusive range syntax to select a range.

Example: rdr.get_range("chimpan-ay" ..= "chimpan-zee")

Range queries are always efficient and readahead may occur.

source

pub fn get_filter<'d>( &'d self, wildcard: &'d Wildcard ) -> DatabaseRecordReader<'d>

Get a reader that filters on SQL’s “LIKE”-like syntax.

A wildcard filter that has a fixed prefix, such as "chimp%" is always efficient.

source

pub fn get_filter_keys<'d>( &'d self, wildcard: &'d Wildcard ) -> DatabaseKeyReader<'d>

Get a key reader that filters on SQL’s “LIKE”-like syntax. feature=by-key

Each iterator represents a given key, you may iterate over each of those to get each record for that key.

A wildcard filter that has a fixed prefix, such as "chimp%" is always efficient.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V