@@ -520,37 +520,35 @@ fn extract_set_variable(
520520 scope : None ,
521521 hivevar : false ,
522522 } ) = stmt
523- {
524- if let ( [ ObjectNamePart :: Identifier ( ident) ] , [ value] ) =
523+ && let ( [ ObjectNamePart :: Identifier ( ident) ] , [ value] ) =
525524 ( name. as_mut_slice ( ) , values. as_mut_slice ( ) )
526- {
527- let variable = if let Some ( variable) = extract_ident_param ( ident) {
528- variable
529- } else {
530- StmtParam :: PostOrGet ( std:: mem:: take ( & mut ident. value ) )
531- } ;
532- let owned_expr = std:: mem:: replace ( value, Expr :: value ( Value :: Null ) ) ;
533- let mut params_iter = params. iter ( ) . cloned ( ) ;
534- if let Some ( value) = expr_to_simple_select_val ( & mut params_iter, & owned_expr) {
535- return Some ( ParsedStatement :: StaticSimpleSet { variable, value } ) ;
536- }
525+ {
526+ let variable = if let Some ( variable) = extract_ident_param ( ident) {
527+ variable
528+ } else {
529+ StmtParam :: PostOrGet ( std:: mem:: take ( & mut ident. value ) )
530+ } ;
531+ let owned_expr = std:: mem:: replace ( value, Expr :: value ( Value :: Null ) ) ;
532+ let mut params_iter = params. iter ( ) . cloned ( ) ;
533+ if let Some ( value) = expr_to_simple_select_val ( & mut params_iter, & owned_expr) {
534+ return Some ( ParsedStatement :: StaticSimpleSet { variable, value } ) ;
535+ }
537536
538- let mut select_stmt: Statement = expr_to_statement ( owned_expr) ;
539- let delayed_functions = extract_toplevel_functions ( & mut select_stmt) ;
540- if let Err ( err) = validate_function_calls ( & select_stmt) {
541- return Some ( ParsedStatement :: Error ( err) ) ;
542- }
543- let json_columns = extract_json_columns ( & select_stmt, db_info. database_type ) ;
544- let mut value = StmtWithParams {
545- query : select_stmt. to_string ( ) ,
546- query_position : extract_query_start ( & select_stmt) ,
547- params : std:: mem:: take ( params) ,
548- delayed_functions,
549- json_columns,
550- } ;
551- transform_to_positional_placeholders ( & mut value, db_info. kind ) ;
552- return Some ( ParsedStatement :: SetVariable { variable, value } ) ;
537+ let mut select_stmt: Statement = expr_to_statement ( owned_expr) ;
538+ let delayed_functions = extract_toplevel_functions ( & mut select_stmt) ;
539+ if let Err ( err) = validate_function_calls ( & select_stmt) {
540+ return Some ( ParsedStatement :: Error ( err) ) ;
553541 }
542+ let json_columns = extract_json_columns ( & select_stmt, db_info. database_type ) ;
543+ let mut value = StmtWithParams {
544+ query : select_stmt. to_string ( ) ,
545+ query_position : extract_query_start ( & select_stmt) ,
546+ params : std:: mem:: take ( params) ,
547+ delayed_functions,
548+ json_columns,
549+ } ;
550+ transform_to_positional_placeholders ( & mut value, db_info. kind ) ;
551+ return Some ( ParsedStatement :: SetVariable { variable, value } ) ;
554552 }
555553 None
556554}
@@ -578,10 +576,9 @@ fn extract_sqlpage_function_name(
578576 } ) ,
579577 ObjectNamePart :: Identifier ( Ident { value, .. } ) ,
580578 ] = func_name_parts
579+ && namespace == SQLPAGE_FUNCTION_NAMESPACE
581580 {
582- if namespace == SQLPAGE_FUNCTION_NAMESPACE {
583- return SqlPageFunctionName :: from_str ( value) . ok ( ) ;
584- }
581+ return SqlPageFunctionName :: from_str ( value) . ok ( ) ;
585582 }
586583 None
587584}
@@ -610,15 +607,15 @@ fn extract_json_columns(stmt: &Statement, dbms: SupportedDatabase) -> Vec<String
610607
611608 let mut json_columns = Vec :: new ( ) ;
612609
613- if let Statement :: Query ( query) = stmt {
614- if let SetExpr :: Select ( select) = query. body . as_ref ( ) {
615- for item in & select . projection {
616- if let SelectItem :: ExprWithAlias { expr , alias } = item {
617- if is_json_function ( expr ) {
618- json_columns . push ( alias . value . clone ( ) ) ;
619- log :: trace! ( "Found JSON column: {alias}" ) ;
620- }
621- }
610+ if let Statement :: Query ( query) = stmt
611+ && let SetExpr :: Select ( select) = query. body . as_ref ( )
612+ {
613+ for item in & select . projection {
614+ if let SelectItem :: ExprWithAlias { expr , alias } = item
615+ && is_json_function ( expr )
616+ {
617+ json_columns . push ( alias . value . clone ( ) ) ;
618+ log :: trace! ( "Found JSON column: {alias}" ) ;
622619 }
623620 }
624621 }
0 commit comments