1mod df_substrait;
16pub mod error;
17pub mod extension_serializer;
18
19use async_trait::async_trait;
20use bytes::{Buf, Bytes};
21use datafusion::execution::context::SessionState;
22pub use datafusion::execution::registry::SerializerRegistry;
23pub use datafusion_substrait::extensions::Extensions;
24pub use datafusion_substrait::substrait as substrait_proto_df;
26pub use datafusion_substrait::{logical_plan as df_logical_plan, variation_const};
27
28pub use crate::df_substrait::DFLogicalSubstraitConvertor;
29#[async_trait]
30pub trait SubstraitPlan {
31 type Error: std::error::Error;
32
33 type Plan;
34
35 async fn decode<B: Buf + Send>(
36 &self,
37 message: B,
38 state: SessionState,
39 ) -> Result<Self::Plan, Self::Error>;
40
41 fn encode(
42 &self,
43 plan: &Self::Plan,
44 serializer: impl SerializerRegistry + 'static,
45 ) -> Result<Bytes, Self::Error>;
46}