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",
|
"bimap",
|
||||||
"proto",
|
"proto",
|
||||||
"serde",
|
"serde",
|
||||||
|
"storage_engine",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tokio",
|
"tokio",
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,4 @@ serde = { version = "1.0.196", features = ["derive"] }
|
||||||
tokio = { version = "1.34.0", features = ["full"] }
|
tokio = { version = "1.34.0", features = ["full"] }
|
||||||
thiserror = "1.0.50"
|
thiserror = "1.0.50"
|
||||||
proto = { path = "../proto" }
|
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)]
|
#[cfg(test)]
|
||||||
|
|
@ -8,3 +84,4 @@ mod tests {
|
||||||
async fn new_state() {
|
async fn new_state() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ use bincode::{Decode, Encode};
|
||||||
use crate::segments::entry::EntryDetailed;
|
use crate::segments::entry::EntryDetailed;
|
||||||
use crate::segments::entry_header::EntryHeader;
|
use crate::segments::entry_header::EntryHeader;
|
||||||
use crate::segments::store_header::StoreHeader;
|
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::index::Index;
|
||||||
use crate::cursor_capabilities::primitive::{CursorCanRead, CursorCanWrite};
|
use crate::cursor_capabilities::primitive::{CursorCanRead, CursorCanWrite};
|
||||||
use crate::cursor_capabilities::header_access::{CursorCanReadHeader, CursorCanWriteHeader};
|
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::{Entry, EntryDetailed};
|
||||||
use crate::segments::entry_header::EntryHeaderWithDataSize;
|
use crate::segments::entry_header::EntryHeaderWithDataSize;
|
||||||
use crate::segments::store_header::StoreHeader;
|
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};
|
use crate::cursor_capabilities::primitive::{CursorCanRead, CursorCanWrite};
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ use bincode::{Decode, Encode};
|
||||||
|
|
||||||
use crate::error::Error;
|
use crate::error::Error;
|
||||||
use crate::segments::entry::{Entry, EntryDetailed};
|
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::index::Index;
|
||||||
use crate::cursor_capabilities::header_access::{CursorCanReadHeader, CursorCanWriteHeader};
|
use crate::cursor_capabilities::header_access::{CursorCanReadHeader, CursorCanWriteHeader};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ use tokio::io::{AsyncReadExt, AsyncWriteExt, AsyncSeekExt, SeekFrom};
|
||||||
use tokio::fs::File;
|
use tokio::fs::File;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
|
|
||||||
use crate::storage_engine::{FilePosition, Result};
|
use crate::store::{FilePosition, Result};
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
pub(crate) trait CursorCanRead<T> {
|
pub(crate) trait CursorCanRead<T> {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::storage_engine::Column;
|
use crate::store::Column;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Error {
|
pub enum Error {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
pub mod storage_engine;
|
pub mod store;
|
||||||
mod binary_coding;
|
mod binary_coding;
|
||||||
mod error;
|
pub mod error;
|
||||||
mod index;
|
mod index;
|
||||||
mod cursor;
|
pub mod cursor;
|
||||||
mod segments;
|
pub mod segments;
|
||||||
mod cursor_capabilities;
|
pub mod cursor_capabilities;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
use bincode::{Decode, Encode};
|
use bincode::{Decode, Encode};
|
||||||
|
|
||||||
use crate::binary_coding::{encode_sequence, encode_sequence_with_sizes, decode_sequence};
|
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::error::{Error, DecodeErrorKind};
|
||||||
use crate::segments::entry_header::{EntryHeader, EntryHeaderWithDataSize};
|
use crate::segments::entry_header::{EntryHeader, EntryHeaderWithDataSize};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::binary_coding::{decode, encode, decode_sequence};
|
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 crate::error::{Error, DecodeErrorKind};
|
||||||
use std::mem::size_of;
|
use std::mem::size_of;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::binary_coding::{encode, encode_sequence, decode, decode_sequence};
|
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 crate::error::{Error, DecodeErrorKind};
|
||||||
use std::mem::size_of;
|
use std::mem::size_of;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue