File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed
Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -1581,4 +1581,18 @@ select a$0 from y;
15811581 ╰╴ ─ hover
15821582 " ) ;
15831583 }
1584+
1585+ #[ test]
1586+ fn hover_on_cte_shadowing_table_with_star ( ) {
1587+ assert_snapshot ! ( check_hover( "
1588+ create table t(a bigint);
1589+ with t as (select * from t)
1590+ select a$0 from t;
1591+ " ) , @r"
1592+ hover: column public.t.a bigint
1593+ ╭▸
1594+ 4 │ select a from t;
1595+ ╰╴ ─ hover
1596+ " ) ;
1597+ }
15841598}
Original file line number Diff line number Diff line change @@ -851,7 +851,11 @@ fn resolve_cte_column(
851851 {
852852 let from_table_name =
853853 Name :: new ( from_name_ref. syntax ( ) . text ( ) . to_string ( ) ) ;
854- return resolve_cte_column ( name_ref, & from_table_name, column_name) ;
854+ // Skip recursive CTE lookup if the FROM table has the same name as the current CTE
855+ // (CTEs don't shadow themselves in their own definition)
856+ if from_table_name != * cte_name {
857+ return resolve_cte_column ( name_ref, & from_table_name, column_name) ;
858+ }
855859 }
856860 }
857861 }
You can’t perform that action at this time.
0 commit comments