Table time travel clause support, add visit_table_factor to Visitor (#951)

This commit is contained in:
Marko Grujic 2023-08-22 12:06:32 +02:00 committed by GitHub
parent 9500649c35
commit 1ea8858575
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 225 additions and 12 deletions

View file

@ -95,6 +95,7 @@ fn parse_table_identifiers() {
alias: None,
args: None,
with_hints: vec![],
version: None,
},
joins: vec![]
},]
@ -143,6 +144,31 @@ fn parse_table_identifiers() {
test_table_ident("abc5.GROUP", vec![Ident::new("abc5"), Ident::new("GROUP")]);
}
#[test]
fn parse_table_time_travel() {
let version = "2023-08-18 23:08:18".to_string();
let sql = format!("SELECT 1 FROM t1 FOR SYSTEM_TIME AS OF '{version}'");
let select = bigquery().verified_only_select(&sql);
assert_eq!(
select.from,
vec![TableWithJoins {
relation: TableFactor::Table {
name: ObjectName(vec![Ident::new("t1")]),
alias: None,
args: None,
with_hints: vec![],
version: Some(TableVersion::ForSystemTimeAsOf(Expr::Value(
Value::SingleQuotedString(version)
))),
},
joins: vec![]
},]
);
let sql = "SELECT 1 FROM t1 FOR SYSTEM TIME AS OF 'some_timestamp'".to_string();
assert!(bigquery().parse_sql_statements(&sql).is_err());
}
#[test]
fn parse_join_constraint_unnest_alias() {
assert_eq!(