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

Function parse_literal_ok

src/expr-parser/src/parser.rs:1033–1067  ·  view source on GitHub ↗
(input: ParseStream)

Source from the content-addressed store, hash-verified

1031 }
1032
1033 fn parse_literal_ok(input: ParseStream) -> Result {
1034 let mut row = Row::default();
1035 let mut packer = row.packer();
1036
1037 let typ = if input.eat(kw::null) {
1038 packer.push(Datum::Null);
1039 input.parse::<syn::Token![::]>()?;
1040 ReprColumnType {
1041 scalar_type: analyses::parse_scalar_type(input)?,
1042 nullable: true,
1043 }
1044 } else {
1045 match input.parse::<syn::Lit>()? {
1046 syn::Lit::Str(l) => {
1047 packer.push(Datum::from(l.value().as_str()));
1048 Ok(ReprColumnType::from(&String::as_column_type()))
1049 }
1050 syn::Lit::Int(l) => {
1051 packer.push(Datum::from(l.base10_parse::<i64>()?));
1052 Ok(ReprColumnType::from(&i64::as_column_type()))
1053 }
1054 syn::Lit::Float(l) => {
1055 packer.push(Datum::from(l.base10_parse::<f64>()?));
1056 Ok(ReprColumnType::from(&f64::as_column_type()))
1057 }
1058 syn::Lit::Bool(l) => {
1059 packer.push(Datum::from(l.value));
1060 Ok(ReprColumnType::from(&bool::as_column_type()))
1061 }
1062 _ => Err(Error::new(input.span(), "cannot parse literal")),
1063 }?
1064 };
1065
1066 Ok(MirScalarExpr::Literal(Ok(row), typ))
1067 }
1068 fn parse_literal_err(input: ParseStream) -> Result {
1069 input.parse::<kw::error>()?;
1070 let mut msg = {

Callers 1

parse_operandFunction · 0.85

Calls 7

parse_scalar_typeFunction · 0.85
packerMethod · 0.80
eatMethod · 0.80
spanMethod · 0.80
pushMethod · 0.45
as_strMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected