@@ -3359,6 +3359,173 @@ mod tests {
33593359        assert_eq ! ( result[ 0 ] . schema( ) . metadata( ) ,  result[ 1 ] . schema( ) . metadata( ) ) ; 
33603360    } 
33613361
3362+     #[ tokio:: test]  
3363+     async  fn  normalized_column_identifiers ( )  { 
3364+         // create local execution context 
3365+         let  mut  ctx = ExecutionContext :: new ( ) ; 
3366+ 
3367+         // register csv file with the execution context 
3368+         ctx. register_csv ( 
3369+             "case_insensitive_test" , 
3370+             "tests/example.csv" , 
3371+             CsvReadOptions :: new ( ) , 
3372+         ) 
3373+         . await 
3374+         . unwrap ( ) ; 
3375+ 
3376+         let  sql = "SELECT A, b FROM case_insensitive_test" ; 
3377+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3378+             . await 
3379+             . expect ( "ran plan correctly" ) ; 
3380+         let  expected = vec ! [ 
3381+             "+---+---+" , 
3382+             "| a | b |" , 
3383+             "+---+---+" , 
3384+             "| 1 | 2 |" , 
3385+             "+---+---+" , 
3386+         ] ; 
3387+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3388+ 
3389+         let  sql = "SELECT t.A, b FROM case_insensitive_test AS t" ; 
3390+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3391+             . await 
3392+             . expect ( "ran plan correctly" ) ; 
3393+         let  expected = vec ! [ 
3394+             "+---+---+" , 
3395+             "| a | b |" , 
3396+             "+---+---+" , 
3397+             "| 1 | 2 |" , 
3398+             "+---+---+" , 
3399+         ] ; 
3400+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3401+ 
3402+         // Aliases 
3403+ 
3404+         let  sql = "SELECT t.A as x, b FROM case_insensitive_test AS t" ; 
3405+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3406+             . await 
3407+             . expect ( "ran plan correctly" ) ; 
3408+         let  expected = vec ! [ 
3409+             "+---+---+" , 
3410+             "| x | b |" , 
3411+             "+---+---+" , 
3412+             "| 1 | 2 |" , 
3413+             "+---+---+" , 
3414+         ] ; 
3415+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3416+ 
3417+         let  sql = "SELECT t.A AS X, b FROM case_insensitive_test AS t" ; 
3418+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3419+             . await 
3420+             . expect ( "ran plan correctly" ) ; 
3421+         let  expected = vec ! [ 
3422+             "+---+---+" , 
3423+             "| x | b |" , 
3424+             "+---+---+" , 
3425+             "| 1 | 2 |" , 
3426+             "+---+---+" , 
3427+         ] ; 
3428+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3429+ 
3430+         let  sql = r#"SELECT t.A AS "X", b FROM case_insensitive_test AS t"# ; 
3431+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3432+             . await 
3433+             . expect ( "ran plan correctly" ) ; 
3434+         let  expected = vec ! [ 
3435+             "+---+---+" , 
3436+             "| X | b |" , 
3437+             "+---+---+" , 
3438+             "| 1 | 2 |" , 
3439+             "+---+---+" , 
3440+         ] ; 
3441+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3442+ 
3443+         // Order by 
3444+ 
3445+         let  sql = "SELECT t.A AS x, b FROM case_insensitive_test AS t ORDER BY x" ; 
3446+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3447+             . await 
3448+             . expect ( "ran plan correctly" ) ; 
3449+         let  expected = vec ! [ 
3450+             "+---+---+" , 
3451+             "| x | b |" , 
3452+             "+---+---+" , 
3453+             "| 1 | 2 |" , 
3454+             "+---+---+" , 
3455+         ] ; 
3456+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3457+ 
3458+         let  sql = "SELECT t.A AS x, b FROM case_insensitive_test AS t ORDER BY X" ; 
3459+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3460+             . await 
3461+             . expect ( "ran plan correctly" ) ; 
3462+         let  expected = vec ! [ 
3463+             "+---+---+" , 
3464+             "| x | b |" , 
3465+             "+---+---+" , 
3466+             "| 1 | 2 |" , 
3467+             "+---+---+" , 
3468+         ] ; 
3469+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3470+ 
3471+         let  sql = r#"SELECT t.A AS "X", b FROM case_insensitive_test AS t ORDER BY "X""# ; 
3472+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3473+             . await 
3474+             . expect ( "ran plan correctly" ) ; 
3475+         let  expected = vec ! [ 
3476+             "+---+---+" , 
3477+             "| X | b |" , 
3478+             "+---+---+" , 
3479+             "| 1 | 2 |" , 
3480+             "+---+---+" , 
3481+         ] ; 
3482+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3483+ 
3484+         // Where 
3485+ 
3486+         let  sql = "SELECT a, b FROM case_insensitive_test where A IS NOT null" ; 
3487+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3488+             . await 
3489+             . expect ( "ran plan correctly" ) ; 
3490+         let  expected = vec ! [ 
3491+             "+---+---+" , 
3492+             "| a | b |" , 
3493+             "+---+---+" , 
3494+             "| 1 | 2 |" , 
3495+             "+---+---+" , 
3496+         ] ; 
3497+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3498+ 
3499+         // Group by 
3500+ 
3501+         let  sql = "SELECT a as x, count(*) as c FROM case_insensitive_test GROUP BY X" ; 
3502+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3503+             . await 
3504+             . expect ( "ran plan correctly" ) ; 
3505+         let  expected = vec ! [ 
3506+             "+---+---+" , 
3507+             "| x | c |" , 
3508+             "+---+---+" , 
3509+             "| 1 | 1 |" , 
3510+             "+---+---+" , 
3511+         ] ; 
3512+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3513+ 
3514+         let  sql =
3515+             r#"SELECT a as "X", count(*) as c FROM case_insensitive_test GROUP BY "X""# ; 
3516+         let  result = plan_and_collect ( & mut  ctx,  sql) 
3517+             . await 
3518+             . expect ( "ran plan correctly" ) ; 
3519+         let  expected = vec ! [ 
3520+             "+---+---+" , 
3521+             "| X | c |" , 
3522+             "+---+---+" , 
3523+             "| 1 | 1 |" , 
3524+             "+---+---+" , 
3525+         ] ; 
3526+         assert_batches_sorted_eq ! ( expected,  & result) ; 
3527+     } 
3528+ 
33623529    struct  MyPhysicalPlanner  { } 
33633530
33643531    #[ async_trait]  
0 commit comments