(
expr_builder: &mut PruningExpressionBuilder,
)
| 1784 | } |
| 1785 | |
| 1786 | fn build_is_not_distinct_from( |
| 1787 | expr_builder: &mut PruningExpressionBuilder, |
| 1788 | ) -> Result<Arc<dyn PhysicalExpr>> { |
| 1789 | let scalar_expr = Arc::clone(expr_builder.scalar_expr()); |
| 1790 | |
| 1791 | Ok(or_expr( |
| 1792 | and_expr( |
| 1793 | Arc::new(phys_expr::IsNullExpr::new(Arc::clone(&scalar_expr))), |
| 1794 | column_has_nulls_expr(expr_builder)?, |
| 1795 | ), |
| 1796 | and_expr( |
| 1797 | Arc::new(phys_expr::IsNotNullExpr::new(scalar_expr)), |
| 1798 | and_expr( |
| 1799 | column_has_non_nulls_expr(expr_builder)?, |
| 1800 | build_eq_statistics_expr(expr_builder)?, |
| 1801 | ), |
| 1802 | ), |
| 1803 | )) |
| 1804 | } |
| 1805 | |
| 1806 | /// returns the string literal of the scalar value if it is a string |
| 1807 | fn unpack_string(s: &ScalarValue) -> Option<&str> { |
no test coverage detected
searching dependent graphs…