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

Function assert_array_remove_n

datafusion/functions-nested/src/remove.rs:737–791  ·  view source on GitHub ↗
(
        input_list: ArrayRef,
        expected_list: GenericListArray<i32>,
        element_to_remove: ScalarValue,
        n: i64,
    )

Source from the content-addressed store, hash-verified

735 }
736
737 fn assert_array_remove_n(
738 input_list: ArrayRef,
739 expected_list: GenericListArray<i32>,
740 element_to_remove: ScalarValue,
741 n: i64,
742 ) {
743 assert_eq!(input_list.data_type(), expected_list.data_type());
744 assert_eq!(expected_list.value_type(), element_to_remove.data_type());
745 let input_list_len = input_list.len();
746 let input_list_data_type = input_list.data_type().clone();
747
748 let count_scalar = ScalarValue::Int64(Some(n));
749
750 let udf = ArrayRemoveN::new();
751 let args_fields = vec![
752 Arc::new(Field::new("num", input_list.data_type().clone(), false)),
753 Arc::new(Field::new(
754 "el",
755 element_to_remove.data_type(),
756 element_to_remove.is_null(),
757 )),
758 Arc::new(Field::new("count", DataType::Int64, false)),
759 ];
760 let scalar_args = vec![None, Some(&element_to_remove), Some(&count_scalar)];
761
762 let return_field = udf
763 .return_field_from_args(ReturnFieldArgs {
764 arg_fields: &args_fields,
765 scalar_arguments: &scalar_args,
766 })
767 .unwrap();
768
769 let result = udf
770 .invoke_with_args(ScalarFunctionArgs {
771 args: vec![
772 ColumnarValue::Array(input_list),
773 ColumnarValue::Scalar(element_to_remove),
774 ColumnarValue::Scalar(count_scalar),
775 ],
776 arg_fields: args_fields,
777 number_rows: input_list_len,
778 return_field,
779 config_options: Arc::new(Default::default()),
780 })
781 .unwrap();
782
783 assert_eq!(result.data_type(), input_list_data_type);
784 match result {
785 ColumnarValue::Array(array) => {
786 let result_list = array.as_list::<i32>();
787 assert_eq!(result_list, &expected_list);
788 }
789 _ => panic!("Expected ColumnarValue::Array"),
790 }
791 }
792
793 #[test]
794 fn test_array_remove_all_non_nullable() {

Callers 2

Calls 6

newFunction · 0.85
lenMethod · 0.45
cloneMethod · 0.45
data_typeMethod · 0.45
invoke_with_argsMethod · 0.45

Tested by 2

Used in the wild real call sites across dependent graphs

searching dependent graphs…