From 8352a09117f9d0f40204ca1fc4b191d800d1cb77 Mon Sep 17 00:00:00 2001 From: zc he Date: Sat, 10 May 2025 16:28:18 +0800 Subject: [PATCH] fix: inefficient select with large row number (#15730) Fixes #15716 # Description Returns None early if the input iterator is depleted. # User-Facing Changes Should be none # Tests + Formatting +1 # After Submitting --- crates/nu-command/src/filters/select.rs | 2 +- crates/nu-command/tests/commands/select.rs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/crates/nu-command/src/filters/select.rs b/crates/nu-command/src/filters/select.rs index b324a7e771..dec54a4968 100644 --- a/crates/nu-command/src/filters/select.rs +++ b/crates/nu-command/src/filters/select.rs @@ -310,7 +310,7 @@ impl Iterator for NthIterator { return self.input.next(); } else { self.current += 1; - let _ = self.input.next(); + let _ = self.input.next()?; continue; } } else { diff --git a/crates/nu-command/tests/commands/select.rs b/crates/nu-command/tests/commands/select.rs index 534943767f..0b949792b8 100644 --- a/crates/nu-command/tests/commands/select.rs +++ b/crates/nu-command/tests/commands/select.rs @@ -134,6 +134,12 @@ fn selects_a_row() { }); } +#[test] +fn selects_large_row_number() { + let actual = nu!("seq 1 5 | select 9999999999 | to nuon"); + assert_eq!(actual.out, "[]"); +} + #[test] fn selects_many_rows() { Playground::setup("select_test_2", |dirs, sandbox| {