diff --git a/src/expr/core/src/expr/mod.rs b/src/expr/core/src/expr/mod.rs index 1b23bb85fd404..528a303fdab96 100644 --- a/src/expr/core/src/expr/mod.rs +++ b/src/expr/core/src/expr/mod.rs @@ -58,7 +58,7 @@ pub use self::build::*; pub use self::expr_input_ref::InputRefExpression; pub use self::expr_literal::LiteralExpression; pub use self::value::{ValueImpl, ValueRef}; -pub use self::wrapper::EvalErrorReport; +pub use self::wrapper::*; pub use super::{ExprError, Result}; /// Interface of an expression. @@ -135,9 +135,14 @@ where /// Create a non-strict expression from the given expression, where only the evaluation of the /// top-level expression is non-strict (which is subtly different from - /// [`crate::expr::build_non_strict_from_prost`]), and error will only be simply logged. - pub fn todo(inner: E) -> NonStrictExpression { - let inner = wrapper::non_strict::NonStrict::new(inner, wrapper::LogReport); + /// [`crate::expr::build_non_strict_from_prost`]). + /// + /// This should be used as a "TODO". + pub fn todo( + inner: E, + error_report: impl EvalErrorReport, + ) -> NonStrictExpression { + let inner = wrapper::non_strict::NonStrict::new(inner, error_report); NonStrictExpression(inner) } diff --git a/src/stream/src/executor/aggregation/mod.rs b/src/stream/src/executor/aggregation/mod.rs index b25d95855b42c..9e05b050d1e09 100644 --- a/src/stream/src/executor/aggregation/mod.rs +++ b/src/stream/src/executor/aggregation/mod.rs @@ -21,7 +21,7 @@ use risingwave_common::bail; use risingwave_common::buffer::Bitmap; use risingwave_common::catalog::{Field, Schema}; use risingwave_expr::aggregate::{AggCall, AggKind}; -use risingwave_expr::expr::NonStrictExpression; +use risingwave_expr::expr::{LogReport, NonStrictExpression}; use risingwave_storage::StateStore; use crate::common::table::state_table::StateTable; @@ -75,7 +75,7 @@ pub async fn agg_call_filter_res( } if let Some(ref filter) = agg_call.filter { - if let Bool(filter_res) = NonStrictExpression::todo(&**filter) + if let Bool(filter_res) = NonStrictExpression::todo(&**filter, LogReport) .eval_infallible(chunk) .await .as_ref() diff --git a/src/stream/src/executor/dynamic_filter.rs b/src/stream/src/executor/dynamic_filter.rs index 5828ae1e15c1c..ccb55b75c24fc 100644 --- a/src/stream/src/executor/dynamic_filter.rs +++ b/src/stream/src/executor/dynamic_filter.rs @@ -265,7 +265,7 @@ impl DynamicFilterExecutor, chunk_size: usize, @@ -84,7 +84,7 @@ impl ProjectSetExecutor { let inner = Inner { info, - _ctx: ctx, + ctx, select_list, chunk_size, watermark_derivations, @@ -262,7 +262,7 @@ impl Inner { watermark .clone() .transform_with_expr( - &NonStrictExpression::todo(expr), + &NonStrictExpression::todo(expr, LogReport), expr_idx + PROJ_ROW_ID_OFFSET, ) .await