pub trait TableSource: Sync + Send {
// Required methods
fn as_any(&self) -> &dyn Any;
fn schema(&self) -> SchemaRef;
// Provided methods
fn constraints(&self) -> Option<&Constraints> { ... }
fn table_type(&self) -> TableType { ... }
fn supports_filters_pushdown(
&self,
filters: &[&Expr],
) -> Result<Vec<TableProviderFilterPushDown>> { ... }
fn get_logical_plan(&self) -> Option<Cow<'_, LogicalPlan>> { ... }
fn get_column_default(&self, _column: &str) -> Option<&Expr> { ... }
}
Expand description
Access schema information and filter push-down capabilities.
The TableSource trait is used during logical query planning and
optimizations and provides a subset of the functionality of the
TableProvider
trait in the (core) datafusion
crate. The TableProvider
trait provides additional capabilities needed for physical query execution
(such as the ability to perform a scan).
The reason for having two separate traits is to avoid having the logical plan code be dependent on the DataFusion execution engine. Some projects use DataFusion’s logical plans and have their own execution engine.
Required Methods§
Provided Methods§
Sourcefn constraints(&self) -> Option<&Constraints>
fn constraints(&self) -> Option<&Constraints>
Get primary key indices, if one exists.
Sourcefn table_type(&self) -> TableType
fn table_type(&self) -> TableType
Get the type of this table for metadata/catalog purposes.
Sourcefn supports_filters_pushdown(
&self,
filters: &[&Expr],
) -> Result<Vec<TableProviderFilterPushDown>>
fn supports_filters_pushdown( &self, filters: &[&Expr], ) -> Result<Vec<TableProviderFilterPushDown>>
Tests whether the table provider can make use of any or all filter expressions to optimise data retrieval.
Sourcefn get_logical_plan(&self) -> Option<Cow<'_, LogicalPlan>>
fn get_logical_plan(&self) -> Option<Cow<'_, LogicalPlan>>
Get the Logical plan of this table provider, if available.
Sourcefn get_column_default(&self, _column: &str) -> Option<&Expr>
fn get_column_default(&self, _column: &str) -> Option<&Expr>
Get the default value for a column, if available.