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

Method parse_csr_connection_avro

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

Source from the content-addressed store, hash-verified

2395 }
2396
2397 fn parse_csr_connection_avro(&mut self) -> Result<CsrConnectionAvro<Raw>, ParserError> {
2398 let connection = self.parse_csr_connection_reference()?;
2399 let seed = if self.parse_keyword(SEED) {
2400 let key_schema = if self.parse_keyword(KEY) {
2401 self.expect_keyword(SCHEMA)?;
2402 Some(self.parse_literal_string()?)
2403 } else {
2404 None
2405 };
2406
2407 // Parse KEY REFERENCES if present (only valid if we have a key schema)
2408 let key_reference_schemas =
2409 if key_schema.is_some() && self.parse_keywords(&[KEY, REFERENCES]) {
2410 self.expect_token(&Token::LParen)?;
2411 let refs = self.parse_comma_separated(|p| p.parse_literal_string())?;
2412 self.expect_token(&Token::RParen)?;
2413 refs
2414 } else {
2415 vec![]
2416 };
2417
2418 self.expect_keywords(&[VALUE, SCHEMA])?;
2419 let value_schema = self.parse_literal_string()?;
2420
2421 // Parse VALUE REFERENCES if present
2422 let value_reference_schemas = if self.parse_keywords(&[VALUE, REFERENCES]) {
2423 self.expect_token(&Token::LParen)?;
2424 let refs = self.parse_comma_separated(|p| p.parse_literal_string())?;
2425 self.expect_token(&Token::RParen)?;
2426 refs
2427 } else {
2428 vec![]
2429 };
2430
2431 Some(CsrSeedAvro {
2432 key_schema,
2433 value_schema,
2434 key_reference_schemas,
2435 value_reference_schemas,
2436 })
2437 } else {
2438 None
2439 };
2440
2441 let mut parse_schema_strategy =
2442 |kws| -> Result<Option<ReaderSchemaSelectionStrategy>, ParserError> {
2443 if self.parse_keywords(kws) {
2444 Ok(Some(
2445 match self.expect_one_of_keywords(&[ID, LATEST, INLINE])? {
2446 ID => {
2447 let pos = self.index;
2448 ReaderSchemaSelectionStrategy::ById(
2449 self.parse_literal_int()?.try_into().map_err(|_| {
2450 ParserError::new(pos, "Expected a 32-bit integer")
2451 })?,
2452 )
2453 }
2454 LATEST => ReaderSchemaSelectionStrategy::Latest,

Callers 1

parse_avro_schemaMethod · 0.80

Calls 12

parse_keywordMethod · 0.80
expect_keywordMethod · 0.80
parse_literal_stringMethod · 0.80
is_someMethod · 0.80
parse_keywordsMethod · 0.80
expect_tokenMethod · 0.80
parse_comma_separatedMethod · 0.80
expect_keywordsMethod · 0.80
parse_literal_intMethod · 0.80
try_intoMethod · 0.45

Tested by

no test coverage detected