(&mut self)
| 7270 | } |
| 7271 | |
| 7272 | fn parse_column_name(&mut self) -> Result<ColumnName<Raw>, ParserError> { |
| 7273 | let start = self.peek_pos(); |
| 7274 | let mut item_name = self.parse_raw_name()?; |
| 7275 | let column_name = match &mut item_name { |
| 7276 | RawItemName::Name(UnresolvedItemName(identifiers)) => { |
| 7277 | if identifiers.len() < 2 { |
| 7278 | return Err(ParserError::new( |
| 7279 | start, |
| 7280 | "need to specify an object and a column", |
| 7281 | )); |
| 7282 | } |
| 7283 | identifiers.pop().unwrap() |
| 7284 | } |
| 7285 | RawItemName::Id(_, _, _) => { |
| 7286 | self.expect_token(&Token::Dot)?; |
| 7287 | self.parse_identifier()? |
| 7288 | } |
| 7289 | }; |
| 7290 | |
| 7291 | Ok(ColumnName { |
| 7292 | relation: item_name, |
| 7293 | column: column_name, |
| 7294 | }) |
| 7295 | } |
| 7296 | |
| 7297 | /// Parse a possibly quoted database identifier, e.g. |
| 7298 | /// `foo` or `"mydatabase"` |
no test coverage detected