File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -2245,6 +2245,10 @@ pub enum TableVersion {
22452245 /// Databricks supports this syntax.
22462246 /// For example: `SELECT * FROM tbl TIMESTAMP AS OF CURRENT_TIMESTAMP() - INTERVAL 1 HOUR`
22472247 TimestampAsOf ( Expr ) ,
2248+ /// When the table version is defined using `VERSION AS OF`.
2249+ /// Databricks supports this syntax.
2250+ /// For example: `SELECT * FROM tbl VERSION AS OF 2`
2251+ VersionAsOf ( Expr ) ,
22482252 /// When the table version is defined using a function.
22492253 /// For example: `SELECT * FROM tbl AT(TIMESTAMP => '2020-08-14 09:30:00')`
22502254 Function ( Expr ) ,
@@ -2255,6 +2259,7 @@ impl Display for TableVersion {
22552259 match self {
22562260 TableVersion :: ForSystemTimeAsOf ( e) => write ! ( f, "FOR SYSTEM_TIME AS OF {e}" ) ?,
22572261 TableVersion :: TimestampAsOf ( e) => write ! ( f, "TIMESTAMP AS OF {e}" ) ?,
2262+ TableVersion :: VersionAsOf ( e) => write ! ( f, "VERSION AS OF {e}" ) ?,
22582263 TableVersion :: Function ( func) => write ! ( f, "{func}" ) ?,
22592264 }
22602265 Ok ( ( ) )
Original file line number Diff line number Diff line change @@ -15496,6 +15496,9 @@ impl<'a> Parser<'a> {
1549615496 } else if self.parse_keywords(&[Keyword::TIMESTAMP, Keyword::AS, Keyword::OF]) {
1549715497 let expr = self.parse_expr()?;
1549815498 return Ok(Some(TableVersion::TimestampAsOf(expr)));
15499+ } else if self.parse_keywords(&[Keyword::VERSION, Keyword::AS, Keyword::OF]) {
15500+ let expr = Expr::Value(self.parse_number_value()?);
15501+ return Ok(Some(TableVersion::VersionAsOf(expr)));
1549915502 }
1550015503 }
1550115504 Ok(None)
Original file line number Diff line number Diff line change @@ -376,7 +376,15 @@ fn parse_table_time_travel() {
376376 "SELECT 1 FROM t1 TIMESTAMP AS OF CURRENT_TIMESTAMP() - INTERVAL 12 HOURS" ,
377377 ) ;
378378
379+ all_dialects_where ( |d| d. supports_timestamp_versioning ( ) ) . verified_only_select (
380+ "SELECT 1 FROM t1 VERSION AS OF 1" ,
381+ ) ;
382+
379383 assert ! ( databricks( )
380384 . parse_sql_statements( "SELECT 1 FROM t1 FOR TIMESTAMP AS OF 'some_timestamp'" )
381385 . is_err( ) ) ;
386+
387+ assert ! ( all_dialects_where( |d| d. supports_timestamp_versioning( ) ) . parse_sql_statements(
388+ "SELECT 1 FROM t1 VERSION AS OF 1 - 2" ,
389+ ) . is_err( ) )
382390}
You can’t perform that action at this time.
0 commit comments