diff --git a/core/trino-main/src/main/java/io/trino/operator/DynamicFilterSourceOperator.java b/core/trino-main/src/main/java/io/trino/operator/DynamicFilterSourceOperator.java index 8fb4b32bdf38..43aa623064fe 100644 --- a/core/trino-main/src/main/java/io/trino/operator/DynamicFilterSourceOperator.java +++ b/core/trino-main/src/main/java/io/trino/operator/DynamicFilterSourceOperator.java @@ -58,8 +58,6 @@ public class DynamicFilterSourceOperator implements Operator { - private static final int EXPECTED_BLOCK_BUILDER_SIZE = 8; - public static class Channel { private final DynamicFilterId filterId; @@ -412,13 +410,14 @@ private ChannelFilter( if (collectMinMax) { minMaxComparison = blockTypeOperators.getComparisonUnorderedLastOperator(type); } - blockBuilder = type.createBlockBuilder(null, EXPECTED_BLOCK_BUILDER_SIZE); + int expectedSize = Math.min(maxDistinctValues, 8192) * 2; + blockBuilder = type.createBlockBuilder(null, expectedSize); valueSet = createUnboundedEqualityTypedSet( type, blockTypeOperators.getEqualOperator(type), blockTypeOperators.getHashCodeOperator(type), blockBuilder, - EXPECTED_BLOCK_BUILDER_SIZE, + expectedSize, format("DynamicFilterSourceOperator_%s_%d", planNodeId, channel.index)); }