diff --git a/datafusion/expr/src/expr.rs b/datafusion/expr/src/expr.rs index 14c64ef8f89d..1abd8c97ee10 100644 --- a/datafusion/expr/src/expr.rs +++ b/datafusion/expr/src/expr.rs @@ -541,28 +541,6 @@ pub enum GetFieldAccess { }, } -/// Returns the field of a [`ListArray`] or -/// [`StructArray`] by `key`. -/// -/// See [`GetFieldAccess`] for details. -/// -/// [`ListArray`]: arrow::array::ListArray -/// [`StructArray`]: arrow::array::StructArray -#[derive(Clone, PartialEq, Eq, Hash, Debug)] -pub struct GetIndexedField { - /// The expression to take the field from - pub expr: Box, - /// The name of the field to take - pub field: GetFieldAccess, -} - -impl GetIndexedField { - /// Create a new GetIndexedField expression - pub fn new(expr: Box, field: GetFieldAccess) -> Self { - Self { expr, field } - } -} - /// Cast expression #[derive(Clone, PartialEq, Eq, Hash, Debug)] pub struct Cast { diff --git a/datafusion/expr/src/lib.rs b/datafusion/expr/src/lib.rs index bbd1d6f654f1..8c9893b8a748 100644 --- a/datafusion/expr/src/lib.rs +++ b/datafusion/expr/src/lib.rs @@ -63,8 +63,8 @@ pub use aggregate_function::AggregateFunction; pub use built_in_window_function::BuiltInWindowFunction; pub use columnar_value::ColumnarValue; pub use expr::{ - Between, BinaryExpr, Case, Cast, Expr, GetFieldAccess, GetIndexedField, GroupingSet, - Like, Sort as SortExpr, TryCast, WindowFunctionDefinition, + Between, BinaryExpr, Case, Cast, Expr, GetFieldAccess, GroupingSet, Like, + Sort as SortExpr, TryCast, WindowFunctionDefinition, }; pub use expr_fn::*; pub use expr_schema::ExprSchemable; diff --git a/datafusion/proto/proto/datafusion.proto b/datafusion/proto/proto/datafusion.proto index 0408ea91b9fa..fa95194696dd 100644 --- a/datafusion/proto/proto/datafusion.proto +++ b/datafusion/proto/proto/datafusion.proto @@ -407,15 +407,6 @@ message ListRange { LogicalExprNode stride = 3; } -message GetIndexedField { - LogicalExprNode expr = 1; - oneof field { - NamedStructField named_struct_field = 2; - ListIndex list_index = 3; - ListRange list_range = 4; - } -} - message IsNull { LogicalExprNode expr = 1; } diff --git a/datafusion/proto/src/generated/pbjson.rs b/datafusion/proto/src/generated/pbjson.rs index e07fbba27d3c..b0e77eb69eff 100644 --- a/datafusion/proto/src/generated/pbjson.rs +++ b/datafusion/proto/src/generated/pbjson.rs @@ -6159,148 +6159,6 @@ impl<'de> serde::Deserialize<'de> for FullTableReference { deserializer.deserialize_struct("datafusion.FullTableReference", FIELDS, GeneratedVisitor) } } -impl serde::Serialize for GetIndexedField { - #[allow(deprecated)] - fn serialize(&self, serializer: S) -> std::result::Result - where - S: serde::Serializer, - { - use serde::ser::SerializeStruct; - let mut len = 0; - if self.expr.is_some() { - len += 1; - } - if self.field.is_some() { - len += 1; - } - let mut struct_ser = serializer.serialize_struct("datafusion.GetIndexedField", len)?; - if let Some(v) = self.expr.as_ref() { - struct_ser.serialize_field("expr", v)?; - } - if let Some(v) = self.field.as_ref() { - match v { - get_indexed_field::Field::NamedStructField(v) => { - struct_ser.serialize_field("namedStructField", v)?; - } - get_indexed_field::Field::ListIndex(v) => { - struct_ser.serialize_field("listIndex", v)?; - } - get_indexed_field::Field::ListRange(v) => { - struct_ser.serialize_field("listRange", v)?; - } - } - } - struct_ser.end() - } -} -impl<'de> serde::Deserialize<'de> for GetIndexedField { - #[allow(deprecated)] - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - const FIELDS: &[&str] = &[ - "expr", - "named_struct_field", - "namedStructField", - "list_index", - "listIndex", - "list_range", - "listRange", - ]; - - #[allow(clippy::enum_variant_names)] - enum GeneratedField { - Expr, - NamedStructField, - ListIndex, - ListRange, - } - impl<'de> serde::Deserialize<'de> for GeneratedField { - fn deserialize(deserializer: D) -> std::result::Result - where - D: serde::Deserializer<'de>, - { - struct GeneratedVisitor; - - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GeneratedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(formatter, "expected one of: {:?}", &FIELDS) - } - - #[allow(unused_variables)] - fn visit_str(self, value: &str) -> std::result::Result - where - E: serde::de::Error, - { - match value { - "expr" => Ok(GeneratedField::Expr), - "namedStructField" | "named_struct_field" => Ok(GeneratedField::NamedStructField), - "listIndex" | "list_index" => Ok(GeneratedField::ListIndex), - "listRange" | "list_range" => Ok(GeneratedField::ListRange), - _ => Err(serde::de::Error::unknown_field(value, FIELDS)), - } - } - } - deserializer.deserialize_identifier(GeneratedVisitor) - } - } - struct GeneratedVisitor; - impl<'de> serde::de::Visitor<'de> for GeneratedVisitor { - type Value = GetIndexedField; - - fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - formatter.write_str("struct datafusion.GetIndexedField") - } - - fn visit_map(self, mut map_: V) -> std::result::Result - where - V: serde::de::MapAccess<'de>, - { - let mut expr__ = None; - let mut field__ = None; - while let Some(k) = map_.next_key()? { - match k { - GeneratedField::Expr => { - if expr__.is_some() { - return Err(serde::de::Error::duplicate_field("expr")); - } - expr__ = map_.next_value()?; - } - GeneratedField::NamedStructField => { - if field__.is_some() { - return Err(serde::de::Error::duplicate_field("namedStructField")); - } - field__ = map_.next_value::<::std::option::Option<_>>()?.map(get_indexed_field::Field::NamedStructField) -; - } - GeneratedField::ListIndex => { - if field__.is_some() { - return Err(serde::de::Error::duplicate_field("listIndex")); - } - field__ = map_.next_value::<::std::option::Option<_>>()?.map(get_indexed_field::Field::ListIndex) -; - } - GeneratedField::ListRange => { - if field__.is_some() { - return Err(serde::de::Error::duplicate_field("listRange")); - } - field__ = map_.next_value::<::std::option::Option<_>>()?.map(get_indexed_field::Field::ListRange) -; - } - } - } - Ok(GetIndexedField { - expr: expr__, - field: field__, - }) - } - } - deserializer.deserialize_struct("datafusion.GetIndexedField", FIELDS, GeneratedVisitor) - } -} impl serde::Serialize for GlobalLimitExecNode { #[allow(deprecated)] fn serialize(&self, serializer: S) -> std::result::Result diff --git a/datafusion/proto/src/generated/prost.rs b/datafusion/proto/src/generated/prost.rs index c75cb3615832..6d8a0c305761 100644 --- a/datafusion/proto/src/generated/prost.rs +++ b/datafusion/proto/src/generated/prost.rs @@ -651,27 +651,6 @@ pub struct ListRange { } #[allow(clippy::derive_partial_eq_without_eq)] #[derive(Clone, PartialEq, ::prost::Message)] -pub struct GetIndexedField { - #[prost(message, optional, tag = "1")] - pub expr: ::core::option::Option, - #[prost(oneof = "get_indexed_field::Field", tags = "2, 3, 4")] - pub field: ::core::option::Option, -} -/// Nested message and enum types in `GetIndexedField`. -pub mod get_indexed_field { - #[allow(clippy::derive_partial_eq_without_eq)] - #[derive(Clone, PartialEq, ::prost::Oneof)] - pub enum Field { - #[prost(message, tag = "2")] - NamedStructField(super::NamedStructField), - #[prost(message, tag = "3")] - ListIndex(super::ListIndex), - #[prost(message, tag = "4")] - ListRange(super::ListRange), - } -} -#[allow(clippy::derive_partial_eq_without_eq)] -#[derive(Clone, PartialEq, ::prost::Message)] pub struct IsNull { #[prost(message, optional, boxed, tag = "1")] pub expr: ::core::option::Option<::prost::alloc::boxed::Box>,