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

Method parse_value

src/sql-parser/src/parser.rs:6828–6861  ·  view source on GitHub ↗

Parse a literal value (numbers, strings, date/time, booleans)

(&mut self)

Source from the content-addressed store, hash-verified

6826
6827 /// Parse a literal value (numbers, strings, date/time, booleans)
6828 fn parse_value(&mut self) -> Result<Value, ParserError> {
6829 match self.next_token() {
6830 Some(t) => match t {
6831 Token::Keyword(TRUE) => Ok(Value::Boolean(true)),
6832 Token::Keyword(FALSE) => Ok(Value::Boolean(false)),
6833 Token::Keyword(NULL) => Ok(Value::Null),
6834 Token::Keyword(INTERVAL) => Ok(Value::Interval(self.parse_interval_value()?)),
6835 Token::Keyword(kw) => {
6836 parser_err!(
6837 self,
6838 self.peek_prev_pos(),
6839 format!("No value parser for keyword {}", kw)
6840 )
6841 }
6842 Token::Op(ref op) if op == "-" => match self.next_token() {
6843 Some(Token::Number(n)) => Ok(Value::Number(format!("-{}", n))),
6844 other => self.expected(self.peek_prev_pos(), "literal int", other),
6845 },
6846 Token::Number(ref n) => Ok(Value::Number(n.to_string())),
6847 Token::String(ref s) => Ok(Value::String(s.to_string())),
6848 Token::HexString(ref s) => Ok(Value::HexString(s.to_string())),
6849 _ => parser_err!(
6850 self,
6851 self.peek_prev_pos(),
6852 format!("Unsupported value: {:?}", t)
6853 ),
6854 },
6855 None => parser_err!(
6856 self,
6857 self.peek_prev_pos(),
6858 "Expecting a value, but found EOF"
6859 ),
6860 }
6861 }
6862
6863 fn parse_array(&mut self) -> Result<Expr<Raw>, ParserError> {
6864 if self.consume_token(&Token::LParen) {

Callers 5

parse_prefixMethod · 0.80
parse_retain_historyMethod · 0.80
parse_number_valueMethod · 0.80
try_parse_u64Method · 0.80

Calls 8

StringClass · 0.85
next_tokenMethod · 0.80
parse_interval_valueMethod · 0.80
expectedMethod · 0.80
peek_prev_posMethod · 0.80
BooleanClass · 0.50
IntervalClass · 0.50
to_stringMethod · 0.45

Tested by

no test coverage detected