chore: PR feedback

pull/24376/head
Stuart Carnie 2023-05-17 09:24:55 +10:00
parent d7ab96c879
commit 90328e5d0f
No known key found for this signature in database
GPG Key ID: 848D9C9718D78B4F
2 changed files with 6 additions and 5 deletions

View File

@ -301,10 +301,9 @@ impl<'a> TypeEvaluator<'a> {
VarRefDataType::Float | VarRefDataType::Integer | VarRefDataType::Unsigned,
)
| None => Ok(Some(VarRefDataType::Float)),
Some(arg0) if self.call_type_is_strict => error::query(format!(
Some(arg0) => error::query(format!(
"invalid argument type for {name}: expected a number, got {arg0}"
)),
_ => Ok(None),
}
}

View File

@ -42,8 +42,8 @@ pub(crate) fn field_name(f: &influxdb_influxql_parser::select::Field) -> String
/// of rows.
pub(super) fn field_by_name<'a>(fields: &'a [Field], name: &str) -> Option<&'a Field> {
fields.iter().find(|f| f.name == name || match &f.expr {
Expr::Call(Call{ name: func_name, args }) if (func_name.eq_ignore_ascii_case("top")
|| func_name.eq_ignore_ascii_case("bottom"))
Expr::Call(Call{ name: func_name, args }) if (func_name == "top"
|| func_name == "bottom")
&& args.len() > 2 =>
args[1..].iter().any(|f| matches!(f, Expr::VarRef(VarRef{ name: field_name, .. }) if field_name.as_str() == name)),
_ => false,
@ -162,7 +162,9 @@ mod test {
"bottom(idle, usage, 5) AS bottom"
);
let stmt = parse_fields(vec!["top(idle, usage, 5) as foo", "usage"]);
// TOP is in uppercase, to ensure we can expect the function name to be
// uniformly lowercase.
let stmt = parse_fields(vec!["TOP(idle, usage, 5) as foo", "usage"]);
assert_eq!(
format!("{}", field_by_name(&stmt, "usage").unwrap()),
"top(idle, usage, 5) AS foo"