diff --git a/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseClient.java b/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseClient.java index fce660719beff..87eb7606cd841 100755 --- a/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseClient.java +++ b/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseClient.java @@ -854,10 +854,10 @@ private String toWriteMapping(Type type) if (type == BIGINT) { return "Int64"; } - if (type == REAL) { + if (type.equals(REAL)) { return "Float32"; } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return "Float64"; } if (type instanceof DecimalType) { diff --git a/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseColumnHandle.java b/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseColumnHandle.java index fb4d7148cb891..d0c616554f6cc 100755 --- a/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseColumnHandle.java +++ b/presto-clickhouse/src/main/java/com/facebook/presto/plugin/clickhouse/ClickHouseColumnHandle.java @@ -195,10 +195,10 @@ public static ClickHouseTypeHandle toMappingDefaultJdbcHandle(Type type) if (type == BIGINT) { return new ClickHouseTypeHandle(Types.BIGINT, Optional.of("bigint"), 8, 0, Optional.empty(), Optional.empty()); } - if (type == REAL) { + if (type.equals(REAL)) { return new ClickHouseTypeHandle(Types.REAL, Optional.of("real"), 16, 4, Optional.empty(), Optional.empty()); } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return new ClickHouseTypeHandle(Types.DOUBLE, Optional.of("double precision"), 32, 4, Optional.empty(), Optional.empty()); } if (type instanceof CharType || type instanceof VarcharType) { diff --git a/presto-common/src/main/java/com/facebook/presto/common/predicate/TupleDomainFilterUtils.java b/presto-common/src/main/java/com/facebook/presto/common/predicate/TupleDomainFilterUtils.java index 526eb64057f88..08c012bb5b684 100644 --- a/presto-common/src/main/java/com/facebook/presto/common/predicate/TupleDomainFilterUtils.java +++ b/presto-common/src/main/java/com/facebook/presto/common/predicate/TupleDomainFilterUtils.java @@ -148,7 +148,7 @@ public static TupleDomainFilter toFilter(Domain domain) /** * Returns true is ranges represent != or NOT IN filter for double, float or string column. - * + *

* The logic is to return true if ranges are next to each other, but don't include the touch value. */ private static boolean isNotIn(List ranges) @@ -161,7 +161,7 @@ private static boolean isNotIn(List ranges) Marker previousHigh = firstRange.getHigh(); Type type = previousHigh.getType(); - if (type != DOUBLE && type != REAL && !isVarcharType(type) && !(type instanceof CharType)) { + if (!type.equals(DOUBLE) && !type.equals(REAL) && !isVarcharType(type) && !(type instanceof CharType)) { return false; } @@ -219,10 +219,10 @@ private static TupleDomainFilter createRangeFilter(Type type, Range range, boole checkArgument(range.isSingleValue(), "Unexpected range of boolean values"); return BooleanValue.of(((Boolean) range.getSingleValue()).booleanValue(), nullAllowed); } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return doubleRangeToFilter(range, nullAllowed); } - if (type == REAL) { + if (type.equals(REAL)) { return floatRangeToFilter(range, nullAllowed); } if (type instanceof DecimalType) { diff --git a/presto-common/src/main/java/com/facebook/presto/common/type/DoubleType.java b/presto-common/src/main/java/com/facebook/presto/common/type/DoubleType.java index 7c36919d7d537..7f49c1f58680a 100644 --- a/presto-common/src/main/java/com/facebook/presto/common/type/DoubleType.java +++ b/presto-common/src/main/java/com/facebook/presto/common/type/DoubleType.java @@ -29,11 +29,15 @@ public final class DoubleType extends AbstractPrimitiveType implements FixedWidthType { - public static final DoubleType DOUBLE = new DoubleType(); + public static final DoubleType DOUBLE = new DoubleType(true); + public static final DoubleType OLD_NAN_DOUBLE = new DoubleType(false); - private DoubleType() + private final boolean useNewNanDefintion; + + private DoubleType(boolean useNewNanDefintion) { super(parseTypeSignature(StandardTypes.DOUBLE), double.class); + this.useNewNanDefintion = useNewNanDefintion; } @Override @@ -149,7 +153,7 @@ public final BlockBuilder createFixedSizeBlockBuilder(int positionCount) @SuppressWarnings("EqualsWhichDoesntCheckParameterClass") public boolean equals(Object other) { - return other == DOUBLE; + return other instanceof DoubleType; } @Override diff --git a/presto-common/src/main/java/com/facebook/presto/common/type/RealType.java b/presto-common/src/main/java/com/facebook/presto/common/type/RealType.java index 118caf4c6e67e..3334994ce8bb6 100644 --- a/presto-common/src/main/java/com/facebook/presto/common/type/RealType.java +++ b/presto-common/src/main/java/com/facebook/presto/common/type/RealType.java @@ -27,11 +27,14 @@ public final class RealType extends AbstractIntType { - public static final RealType REAL = new RealType(); + public static final RealType REAL = new RealType(true); + public static final RealType OLD_NAN_REAL = new RealType(false); + private final boolean useNewNanDefinition; - private RealType() + private RealType(boolean useNewNanDefinition) { super(parseTypeSignature(StandardTypes.REAL)); + this.useNewNanDefinition = useNewNanDefinition; } @Override @@ -86,7 +89,7 @@ public void writeLong(BlockBuilder blockBuilder, long value) @Override public boolean equals(Object other) { - return other == REAL; + return other instanceof RealType; } @Override diff --git a/presto-common/src/main/java/com/facebook/presto/common/type/TypeUtils.java b/presto-common/src/main/java/com/facebook/presto/common/type/TypeUtils.java index 1de251ac68842..1d82beaa51ed5 100644 --- a/presto-common/src/main/java/com/facebook/presto/common/type/TypeUtils.java +++ b/presto-common/src/main/java/com/facebook/presto/common/type/TypeUtils.java @@ -175,10 +175,10 @@ public static boolean isFloatingPointNaN(Type type, Object value) requireNonNull(type, "type is null"); requireNonNull(value, "value is null"); - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return Double.isNaN((double) value); } - if (type == REAL) { + if (type.equals(REAL)) { return Float.isNaN(intBitsToFloat(toIntExact((long) value))); } return false; diff --git a/presto-common/src/test/java/com/facebook/presto/common/block/TestBlockRetainedSizeBreakdown.java b/presto-common/src/test/java/com/facebook/presto/common/block/TestBlockRetainedSizeBreakdown.java index 7de089c9cf440..0a26d7a858c35 100644 --- a/presto-common/src/test/java/com/facebook/presto/common/block/TestBlockRetainedSizeBreakdown.java +++ b/presto-common/src/test/java/com/facebook/presto/common/block/TestBlockRetainedSizeBreakdown.java @@ -176,7 +176,7 @@ private static Object castIntegerToObject(int value, Type type) if (type == VARCHAR) { return String.valueOf(value); } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return (double) value; } throw new UnsupportedOperationException(); diff --git a/presto-druid/src/main/java/com/facebook/presto/druid/column/ColumnReader.java b/presto-druid/src/main/java/com/facebook/presto/druid/column/ColumnReader.java index 5ff07f5fbae0f..81dc3c5a76fb5 100644 --- a/presto-druid/src/main/java/com/facebook/presto/druid/column/ColumnReader.java +++ b/presto-druid/src/main/java/com/facebook/presto/druid/column/ColumnReader.java @@ -35,13 +35,13 @@ static ColumnReader createColumnReader(Type type, ColumnValueSelector valueSelec if (type == VARCHAR) { return new StringColumnReader(valueSelector); } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return new DoubleColumnReader(valueSelector); } if (type == BIGINT) { return new LongColumnReader(valueSelector); } - if (type == REAL) { + if (type.equals(REAL)) { return new FloatColumnReader(valueSelector); } if (type == TIMESTAMP) { diff --git a/presto-druid/src/main/java/com/facebook/presto/druid/column/DoubleColumnReader.java b/presto-druid/src/main/java/com/facebook/presto/druid/column/DoubleColumnReader.java index 0b4fdc4ea6ad0..0cb114fd39458 100644 --- a/presto-druid/src/main/java/com/facebook/presto/druid/column/DoubleColumnReader.java +++ b/presto-druid/src/main/java/com/facebook/presto/druid/column/DoubleColumnReader.java @@ -35,7 +35,7 @@ public DoubleColumnReader(ColumnValueSelector valueSelector) @Override public Block readBlock(Type type, int batchSize) { - checkArgument(type == DOUBLE); + checkArgument(type.equals(DOUBLE)); BlockBuilder builder = type.createBlockBuilder(null, batchSize); for (int i = 0; i < batchSize; i++) { type.writeDouble(builder, valueSelector.getDouble()); diff --git a/presto-druid/src/main/java/com/facebook/presto/druid/column/FloatColumnReader.java b/presto-druid/src/main/java/com/facebook/presto/druid/column/FloatColumnReader.java index 48d3b393e70c1..b90be49ca3e27 100644 --- a/presto-druid/src/main/java/com/facebook/presto/druid/column/FloatColumnReader.java +++ b/presto-druid/src/main/java/com/facebook/presto/druid/column/FloatColumnReader.java @@ -36,7 +36,7 @@ public FloatColumnReader(ColumnValueSelector valueSelector) @Override public Block readBlock(Type type, int batchSize) { - checkArgument(type == REAL); + checkArgument(type.equals(REAL)); BlockBuilder builder = type.createBlockBuilder(null, batchSize); for (int i = 0; i < batchSize; i++) { type.writeLong(builder, floatToRawIntBits(valueSelector.getFloat())); diff --git a/presto-elasticsearch/src/test/java/com/facebook/presto/elasticsearch/ElasticsearchLoader.java b/presto-elasticsearch/src/test/java/com/facebook/presto/elasticsearch/ElasticsearchLoader.java index 80545c6488a9b..f8ed7dac0d6eb 100644 --- a/presto-elasticsearch/src/test/java/com/facebook/presto/elasticsearch/ElasticsearchLoader.java +++ b/presto-elasticsearch/src/test/java/com/facebook/presto/elasticsearch/ElasticsearchLoader.java @@ -138,7 +138,7 @@ private Object convertValue(Object value, Type type) if (type == INTEGER) { return ((Number) value).intValue(); } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return ((Number) value).doubleValue(); } throw new IllegalArgumentException("Unhandled type: " + type); diff --git a/presto-hive-function-namespace/src/test/java/com/facebook/presto/hive/functions/AbstractTestHiveFunctions.java b/presto-hive-function-namespace/src/test/java/com/facebook/presto/hive/functions/AbstractTestHiveFunctions.java index fbaa177ca7718..a9ec89406e4dd 100644 --- a/presto-hive-function-namespace/src/test/java/com/facebook/presto/hive/functions/AbstractTestHiveFunctions.java +++ b/presto-hive-function-namespace/src/test/java/com/facebook/presto/hive/functions/AbstractTestHiveFunctions.java @@ -108,7 +108,7 @@ public void assertQuery(@Language("SQL") String sql, Column... cols) for (int j = 0; j < numColumns; j++) { Object actual = rows.get(i).getField(j); Object expected = cols[j].values[i]; - if (cols[j].type == DOUBLE) { + if (cols[j].type.equals(DOUBLE)) { assertEquals(((Number) actual).doubleValue(), ((double) expected), 0.000001); } else { diff --git a/presto-hive-function-namespace/src/test/java/com/facebook/presto/hive/functions/TestHiveAggregationFunctions.java b/presto-hive-function-namespace/src/test/java/com/facebook/presto/hive/functions/TestHiveAggregationFunctions.java index edf1a2091bbb2..03294c4c98d2d 100644 --- a/presto-hive-function-namespace/src/test/java/com/facebook/presto/hive/functions/TestHiveAggregationFunctions.java +++ b/presto-hive-function-namespace/src/test/java/com/facebook/presto/hive/functions/TestHiveAggregationFunctions.java @@ -128,7 +128,7 @@ public void check(@Language("SQL") String query, Column... expectedColumns) for (int j = 0; j < numColumns; j++) { Object actual = rows.get(i).getField(j); Object expected = expectedColumns[j].values[i]; - if (expectedColumns[j].type == DOUBLE) { + if (expectedColumns[j].type.equals(DOUBLE)) { assertEquals(((Number) actual).doubleValue(), ((double) expected), 0.000001); } else { diff --git a/presto-hive/src/main/java/com/facebook/presto/hive/FilteringPageSource.java b/presto-hive/src/main/java/com/facebook/presto/hive/FilteringPageSource.java index 12006fb329d3d..07f47603e0523 100644 --- a/presto-hive/src/main/java/com/facebook/presto/hive/FilteringPageSource.java +++ b/presto-hive/src/main/java/com/facebook/presto/hive/FilteringPageSource.java @@ -246,11 +246,11 @@ private static boolean testNonNullPosition(Block block, int position, Type type, return filter.testBoolean(type.getBoolean(block, position)); } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return filter.testDouble(longBitsToDouble(block.getLong(position))); } - if (type == REAL) { + if (type.equals(REAL)) { return filter.testFloat(intBitsToFloat(block.getInt(position))); } diff --git a/presto-kafka/src/main/java/com/facebook/presto/kafka/encoder/AbstractRowEncoder.java b/presto-kafka/src/main/java/com/facebook/presto/kafka/encoder/AbstractRowEncoder.java index 331b57db5426a..270c349f45a26 100644 --- a/presto-kafka/src/main/java/com/facebook/presto/kafka/encoder/AbstractRowEncoder.java +++ b/presto-kafka/src/main/java/com/facebook/presto/kafka/encoder/AbstractRowEncoder.java @@ -91,10 +91,10 @@ else if (type == SMALLINT) { else if (type == TINYINT) { appendByte(SignedBytes.checkedCast(type.getLong(block, position))); } - else if (type == DOUBLE) { + else if (type.equals(DOUBLE)) { appendDouble(type.getDouble(block, position)); } - else if (type == REAL) { + else if (type.equals(REAL)) { appendFloat(intBitsToFloat(toIntExact(type.getLong(block, position)))); } else if (isVarcharType(type)) { diff --git a/presto-kafka/src/main/java/com/facebook/presto/kafka/encoder/raw/RawRowEncoder.java b/presto-kafka/src/main/java/com/facebook/presto/kafka/encoder/raw/RawRowEncoder.java index 5d67bde135404..8aaec99b15369 100644 --- a/presto-kafka/src/main/java/com/facebook/presto/kafka/encoder/raw/RawRowEncoder.java +++ b/presto-kafka/src/main/java/com/facebook/presto/kafka/encoder/raw/RawRowEncoder.java @@ -196,7 +196,7 @@ else if (columnType == TINYINT) { else if (columnType == BOOLEAN) { checkFieldTypeOneOf(fieldType, columnName, columnType, FieldType.BYTE, FieldType.SHORT, FieldType.INT, FieldType.LONG); } - else if (columnType == DOUBLE) { + else if (columnType.equals(DOUBLE)) { checkFieldTypeOneOf(fieldType, columnName, columnType, FieldType.DOUBLE, FieldType.FLOAT); } else if (isVarcharType(columnType)) { diff --git a/presto-kudu/src/main/java/com/facebook/presto/kudu/TypeHelper.java b/presto-kudu/src/main/java/com/facebook/presto/kudu/TypeHelper.java index 8064da45709de..cccfe3ce4c2a6 100644 --- a/presto-kudu/src/main/java/com/facebook/presto/kudu/TypeHelper.java +++ b/presto-kudu/src/main/java/com/facebook/presto/kudu/TypeHelper.java @@ -65,10 +65,10 @@ else if (type == SmallintType.SMALLINT) { else if (type == TinyintType.TINYINT) { return org.apache.kudu.Type.INT8; } - else if (type == RealType.REAL) { + else if (type.equals(RealType.REAL)) { return org.apache.kudu.Type.FLOAT; } - else if (type == DoubleType.DOUBLE) { + else if (type.equals(DoubleType.DOUBLE)) { return org.apache.kudu.Type.DOUBLE; } else if (type == BooleanType.BOOLEAN) { @@ -146,10 +146,10 @@ else if (type == SmallintType.SMALLINT) { else if (type == TinyintType.TINYINT) { return ((Long) nativeValue).byteValue(); } - else if (type == DoubleType.DOUBLE) { + else if (type.equals(DoubleType.DOUBLE)) { return nativeValue; } - else if (type == RealType.REAL) { + else if (type.equals(RealType.REAL)) { // conversion can result in precision lost return intBitsToFloat(((Long) nativeValue).intValue()); } @@ -191,10 +191,10 @@ else if (type == SmallintType.SMALLINT) { else if (type == TinyintType.TINYINT) { return row.getByte(field); } - else if (type == DoubleType.DOUBLE) { + else if (type.equals(DoubleType.DOUBLE)) { return row.getDouble(field); } - else if (type == RealType.REAL) { + else if (type.equals(RealType.REAL)) { return row.getFloat(field); } else if (type == BooleanType.BOOLEAN) { @@ -229,7 +229,7 @@ else if (type == SmallintType.SMALLINT) { else if (type == TinyintType.TINYINT) { return row.getByte(field); } - else if (type == RealType.REAL) { + else if (type.equals(RealType.REAL)) { return floatToRawIntBits(row.getFloat(field)); } else if (type instanceof DecimalType) { @@ -258,7 +258,7 @@ public static boolean getBoolean(Type type, RowResult row, int field) public static double getDouble(Type type, RowResult row, int field) { - if (type == DoubleType.DOUBLE) { + if (type.equals(DoubleType.DOUBLE)) { return row.getDouble(field); } else { diff --git a/presto-main/src/main/java/com/facebook/presto/metadata/BuiltInTypeAndFunctionNamespaceManager.java b/presto-main/src/main/java/com/facebook/presto/metadata/BuiltInTypeAndFunctionNamespaceManager.java index c9c02abf6cec5..ab87beb5ff99d 100644 --- a/presto-main/src/main/java/com/facebook/presto/metadata/BuiltInTypeAndFunctionNamespaceManager.java +++ b/presto-main/src/main/java/com/facebook/presto/metadata/BuiltInTypeAndFunctionNamespaceManager.java @@ -316,6 +316,7 @@ import static com.facebook.presto.common.type.BooleanType.BOOLEAN; import static com.facebook.presto.common.type.DateType.DATE; import static com.facebook.presto.common.type.DoubleType.DOUBLE; +import static com.facebook.presto.common.type.DoubleType.OLD_NAN_DOUBLE; import static com.facebook.presto.common.type.HyperLogLogType.HYPER_LOG_LOG; import static com.facebook.presto.common.type.IntegerType.INTEGER; import static com.facebook.presto.common.type.JsonType.JSON; @@ -323,6 +324,7 @@ import static com.facebook.presto.common.type.KllSketchParametricType.KLL_SKETCH; import static com.facebook.presto.common.type.P4HyperLogLogType.P4_HYPER_LOG_LOG; import static com.facebook.presto.common.type.QuantileDigestParametricType.QDIGEST; +import static com.facebook.presto.common.type.RealType.OLD_NAN_REAL; import static com.facebook.presto.common.type.RealType.REAL; import static com.facebook.presto.common.type.SmallintType.SMALLINT; import static com.facebook.presto.common.type.TDigestParametricType.TDIGEST; @@ -605,14 +607,14 @@ public BuiltInTypeAndFunctionNamespaceManager( .build(CacheLoader.from(this::instantiateParametricType)); registerBuiltInFunctions(getBuiltInFunctions(featuresConfig)); - registerBuiltInTypes(); + registerBuiltInTypes(featuresConfig); for (Type type : requireNonNull(types, "types is null")) { addType(type); } } - private void registerBuiltInTypes() + private void registerBuiltInTypes(FeaturesConfig featuresConfig) { // always add the built-in types; Presto will not function without these addType(UNKNOWN); @@ -621,8 +623,14 @@ private void registerBuiltInTypes() addType(INTEGER); addType(SMALLINT); addType(TINYINT); - addType(DOUBLE); - addType(REAL); + if(!featuresConfig.getUseNewNanDefinition()) { + addType(OLD_NAN_DOUBLE); + addType(OLD_NAN_REAL); + + } else { + addType(DOUBLE); + addType(REAL); + } addType(VARBINARY); addType(DATE); addType(TIME); diff --git a/presto-main/src/main/java/com/facebook/presto/operator/DynamicFilterSourceOperator.java b/presto-main/src/main/java/com/facebook/presto/operator/DynamicFilterSourceOperator.java index 2cc05aee94f4f..8645258ba7acd 100644 --- a/presto-main/src/main/java/com/facebook/presto/operator/DynamicFilterSourceOperator.java +++ b/presto-main/src/main/java/com/facebook/presto/operator/DynamicFilterSourceOperator.java @@ -191,7 +191,7 @@ private DynamicFilterSourceOperator( for (int channelIndex = 0; channelIndex < channels.size(); ++channelIndex) { Type type = channels.get(channelIndex).getType(); // Skipping DOUBLE and REAL in collectMinMaxValues to avoid dealing with NaN values - if (minMaxCollectionLimit > 0 && type.isOrderable() && type != DOUBLE && type != REAL) { + if (minMaxCollectionLimit > 0 && type.isOrderable() && !type.equals(DOUBLE) && !type.equals(REAL)) { minMaxChannelsBuilder.add(channelIndex); } this.blockBuilders[channelIndex] = type.createBlockBuilder(null, EXPECTED_BLOCK_BUILDER_SIZE); diff --git a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/ExpressionAnalyzer.java b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/ExpressionAnalyzer.java index 2b887077e84ac..40b4b98e8241b 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/analyzer/ExpressionAnalyzer.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/analyzer/ExpressionAnalyzer.java @@ -844,7 +844,7 @@ protected Type visitLongLiteral(LongLiteral node, StackableAstVisitorContext context) { - return setExpressionType(node, DOUBLE); + return setExpressionType(node, functionAndTypeResolver.getType(DOUBLE.getTypeSignature())); } @Override diff --git a/presto-main/src/main/java/com/facebook/presto/sql/relational/SqlToRowExpressionTranslator.java b/presto-main/src/main/java/com/facebook/presto/sql/relational/SqlToRowExpressionTranslator.java index 516266ee99951..31889637c4505 100644 --- a/presto-main/src/main/java/com/facebook/presto/sql/relational/SqlToRowExpressionTranslator.java +++ b/presto-main/src/main/java/com/facebook/presto/sql/relational/SqlToRowExpressionTranslator.java @@ -358,7 +358,7 @@ protected RowExpression visitLongLiteral(LongLiteral node, Context context) @Override protected RowExpression visitDoubleLiteral(DoubleLiteral node, Context context) { - return constant(node.getValue(), DOUBLE); + return constant(node.getValue(), functionAndTypeManager.getType(DOUBLE.getTypeSignature())); } @Override diff --git a/presto-main/src/test/java/com/facebook/presto/block/BlockAssertions.java b/presto-main/src/test/java/com/facebook/presto/block/BlockAssertions.java index 24997174e547d..299c196d96c68 100644 --- a/presto-main/src/test/java/com/facebook/presto/block/BlockAssertions.java +++ b/presto-main/src/test/java/com/facebook/presto/block/BlockAssertions.java @@ -781,7 +781,7 @@ public static Block createRandomBlockForType( else if (type == BIGINT) { block = createRandomLongsBlock(positionCount, primitiveNullRate); } - else if (type == INTEGER || type == REAL) { + else if (type == INTEGER || type.equals(REAL)) { block = createRandomIntsBlock(positionCount, primitiveNullRate); } else if (type == SMALLINT) { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/scalar/BenchmarkJsonToArrayCast.java b/presto-main/src/test/java/com/facebook/presto/operator/scalar/BenchmarkJsonToArrayCast.java index bf1edd7162b4a..5ef9b93f111f7 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/scalar/BenchmarkJsonToArrayCast.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/scalar/BenchmarkJsonToArrayCast.java @@ -151,7 +151,7 @@ private static String generateRandomJsonValue(Type valueType) if (valueType == BIGINT) { return Long.toString(ThreadLocalRandom.current().nextLong()); } - else if (valueType == DOUBLE) { + else if (valueType.equals(DOUBLE)) { return Double.toString(ThreadLocalRandom.current().nextDouble()); } else if (valueType == VARCHAR) { diff --git a/presto-main/src/test/java/com/facebook/presto/operator/scalar/BenchmarkJsonToMapCast.java b/presto-main/src/test/java/com/facebook/presto/operator/scalar/BenchmarkJsonToMapCast.java index dac5dd062d631..9e3712ac72a98 100644 --- a/presto-main/src/test/java/com/facebook/presto/operator/scalar/BenchmarkJsonToMapCast.java +++ b/presto-main/src/test/java/com/facebook/presto/operator/scalar/BenchmarkJsonToMapCast.java @@ -155,7 +155,7 @@ private static String generateRandomJsonValue(Type valueType) if (valueType == BIGINT) { return Long.toString(ThreadLocalRandom.current().nextLong()); } - else if (valueType == DOUBLE) { + else if (valueType.equals(DOUBLE)) { return Double.toString(ThreadLocalRandom.current().nextDouble()); } else if (valueType == VARCHAR) { diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/TestExpressionDomainTranslator.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/TestExpressionDomainTranslator.java index 8dac150e53b12..2686605fdc6d6 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/TestExpressionDomainTranslator.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/TestExpressionDomainTranslator.java @@ -1556,7 +1556,7 @@ public T getMax() public boolean isFractional() { - return type == DOUBLE || type == REAL || (type instanceof DecimalType && ((DecimalType) type).getScale() > 0); + return type.equals(DOUBLE) || type.equals(REAL) || (type instanceof DecimalType && ((DecimalType) type).getScale() > 0); } } } diff --git a/presto-main/src/test/java/com/facebook/presto/sql/planner/TestRowExpressionDomainTranslator.java b/presto-main/src/test/java/com/facebook/presto/sql/planner/TestRowExpressionDomainTranslator.java index 9c73eb2b4450c..1d12d1ddc002a 100644 --- a/presto-main/src/test/java/com/facebook/presto/sql/planner/TestRowExpressionDomainTranslator.java +++ b/presto-main/src/test/java/com/facebook/presto/sql/planner/TestRowExpressionDomainTranslator.java @@ -201,9 +201,9 @@ public void testInOptimization() assertEquals(toPredicate(tupleDomain), and(lessThan(C_BIGINT, bigintLiteral(4L)), not(bigintIn(C_BIGINT, ImmutableList.of(1L, 2L, 3L))))); testDomain = Domain.create(ValueSet.ofRanges( - Range.range(BIGINT, 1L, true, 3L, true), - Range.range(BIGINT, 5L, true, 7L, true), - Range.range(BIGINT, 9L, true, 11L, true)), + Range.range(BIGINT, 1L, true, 3L, true), + Range.range(BIGINT, 5L, true, 7L, true), + Range.range(BIGINT, 9L, true, 11L, true)), false); tupleDomain = withColumnDomains(ImmutableMap.builder().put(C_BIGINT, testDomain).build()); @@ -212,7 +212,7 @@ public void testInOptimization() testDomain = Domain.create( ValueSet.ofRanges( - Range.lessThan(BIGINT, 4L)) + Range.lessThan(BIGINT, 4L)) .intersect(ValueSet.all(BIGINT) .subtract(ValueSet.ofRanges(Range.equal(BIGINT, 1L), Range.equal(BIGINT, 2L), Range.equal(BIGINT, 3L)))) .union(ValueSet.ofRanges(Range.range(BIGINT, 7L, true, 9L, true))), false); @@ -1444,7 +1444,7 @@ public T getMax() public boolean isFractional() { - return input.getType() == DOUBLE || input.getType() == REAL || (input.getType() instanceof DecimalType && ((DecimalType) input.getType()).getScale() > 0); + return input.getType().equals(DOUBLE) || input.getType().equals(REAL) || (input.getType() instanceof DecimalType && ((DecimalType) input.getType()).getScale() > 0); } } } diff --git a/presto-main/src/test/java/com/facebook/presto/type/khyperloglog/TestKHyperLogLogAggregationFunction.java b/presto-main/src/test/java/com/facebook/presto/type/khyperloglog/TestKHyperLogLogAggregationFunction.java index 9a774be56f8eb..078144583b11c 100644 --- a/presto-main/src/test/java/com/facebook/presto/type/khyperloglog/TestKHyperLogLogAggregationFunction.java +++ b/presto-main/src/test/java/com/facebook/presto/type/khyperloglog/TestKHyperLogLogAggregationFunction.java @@ -173,7 +173,7 @@ private void testAggregation(Type valueType, List values, Type uiiType, List< private long toLong(Object value, Type type) { - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return Double.doubleToLongBits((double) value); } else if (type == VARCHAR) { @@ -186,7 +186,7 @@ else if (type == VARCHAR) { private Block buildBlock(List values, Type type) { - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return createDoublesBlock(values.stream().map(o -> (Double) o).collect(Collectors.toList())); } else if (type == VARCHAR) { diff --git a/presto-orc/src/main/java/com/facebook/presto/orc/OrcSelectiveRecordReader.java b/presto-orc/src/main/java/com/facebook/presto/orc/OrcSelectiveRecordReader.java index db6122eca009b..6575b340fd694 100644 --- a/presto-orc/src/main/java/com/facebook/presto/orc/OrcSelectiveRecordReader.java +++ b/presto-orc/src/main/java/com/facebook/presto/orc/OrcSelectiveRecordReader.java @@ -519,7 +519,7 @@ private static int scoreType(Type type) return 20; } - if (type == REAL || type == DOUBLE) { + if (type.equals(REAL) || type.equals(DOUBLE)) { return 30; } diff --git a/presto-orc/src/main/java/com/facebook/presto/orc/TupleDomainOrcPredicate.java b/presto-orc/src/main/java/com/facebook/presto/orc/TupleDomainOrcPredicate.java index ce53e37f9784e..f605dabd507c5 100644 --- a/presto-orc/src/main/java/com/facebook/presto/orc/TupleDomainOrcPredicate.java +++ b/presto-orc/src/main/java/com/facebook/presto/orc/TupleDomainOrcPredicate.java @@ -167,7 +167,7 @@ public static boolean checkInBloomFilter(BloomFilter bloomFilter, Object predica return bloomFilter.testLong(((Number) predicateValue).longValue()); } - if (sqlType == DOUBLE) { + if (sqlType.equals(DOUBLE)) { return bloomFilter.testDouble((Double) predicateValue); } diff --git a/presto-orc/src/main/java/com/facebook/presto/orc/metadata/statistics/DoubleStatisticsBuilder.java b/presto-orc/src/main/java/com/facebook/presto/orc/metadata/statistics/DoubleStatisticsBuilder.java index a99bf8c4cd0ae..e5f79a900fc74 100644 --- a/presto-orc/src/main/java/com/facebook/presto/orc/metadata/statistics/DoubleStatisticsBuilder.java +++ b/presto-orc/src/main/java/com/facebook/presto/orc/metadata/statistics/DoubleStatisticsBuilder.java @@ -38,7 +38,7 @@ public void addBlock(Type type, Block block) for (int position = 0; position < block.getPositionCount(); position++) { if (!block.isNull(position)) { double value; - if (type == RealType.REAL) { + if (type.equals(RealType.REAL)) { value = Float.intBitsToFloat((int) type.getLong(block, position)); } else { diff --git a/presto-orc/src/test/java/com/facebook/presto/orc/BenchmarkSelectiveStreamReaders.java b/presto-orc/src/test/java/com/facebook/presto/orc/BenchmarkSelectiveStreamReaders.java index b97907d2206d2..6aa01e2f3a4fa 100644 --- a/presto-orc/src/test/java/com/facebook/presto/orc/BenchmarkSelectiveStreamReaders.java +++ b/presto-orc/src/test/java/com/facebook/presto/orc/BenchmarkSelectiveStreamReaders.java @@ -340,11 +340,11 @@ private Optional getFilter(Type type, float filterRate, boole return Optional.of(BigintRange.of((long) (Byte.MIN_VALUE * selectionRateForNonNull), (long) (Byte.MAX_VALUE * selectionRateForNonNull), filterAllowNull)); } - if (type == REAL) { + if (type.equals(REAL)) { return Optional.of(FloatRange.of(0, false, false, selectionRateForNonNull, false, true, filterAllowNull)); } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return Optional.of(DoubleRange.of(0, false, false, selectionRateForNonNull, false, true, filterAllowNull)); } @@ -423,11 +423,11 @@ private Object createValue(Type type, float filterRate) return new SqlTimestamp(value, TimeZoneKey.UTC_KEY, MILLISECONDS); } - if (type == REAL) { + if (type.equals(REAL)) { return random.nextFloat(); } - if (type == DOUBLE) { + if (type.equals(DOUBLE)) { return random.nextDouble(); } diff --git a/presto-orc/src/test/java/com/facebook/presto/orc/OrcTester.java b/presto-orc/src/test/java/com/facebook/presto/orc/OrcTester.java index 1d9f2eddcb429..3c6a2497b6b78 100644 --- a/presto-orc/src/test/java/com/facebook/presto/orc/OrcTester.java +++ b/presto-orc/src/test/java/com/facebook/presto/orc/OrcTester.java @@ -360,9 +360,8 @@ public void testRoundTrip(Type type, List readValues, List