Skip to content

Commit fe64f27

Browse files
osipovartemeadgbear
authored andcommitted
Implement extraction of the corresponding date part from a date or timestamp (#302)
* Implement extracts the corresponding date part from a date or timestamp * Add units for visit expressions
1 parent c36e867 commit fe64f27

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

crates/runtime/src/execution/query.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)