Skip to content

Commit 0cac3ca

Browse files
committed
Do not inline tail, small pages if inilining is disabled
1 parent 8bc3a26 commit 0cac3ca

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

core/trino-main/src/main/java/io/trino/operator/OutputSpoolingOperatorFactory.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
import static io.trino.server.protocol.spooling.SpooledMetadataBlockSerde.serialize;
6363
import static io.trino.server.protocol.spooling.SpoolingSessionProperties.getInitialSegmentSize;
6464
import static io.trino.server.protocol.spooling.SpoolingSessionProperties.getMaxSegmentSize;
65+
import static io.trino.server.protocol.spooling.SpoolingSessionProperties.isInliningEnabled;
6566
import static java.util.Objects.requireNonNull;
6667
import static java.util.concurrent.TimeUnit.MILLISECONDS;
6768
import static java.util.concurrent.TimeUnit.NANOSECONDS;
@@ -153,6 +154,7 @@ static class OutputSpoolingOperator
153154
private final AtomicLong inlinedSegmentsCount = new AtomicLong();
154155
private final long maxSegmentSize;
155156
private final long minSegmentSize;
157+
private final boolean inliningEnabled;
156158

157159
enum State
158160
{
@@ -187,6 +189,7 @@ public OutputSpoolingOperator(OperatorContext operatorContext, QueryDataEncoder
187189

188190
this.minSegmentSize = getInitialSegmentSize(operatorContext.getSession()).toBytes();
189191
this.maxSegmentSize = getMaxSegmentSize(operatorContext.getSession()).toBytes();
192+
this.inliningEnabled = isInliningEnabled(operatorContext.getSession());
190193
this.aggregatedMemoryContext = operatorContext.newAggregateUserMemoryContext();
191194
this.queryDataEncoder = requireNonNull(queryDataEncoder, "queryDataEncoder is null");
192195
this.spoolingManager = requireNonNull(spoolingManager, "spoolingManager is null");
@@ -282,7 +285,7 @@ private Page spoolOrInline(boolean lastPage)
282285
long rows = reduce(partition, Page::getPositionCount);
283286
long size = reduce(partition, Page::getSizeInBytes);
284287

285-
if (lastPage && isLastPartition && size < SPOOLING_THRESHOLD) {
288+
if (lastPage && inliningEnabled && isLastPartition && size < SPOOLING_THRESHOLD) {
286289
// If the last partition is small enough, inline it to save the overhead of spooling
287290
spooledMetadataBuilder.addAll(inline(partition));
288291
continue;

0 commit comments

Comments
 (0)