@@ -3,7 +3,6 @@ use std::sync::Arc;
33use arrow:: array:: StructArray ;
44use arrow_schema:: { DataType , Field , Fields } ;
55use datafusion:: {
6- common:: exec_err,
76 error:: { DataFusionError , Result } ,
87 logical_expr:: {
98 ColumnarValue , ReturnFieldArgs , ScalarUDFImpl , Signature , TypeSignature , Volatility ,
@@ -13,7 +12,9 @@ use datafusion::{
1312use parquet_variant:: { Variant , VariantBuilder } ;
1413use parquet_variant_compute:: { VariantArray , VariantType } ;
1514
16- use crate :: shared:: { arg_shape_err, args_count_err, ensure, try_parse_variant_scalar} ;
15+ use crate :: shared:: {
16+ arg_shape_err, arg_variant_kind_err, args_count_err, ensure, try_parse_variant_scalar,
17+ } ;
1718
1819#[ derive( Debug , Hash , PartialEq , Eq ) ]
1920pub struct VariantListInsert {
@@ -96,7 +97,6 @@ impl ScalarUDFImpl for VariantListInsert {
9697
9798 let out: StructArray = {
9899 let ( m, v) = create_variant_list_with_new_elements (
99- self . name ( ) ,
100100 variant_list,
101101 [ variant_to_insert] . into_iter ( ) ,
102102 ) ?;
@@ -121,7 +121,6 @@ impl ScalarUDFImpl for VariantListInsert {
121121 . map ( |v| {
122122 v. map ( |v| {
123123 create_variant_list_with_new_elements (
124- self . name ( ) ,
125124 v,
126125 [ variant_to_insert. clone ( ) ] . into_iter ( ) ,
127126 )
@@ -160,7 +159,6 @@ impl ScalarUDFImpl for VariantListInsert {
160159 match ( variant_list_to_update, element_to_append) {
161160 ( Some ( variant_list) , Some ( element_to_append) ) => {
162161 let ( m, v) = create_variant_list_with_new_elements (
163- self . name ( ) ,
164162 variant_list,
165163 [ element_to_append] . into_iter ( ) ,
166164 ) ?;
@@ -211,12 +209,11 @@ impl ScalarUDFImpl for VariantListInsert {
211209// note: I wonder if we can abstract this away
212210// it would be good to profile and see if this pocket of code is slow
213211fn create_variant_list_with_new_elements < ' m , ' v > (
214- udf_name : & str ,
215212 variant_list : Variant ,
216213 elements_to_insert : impl Iterator < Item = Variant < ' m , ' v > > ,
217214) -> Result < ( Vec < u8 > , Vec < u8 > ) > {
218215 let Variant :: List ( variant_list) = variant_list else {
219- return exec_err ! ( "{udf_name} arg #1: expected variant list") ;
216+ return Err ( arg_variant_kind_err ( "variant_list_insert" , 1 , " list") ) ;
220217 } ;
221218
222219 // note: I wonder if we can abstract this away
0 commit comments