From dbd0f8487cf183f1fa7c3da06951ad0e7cb31035 Mon Sep 17 00:00:00 2001 From: Huaijin Date: Mon, 12 Aug 2024 10:39:07 +0800 Subject: [PATCH] fix: extrace field in case when (#4178) --- src/config/src/meta/sql.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/config/src/meta/sql.rs b/src/config/src/meta/sql.rs index c0e557e680..af7e37fff2 100644 --- a/src/config/src/meta/sql.rs +++ b/src/config/src/meta/sql.rs @@ -882,8 +882,8 @@ fn get_field_name_from_expr(expr: &SqlExpr) -> Result>, anyho SqlExpr::Case { operand: _, conditions, - results: _, - else_result: _, + results, + else_result, } => { let mut fields = Vec::new(); for expr in conditions.iter() { @@ -891,6 +891,16 @@ fn get_field_name_from_expr(expr: &SqlExpr) -> Result>, anyho fields.extend(v); } } + for expr in results.iter() { + if let Some(v) = get_field_name_from_expr(expr)? { + fields.extend(v); + } + } + if let Some(expr) = else_result.as_ref() { + if let Some(v) = get_field_name_from_expr(expr)? { + fields.extend(v); + } + } Ok((!fields.is_empty()).then_some(fields)) } SqlExpr::AtTimeZone { timestamp, .. } => get_field_name_from_expr(timestamp),