Skip to content

Commit 103191b

Browse files
committed
style: restore explanatory comments and fix indentation in regexp_match scalar path
1 parent c120b71 commit 103191b

1 file changed

Lines changed: 19 additions & 16 deletions

File tree

datafusion/functions/src/regex/regexpmatch.rs

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -176,22 +176,25 @@ fn regexp_match_scalar_pattern(args: &[ColumnarValue]) -> Result<Option<ArrayRef
176176
else {
177177
return Ok(None);
178178
};
179-
let flags = match flags {
180-
Some(ColumnarValue::Array(_)) => return Ok(None),
181-
Some(ColumnarValue::Scalar(flags)) => Some(flags),
182-
None => None,
183-
};
184-
185-
let value_type = values.data_type();
186-
187-
if !matches!(pattern.try_as_str(), Some(Some(_)))
188-
|| &pattern.data_type() != value_type
189-
|| flags.is_some_and(|flags| {
190-
flags.try_as_str() == Some(Some("g")) || &flags.data_type() != value_type
191-
})
192-
{
193-
return Ok(None);
194-
}
179+
let flags = match flags {
180+
// An array of flags has to be zipped with the values row by row.
181+
Some(ColumnarValue::Array(_)) => return Ok(None),
182+
Some(ColumnarValue::Scalar(flags)) => Some(flags),
183+
None => None,
184+
};
185+
186+
// The kernel requires the values, the pattern and the flags to share one
187+
// string type.
188+
let value_type = values.data_type();
189+
190+
if !matches!(pattern.try_as_str(), Some(Some(_)))
191+
|| &pattern.data_type() != value_type
192+
|| flags.is_some_and(|flags| {
193+
flags.try_as_str() == Some(Some("g")) || &flags.data_type() != value_type
194+
})
195+
{
196+
return Ok(None);
197+
}
195198

196199
let pattern = pattern.to_scalar()?;
197200
let flags = flags.map(ScalarValue::to_scalar).transpose()?;

0 commit comments

Comments
 (0)