From 38b4fb73fa729a4811377986401c8e07c61e4178 Mon Sep 17 00:00:00 2001 From: sundyli <543950155@qq.com> Date: Wed, 17 Apr 2024 14:08:41 +0800 Subject: [PATCH] chore(query): remove useless function map:get (#15245) * chore(query): remove useless function map:get * chore(query): remove useless function map:get * chore(query): remove useless function map:get --- src/query/functions/src/scalars/map.rs | 27 ------------ .../it/scalars/testdata/function_list.txt | 6 +-- .../sql/src/planner/semantic/type_check.rs | 44 +++---------------- 3 files changed, 8 insertions(+), 69 deletions(-) diff --git a/src/query/functions/src/scalars/map.rs b/src/query/functions/src/scalars/map.rs index 1dad059c7d019..69766737dd024 100644 --- a/src/query/functions/src/scalars/map.rs +++ b/src/query/functions/src/scalars/map.rs @@ -23,7 +23,6 @@ use databend_common_expression::types::MapType; use databend_common_expression::types::NullType; use databend_common_expression::types::NullableType; use databend_common_expression::vectorize_with_builder_2_arg; -use databend_common_expression::Domain; use databend_common_expression::FunctionDomain; use databend_common_expression::FunctionRegistry; use databend_common_expression::Value; @@ -97,7 +96,6 @@ pub fn register(registry: &mut FunctionRegistry) { |_, _, _| Value::Scalar(()), ); - // NOTE: order is matter, we first catch > here. registry.register_combine_nullable_2_arg::, NullableType>>, GenericType<0>, GenericType<1>, _, _>( "get", |_, domain, _| { @@ -121,29 +119,4 @@ pub fn register(registry: &mut FunctionRegistry) { } ), ); - - // NOTE: order is matter, we catch here after > - registry.register_combine_nullable_2_arg::, GenericType<1>>, GenericType<0>, GenericType<1>, _, _>( - "get", - |_, domain, _| { - FunctionDomain::Domain(NullableDomain { - has_null: true, - value: domain.as_ref().and_then(|(_, val_domain)| match val_domain { - Domain::Nullable(nullable_domain) => nullable_domain.value.clone(), - _ => Some(Box::new(val_domain.clone())), - }) - }) - }, - vectorize_with_builder_2_arg::, GenericType<1>>, GenericType<0>, NullableType>>( - |map, key, output, _| { - for (k, v) in map.iter() { - if k == key { - output.push(v); - return - } - } - output.push_null() - } - ), - ); } diff --git a/src/query/functions/tests/it/scalars/testdata/function_list.txt b/src/query/functions/tests/it/scalars/testdata/function_list.txt index 39380c49d2af0..b12e61460ae6c 100644 --- a/src/query/functions/tests/it/scalars/testdata/function_list.txt +++ b/src/query/functions/tests/it/scalars/testdata/function_list.txt @@ -2004,11 +2004,9 @@ Functions overloads: 9 get(Map(T0, NULL) NULL, T0 NULL) :: NULL 10 get(Map(T0, T1 NULL), T0) :: T1 NULL 11 get(Map(T0, T1 NULL) NULL, T0 NULL) :: T1 NULL -12 get(Map(T0, T1), T0) :: T1 NULL -13 get(Map(T0, T1) NULL, T0 NULL) :: T1 NULL +12 get FACTORY +13 get FACTORY 14 get FACTORY -15 get FACTORY -16 get FACTORY 0 get_by_keypath FACTORY 0 get_by_keypath_string FACTORY 0 get_ignore_case(Variant, String) :: Variant NULL diff --git a/src/query/sql/src/planner/semantic/type_check.rs b/src/query/sql/src/planner/semantic/type_check.rs index ebedfea28c34b..400b644663d19 100644 --- a/src/query/sql/src/planner/semantic/type_check.rs +++ b/src/query/sql/src/planner/semantic/type_check.rs @@ -1125,7 +1125,6 @@ impl<'a> TypeChecker<'a> { } } - #[async_backtrace::framed] async fn resolve_window( &mut self, span: Span, @@ -1290,7 +1289,6 @@ impl<'a> TypeChecker<'a> { }) } - #[async_backtrace::framed] async fn resolve_range_offset(&mut self, bound: &WindowFrameBound) -> Result> { match bound { WindowFrameBound::Following(Some(box expr)) @@ -1311,7 +1309,6 @@ impl<'a> TypeChecker<'a> { } } - #[async_backtrace::framed] async fn resolve_window_range_frame(&mut self, frame: WindowFrame) -> Result { let start_offset = self.resolve_range_offset(&frame.start_bound).await?; let end_offset = self.resolve_range_offset(&frame.end_bound).await?; @@ -1338,7 +1335,6 @@ impl<'a> TypeChecker<'a> { }) } - #[async_backtrace::framed] async fn resolve_window_frame( &mut self, span: Span, @@ -1422,7 +1418,7 @@ impl<'a> TypeChecker<'a> { } /// Resolve general window function call. - #[async_backtrace::framed] + async fn resolve_general_window_function( &mut self, span: Span, @@ -1486,7 +1482,6 @@ impl<'a> TypeChecker<'a> { } } - #[async_backtrace::framed] async fn resolve_lag_lead_window_function( &mut self, func_name: &str, @@ -1554,7 +1549,6 @@ impl<'a> TypeChecker<'a> { })) } - #[async_backtrace::framed] async fn resolve_nth_value_window_function( &mut self, func_name: &str, @@ -1627,7 +1621,6 @@ impl<'a> TypeChecker<'a> { }) } - #[async_backtrace::framed] async fn resolve_ntile_window_function( &mut self, args: &[ScalarExpr], @@ -1662,7 +1655,7 @@ impl<'a> TypeChecker<'a> { } /// Resolve aggregation function call. - #[async_backtrace::framed] + async fn resolve_aggregate_function( &mut self, span: Span, @@ -1838,7 +1831,6 @@ impl<'a> TypeChecker<'a> { } } - #[async_backtrace::framed] async fn resolve_lambda_function( &mut self, span: Span, @@ -2008,7 +2000,6 @@ impl<'a> TypeChecker<'a> { Ok(Box::new((lambda_func, data_type))) } - #[async_backtrace::framed] async fn resolve_score_search_function( &mut self, span: Span, @@ -2373,7 +2364,7 @@ impl<'a> TypeChecker<'a> { } /// Resolve function call. - #[async_backtrace::framed] + pub async fn resolve_function( &mut self, span: Span, @@ -2520,7 +2511,6 @@ impl<'a> TypeChecker<'a> { /// would be transformed into `FunctionCall`, except comparison /// expressions, conjunction(`AND`) and disjunction(`OR`). #[async_recursion::async_recursion] - #[async_backtrace::framed] pub async fn resolve_binary_op( &mut self, span: Span, @@ -2581,7 +2571,6 @@ impl<'a> TypeChecker<'a> { /// Resolve unary expressions. #[async_recursion::async_recursion] - #[async_backtrace::framed] pub async fn resolve_unary_op( &mut self, span: Span, @@ -2602,7 +2591,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] pub async fn resolve_extract_expr( &mut self, span: Span, @@ -2648,7 +2636,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] pub async fn resolve_date_add( &mut self, span: Span, @@ -2674,7 +2661,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] pub async fn resolve_date_trunc( &mut self, span: Span, @@ -2742,7 +2728,6 @@ impl<'a> TypeChecker<'a> { } } - #[async_backtrace::framed] pub async fn resolve_subquery( &mut self, typ: SubqueryType, @@ -2863,7 +2848,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn try_rewrite_sugar_function( &mut self, span: Span, @@ -3255,7 +3239,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_trim_function( &mut self, span: Span, @@ -3315,7 +3298,6 @@ impl<'a> TypeChecker<'a> { // TODO(leiysky): use an array builder function instead, since we should allow declaring // an array with variable as element. #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_array( &mut self, span: Span, @@ -3331,7 +3313,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_map( &mut self, span: Span, @@ -3355,7 +3336,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_tuple( &mut self, span: Span, @@ -3371,7 +3351,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_like( &mut self, op: &BinaryOperator, @@ -3412,7 +3391,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_udf( &mut self, span: Span, @@ -3450,7 +3428,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_udf_server( &mut self, span: Span, @@ -3515,7 +3492,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_udf_script( &mut self, span: Span, @@ -3558,7 +3534,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_lambda_udf( &mut self, span: Span, @@ -3608,7 +3583,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_cast_to_variant( &mut self, span: Span, @@ -3624,9 +3598,8 @@ impl<'a> TypeChecker<'a> { if let ScalarExpr::BoundColumnRef(BoundColumnRef { ref column, .. }) = scalar { let column_entry = self.metadata.read().column(column.index).clone(); if let ColumnEntry::BaseTableColumn(BaseTableColumn { data_type, .. }) = column_entry { - let new_scalar = self - .rewrite_cast_to_variant(span, scalar, &data_type, is_try) - .await; + let new_scalar = + Self::rewrite_cast_to_variant(span, scalar, &data_type, is_try).await; let return_type = if is_try || source_type.is_nullable() { DataType::Nullable(Box::new(DataType::Variant)) } else { @@ -3639,9 +3612,7 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn rewrite_cast_to_variant( - &mut self, span: Span, scalar: &ScalarExpr, data_type: &TableDataType, @@ -3672,8 +3643,7 @@ impl<'a> TypeChecker<'a> { let value = if matches!(field_type.remove_nullable(), TableDataType::Tuple { .. }) { - self.rewrite_cast_to_variant(span, &value, field_type, is_try) - .await + Self::rewrite_cast_to_variant(span, &value, field_type, is_try).await } else { value }; @@ -3712,7 +3682,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_map_access( &mut self, expr: &Expr, @@ -3814,7 +3783,6 @@ impl<'a> TypeChecker<'a> { } #[async_recursion::async_recursion] - #[async_backtrace::framed] async fn resolve_tuple_map_access_pushdown( &mut self, span: Span,