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

Method parse_normalize_expr

src/sql-parser/src/parser.rs:1165–1186  ·  view source on GitHub ↗

Parse calls to normalize(), which can take the form: - normalize('string') - normalize('string', NFC) - normalize('string', NFD) - normalize('string', NFKC) - normalize('string', NFKD)

(&mut self)

Source from the content-addressed store, hash-verified

1163 /// - normalize('string', NFKC)
1164 /// - normalize('string', NFKD)
1165 fn parse_normalize_expr(&mut self) -> Result<Expr<Raw>, ParserError> {
1166 self.expect_token(&Token::LParen)?;
1167 let expr = self.parse_expr()?;
1168
1169 let args = if self.consume_token(&Token::Comma) {
1170 let form = self
1171 .expect_one_of_keywords(&[NFC, NFD, NFKC, NFKD])?
1172 .as_str();
1173 vec![expr, Expr::Value(Value::String(form.to_owned()))]
1174 } else {
1175 vec![expr, Expr::Value(Value::String("NFC".to_owned()))]
1176 };
1177
1178 self.expect_token(&Token::RParen)?;
1179 Ok(Expr::Function(Function {
1180 name: RawItemName::Name(UnresolvedItemName::unqualified(ident!("normalize"))),
1181 args: FunctionArgs::args(args),
1182 filter: None,
1183 over: None,
1184 distinct: false,
1185 }))
1186 }
1187
1188 /// Parse an INTERVAL literal.
1189 ///

Callers 1

parse_prefixMethod · 0.80

Calls 7

FunctionClass · 0.85
expect_tokenMethod · 0.80
parse_exprMethod · 0.80
consume_tokenMethod · 0.80
NameClass · 0.50
as_strMethod · 0.45

Tested by

no test coverage detected