pub struct PhysicalExprDecodeCtx<'a> { /* private fields */ }proto only.Expand description
Decoder context handed to per-expression try_from_proto constructors.
Wraps an internal PhysicalExprDecode trait object plus a borrowed
schema. The trait stays an implementation detail of datafusion-proto;
expression authors only see this struct.
Implementations§
Source§impl<'a> PhysicalExprDecodeCtx<'a>
impl<'a> PhysicalExprDecodeCtx<'a>
Sourcepub fn new(schema: &'a Schema, decoder: &'a dyn PhysicalExprDecode) -> Self
pub fn new(schema: &'a Schema, decoder: &'a dyn PhysicalExprDecode) -> Self
Construct a new decode context. Typically called by
datafusion-proto; expression authors receive
&PhysicalExprDecodeCtx.
Sourcepub fn schema(&self) -> &Schema
pub fn schema(&self) -> &Schema
The schema bound to this decode context. Use it for column lookups, data-type resolution, etc.
Sourcepub fn decode(&self, node: &PhysicalExprNode) -> Result<Arc<dyn PhysicalExpr>>
pub fn decode(&self, node: &PhysicalExprNode) -> Result<Arc<dyn PhysicalExpr>>
Decode an expression node, recursing into child sub-expressions.
Routes built-in ExprType variants through datafusion-proto’s
central match and forwards extension nodes to the registered codec
(today via PhysicalExtensionCodec::try_decode_expr; later via
a per-type registry — see #21835).
Sourcepub fn decode_required_expression(
&self,
node: Option<&PhysicalExprNode>,
expr_name: &str,
field: &str,
) -> Result<Arc<dyn PhysicalExpr>>
pub fn decode_required_expression( &self, node: Option<&PhysicalExprNode>, expr_name: &str, field: &str, ) -> Result<Arc<dyn PhysicalExpr>>
Decode a required child node, erroring if it is absent.
Proto child expressions are encoded as Option<Box<PhysicalExprNode>>;
pass the field directly (e.g. node.expr.as_deref()). expr_name
is the expression being decoded (e.g. "InListExpr") and field
the proto field (e.g. "expr"); both are woven into the error so
it names where the missing field is, without each author
hand-rolling the string.
Sourcepub fn decode_children_expressions<'b, I>(
&self,
nodes: I,
) -> Result<Vec<Arc<dyn PhysicalExpr>>>where
I: IntoIterator<Item = &'b PhysicalExprNode>,
pub fn decode_children_expressions<'b, I>(
&self,
nodes: I,
) -> Result<Vec<Arc<dyn PhysicalExpr>>>where
I: IntoIterator<Item = &'b PhysicalExprNode>,
Decode a sequence of child nodes, preserving order.
Convenience wrapper over Self::decode for expressions holding a
repeated proto field (e.g. the list of an InList). The first
decode error short-circuits.
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for PhysicalExprDecodeCtx<'a>
impl<'a> !Send for PhysicalExprDecodeCtx<'a>
impl<'a> !Sync for PhysicalExprDecodeCtx<'a>
impl<'a> !UnwindSafe for PhysicalExprDecodeCtx<'a>
impl<'a> Freeze for PhysicalExprDecodeCtx<'a>
impl<'a> Unpin for PhysicalExprDecodeCtx<'a>
impl<'a> UnsafeUnpin for PhysicalExprDecodeCtx<'a>
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