From b185c3cb6fb6418e98f636e58b3ac78a58a16a10 Mon Sep 17 00:00:00 2001 From: Ben Kirwin Date: Mon, 23 Oct 2023 12:52:45 -0400 Subject: [PATCH] [persist] Fix and test limit-offset query handling (#22592) It looks like the test didn't cover this properly... updated, sorry about that! --- src/adapter/src/coord/peek.rs | 3 ++- test/sqllogictest/persist-fast-path.slt | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/adapter/src/coord/peek.rs b/src/adapter/src/coord/peek.rs index 50786e555f4c1..6733224a01a37 100644 --- a/src/adapter/src/coord/peek.rs +++ b/src/adapter/src/coord/peek.rs @@ -501,7 +501,8 @@ impl crate::coord::Coordinator { let metrics = self.metrics.clone(); let handle: JoinHandle> = mz_ore::task::spawn(|| "persist::peek", async move { - let mut limit_remaining = finishing.limit.unwrap_or(usize::MAX); + let mut limit_remaining = + finishing.limit.unwrap_or(usize::MAX) + finishing.offset; // Re-used state for processing and building rows. let mut accum = vec![]; diff --git a/test/sqllogictest/persist-fast-path.slt b/test/sqllogictest/persist-fast-path.slt index 0d16079b3910d..8a5a160c5b8c1 100644 --- a/test/sqllogictest/persist-fast-path.slt +++ b/test/sqllogictest/persist-fast-path.slt @@ -83,7 +83,7 @@ SELECT value from numbers LIMIT 20; 10 query T -SELECT value from numbers LIMIT 20 OFFSET 6; +SELECT value from numbers LIMIT 10 OFFSET 6; ---- 4 5 @@ -164,3 +164,23 @@ Used Indexes: - materialize.public.numbers_primary_idx (fast path limit) EOF + +# Issue 22577 +statement ok +CREATE TABLE t1 (f1 INTEGER); + +statement ok +INSERT INTO t1 VALUES (2), (2); + +statement ok +INSERT INTO t1 VALUES (1); + +query T +SELECT * FROM t1 LIMIT 1 OFFSET 0; +---- +1 + +query T +SELECT * FROM t1 LIMIT 1 OFFSET 1; +---- +2