diff --git a/datafusion/functions/src/math/random.rs b/datafusion/functions/src/math/random.rs index aa5294b6229bc..f1833c23c305a 100644 --- a/datafusion/functions/src/math/random.rs +++ b/datafusion/functions/src/math/random.rs @@ -44,6 +44,7 @@ The random seed is unique to each row."#, #[derive(Debug, PartialEq, Eq, Hash)] pub struct RandomFunc { signature: Signature, + aliases: Vec, } impl Default for RandomFunc { @@ -56,6 +57,7 @@ impl RandomFunc { pub fn new() -> Self { Self { signature: Signature::nullary(Volatility::Volatile), + aliases: vec![String::from("rand")], } } } @@ -73,6 +75,10 @@ impl ScalarUDFImpl for RandomFunc { Ok(Float64) } + fn aliases(&self) -> &[String] { + &self.aliases + } + fn invoke_with_args(&self, args: ScalarFunctionArgs) -> Result { assert_or_internal_err!( args.args.is_empty(), diff --git a/datafusion/sqllogictest/test_files/functions.slt b/datafusion/sqllogictest/test_files/functions.slt index 49e2c27f90806..ea3cd6eb4bd33 100644 --- a/datafusion/sqllogictest/test_files/functions.slt +++ b/datafusion/sqllogictest/test_files/functions.slt @@ -841,6 +841,12 @@ SELECT r FROM (SELECT r1 == r2 r, r1, r2 FROM (SELECT random()+1 r1, random()+1 ---- false +# Verify that rand() is accepted as an alias for random() +query TB +SELECT arrow_typeof(rand()), rand() >= 0 AND rand() < 1 +---- +Float64 true + ####### # verify that random() returns a different value for each row ####### diff --git a/docs/source/user-guide/sql/scalar_functions.md b/docs/source/user-guide/sql/scalar_functions.md index 8023e2103ec88..7010a2b7c1e6c 100644 --- a/docs/source/user-guide/sql/scalar_functions.md +++ b/docs/source/user-guide/sql/scalar_functions.md @@ -59,6 +59,7 @@ dev/update_function_docs.sh file for updating surrounding text. - [pow](#pow) - [power](#power) - [radians](#radians) +- [rand](#rand) - [random](#random) - [round](#round) - [signum](#signum) @@ -739,6 +740,10 @@ radians(numeric_expression) +----------------+ ``` +### `rand` + +_Alias of [random](#random)._ + ### `random` Returns a random float value in the range [0, 1). @@ -759,6 +764,10 @@ random() +------------------+ ``` +#### Aliases + +- rand + ### `round` Rounds a number to the nearest integer.