This is an automated email from the ASF dual-hosted git repository.
blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/master by this push:
new 98da974 API: Use equals instead of reference equality (#2716)
98da974 is described below
commit 98da9749edee574b8ed673d69e0ef80ce7ae0272
Author: Eduard Tudenhöfner <[email protected]>
AuthorDate: Fri Jun 25 01:17:58 2021 +0200
API: Use equals instead of reference equality (#2716)
---
api/src/main/java/org/apache/iceberg/SortField.java | 2 +-
api/src/main/java/org/apache/iceberg/types/TypeUtil.java | 3 ++-
.../java/org/apache/iceberg/avro/BuildAvroProjection.java | 11 ++++++-----
.../main/java/org/apache/iceberg/avro/PruneColumns.java | 14 ++++++++------
core/src/main/java/org/apache/iceberg/avro/RemoveIds.java | 3 ++-
.../main/java/org/apache/iceberg/avro/SchemaToType.java | 3 ++-
.../java/org/apache/iceberg/flink/FlinkTypeToType.java | 1 +
.../main/java/org/apache/iceberg/parquet/PruneColumns.java | 2 +-
.../main/java/org/apache/iceberg/spark/SparkTableUtil.java | 2 +-
.../java/org/apache/iceberg/spark/SparkTypeToType.java | 1 +
10 files changed, 25 insertions(+), 17 deletions(-)
diff --git a/api/src/main/java/org/apache/iceberg/SortField.java
b/api/src/main/java/org/apache/iceberg/SortField.java
index 07131b8..f980d6f 100644
--- a/api/src/main/java/org/apache/iceberg/SortField.java
+++ b/api/src/main/java/org/apache/iceberg/SortField.java
@@ -80,7 +80,7 @@ public class SortField implements Serializable {
* @return true if this order satisfies the given order
*/
public boolean satisfies(SortField other) {
- if (this == other) {
+ if (Objects.equals(this, other)) {
return true;
} else if (sourceId != other.sourceId || direction != other.direction ||
nullOrder != other.nullOrder) {
return false;
diff --git a/api/src/main/java/org/apache/iceberg/types/TypeUtil.java
b/api/src/main/java/org/apache/iceberg/types/TypeUtil.java
index 11c66f9..5185038 100644
--- a/api/src/main/java/org/apache/iceberg/types/TypeUtil.java
+++ b/api/src/main/java/org/apache/iceberg/types/TypeUtil.java
@@ -22,6 +22,7 @@ package org.apache.iceberg.types;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Predicate;
@@ -45,7 +46,7 @@ public class TypeUtil {
Preconditions.checkNotNull(schema, "Schema cannot be null");
Types.StructType result = select(schema.asStruct(), fieldIds);
- if (schema.asStruct() == result) {
+ if (Objects.equals(schema.asStruct(), result)) {
return schema;
} else if (result != null) {
if (schema.getAliases() != null) {
diff --git
a/core/src/main/java/org/apache/iceberg/avro/BuildAvroProjection.java
b/core/src/main/java/org/apache/iceberg/avro/BuildAvroProjection.java
index 5a95410..cd934dc 100644
--- a/core/src/main/java/org/apache/iceberg/avro/BuildAvroProjection.java
+++ b/core/src/main/java/org/apache/iceberg/avro/BuildAvroProjection.java
@@ -21,6 +21,7 @@ package org.apache.iceberg.avro;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.function.Supplier;
import org.apache.avro.JsonProperties;
import org.apache.avro.Schema;
@@ -133,7 +134,7 @@ class BuildAvroProjection extends
AvroCustomOrderSchemaVisitor<Schema, Schema.Fi
try {
Schema schema = fieldResult.get();
- if (schema != field.schema() || !expectedName.equals(field.name())) {
+ if (!Objects.equals(schema, field.schema()) ||
!expectedName.equals(field.name())) {
// add an alias for the field
return AvroSchemaUtil.copyField(field, schema,
AvroSchemaUtil.makeCompatibleName(expectedName));
} else {
@@ -153,7 +154,7 @@ class BuildAvroProjection extends
AvroCustomOrderSchemaVisitor<Schema, Schema.Fi
Schema nonNullOriginal = AvroSchemaUtil.fromOption(union);
Schema nonNullResult =
AvroSchemaUtil.fromOptions(Lists.newArrayList(options));
- if (nonNullOriginal != nonNullResult) {
+ if (!Objects.equals(nonNullOriginal, nonNullResult)) {
return AvroSchemaUtil.toOption(nonNullResult);
}
@@ -174,7 +175,7 @@ class BuildAvroProjection extends
AvroCustomOrderSchemaVisitor<Schema, Schema.Fi
Schema.Field valueProjection = element.get().getField("value");
// element was changed, create a new array
- if (valueProjection.schema() != valueField.schema()) {
+ if (!Objects.equals(valueProjection.schema(), valueField.schema())) {
return
AvroSchemaUtil.createProjectionMap(keyValueSchema.getFullName(),
AvroSchemaUtil.getFieldId(keyField), keyField.name(),
keyField.schema(),
AvroSchemaUtil.getFieldId(valueField), valueField.name(),
valueProjection.schema());
@@ -199,7 +200,7 @@ class BuildAvroProjection extends
AvroCustomOrderSchemaVisitor<Schema, Schema.Fi
Schema elementSchema = element.get();
// element was changed, create a new array
- if (elementSchema != array.getElementType()) {
+ if (!Objects.equals(elementSchema, array.getElementType())) {
return Schema.createArray(elementSchema);
}
@@ -223,7 +224,7 @@ class BuildAvroProjection extends
AvroCustomOrderSchemaVisitor<Schema, Schema.Fi
Schema valueSchema = value.get();
// element was changed, create a new map
- if (valueSchema != map.getValueType()) {
+ if (!Objects.equals(valueSchema, map.getValueType())) {
return Schema.createMap(valueSchema);
}
diff --git a/core/src/main/java/org/apache/iceberg/avro/PruneColumns.java
b/core/src/main/java/org/apache/iceberg/avro/PruneColumns.java
index 6176070..57e2c27 100644
--- a/core/src/main/java/org/apache/iceberg/avro/PruneColumns.java
+++ b/core/src/main/java/org/apache/iceberg/avro/PruneColumns.java
@@ -21,6 +21,7 @@ package org.apache.iceberg.avro;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import org.apache.avro.JsonProperties;
import org.apache.avro.Schema;
@@ -118,7 +119,7 @@ class PruneColumns extends AvroSchemaVisitor<Schema> {
}
if (pruned != null) {
- if (pruned != AvroSchemaUtil.fromOption(union)) {
+ if (!Objects.equals(pruned, AvroSchemaUtil.fromOption(union))) {
return AvroSchemaUtil.toOption(pruned);
}
return union;
@@ -149,13 +150,14 @@ class PruneColumns extends AvroSchemaVisitor<Schema> {
Schema valueProjection = element.getField("value").schema();
// it is possible that key is not selected, and
// key schemas can be different if new field ids were assigned to them
- if (keyProjectionField != null && keyValue.getField("key").schema() !=
keyProjectionField.schema()) {
+ if (keyProjectionField != null &&
+ !Objects.equals(keyValue.getField("key").schema(),
keyProjectionField.schema())) {
Preconditions.checkState(
SchemaNormalization.parsingFingerprint64(keyValue.getField("key").schema()) ==
SchemaNormalization.parsingFingerprint64(keyProjectionField.schema()),
- "Map keys should not be projected");
+ "Map keys should not be projected");
return AvroSchemaUtil.createMap(keyId, keyProjectionField.schema(),
valueId, valueProjection);
- } else if (keyValue.getField("value").schema() != valueProjection) {
+ } else if (!Objects.equals(keyValue.getField("value").schema(),
valueProjection)) {
return AvroSchemaUtil.createMap(keyId,
keyValue.getField("key").schema(), valueId, valueProjection);
} else {
return complexMapWithIds(array, keyId, valueId);
@@ -171,7 +173,7 @@ class PruneColumns extends AvroSchemaVisitor<Schema> {
if (selectedIds.contains(elementId)) {
return arrayWithId(array, elementId);
} else if (element != null) {
- if (element != array.getElementType()) {
+ if (!Objects.equals(element, array.getElementType())) {
// the element must be a projection
return arrayWithId(Schema.createArray(element), elementId);
}
@@ -199,7 +201,7 @@ class PruneColumns extends AvroSchemaVisitor<Schema> {
// e.g if we are reading data not written by Iceberg writers
return mapWithIds(map, keyId, valueId);
} else if (value != null) {
- if (value != map.getValueType()) {
+ if (!Objects.equals(value, map.getValueType())) {
// the value must be a projection
return mapWithIds(Schema.createMap(value), keyId, valueId);
}
diff --git a/core/src/main/java/org/apache/iceberg/avro/RemoveIds.java
b/core/src/main/java/org/apache/iceberg/avro/RemoveIds.java
index 1f929bf..b9e0d5c 100644
--- a/core/src/main/java/org/apache/iceberg/avro/RemoveIds.java
+++ b/core/src/main/java/org/apache/iceberg/avro/RemoveIds.java
@@ -21,6 +21,7 @@ package org.apache.iceberg.avro;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import org.apache.avro.Schema;
import org.apache.iceberg.relocated.com.google.common.collect.Lists;
@@ -74,7 +75,7 @@ public class RemoveIds extends AvroSchemaVisitor<Schema> {
Schema.Field copy = new Schema.Field(field.name(), newSchema, field.doc(),
field.defaultVal(), field.order());
for (Map.Entry<String, Object> prop : field.getObjectProps().entrySet()) {
String key = prop.getKey();
- if (key != AvroSchemaUtil.FIELD_ID_PROP) {
+ if (!Objects.equals(key, AvroSchemaUtil.FIELD_ID_PROP)) {
copy.addProp(key, prop.getValue());
}
}
diff --git a/core/src/main/java/org/apache/iceberg/avro/SchemaToType.java
b/core/src/main/java/org/apache/iceberg/avro/SchemaToType.java
index 577fa23..73c8622 100644
--- a/core/src/main/java/org/apache/iceberg/avro/SchemaToType.java
+++ b/core/src/main/java/org/apache/iceberg/avro/SchemaToType.java
@@ -20,6 +20,7 @@
package org.apache.iceberg.avro;
import java.util.List;
+import java.util.Objects;
import org.apache.avro.LogicalType;
import org.apache.avro.LogicalTypes;
import org.apache.avro.Schema;
@@ -83,7 +84,7 @@ class SchemaToType extends AvroSchemaVisitor<Type> {
List<Schema.Field> fields = record.getFields();
List<Types.NestedField> newFields =
Lists.newArrayListWithExpectedSize(fields.size());
- if (root == record) {
+ if (Objects.equals(root, record)) {
this.nextId = 0;
}
diff --git a/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
b/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
index 2cc9771..88276d8 100644
--- a/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
+++ b/flink/src/main/java/org/apache/iceberg/flink/FlinkTypeToType.java
@@ -171,6 +171,7 @@ class FlinkTypeToType extends FlinkTypeVisitor<Type> {
}
@Override
+ @SuppressWarnings("ReferenceEquality")
public Type visit(RowType rowType) {
List<Types.NestedField> newFields =
Lists.newArrayListWithExpectedSize(rowType.getFieldCount());
boolean isRoot = root == rowType;
diff --git a/parquet/src/main/java/org/apache/iceberg/parquet/PruneColumns.java
b/parquet/src/main/java/org/apache/iceberg/parquet/PruneColumns.java
index fa784a5..acdda78 100644
--- a/parquet/src/main/java/org/apache/iceberg/parquet/PruneColumns.java
+++ b/parquet/src/main/java/org/apache/iceberg/parquet/PruneColumns.java
@@ -131,7 +131,7 @@ class PruneColumns extends ParquetTypeVisitor<Type> {
} else if (value != null) {
Integer mapId = getId(map);
if (!Objects.equal(value, originalValue)) {
- Type mapType = Types.map(map.getRepetition())
+ Type mapType = Types.map(map.getRepetition())
.key(originalKey)
.value(value)
.named(map.getName());
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
b/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
index c9bfd49..29c71a8 100644
--- a/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
+++ b/spark/src/main/java/org/apache/iceberg/spark/SparkTableUtil.java
@@ -372,7 +372,7 @@ public class SparkTableUtil {
try {
PartitionSpec spec = SparkSchemaUtil.specForTable(spark,
sourceTableIdentWithDB.unquotedString());
- if (spec == PartitionSpec.unpartitioned()) {
+ if (Objects.equal(spec, PartitionSpec.unpartitioned())) {
importUnpartitionedSparkTable(spark, sourceTableIdentWithDB,
targetTable);
} else {
List<SparkPartition> sourceTablePartitions = getPartitions(spark,
sourceTableIdent);
diff --git a/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
b/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
index 90c6129..f0b8b2a 100644
--- a/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
+++ b/spark/src/main/java/org/apache/iceberg/spark/SparkTypeToType.java
@@ -64,6 +64,7 @@ class SparkTypeToType extends SparkTypeVisitor<Type> {
}
@Override
+ @SuppressWarnings("ReferenceEquality")
public Type struct(StructType struct, List<Type> types) {
StructField[] fields = struct.fields();
List<Types.NestedField> newFields =
Lists.newArrayListWithExpectedSize(fields.length);