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