Skip to content

Commit 270c41b

Browse files
committed
All dialects should parse TIMESTAMP AS OF
1 parent 21783cc commit 270c41b

File tree

1 file changed

+7
-77
lines changed

1 file changed

+7
-77
lines changed

tests/sqlparser_databricks.rs

Lines changed: 7 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -369,84 +369,14 @@ fn data_type_timestamp_ntz() {
369369

370370
#[test]
371371
fn parse_table_time_travel() {
372-
let version = "2018-10-18T22:15:12.013Z".to_string();
373-
let sql = format!("SELECT 1 FROM t1 TIMESTAMP AS OF '{version}'");
374-
let select = databricks().verified_only_select(&sql);
375-
assert_eq!(
376-
select.from,
377-
vec![TableWithJoins {
378-
relation: TableFactor::Table {
379-
name: ObjectName::from(vec![Ident::new("t1")]),
380-
alias: None,
381-
args: None,
382-
with_hints: vec![],
383-
version: Some(TableVersion::TimestampAsOf(Expr::Value(
384-
Value::SingleQuotedString(version.clone()).with_empty_span()
385-
))),
386-
partitions: vec![],
387-
with_ordinality: false,
388-
json_path: None,
389-
sample: None,
390-
index_hints: vec![],
391-
},
392-
joins: vec![]
393-
},]
394-
);
372+
all_dialects_where(|d| d.supports_timestamp_versioning())
373+
.verified_only_select("SELECT 1 FROM t1 TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'");
395374

396-
let sql =
397-
"SELECT 1 FROM t1 TIMESTAMP AS OF CURRENT_TIMESTAMP() - INTERVAL 12 HOURS".to_string();
398-
let select = databricks().verified_only_select(&sql);
399-
assert_eq!(
400-
select.from,
401-
vec![TableWithJoins {
402-
relation: TableFactor::Table {
403-
name: ObjectName::from(vec![Ident::new("t1")]),
404-
alias: None,
405-
args: None,
406-
with_hints: vec![],
407-
version: Some(TableVersion::TimestampAsOf(Expr::BinaryOp {
408-
left: Box::new(Expr::Function(Function {
409-
name: ObjectName::from(vec![Ident::new("CURRENT_TIMESTAMP")]),
410-
uses_odbc_syntax: false,
411-
parameters: FunctionArguments::None,
412-
args: FunctionArguments::List(FunctionArgumentList {
413-
duplicate_treatment: None,
414-
args: vec![],
415-
clauses: vec![]
416-
}),
417-
filter: None,
418-
null_treatment: None,
419-
over: None,
420-
within_group: vec![]
421-
})),
422-
op: BinaryOperator::Minus,
423-
right: Box::new(Expr::Interval(Interval {
424-
value: Box::new(Expr::Value(number("12").into())),
425-
leading_field: Some(DateTimeField::Hours),
426-
leading_precision: None,
427-
last_field: None,
428-
fractional_seconds_precision: None,
429-
}))
430-
})),
431-
partitions: vec![],
432-
with_ordinality: false,
433-
json_path: None,
434-
sample: None,
435-
index_hints: vec![],
436-
},
437-
joins: vec![]
438-
},]
375+
all_dialects_where(|d| d.supports_timestamp_versioning()).verified_only_select(
376+
"SELECT 1 FROM t1 TIMESTAMP AS OF CURRENT_TIMESTAMP() - INTERVAL 12 HOURS",
439377
);
440378

441-
let sql = "SELECT 1 FROM t1 FOR TIMESTAMP AS OF 'some_timestamp'".to_string();
442-
assert!(databricks().parse_sql_statements(&sql).is_err());
443-
444-
let sql = "SELECT 1 FROM t1 FOR TIMESTAMP AS OF '{version}'".to_string();
445-
assert!(databricks().parse_sql_statements(&sql).is_err());
446-
447-
let sql = "SELECT * FROM tbl AT(TIMESTAMP => '2024-12-15 00:00:00')".to_string();
448-
assert!(databricks().parse_sql_statements(&sql).is_err());
449-
450-
let sql = "SELECT * FROM tbl BEFORE(TIMESTAMP => '2024-12-15 00:00:00')".to_string();
451-
assert!(databricks().parse_sql_statements(&sql).is_err());
379+
assert!(databricks()
380+
.parse_sql_statements("SELECT 1 FROM t1 FOR TIMESTAMP AS OF 'some_timestamp'")
381+
.is_err());
452382
}

0 commit comments

Comments
 (0)