Evaluate a simple CASE expression (CASE expr WHEN value1 THEN result1 ...)
(
&self,
simple_case: &SimpleCaseExpression,
context: &ExecutionContext,
)
| 4825 | |
| 4826 | /// Evaluate a simple CASE expression (CASE expr WHEN value1 THEN result1 ...) |
| 4827 | fn evaluate_simple_case( |
| 4828 | &self, |
| 4829 | simple_case: &SimpleCaseExpression, |
| 4830 | context: &ExecutionContext, |
| 4831 | ) -> Result<Value, ExecutionError> { |
| 4832 | // Evaluate the test expression |
| 4833 | let test_value = self.evaluate_expression(&simple_case.test_expression, context)?; |
| 4834 | |
| 4835 | // Check each WHEN branch |
| 4836 | for when_branch in &simple_case.when_branches { |
| 4837 | for when_value_expr in &when_branch.when_values { |
| 4838 | let when_value = self.evaluate_expression(when_value_expr, context)?; |
| 4839 | |
| 4840 | // Check if test_value equals when_value |
| 4841 | if self.values_equal(&test_value, &when_value)? { |
| 4842 | return self.evaluate_expression(&when_branch.then_expression, context); |
| 4843 | } |
| 4844 | } |
| 4845 | } |
| 4846 | |
| 4847 | // If no WHEN matched, evaluate ELSE or return NULL |
| 4848 | match &simple_case.else_expression { |
| 4849 | Some(else_expr) => self.evaluate_expression(else_expr, context), |
| 4850 | None => Ok(Value::Null), |
| 4851 | } |
| 4852 | } |
| 4853 | |
| 4854 | /// Evaluate a searched CASE expression (CASE WHEN condition1 THEN result1 ...) |
| 4855 | fn evaluate_searched_case( |
no test coverage detected