MCPcopy Create free account
hub / github.com/apache/datafusion / parse_struct

Method parse_struct

datafusion/sql/src/expr/mod.rs:688–715  ·  view source on GitHub ↗

Parses a struct(..) expression and plans it creation

(
        &self,
        schema: &DFSchema,
        planner_context: &mut PlannerContext,
        values: Vec<SQLExpr>,
        fields: &[StructField],
    )

Source from the content-addressed store, hash-verified

686
687 /// Parses a struct(..) expression and plans it creation
688 fn parse_struct(
689 &self,
690 schema: &DFSchema,
691 planner_context: &mut PlannerContext,
692 values: Vec<SQLExpr>,
693 fields: &[StructField],
694 ) -> Result<Expr> {
695 if !fields.is_empty() {
696 return not_impl_err!("Struct fields are not supported yet");
697 }
698 let is_named_struct = values
699 .iter()
700 .any(|value| matches!(value, SQLExpr::Named { .. }));
701
702 let mut create_struct_args = if is_named_struct {
703 self.create_named_struct_expr(values, schema, planner_context)?
704 } else {
705 self.create_struct_expr(values, schema, planner_context)?
706 };
707
708 for planner in self.context_provider.get_expr_planners() {
709 match planner.plan_struct_literal(create_struct_args, is_named_struct)? {
710 PlannerResult::Planned(expr) => return Ok(expr),
711 PlannerResult::Original(args) => create_struct_args = args,
712 }
713 }
714 not_impl_err!("Struct not supported by ExprPlanner: {create_struct_args:?}")
715 }
716
717 fn parse_tuple(
718 &self,

Callers 2

parse_tupleMethod · 0.80

Calls 7

create_struct_exprMethod · 0.80
is_emptyMethod · 0.45
anyMethod · 0.45
iterMethod · 0.45
get_expr_plannersMethod · 0.45
plan_struct_literalMethod · 0.45

Tested by

no test coverage detected