in spark/sql/column/expressions.go [69:97]
func (d *delayedColumnReference) ToProto(ctx context.Context) (*proto.Expression, error) {
// Check if the column identifier is actually part of the schema.
schema, err := d.df.Schema(ctx)
if err != nil {
return nil, err
}
found := false
for _, field := range schema.Fields {
if field.Name == d.unparsedIdentifier {
found = true
break
}
}
// TODO: return proper pyspark error
if !found {
return nil, sparkerrors.WithType(sparkerrors.InvalidPlanError,
fmt.Errorf("cannot resolve column %s", d.unparsedIdentifier))
}
expr := newProtoExpression()
id := d.df.PlanId()
expr.ExprType = &proto.Expression_UnresolvedAttribute_{
UnresolvedAttribute: &proto.Expression_UnresolvedAttribute{
UnparsedIdentifier: d.unparsedIdentifier,
PlanId: &id,
},
}
return expr, nil
}