@@ -11208,7 +11208,7 @@ impl<'a> Parser<'a> {
1120811208 };
1120911209
1121011210 // Parse potential version qualifier
11211- let version = self.maybe_parse_table_version ()?;
11211+ let version = self.parse_table_version ()?;
1121211212
1121311213 // Postgres, MSSQL, ClickHouse: table-valued functions:
1121411214 let args = if self.consume_token(&Token::LParen) {
@@ -11639,20 +11639,18 @@ impl<'a> Parser<'a> {
1163911639 }
1164011640 }
1164111641
11642- /// Parses a the timestamp version specifier (i.e. query historical data)
11643- pub fn maybe_parse_table_version(&mut self) -> Result<Option<TableVersion>, ParserError> {
11644- if self.dialect.supports_timestamp_versioning() {
11645- if self.parse_keywords(&[Keyword::FOR, Keyword::SYSTEM_TIME, Keyword::AS, Keyword::OF])
11646- {
11647- let expr = self.parse_expr()?;
11648- return Ok(Some(TableVersion::ForSystemTimeAsOf(expr)));
11649- } else if self.peek_keyword(Keyword::AT) || self.peek_keyword(Keyword::BEFORE) {
11650- let func_name = self.parse_object_name(true)?;
11651- let func = self.parse_function(func_name)?;
11652- return Ok(Some(TableVersion::Function(func)));
11653- }
11642+ /// Parse a given table version specifier.
11643+ ///
11644+ /// For now it only supports timestamp versioning for BigQuery and MSSQL dialects.
11645+ pub fn parse_table_version(&mut self) -> Result<Option<TableVersion>, ParserError> {
11646+ if dialect_of!(self is BigQueryDialect | MsSqlDialect)
11647+ && self.parse_keywords(&[Keyword::FOR, Keyword::SYSTEM_TIME, Keyword::AS, Keyword::OF])
11648+ {
11649+ let expr = self.parse_expr()?;
11650+ Ok(Some(TableVersion::ForSystemTimeAsOf(expr)))
11651+ } else {
11652+ Ok(None)
1165411653 }
11655- Ok(None)
1165611654 }
1165711655
1165811656 /// Parses MySQL's JSON_TABLE column definition.
0 commit comments