(&mut self)
| 968 | } |
| 969 | |
| 970 | fn parse_column_def(&mut self) -> Result<ColumnDef, DataFusionError> { |
| 971 | let name = self.parser.parse_identifier()?; |
| 972 | let data_type = self.parser.parse_data_type()?; |
| 973 | let mut options = vec![]; |
| 974 | loop { |
| 975 | if self.parser.parse_keyword(Keyword::CONSTRAINT) { |
| 976 | let name = Some(self.parser.parse_identifier()?); |
| 977 | if let Some(option) = self.parser.parse_optional_column_option()? { |
| 978 | options.push(ColumnOptionDef { name, option }); |
| 979 | } else { |
| 980 | return self.expected( |
| 981 | "constraint details after CONSTRAINT <name>", |
| 982 | &self.parser.peek_token(), |
| 983 | ); |
| 984 | } |
| 985 | } else if let Some(option) = self.parser.parse_optional_column_option()? { |
| 986 | options.push(ColumnOptionDef { name: None, option }); |
| 987 | } else { |
| 988 | break; |
| 989 | }; |
| 990 | } |
| 991 | Ok(ColumnDef { |
| 992 | name, |
| 993 | data_type, |
| 994 | options, |
| 995 | }) |
| 996 | } |
| 997 | |
| 998 | fn parse_create_external_table( |
| 999 | &mut self, |
no test coverage detected