@@ -94,7 +94,7 @@ pub fn transform_cte_references(sql: &str, cte_names: &HashSet<String>) -> Strin
9494 let mut result = sql. to_string ( ) ;
9595
9696 for cte_name in cte_names {
97- let temp_table_name = naming:: cte_table ( cte_name) ;
97+ let temp_table_name = naming:: quote_ident ( & naming :: cte_table ( cte_name) ) ;
9898
9999 // Replace table references: FROM cte_name, JOIN cte_name, cte_name.column
100100 // Use word boundary matching to avoid replacing substrings
@@ -360,26 +360,26 @@ mod tests {
360360 (
361361 "SELECT * FROM sales WHERE year = 2024" ,
362362 vec![ "sales" ] ,
363- vec![ "FROM __ggsql_cte_sales_" , "__ WHERE year = 2024" ] ,
363+ vec![ "FROM \" __ggsql_cte_sales_" , "__\" WHERE year = 2024" ] ,
364364 None ,
365365 ) ,
366366 // Multiple CTE references with qualified columns
367367 (
368368 "SELECT sales.date, targets.revenue FROM sales JOIN targets ON sales.id = targets.id" ,
369369 vec![ "sales" , "targets" ] ,
370370 vec![
371- "FROM __ggsql_cte_sales_" ,
372- "JOIN __ggsql_cte_targets_" ,
373- "__ggsql_cte_sales_" , // qualified reference sales.date
374- "__ggsql_cte_targets_" , // qualified reference targets.revenue
371+ "FROM \" __ggsql_cte_sales_" ,
372+ "JOIN \" __ggsql_cte_targets_" ,
373+ "\" __ggsql_cte_sales_" , // qualified reference sales.date
374+ "\" __ggsql_cte_targets_" , // qualified reference targets.revenue
375375 ] ,
376376 None ,
377377 ) ,
378378 // Qualified column references only (no FROM/JOIN transformation needed)
379379 (
380380 "WHERE sales.date > '2024-01-01' AND sales.revenue > 100" ,
381381 vec![ "sales" ] ,
382- vec![ "__ggsql_cte_sales_" ] ,
382+ vec![ "\" __ggsql_cte_sales_" ] ,
383383 None ,
384384 ) ,
385385 // No matching CTE (unchanged)
0 commit comments