Evaluate the expression of the left input is an array and right is literal - use scalar operations
(
&self,
array: &dyn Array,
scalar: ScalarValue,
)
| 646 | /// Evaluate the expression of the left input is an array and |
| 647 | /// right is literal - use scalar operations |
| 648 | fn evaluate_array_scalar( |
| 649 | &self, |
| 650 | array: &dyn Array, |
| 651 | scalar: ScalarValue, |
| 652 | ) -> Result<Option<Result<ArrayRef>>> { |
| 653 | use Operator::*; |
| 654 | let scalar_result = match &self.op { |
| 655 | RegexMatch => regex_match_dyn_scalar(array, &scalar, false, false), |
| 656 | RegexIMatch => regex_match_dyn_scalar(array, &scalar, false, true), |
| 657 | RegexNotMatch => regex_match_dyn_scalar(array, &scalar, true, false), |
| 658 | RegexNotIMatch => regex_match_dyn_scalar(array, &scalar, true, true), |
| 659 | BitwiseAnd => bitwise_and_dyn_scalar(array, scalar), |
| 660 | BitwiseOr => bitwise_or_dyn_scalar(array, scalar), |
| 661 | BitwiseXor => bitwise_xor_dyn_scalar(array, scalar), |
| 662 | BitwiseShiftRight => bitwise_shift_right_dyn_scalar(array, scalar), |
| 663 | BitwiseShiftLeft => bitwise_shift_left_dyn_scalar(array, scalar), |
| 664 | // if scalar operation is not supported - fallback to array implementation |
| 665 | _ => None, |
| 666 | }; |
| 667 | |
| 668 | Ok(scalar_result) |
| 669 | } |
| 670 | |
| 671 | fn evaluate_with_resolved_args( |
| 672 | &self, |
no test coverage detected