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