MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / parse_raw_name

Method parse_raw_name

src/sql-parser/src/parser.rs:7241–7270  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

7239 }
7240
7241 fn parse_raw_name(&mut self) -> Result<RawItemName, ParserError> {
7242 if self.consume_token(&Token::LBracket) {
7243 let id = match self.next_token() {
7244 Some(Token::Ident(id)) => id.into_inner(),
7245 _ => return parser_err!(self, self.peek_prev_pos(), "expected id"),
7246 };
7247 self.expect_keyword(AS)?;
7248 let name = self.parse_item_name()?;
7249 // TODO(justin): is there a more idiomatic way to detect a fully-qualified name?
7250 if name.0.len() < 2 {
7251 return parser_err!(
7252 self,
7253 self.peek_prev_pos(),
7254 "table name in square brackets must be fully qualified"
7255 );
7256 }
7257
7258 let version = if self.parse_keywords(&[VERSION]) {
7259 let version = self.parse_version()?;
7260 Some(version)
7261 } else {
7262 None
7263 };
7264
7265 self.expect_token(&Token::RBracket)?;
7266 Ok(RawItemName::Id(id, name, version))
7267 } else {
7268 Ok(RawItemName::Name(self.parse_item_name()?))
7269 }
7270 }
7271
7272 fn parse_column_name(&mut self) -> Result<ColumnName<Raw>, ParserError> {
7273 let start = self.peek_pos();

Calls 11

IdEnum · 0.85
consume_tokenMethod · 0.80
next_tokenMethod · 0.80
expect_keywordMethod · 0.80
parse_item_nameMethod · 0.80
parse_keywordsMethod · 0.80
expect_tokenMethod · 0.80
NameClass · 0.50
into_innerMethod · 0.45
lenMethod · 0.45
parse_versionMethod · 0.45

Tested by

no test coverage detected