Struct datafusion::datasource::memory::MemTable
source · pub struct MemTable {
pub sort_order: Arc<Mutex<Vec<Vec<Expr>>>>,
/* private fields */
}
Expand description
In-memory data source for presenting a Vec<RecordBatch>
as a
data source that can be queried by DataFusion. This allows data to
be pre-loaded into memory and then repeatedly queried without
incurring additional file I/O overhead.
Fields§
§sort_order: Arc<Mutex<Vec<Vec<Expr>>>>
Optional pre-known sort order(s). Must be SortExpr
s.
inserting data into this table removes the order
Implementations§
source§impl MemTable
impl MemTable
sourcepub fn try_new(
schema: SchemaRef,
partitions: Vec<Vec<RecordBatch>>
) -> Result<Self>
pub fn try_new( schema: SchemaRef, partitions: Vec<Vec<RecordBatch>> ) -> Result<Self>
Create a new in-memory table from the provided schema and record batches
sourcepub fn with_constraints(self, constraints: Constraints) -> Self
pub fn with_constraints(self, constraints: Constraints) -> Self
Assign constraints
sourcepub fn with_column_defaults(
self,
column_defaults: HashMap<String, Expr>
) -> Self
pub fn with_column_defaults( self, column_defaults: HashMap<String, Expr> ) -> Self
Assign column defaults
sourcepub fn with_sort_order(self, sort_order: Vec<Vec<Expr>>) -> Self
pub fn with_sort_order(self, sort_order: Vec<Vec<Expr>>) -> Self
Specify an optional pre-known sort order(s). Must be SortExpr
s.
If the data is not sorted by this order, DataFusion may produce incorrect results.
DataFusion may take advantage of this ordering to omit sorts or use more efficient algorithms.
Note that multiple sort orders are supported, if some are known to be equivalent,
sourcepub async fn load(
t: Arc<dyn TableProvider>,
output_partitions: Option<usize>,
state: &SessionState
) -> Result<Self>
pub async fn load( t: Arc<dyn TableProvider>, output_partitions: Option<usize>, state: &SessionState ) -> Result<Self>
Create a mem table by reading from another data source
Trait Implementations§
source§impl TableProvider for MemTable
impl TableProvider for MemTable
source§fn insert_into<'life0, 'life1, 'async_trait>(
&'life0 self,
_state: &'life1 SessionState,
input: Arc<dyn ExecutionPlan>,
overwrite: bool
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn ExecutionPlan>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn insert_into<'life0, 'life1, 'async_trait>(
&'life0 self,
_state: &'life1 SessionState,
input: Arc<dyn ExecutionPlan>,
overwrite: bool
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn ExecutionPlan>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns an ExecutionPlan that inserts the execution results of a given ExecutionPlan
into this MemTable
.
The ExecutionPlan
must have the same schema as this MemTable
.
§Arguments
state
- TheSessionState
containing the context for executing the plan.input
- TheExecutionPlan
to execute and insert.
§Returns
- A plan that returns the number of rows written.
source§fn as_any(&self) -> &dyn Any
fn as_any(&self) -> &dyn Any
Any
so that it can be
downcast to a specific implementation.source§fn constraints(&self) -> Option<&Constraints>
fn constraints(&self) -> Option<&Constraints>
source§fn table_type(&self) -> TableType
fn table_type(&self) -> TableType
source§fn scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
state: &'life1 SessionState,
projection: Option<&'life2 Vec<usize>>,
_filters: &'life3 [Expr],
_limit: Option<usize>
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn ExecutionPlan>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
state: &'life1 SessionState,
projection: Option<&'life2 Vec<usize>>,
_filters: &'life3 [Expr],
_limit: Option<usize>
) -> Pin<Box<dyn Future<Output = Result<Arc<dyn ExecutionPlan>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
ExecutionPlan
for scanning the table with optionally
specified projection
, filter
and limit
, described below. Read moresource§fn get_column_default(&self, column: &str) -> Option<&Expr>
fn get_column_default(&self, column: &str) -> Option<&Expr>
source§fn get_table_definition(&self) -> Option<&str>
fn get_table_definition(&self) -> Option<&str>
source§fn get_logical_plan(&self) -> Option<&LogicalPlan>
fn get_logical_plan(&self) -> Option<&LogicalPlan>
LogicalPlan
of this table, if availablesource§fn supports_filter_pushdown(
&self,
_filter: &Expr
) -> Result<TableProviderFilterPushDown>
fn supports_filter_pushdown( &self, _filter: &Expr ) -> Result<TableProviderFilterPushDown>
source§fn supports_filters_pushdown(
&self,
filters: &[&Expr]
) -> Result<Vec<TableProviderFilterPushDown>>
fn supports_filters_pushdown( &self, filters: &[&Expr] ) -> Result<Vec<TableProviderFilterPushDown>>
source§fn statistics(&self) -> Option<Statistics>
fn statistics(&self) -> Option<Statistics>
Auto Trait Implementations§
impl Freeze for MemTable
impl !RefUnwindSafe for MemTable
impl Send for MemTable
impl Sync for MemTable
impl Unpin for MemTable
impl !UnwindSafe for MemTable
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more