diff --git a/src/sql/engine/engine.rs b/src/sql/engine/engine.rs index b2c8a0589..5e9738ea3 100644 --- a/src/sql/engine/engine.rs +++ b/src/sql/engine/engine.rs @@ -4,7 +4,7 @@ use super::Session; use crate::errinput; use crate::error::Result; use crate::sql::types::schema::Table; -use crate::sql::types::{Expression, Row, Value}; +use crate::sql::types::{Expression, Row, Rows, Value}; use std::collections::HashSet; @@ -53,18 +53,16 @@ pub trait Transaction: Catalog { /// Reads an index entry, if it exists fn read_index(&self, table: &str, column: &str, value: &Value) -> Result>; /// Scans a table's rows - fn scan(&self, table: &str, filter: Option) -> Result; - /// Scans a column's index entries + fn scan(&self, table: &str, filter: Option) -> Result; + /// Scans a column's index entries. + /// TODO: this is only used for tests. Remove it? fn scan_index(&self, table: &str, column: &str) -> Result; /// Updates a table row fn update(&mut self, table: &str, id: &Value, row: Row) -> Result<()>; } -/// A row scan iterator -pub type Scan = Box> + Send>; - -/// An index scan iterator -pub type IndexScan = Box)>> + Send>; +/// An index scan iterator. +pub type IndexScan = Box)>>>; /// The catalog stores schema information pub trait Catalog { diff --git a/src/sql/engine/local.rs b/src/sql/engine/local.rs index c539be808..fbfcc9227 100644 --- a/src/sql/engine/local.rs +++ b/src/sql/engine/local.rs @@ -1,5 +1,5 @@ use super::super::types::schema::Table; -use super::super::types::{Expression, Row, Value}; +use super::super::types::{Expression, Row, Rows, Value}; use super::{Catalog, Transaction as _}; use crate::encoding::{self, Key as _, Value as _}; use crate::error::Result; @@ -191,7 +191,7 @@ impl super::Transaction for Transaction { self.index_load(table, column, value) } - fn scan(&self, table: &str, filter: Option) -> Result { + fn scan(&self, table: &str, filter: Option) -> Result { let table = self.must_read_table(table)?; Ok(Box::new( self.txn diff --git a/src/sql/engine/mod.rs b/src/sql/engine/mod.rs index 8f5c421ff..8cd06658b 100644 --- a/src/sql/engine/mod.rs +++ b/src/sql/engine/mod.rs @@ -3,7 +3,7 @@ mod local; mod raft; mod session; -pub use engine::{Catalog, Engine, IndexScan, Scan, Transaction}; +pub use engine::{Catalog, Engine, IndexScan, Transaction}; pub use local::Local; pub use raft::{Raft, Status}; pub use session::{Session, StatementResult}; diff --git a/src/sql/engine/raft.rs b/src/sql/engine/raft.rs index 0663a76ab..a111d5ec3 100644 --- a/src/sql/engine/raft.rs +++ b/src/sql/engine/raft.rs @@ -1,6 +1,6 @@ use super::super::types::schema::Table; -use super::super::types::{Expression, Row, Value}; -use super::{Catalog, Engine as _, IndexScan, Scan, Transaction as _}; +use super::super::types::{Expression, Row, Rows, Value}; +use super::{Catalog, Engine as _, IndexScan, Transaction as _}; use crate::encoding::{self, bincode, Value as _}; use crate::errdata; use crate::error::Result; @@ -232,7 +232,7 @@ impl super::Transaction for Transaction { }) } - fn scan(&self, table: &str, filter: Option) -> Result { + fn scan(&self, table: &str, filter: Option) -> Result { Ok(Box::new( self.client .query::>(Query::Scan { diff --git a/src/sql/execution/execute.rs b/src/sql/execution/execute.rs index f2b86c753..7015820dd 100644 --- a/src/sql/execution/execute.rs +++ b/src/sql/execution/execute.rs @@ -7,7 +7,7 @@ use super::source::{IndexLookup, KeyLookup, Nothing, Scan}; use crate::error::Result; use crate::sql::engine::Transaction; use crate::sql::plan::{Node, Plan}; -use crate::sql::types::{Columns, Row}; +use crate::sql::types::{Columns, Row, Rows}; /// A plan execution result. pub enum ExecutionResult { @@ -23,8 +23,7 @@ pub enum ExecutionResult { pub struct QueryIterator { // TODO: use a different type here. pub columns: Columns, - // TODO: remove Send, it's only needed for the ResultSet conversion. - pub rows: Box> + Send>, + pub rows: Rows, } impl Iterator for QueryIterator { diff --git a/src/sql/types/value.rs b/src/sql/types/value.rs index 221b40648..46eaa76cc 100644 --- a/src/sql/types/value.rs +++ b/src/sql/types/value.rs @@ -193,7 +193,7 @@ pub type Row = Vec; /// A row iterator. /// /// TODO: try to avoid boxing here. -pub type Rows = Box> + Send>; +pub type Rows = Box>>; /// A column (in a result set, see schema::Column for table columns). ///