diff --git a/lib/trino-filesystem-s3/src/main/java/io/trino/filesystem/s3/S3InputStream.java b/lib/trino-filesystem-s3/src/main/java/io/trino/filesystem/s3/S3InputStream.java index 6bcbc6e128ee..0122cf1093a8 100644 --- a/lib/trino-filesystem-s3/src/main/java/io/trino/filesystem/s3/S3InputStream.java +++ b/lib/trino-filesystem-s3/src/main/java/io/trino/filesystem/s3/S3InputStream.java @@ -29,6 +29,7 @@ import java.io.IOException; import java.io.InterruptedIOException; +import static java.lang.Math.clamp; import static java.lang.Math.max; import static java.util.Objects.requireNonNull; @@ -126,14 +127,10 @@ public long skip(long n) throws IOException { ensureOpen(); - seekStream(false); - return reconnectStreamIfNecessary(() -> { - long skip = doSkip(n); - streamPosition += skip; - nextReadPosition += skip; - return skip; - }); + long skipSize = clamp(n, 0, length != null ? length - nextReadPosition : Integer.MAX_VALUE); + nextReadPosition += skipSize; + return skipSize; } @Override