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
14 changes: 8 additions & 6 deletions datafusion/functions/src/core/greatest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ use arrow::buffer::BooleanBuffer;
use arrow::compute::kernels::cmp;
use arrow::compute::SortOptions;
use arrow::datatypes::DataType;
use datafusion_common::{internal_err, Result, ScalarValue};
use datafusion_common::{
assert_eq_or_internal_err, DataFusionError, Result, ScalarValue,
};
use datafusion_doc::Documentation;
use datafusion_expr::{ColumnarValue, ScalarFunctionArgs};
use datafusion_expr::{ScalarUDFImpl, Signature, Volatility};
Expand Down Expand Up @@ -113,11 +115,11 @@ impl GreatestLeastOperator for GreatestFunc {

let cmp = make_comparator(lhs, rhs, SORT_OPTIONS)?;

if lhs.len() != rhs.len() {
return internal_err!(
"All arrays should have the same length for greatest comparison"
);
}
assert_eq_or_internal_err!(
lhs.len(),
rhs.len(),
"All arrays should have the same length for greatest comparison"
);

let values = BooleanBuffer::collect_bool(lhs.len(), |i| cmp(i, i).is_ge());

Expand Down
15 changes: 8 additions & 7 deletions datafusion/functions/src/core/greatest_least_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
use arrow::array::{Array, ArrayRef, BooleanArray};
use arrow::compute::kernels::zip::zip;
use arrow::datatypes::DataType;
use datafusion_common::{internal_err, plan_err, Result, ScalarValue};
use datafusion_common::{
assert_or_internal_err, plan_err, DataFusionError, Result, ScalarValue,
};
use datafusion_expr_common::columnar_value::ColumnarValue;
use datafusion_expr_common::type_coercion::binary::type_union_resolution;
use std::sync::Arc;
Expand Down Expand Up @@ -50,12 +52,11 @@ fn keep_array<Op: GreatestLeastOperator>(
pub(super) fn execute_conditional<Op: GreatestLeastOperator>(
args: &[ColumnarValue],
) -> Result<ColumnarValue> {
if args.is_empty() {
return internal_err!(
"{} was called with no arguments. It requires at least 1.",
Op::NAME
);
}
assert_or_internal_err!(
!args.is_empty(),
"{} was called with no arguments. It requires at least 1.",
Op::NAME
);

// Some engines (e.g. SQL Server) allow greatest/least with single arg, it's a noop
if args.len() == 1 {
Expand Down
14 changes: 8 additions & 6 deletions datafusion/functions/src/core/least.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ use arrow::buffer::BooleanBuffer;
use arrow::compute::kernels::cmp;
use arrow::compute::SortOptions;
use arrow::datatypes::DataType;
use datafusion_common::{internal_err, Result, ScalarValue};
use datafusion_common::{
assert_eq_or_internal_err, DataFusionError, Result, ScalarValue,
};
use datafusion_doc::Documentation;
use datafusion_expr::{ColumnarValue, ScalarFunctionArgs};
use datafusion_expr::{ScalarUDFImpl, Signature, Volatility};
Expand Down Expand Up @@ -126,11 +128,11 @@ impl GreatestLeastOperator for LeastFunc {

let cmp = make_comparator(lhs, rhs, SORT_OPTIONS)?;

if lhs.len() != rhs.len() {
return internal_err!(
"All arrays should have the same length for least comparison"
);
}
assert_eq_or_internal_err!(
lhs.len(),
rhs.len(),
"All arrays should have the same length for least comparison"
);

let values = BooleanBuffer::collect_bool(lhs.len(), |i| cmp(i, i).is_le());

Expand Down
10 changes: 6 additions & 4 deletions datafusion/functions/src/math/pi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ use std::any::Any;

use arrow::datatypes::DataType;
use arrow::datatypes::DataType::Float64;
use datafusion_common::{internal_err, Result, ScalarValue};
use datafusion_common::{assert_or_internal_err, DataFusionError, Result, ScalarValue};
use datafusion_expr::sort_properties::{ExprProperties, SortProperties};
use datafusion_expr::{
ColumnarValue, Documentation, ScalarFunctionArgs, ScalarUDFImpl, Signature,
Expand Down Expand Up @@ -69,9 +69,11 @@ impl ScalarUDFImpl for PiFunc {
}

fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
if !args.args.is_empty() {
return internal_err!("{} function does not accept arguments", self.name());
}
assert_or_internal_err!(
args.args.is_empty(),
"{} function does not accept arguments",
self.name()
);
Ok(ColumnarValue::Scalar(ScalarValue::Float64(Some(
std::f64::consts::PI,
))))
Expand Down
10 changes: 6 additions & 4 deletions datafusion/functions/src/math/random.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use arrow::datatypes::DataType;
use arrow::datatypes::DataType::Float64;
use rand::{rng, Rng};

use datafusion_common::{internal_err, Result};
use datafusion_common::{assert_or_internal_err, DataFusionError, Result};
use datafusion_expr::{ColumnarValue, ScalarFunctionArgs};
use datafusion_expr::{Documentation, ScalarUDFImpl, Signature, Volatility};
use datafusion_macros::user_doc;
Expand Down Expand Up @@ -79,9 +79,11 @@ impl ScalarUDFImpl for RandomFunc {
}

fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
if !args.args.is_empty() {
return internal_err!("{} function does not accept arguments", self.name());
}
assert_or_internal_err!(
args.args.is_empty(),
"{} function does not accept arguments",
self.name()
);
let mut rng = rng();
let mut values = vec![0.0; args.number_rows];
// Equivalent to set each element with rng.random_range(0.0..1.0), but more efficient
Expand Down
10 changes: 6 additions & 4 deletions datafusion/functions/src/string/uuid.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ use arrow::datatypes::DataType::Utf8;
use rand::Rng;
use uuid::Uuid;

use datafusion_common::{internal_err, Result};
use datafusion_common::{assert_or_internal_err, DataFusionError, Result};
use datafusion_expr::{ColumnarValue, Documentation, Volatility};
use datafusion_expr::{ScalarFunctionArgs, ScalarUDFImpl, Signature};
use datafusion_macros::user_doc;
Expand Down Expand Up @@ -81,9 +81,11 @@ impl ScalarUDFImpl for UuidFunc {
/// Prints random (v4) uuid values per row
/// uuid() = 'a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11'
fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result<ColumnarValue> {
if !args.args.is_empty() {
return internal_err!("{} function does not accept arguments", self.name());
}
assert_or_internal_err!(
args.args.is_empty(),
"{} function does not accept arguments",
self.name()
);

// Generate random u128 values
let mut rng = rand::rng();
Expand Down