@@ -1404,3 +1404,39 @@ mod tests {
14041404 }
14051405 }
14061406}
1407+
1408+ #[ cfg( test) ]
1409+ mod test {
1410+ use crate :: datafusion:: execution:: SqlExecutor ;
1411+ use datafusion:: sql:: parser:: DFParser ;
1412+
1413+ #[ allow( clippy:: unwrap_used) ]
1414+ #[ test]
1415+ fn test_postprocess_query_statement_functions_expressions ( ) {
1416+ let args: [ ( & str , & str ) ; 14 ] = [
1417+ ( "select year(ts)" , "SELECT date_part('year', ts)" ) ,
1418+ ( "select dayofyear(ts)" , "SELECT date_part('doy', ts)" ) ,
1419+ ( "select day(ts)" , "SELECT date_part('day', ts)" ) ,
1420+ ( "select dayofmonth(ts)" , "SELECT date_part('day', ts)" ) ,
1421+ ( "select dayofweek(ts)" , "SELECT date_part('dow', ts)" ) ,
1422+ ( "select month(ts)" , "SELECT date_part('month', ts)" ) ,
1423+ ( "select weekofyear(ts)" , "SELECT date_part('week', ts)" ) ,
1424+ ( "select week(ts)" , "SELECT date_part('week', ts)" ) ,
1425+ ( "select hour(ts)" , "SELECT date_part('hour', ts)" ) ,
1426+ ( "select minute(ts)" , "SELECT date_part('minute', ts)" ) ,
1427+ ( "select second(ts)" , "SELECT date_part('second', ts)" ) ,
1428+ ( "select minute(ts)" , "SELECT date_part('minute', ts)" ) ,
1429+ // Do nothing
1430+ ( "select yearofweek(ts)" , "SELECT yearofweek(ts)" ) ,
1431+ ( "select yearofweekiso(ts)" , "SELECT yearofweekiso(ts)" ) ,
1432+ ] ;
1433+
1434+ for ( init, exp) in args {
1435+ let statement = DFParser :: parse_sql ( init) . unwrap ( ) . pop_front ( ) ;
1436+ if let Some ( mut s) = statement {
1437+ SqlExecutor :: postprocess_query_statement ( & mut s) ;
1438+ assert_eq ! ( s. to_string( ) , exp) ;
1439+ }
1440+ }
1441+ }
1442+ }
0 commit comments