diff --git a/crates/nu-command/src/filters/default.rs b/crates/nu-command/src/filters/default.rs index 1db487cd99..cc6345883e 100644 --- a/crates/nu-command/src/filters/default.rs +++ b/crates/nu-command/src/filters/default.rs @@ -67,9 +67,11 @@ fn default( let mut found = false; while idx < cols.len() { - if cols[idx] == column.item && matches!(vals[idx], Value::Nothing { .. }) { - vals[idx] = value.clone(); + if cols[idx] == column.item { found = true; + if matches!(vals[idx], Value::Nothing { .. }) { + vals[idx] = value.clone(); + } } idx += 1; } diff --git a/src/tests/test_table_operations.rs b/src/tests/test_table_operations.rs index cd41ace493..ffdbdc0766 100644 --- a/src/tests/test_table_operations.rs +++ b/src/tests/test_table_operations.rs @@ -232,6 +232,14 @@ fn length_for_rows() -> TestResult { run_test(r#"[[name,age,grade]; [bill,20,a] [a b c]] | length"#, "2") } +#[test] +fn length_defaulted_columns() -> TestResult { + run_test( + r#"echo [[name, age]; [test, 10]] | default age 11 | get 0 | columns | length"#, + "2", + ) +} + #[test] fn get_fuzzy() -> TestResult { run_test("(ls | get -i foo) == $nothing", "true")