diff --git a/datafusion/spark/src/function/string/format_string.rs b/datafusion/spark/src/function/string/format_string.rs index 9809456af9a40..adb0eb2f09951 100644 --- a/datafusion/spark/src/function/string/format_string.rs +++ b/datafusion/spark/src/function/string/format_string.rs @@ -304,7 +304,7 @@ impl<'a> Formatter<'a> { return exec_err!("No previous argument to reference"); }; let (spec, rest) = - take_conversion_specifier(rest, p, arg_types[p - 1].clone())?; + take_conversion_specifier(rest, p, &arg_types[p - 1])?; res.push(FormatElement::Format(spec)); rem = rest; continue; @@ -335,7 +335,7 @@ impl<'a> Formatter<'a> { let (spec, rest) = take_conversion_specifier( rest, current_argument_index, - arg_types[current_argument_index - 1].clone(), + &arg_types[current_argument_index - 1], ) .map_err(|e| exec_datafusion_err!("{:?}, format string: {:?}", e, fmt))?; res.push(FormatElement::Format(spec)); @@ -582,7 +582,7 @@ impl TryFrom for TimeFormat { } impl ConversionType { - pub fn validate(&self, arg_type: DataType) -> Result<()> { + pub fn validate(&self, arg_type: &DataType) -> Result<()> { match self { ConversionType::BooleanLower | ConversionType::BooleanUpper => { if !matches!(arg_type, DataType::Boolean) { @@ -716,11 +716,11 @@ impl ConversionType { } } -fn take_conversion_specifier( - mut s: &str, +fn take_conversion_specifier<'a>( + mut s: &'a str, argument_index: usize, - arg_type: DataType, -) -> Result<(ConversionSpecifier, &str)> { + arg_type: &DataType, +) -> Result<(ConversionSpecifier, &'a str)> { let mut spec = ConversionSpecifier { argument_index, alt_form: false, @@ -1186,7 +1186,7 @@ impl ConversionSpecifier { | ConversionType::CompactFloatLower | ConversionType::CompactFloatUpper, Some(value), - ) => self.format_decimal(string, value.to_string(), *scale as i64), + ) => self.format_decimal(string, &value.to_string(), *scale as i64), ( ConversionType::StringLower | ConversionType::StringUpper, Some(value), @@ -1212,7 +1212,7 @@ impl ConversionSpecifier { | ConversionType::CompactFloatLower | ConversionType::CompactFloatUpper, Some(value), - ) => self.format_decimal(string, value.to_string(), *scale as i64), + ) => self.format_decimal(string, &value.to_string(), *scale as i64), ( ConversionType::StringLower | ConversionType::StringUpper, Some(value), @@ -1991,12 +1991,7 @@ impl ConversionSpecifier { } } - fn format_decimal( - &self, - writer: &mut String, - value: String, - scale: i64, - ) -> Result<()> { + fn format_decimal(&self, writer: &mut String, value: &str, scale: i64) -> Result<()> { let mut prefix = String::new(); let upper = self.conversion_type.is_upper(); diff --git a/datafusion/spark/src/function/string/length.rs b/datafusion/spark/src/function/string/length.rs index 1fa54d000effa..ac6030770fe27 100644 --- a/datafusion/spark/src/function/string/length.rs +++ b/datafusion/spark/src/function/string/length.rs @@ -98,33 +98,33 @@ fn spark_length(args: &[ArrayRef]) -> datafusion_common::Result { match args[0].data_type() { DataType::Utf8 => { let string_array = args[0].as_string::(); - character_length::<_>(string_array) + character_length::<_>(&string_array) } DataType::LargeUtf8 => { let string_array = args[0].as_string::(); - character_length::<_>(string_array) + character_length::<_>(&string_array) } DataType::Utf8View => { let string_array = args[0].as_string_view(); - character_length::<_>(string_array) + character_length::<_>(&string_array) } DataType::Binary => { let binary_array = args[0].as_binary::(); - byte_length::<_>(binary_array) + byte_length::<_>(&binary_array) } DataType::LargeBinary => { let binary_array = args[0].as_binary::(); - byte_length::<_>(binary_array) + byte_length::<_>(&binary_array) } DataType::BinaryView => { let binary_array = args[0].as_binary_view(); - byte_length::<_>(binary_array) + byte_length::<_>(&binary_array) } other => exec_err!("Unsupported data type {other:?} for function `length`"), } } -fn character_length<'a, V>(array: V) -> datafusion_common::Result +fn character_length<'a, V>(array: &V) -> datafusion_common::Result where V: StringArrayType<'a>, { @@ -169,7 +169,7 @@ where Ok(Arc::new(array)) } -fn byte_length<'a, V>(array: V) -> datafusion_common::Result +fn byte_length<'a, V>(array: &V) -> datafusion_common::Result where V: BinaryArrayType<'a>, { diff --git a/datafusion/spark/src/lib.rs b/datafusion/spark/src/lib.rs index 5b1fa06cb2c7c..4f3f795add5ec 100644 --- a/datafusion/spark/src/lib.rs +++ b/datafusion/spark/src/lib.rs @@ -22,6 +22,9 @@ #![cfg_attr(docsrs, feature(doc_cfg))] // Make cheap clones clear: https://github.com/apache/datafusion/issues/11143 #![deny(clippy::clone_on_ref_ptr)] +// https://github.com/apache/datafusion/issues/18503 +#![deny(clippy::needless_pass_by_value)] +#![cfg_attr(test, allow(clippy::needless_pass_by_value))] //! Spark Expression packages for [DataFusion]. //!