alamb commented on a change in pull request #1071:
URL: https://github.com/apache/arrow-datafusion/pull/1071#discussion_r723105507
##########
File path: datafusion/src/physical_plan/functions.rs
##########
@@ -234,6 +310,80 @@ impl BuiltinScalarFunction {
BuiltinScalarFunction::Random | BuiltinScalarFunction::Now
)
}
+ /// Returns the [Volatility] of the builtin function.
+ pub fn volatility(&self) -> Volatility {
+ match self {
+
+ //Immutable scalar builtins
+ BuiltinScalarFunction::Abs => Volatility::Immutable,
+ BuiltinScalarFunction::Acos => Volatility::Immutable,
+ BuiltinScalarFunction::Asin => Volatility::Immutable,
+ BuiltinScalarFunction::Atan => Volatility::Immutable,
+ BuiltinScalarFunction::Ceil => Volatility::Immutable,
+ BuiltinScalarFunction::Cos => Volatility::Immutable,
+ BuiltinScalarFunction::Exp => Volatility::Immutable,
+ BuiltinScalarFunction::Floor => Volatility::Immutable,
+ BuiltinScalarFunction::Ln => Volatility::Immutable,
+ BuiltinScalarFunction::Log => Volatility::Immutable,
+ BuiltinScalarFunction::Log10 => Volatility::Immutable,
+ BuiltinScalarFunction::Log2 => Volatility::Immutable,
+ BuiltinScalarFunction::Round => Volatility::Immutable,
+ BuiltinScalarFunction::Signum => Volatility::Immutable,
+ BuiltinScalarFunction::Sin => Volatility::Immutable,
+ BuiltinScalarFunction::Sqrt => Volatility::Immutable,
+ BuiltinScalarFunction::Tan => Volatility::Immutable,
+ BuiltinScalarFunction::Trunc => Volatility::Immutable,
+ BuiltinScalarFunction::Array => Volatility::Immutable,
+ BuiltinScalarFunction::Ascii => Volatility::Immutable,
+ BuiltinScalarFunction::BitLength => Volatility::Immutable,
+ BuiltinScalarFunction::Btrim => Volatility::Immutable,
+ BuiltinScalarFunction::CharacterLength => Volatility::Immutable,
+ BuiltinScalarFunction::Chr => Volatility::Immutable,
+ BuiltinScalarFunction::Concat => Volatility::Immutable,
+ BuiltinScalarFunction::ConcatWithSeparator =>
Volatility::Immutable,
+ BuiltinScalarFunction::DatePart => Volatility::Immutable,
+ BuiltinScalarFunction::DateTrunc => Volatility::Immutable,
+ BuiltinScalarFunction::InitCap => Volatility::Immutable,
+ BuiltinScalarFunction::Left => Volatility::Immutable,
+ BuiltinScalarFunction::Lpad => Volatility::Immutable,
+ BuiltinScalarFunction::Lower => Volatility::Immutable,
+ BuiltinScalarFunction::Ltrim => Volatility::Immutable,
+ BuiltinScalarFunction::MD5 => Volatility::Immutable,
+ BuiltinScalarFunction::NullIf => Volatility::Immutable,
+ BuiltinScalarFunction::OctetLength => Volatility::Immutable,
+
+ BuiltinScalarFunction::RegexpReplace => Volatility::Immutable,
+ BuiltinScalarFunction::Repeat => Volatility::Immutable,
+ BuiltinScalarFunction::Replace => Volatility::Immutable,
+ BuiltinScalarFunction::Reverse => Volatility::Immutable,
+ BuiltinScalarFunction::Right => Volatility::Immutable,
+ BuiltinScalarFunction::Rpad => Volatility::Immutable,
+ BuiltinScalarFunction::Rtrim => Volatility::Immutable,
+ BuiltinScalarFunction::SHA224 => Volatility::Immutable,
+ BuiltinScalarFunction::SHA256 => Volatility::Immutable,
+ BuiltinScalarFunction::SHA384 => Volatility::Immutable,
+ BuiltinScalarFunction::SHA512 => Volatility::Immutable,
+ BuiltinScalarFunction::SplitPart => Volatility::Immutable,
+ BuiltinScalarFunction::StartsWith => Volatility::Immutable,
+ BuiltinScalarFunction::Strpos => Volatility::Immutable,
+ BuiltinScalarFunction::Substr => Volatility::Immutable,
+ BuiltinScalarFunction::ToHex => Volatility::Immutable,
+ BuiltinScalarFunction::ToTimestamp => Volatility::Immutable,
+ BuiltinScalarFunction::ToTimestampMillis => Volatility::Immutable,
+ BuiltinScalarFunction::ToTimestampMicros => Volatility::Immutable,
+ BuiltinScalarFunction::ToTimestampSeconds => Volatility::Immutable,
+ BuiltinScalarFunction::Translate => Volatility::Immutable,
+ BuiltinScalarFunction::Trim => Volatility::Immutable,
+ BuiltinScalarFunction::Upper => Volatility::Immutable,
+ BuiltinScalarFunction::RegexpMatch => Volatility::Immutable,
+
+ //Stable builtin functions
Review comment:
👍
##########
File path: python/tests/test_df.py
##########
@@ -81,7 +81,7 @@ def test_limit(df):
def test_udf(df):
# is_null is a pa function over arrays
- udf = f.udf(lambda x: x.is_null(), [pa.int64()], pa.bool_())
+ udf = f.udf(lambda x: x.is_null(), [pa.int64()], pa.bool_(),
f.Volatility.immutable())
Review comment:
I believe this line is causing the python code formatter to fail
You can fix it by running a command such as the following
```
cd datafusion
black --line-length 79 python
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]