pub trait SubstraitPlanDecoder {
// Required method
fn decode<'life0, 'async_trait>(
&'life0 self,
message: Bytes,
catalog_list: Arc<dyn CatalogProviderList>,
optimize: bool,
) -> Pin<Box<dyn Future<Output = Result<LogicalPlan>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}
Expand description
The datafusion [LogicalPlan]
decoder.
Required Methods§
sourcefn decode<'life0, 'async_trait>(
&'life0 self,
message: Bytes,
catalog_list: Arc<dyn CatalogProviderList>,
optimize: bool,
) -> Pin<Box<dyn Future<Output = Result<LogicalPlan>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn decode<'life0, 'async_trait>(
&'life0 self,
message: Bytes,
catalog_list: Arc<dyn CatalogProviderList>,
optimize: bool,
) -> Pin<Box<dyn Future<Output = Result<LogicalPlan>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Decode the [LogicalPlan
] from bytes with the [CatalogProviderList
].
When optimize
is true, it will do the optimization for decoded plan.
TODO(dennis): It’s not a good design for an API to do many things.
The optimize
was introduced because of query
and catalog
cyclic dependency issue
I am happy to refactor it if we have a better solution.