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 41b2f7b2a..280483c13 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -3550,7 +3550,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, @@ -3565,7 +3565,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 9cdd492e6..5ac093a89 100644 --- a/tests/sqlparser_common.rs +++ b/tests/sqlparser_common.rs @@ -3861,7 +3861,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);