diff --git a/src/ast/query.rs b/src/ast/query.rs index bc5af9e5f..011d4658b 100644 --- a/src/ast/query.rs +++ b/src/ast/query.rs @@ -271,7 +271,7 @@ impl fmt::Display for With { #[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct Cte { pub alias: TableAlias, - pub query: Query, + pub query: Box, pub from: Option, } diff --git a/src/parser.rs b/src/parser.rs index c803a3bbf..6044a1e94 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -3466,7 +3466,7 @@ impl<'a> Parser<'a> { let mut cte = if self.parse_keyword(Keyword::AS) { self.expect_token(&Token::LParen)?; - let query = self.parse_query()?; + let query = Box::new(self.parse_query()?); self.expect_token(&Token::RParen)?; let alias = TableAlias { name, @@ -3481,7 +3481,7 @@ impl<'a> Parser<'a> { let columns = self.parse_parenthesized_column_list(Optional)?; self.expect_keyword(Keyword::AS)?; self.expect_token(&Token::LParen)?; - let query = self.parse_query()?; + let query = Box::new(self.parse_query()?); self.expect_token(&Token::RParen)?; let alias = TableAlias { name, columns }; Cte { diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs index da8b544ee..4cb496786 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -3760,7 +3760,7 @@ fn parse_recursive_cte() { quote_style: None, }], }, - query: cte_query, + query: Box::new(cte_query), from: None, }; assert_eq!(with.cte_tables.first().unwrap(), &expected);