diff --git a/core/trino-spi/src/main/java/io/trino/spi/block/DictionaryBlock.java b/core/trino-spi/src/main/java/io/trino/spi/block/DictionaryBlock.java index 69c3902fd5e4..611eb63d5f89 100644 --- a/core/trino-spi/src/main/java/io/trino/spi/block/DictionaryBlock.java +++ b/core/trino-spi/src/main/java/io/trino/spi/block/DictionaryBlock.java @@ -420,6 +420,9 @@ public Block getRegion(int positionOffset, int length) public Block copyRegion(int position, int length) { checkValidRegion(positionCount, position, length); + if (length == 0) { + return dictionary.copyRegion(0, 0); + } // Avoid repeated volatile reads to the uniqueIds field int uniqueIds = this.uniqueIds; if (length <= 1 || (uniqueIds == dictionary.getPositionCount() && isSequentialIds)) {