Renaming storage_engine.rs ~> store.rs
This commit is contained in:
parent
18b8049958
commit
e0d08e758a
13 changed files with 92 additions and 13 deletions
1
Cargo.lock
generated
1
Cargo.lock
generated
|
|
@ -288,6 +288,7 @@ dependencies = [
|
|||
"bimap",
|
||||
"proto",
|
||||
"serde",
|
||||
"storage_engine",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -14,3 +14,4 @@ serde = { version = "1.0.196", features = ["derive"] }
|
|||
tokio = { version = "1.34.0", features = ["full"] }
|
||||
thiserror = "1.0.50"
|
||||
proto = { path = "../proto" }
|
||||
storage_engine = { path = "../storage_engine" }
|
||||
|
|
|
|||
|
|
@ -1,3 +1,79 @@
|
|||
use crate::operation::{ColumnSelection, Condition, Operation};
|
||||
use crate::restricted_row::RestrictedRow;
|
||||
use crate::result::DbResult;
|
||||
use crate::schema::{Column, TableName, TablePosition, TableSchema};
|
||||
use crate::type_system::Value;
|
||||
use bimap::BiMap;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
use storage_engine::store::{Store};
|
||||
|
||||
// ==============Interpreter================
|
||||
#[derive(Debug)]
|
||||
pub struct State {
|
||||
table_name_position_mapping: BiMap<TableName, TablePosition>,
|
||||
tables: Tables,
|
||||
}
|
||||
|
||||
pub type Tables = Vec<Table>;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Table {
|
||||
schema: TableSchema,
|
||||
store: Store<Value>
|
||||
}
|
||||
|
||||
pub type DbSchema<'a> = Vec<(TableName, TablePosition, &'a TableSchema)>;
|
||||
// To satisfy clippy.
|
||||
impl Default for State {
|
||||
fn default() -> Self {
|
||||
Self::new()
|
||||
}
|
||||
}
|
||||
|
||||
impl State {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
table_name_position_mapping: BiMap::new(),
|
||||
tables: vec![],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn db_schema(&self) -> DbSchema {
|
||||
// let mut schema: DbSchema = Vec::new();
|
||||
// for (table_name, &table_position) in &self.table_name_position_mapping {
|
||||
// let table_schema = self.tables[table_position].schema();
|
||||
// schema.push((table_name.clone(), table_position, table_schema));
|
||||
// }
|
||||
// schema
|
||||
|
||||
todo!()
|
||||
}
|
||||
|
||||
pub async fn interpret(&mut self, operation: Operation) -> DbResult<()> {
|
||||
use Operation::*;
|
||||
|
||||
match operation {
|
||||
Select(table_position, column_selection, maybe_condition) => {
|
||||
todo!()
|
||||
}
|
||||
Insert(table_position, values) => {
|
||||
todo!()
|
||||
}
|
||||
Delete(table_position, maybe_condition) => {
|
||||
todo!()
|
||||
}
|
||||
CreateTable(table_schema) => {
|
||||
todo!()
|
||||
}
|
||||
CreateIndex(table_position, column) => {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
@ -8,3 +84,4 @@ mod tests {
|
|||
async fn new_state() {
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ use bincode::{Decode, Encode};
|
|||
use crate::segments::entry::EntryDetailed;
|
||||
use crate::segments::entry_header::EntryHeader;
|
||||
use crate::segments::store_header::StoreHeader;
|
||||
use crate::storage_engine::{Store, FilePosition, Column, Result, ROWS_FILE_NAME, GARBAGE_COLLECTION_INTERMEDIATE_ROWS_FILE_NAME};
|
||||
use crate::store::{Store, FilePosition, Column, Result, ROWS_FILE_NAME, GARBAGE_COLLECTION_INTERMEDIATE_ROWS_FILE_NAME};
|
||||
use crate::index::Index;
|
||||
use crate::cursor_capabilities::primitive::{CursorCanRead, CursorCanWrite};
|
||||
use crate::cursor_capabilities::header_access::{CursorCanReadHeader, CursorCanWriteHeader};
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ use crate::error::{Error, DecodeErrorKind};
|
|||
use crate::segments::entry::{Entry, EntryDetailed};
|
||||
use crate::segments::entry_header::EntryHeaderWithDataSize;
|
||||
use crate::segments::store_header::StoreHeader;
|
||||
use crate::storage_engine::{FilePosition, Column, Result};
|
||||
use crate::store::{FilePosition, Column, Result};
|
||||
use crate::cursor_capabilities::primitive::{CursorCanRead, CursorCanWrite};
|
||||
|
||||
#[async_trait]
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use bincode::{Decode, Encode};
|
|||
|
||||
use crate::error::Error;
|
||||
use crate::segments::entry::{Entry, EntryDetailed};
|
||||
use crate::storage_engine::{FilePosition, Column, Result};
|
||||
use crate::store::{FilePosition, Column, Result};
|
||||
use crate::index::Index;
|
||||
use crate::cursor_capabilities::header_access::{CursorCanReadHeader, CursorCanWriteHeader};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ use tokio::io::{AsyncReadExt, AsyncWriteExt, AsyncSeekExt, SeekFrom};
|
|||
use tokio::fs::File;
|
||||
use async_trait::async_trait;
|
||||
|
||||
use crate::storage_engine::{FilePosition, Result};
|
||||
use crate::store::{FilePosition, Result};
|
||||
|
||||
#[async_trait]
|
||||
pub(crate) trait CursorCanRead<T> {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::storage_engine::Column;
|
||||
use crate::store::Column;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum Error {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
pub mod storage_engine;
|
||||
pub mod store;
|
||||
mod binary_coding;
|
||||
mod error;
|
||||
pub mod error;
|
||||
mod index;
|
||||
mod cursor;
|
||||
mod segments;
|
||||
mod cursor_capabilities;
|
||||
pub mod cursor;
|
||||
pub mod segments;
|
||||
pub mod cursor_capabilities;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use bincode::{Decode, Encode};
|
||||
|
||||
use crate::binary_coding::{encode_sequence, encode_sequence_with_sizes, decode_sequence};
|
||||
use crate::storage_engine::{Result, FilePosition};
|
||||
use crate::store::{Result, FilePosition};
|
||||
use crate::error::{Error, DecodeErrorKind};
|
||||
use crate::segments::entry_header::{EntryHeader, EntryHeaderWithDataSize};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
use crate::binary_coding::{decode, encode, decode_sequence};
|
||||
use crate::storage_engine::{Result, Column};
|
||||
use crate::store::{Result, Column};
|
||||
use crate::error::{Error, DecodeErrorKind};
|
||||
use std::mem::size_of;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
use crate::binary_coding::{encode, encode_sequence, decode, decode_sequence};
|
||||
use crate::storage_engine::{Result, Column};
|
||||
use crate::store::{Result, Column};
|
||||
use crate::error::{Error, DecodeErrorKind};
|
||||
use std::mem::size_of;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue