@@ -5207,33 +5207,40 @@ impl<'a> Parser<'a> {
5207
5207
5208
5208
let return_table = self.maybe_parse(|p| {
5209
5209
let return_table_name = p.parse_identifier()?;
5210
- let table_column_defs = if p.peek_keyword(Keyword::TABLE) {
5211
- match p.parse_data_type()? {
5212
- DataType::Table(t) => t,
5213
- _ => parser_err!(
5214
- "Expected table data type after TABLE keyword",
5215
- p.peek_token().span.start
5216
- )?,
5217
- }
5218
- } else {
5210
+
5211
+ if !p.peek_keyword(Keyword::TABLE) {
5219
5212
parser_err!(
5220
5213
"Expected TABLE keyword after return type",
5221
5214
p.peek_token().span.start
5222
5215
)?
5223
- };
5216
+ }
5224
5217
5225
- if table_column_defs.is_none()
5226
- || table_column_defs.clone().is_some_and(|tcd| tcd.is_empty())
5227
- {
5228
- parser_err!(
5229
- "Expected table column definitions after TABLE keyword",
5218
+ let table_column_defs = match p.parse_data_type()? {
5219
+ DataType::Table(maybe_table_column_defs) => match maybe_table_column_defs {
5220
+ Some(table_column_defs) => {
5221
+ if table_column_defs.is_empty() {
5222
+ parser_err!(
5223
+ "Expected table column definitions after TABLE keyword",
5224
+ p.peek_token().span.start
5225
+ )?
5226
+ }
5227
+
5228
+ table_column_defs
5229
+ }
5230
+ None => parser_err!(
5231
+ "Expected table column definitions after TABLE keyword",
5232
+ p.peek_token().span.start
5233
+ )?,
5234
+ },
5235
+ _ => parser_err!(
5236
+ "Expected table data type after TABLE keyword",
5230
5237
p.peek_token().span.start
5231
- )?
5232
- }
5238
+ )?,
5239
+ };
5233
5240
5234
5241
Ok(DataType::NamedTable(
5235
5242
ObjectName(vec![ObjectNamePart::Identifier(return_table_name)]),
5236
- table_column_defs.clone().unwrap() ,
5243
+ table_column_defs,
5237
5244
))
5238
5245
})?;
5239
5246
0 commit comments