Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 10 additions & 15 deletions datafusion/spark/src/function/string/format_string.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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));
Expand Down Expand Up @@ -582,7 +582,7 @@ impl TryFrom<char> 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) {
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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),
Expand All @@ -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),
Expand Down Expand Up @@ -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();

Expand Down
16 changes: 8 additions & 8 deletions datafusion/spark/src/function/string/length.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,33 +98,33 @@ fn spark_length(args: &[ArrayRef]) -> datafusion_common::Result<ArrayRef> {
match args[0].data_type() {
DataType::Utf8 => {
let string_array = args[0].as_string::<i32>();
character_length::<_>(string_array)
character_length::<_>(&string_array)
}
DataType::LargeUtf8 => {
let string_array = args[0].as_string::<i64>();
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::<i32>();
byte_length::<_>(binary_array)
byte_length::<_>(&binary_array)
}
DataType::LargeBinary => {
let binary_array = args[0].as_binary::<i64>();
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<ArrayRef>
fn character_length<'a, V>(array: &V) -> datafusion_common::Result<ArrayRef>
where
V: StringArrayType<'a>,
{
Expand Down Expand Up @@ -169,7 +169,7 @@ where
Ok(Arc::new(array))
}

fn byte_length<'a, V>(array: V) -> datafusion_common::Result<ArrayRef>
fn byte_length<'a, V>(array: &V) -> datafusion_common::Result<ArrayRef>
where
V: BinaryArrayType<'a>,
{
Expand Down
3 changes: 3 additions & 0 deletions datafusion/spark/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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].
//!
Expand Down