@@ -38,11 +38,6 @@ use datafusion::functions_aggregate::bit_and_or_xor::{bit_and_udaf, bit_or_udaf,
38
38
use datafusion:: functions_aggregate:: min_max:: max_udaf;
39
39
use datafusion:: functions_aggregate:: min_max:: min_udaf;
40
40
use datafusion:: functions_aggregate:: sum:: sum_udaf;
41
- use datafusion:: functions_nested:: array_has:: array_has_any_udf;
42
- use datafusion:: functions_nested:: concat:: ArrayAppend ;
43
- use datafusion:: functions_nested:: remove:: array_remove_all_udf;
44
- use datafusion:: functions_nested:: set_ops:: array_intersect_udf;
45
- use datafusion:: functions_nested:: string:: array_to_string_udf;
46
41
use datafusion:: physical_expr:: aggregate:: { AggregateExprBuilder , AggregateFunctionExpr } ;
47
42
use datafusion:: physical_plan:: windows:: BoundedWindowAggExec ;
48
43
use datafusion:: physical_plan:: InputOrderMode ;
@@ -83,10 +78,9 @@ use datafusion::common::{
83
78
JoinType as DFJoinType , ScalarValue ,
84
79
} ;
85
80
use datafusion:: datasource:: listing:: PartitionedFile ;
86
- use datafusion:: functions_nested:: array_has:: ArrayHas ;
87
81
use datafusion:: logical_expr:: type_coercion:: other:: get_coerce_type_for_case_expression;
88
82
use datafusion:: logical_expr:: {
89
- AggregateUDF , ReturnTypeArgs , ScalarUDF , WindowFrame , WindowFrameBound , WindowFrameUnits ,
83
+ AggregateUDF , ReturnTypeArgs , WindowFrame , WindowFrameBound , WindowFrameUnits ,
90
84
WindowFunctionDefinition ,
91
85
} ;
92
86
use datafusion:: physical_expr:: expressions:: { Literal , StatsType } ;
@@ -759,32 +753,6 @@ impl PhysicalPlanner {
759
753
expr. ordinal as usize ,
760
754
) ) )
761
755
}
762
- ExprStruct :: ArrayAppend ( expr) => {
763
- let left =
764
- self . create_expr ( expr. left . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
765
- let right =
766
- self . create_expr ( expr. right . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
767
- let return_type = left. data_type ( & input_schema) ?;
768
- let args = vec ! [ Arc :: clone( & left) , right] ;
769
- let datafusion_array_append =
770
- Arc :: new ( ScalarUDF :: new_from_impl ( ArrayAppend :: new ( ) ) ) ;
771
- let array_append_expr: Arc < dyn PhysicalExpr > = Arc :: new ( ScalarFunctionExpr :: new (
772
- "array_append" ,
773
- datafusion_array_append,
774
- args,
775
- return_type,
776
- ) ) ;
777
-
778
- let is_null_expr: Arc < dyn PhysicalExpr > = Arc :: new ( IsNullExpr :: new ( left) ) ;
779
- let null_literal_expr: Arc < dyn PhysicalExpr > =
780
- Arc :: new ( Literal :: new ( ScalarValue :: Null ) ) ;
781
-
782
- create_case_expr (
783
- vec ! [ ( is_null_expr, null_literal_expr) ] ,
784
- Some ( array_append_expr) ,
785
- & input_schema,
786
- )
787
- }
788
756
ExprStruct :: ArrayInsert ( expr) => {
789
757
let src_array_expr = self . create_expr (
790
758
expr. src_array_expr . as_ref ( ) . unwrap ( ) ,
@@ -801,104 +769,6 @@ impl PhysicalPlanner {
801
769
expr. legacy_negative_index ,
802
770
) ) )
803
771
}
804
- ExprStruct :: ArrayContains ( expr) => {
805
- let src_array_expr =
806
- self . create_expr ( expr. left . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
807
- let key_expr =
808
- self . create_expr ( expr. right . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
809
- let args = vec ! [ Arc :: clone( & src_array_expr) , key_expr] ;
810
- let array_has_expr = Arc :: new ( ScalarFunctionExpr :: new (
811
- "array_has" ,
812
- Arc :: new ( ScalarUDF :: new_from_impl ( ArrayHas :: new ( ) ) ) ,
813
- args,
814
- DataType :: Boolean ,
815
- ) ) ;
816
- Ok ( array_has_expr)
817
- }
818
- ExprStruct :: ArrayRemove ( expr) => {
819
- let src_array_expr =
820
- self . create_expr ( expr. left . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
821
- let key_expr =
822
- self . create_expr ( expr. right . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
823
- let args = vec ! [ Arc :: clone( & src_array_expr) , Arc :: clone( & key_expr) ] ;
824
- let return_type = src_array_expr. data_type ( & input_schema) ?;
825
-
826
- let datafusion_array_remove = array_remove_all_udf ( ) ;
827
-
828
- let array_remove_expr: Arc < dyn PhysicalExpr > = Arc :: new ( ScalarFunctionExpr :: new (
829
- "array_remove" ,
830
- datafusion_array_remove,
831
- args,
832
- return_type,
833
- ) ) ;
834
- let is_null_expr: Arc < dyn PhysicalExpr > = Arc :: new ( IsNullExpr :: new ( key_expr) ) ;
835
-
836
- let null_literal_expr: Arc < dyn PhysicalExpr > =
837
- Arc :: new ( Literal :: new ( ScalarValue :: Null ) ) ;
838
-
839
- create_case_expr (
840
- vec ! [ ( is_null_expr, null_literal_expr) ] ,
841
- Some ( array_remove_expr) ,
842
- & input_schema,
843
- )
844
- }
845
- ExprStruct :: ArrayIntersect ( expr) => {
846
- let left_expr =
847
- self . create_expr ( expr. left . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
848
- let right_expr =
849
- self . create_expr ( expr. right . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
850
- let args = vec ! [ Arc :: clone( & left_expr) , right_expr] ;
851
- let datafusion_array_intersect = array_intersect_udf ( ) ;
852
- let return_type = left_expr. data_type ( & input_schema) ?;
853
- let array_intersect_expr = Arc :: new ( ScalarFunctionExpr :: new (
854
- "array_intersect" ,
855
- datafusion_array_intersect,
856
- args,
857
- return_type,
858
- ) ) ;
859
- Ok ( array_intersect_expr)
860
- }
861
- ExprStruct :: ArrayJoin ( expr) => {
862
- let array_expr =
863
- self . create_expr ( expr. array_expr . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
864
- let delimiter_expr = self . create_expr (
865
- expr. delimiter_expr . as_ref ( ) . unwrap ( ) ,
866
- Arc :: clone ( & input_schema) ,
867
- ) ?;
868
-
869
- let mut args = vec ! [ Arc :: clone( & array_expr) , delimiter_expr] ;
870
- if expr. null_replacement_expr . is_some ( ) {
871
- let null_replacement_expr = self . create_expr (
872
- expr. null_replacement_expr . as_ref ( ) . unwrap ( ) ,
873
- Arc :: clone ( & input_schema) ,
874
- ) ?;
875
- args. push ( null_replacement_expr)
876
- }
877
-
878
- let datafusion_array_to_string = array_to_string_udf ( ) ;
879
- let array_join_expr = Arc :: new ( ScalarFunctionExpr :: new (
880
- "array_join" ,
881
- datafusion_array_to_string,
882
- args,
883
- DataType :: Utf8 ,
884
- ) ) ;
885
- Ok ( array_join_expr)
886
- }
887
- ExprStruct :: ArraysOverlap ( expr) => {
888
- let left_array_expr =
889
- self . create_expr ( expr. left . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
890
- let right_array_expr =
891
- self . create_expr ( expr. right . as_ref ( ) . unwrap ( ) , Arc :: clone ( & input_schema) ) ?;
892
- let args = vec ! [ Arc :: clone( & left_array_expr) , right_array_expr] ;
893
- let datafusion_array_has_any = array_has_any_udf ( ) ;
894
- let array_has_any_expr = Arc :: new ( ScalarFunctionExpr :: new (
895
- "array_has_any" ,
896
- datafusion_array_has_any,
897
- args,
898
- DataType :: Boolean ,
899
- ) ) ;
900
- Ok ( array_has_any_expr)
901
- }
902
772
expr => Err ( ExecutionError :: GeneralError ( format ! (
903
773
"Not implemented: {:?}" ,
904
774
expr
0 commit comments