Fix column count to not break on empty tables (#2374)

This commit is contained in:
Joseph T. Lyons
2020-08-18 22:16:35 -04:00
committed by GitHub
parent 43e061f8c6
commit 6126209f57
2 changed files with 29 additions and 14 deletions

View File

@ -39,23 +39,26 @@ impl WholeStreamCommand for Count {
let (CountArgs { column }, input) = args.process(&registry).await?;
let rows: Vec<Value> = input.collect().await;
if column {
if let UntaggedValue::Row(dict) = &rows[0].value {
return Ok(OutputStream::one(
UntaggedValue::int(dict.length()).into_value(tag),
));
let count = if column {
if rows.is_empty() {
0
} else {
return Err(ShellError::labeled_error(
"Cannot obtain column count",
"cannot obtain column count",
tag,
));
match &rows[0].value {
UntaggedValue::Row(dictionary) => dictionary.length(),
_ => {
return Err(ShellError::labeled_error(
"Cannot obtain column count",
"cannot obtain column count",
tag,
));
}
}
}
}
} else {
rows.len()
};
Ok(OutputStream::one(
UntaggedValue::int(rows.len()).into_value(tag),
))
Ok(OutputStream::one(UntaggedValue::int(count).into_value(tag)))
}
fn examples(&self) -> Vec<Example> {