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::substrait as substrait_proto_df;
26pub use datafusion_substrait::{logical_plan as df_logical_plan, variation_const};
27pub use substrait_proto;
28
29pub use crate::df_substrait::DFLogicalSubstraitConvertor;
30#[async_trait]
31pub trait SubstraitPlan {
32 type Error: std::error::Error;
33
34 type Plan;
35
36 async fn decode<B: Buf + Send>(
37 &self,
38 message: B,
39 state: SessionState,
40 ) -> Result<Self::Plan, Self::Error>;
41
42 fn encode(
43 &self,
44 plan: &Self::Plan,
45 serializer: impl SerializerRegistry + 'static,
46 ) -> Result<Bytes, Self::Error>;
47}