diff --git a/presto-main/src/main/java/com/facebook/presto/type/DecimalInequalityOperators.java b/presto-main/src/main/java/com/facebook/presto/type/DecimalInequalityOperators.java index 2fe144687c410..4bfe0d641328e 100644 --- a/presto-main/src/main/java/com/facebook/presto/type/DecimalInequalityOperators.java +++ b/presto-main/src/main/java/com/facebook/presto/type/DecimalInequalityOperators.java @@ -202,8 +202,8 @@ public static boolean distinctBlockPositionLongLong(Block left, int leftPosition long leftLow = left.getLong(leftPosition, 0); long leftHigh = left.getLong(leftPosition, SIZE_OF_LONG); - long rightLow = left.getLong(rightPosition, 0); - long rightHigh = left.getLong(rightPosition, SIZE_OF_LONG); + long rightLow = right.getLong(rightPosition, 0); + long rightHigh = right.getLong(rightPosition, SIZE_OF_LONG); return UnscaledDecimal128Arithmetic.compare(leftLow, leftHigh, rightLow, rightHigh) != 0; } diff --git a/presto-main/src/test/java/com/facebook/presto/block/TestInt128ArrayBlock.java b/presto-main/src/test/java/com/facebook/presto/block/TestInt128ArrayBlock.java index ac3e35e277289..a87c02f7f7b07 100644 --- a/presto-main/src/test/java/com/facebook/presto/block/TestInt128ArrayBlock.java +++ b/presto-main/src/test/java/com/facebook/presto/block/TestInt128ArrayBlock.java @@ -13,6 +13,7 @@ */ package com.facebook.presto.block; +import com.facebook.presto.spi.block.Block; import com.facebook.presto.spi.block.BlockBuilder; import com.facebook.presto.spi.block.Int128ArrayBlock; import com.facebook.presto.spi.block.Int128ArrayBlockBuilder; @@ -23,7 +24,9 @@ import java.util.Optional; import static com.facebook.presto.spi.block.Int128ArrayBlock.INT128_BYTES; +import static com.facebook.presto.type.DecimalInequalityOperators.distinctBlockPositionLongLong; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; public class TestInt128ArrayBlock @@ -82,6 +85,16 @@ public void testCompactBlock() testIncompactBlock(new Int128ArrayBlock(valueIsNull.length - 2, Optional.of(valueIsNull), longArray)); } + @Test + public void testIsDistinctFrom() + { + Block left = new Int128ArrayBlock(1, Optional.empty(), new long[]{112L, 0L}); + Block right = new Int128ArrayBlock(1, Optional.empty(), new long[]{185L, 0L}); + + assertFalse(distinctBlockPositionLongLong(left, 0, left, 0)); + assertTrue(distinctBlockPositionLongLong(left, 0, right, 0)); + } + private void assertFixedWithValues(Slice[] expectedValues) { BlockBuilder blockBuilder = createBlockBuilderWithValues(expectedValues);