You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by gv...@apache.org on 2018/06/08 11:40:36 UTC

[11/50] [abbrv] carbondata git commit: [CARBONDATA-2493] DataType.equals() failes for complex types

[CARBONDATA-2493] DataType.equals() failes for complex types

This closes #2319


Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/33941281
Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/33941281
Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/33941281

Branch: refs/heads/spark-2.3
Commit: 33941281ea3b0e9a3c623179642dd1f41b263551
Parents: 7cba44b
Author: ajantha-bhat <aj...@gmail.com>
Authored: Fri May 18 13:21:33 2018 +0530
Committer: Venkata Ramana G <ra...@huawei.com>
Committed: Mon May 21 23:54:08 2018 +0530

----------------------------------------------------------------------
 .../core/metadata/datatype/ArrayType.java       | 10 ++++-
 .../core/metadata/datatype/DataType.java        | 24 ++++++++++++
 .../core/metadata/datatype/DecimalType.java     | 11 ++++--
 .../core/metadata/datatype/MapType.java         | 34 +++++++++++++++++
 .../core/metadata/datatype/StructField.java     | 40 ++++++++++++++++++++
 .../core/metadata/datatype/StructType.java      |  9 ++++-
 6 files changed, 120 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/33941281/core/src/main/java/org/apache/carbondata/core/metadata/datatype/ArrayType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/ArrayType.java b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/ArrayType.java
index 94a4e89..9dea241 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/ArrayType.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/ArrayType.java
@@ -39,10 +39,14 @@ public class ArrayType extends DataType {
     if (obj == null) {
       return false;
     }
-    if (!(obj instanceof ArrayType)) {
+    if (getClass() != obj.getClass()) {
       return false;
     }
-    if (!this.getName().equalsIgnoreCase(((ArrayType) obj).getName())) {
+    ArrayType other = (ArrayType) obj;
+    if (!this.getName().equalsIgnoreCase(other.getName())) {
+      return false;
+    }
+    if (!this.getElementType().equals(other.getElementType())) {
       return false;
     }
     return true;
@@ -53,10 +57,12 @@ public class ArrayType extends DataType {
     final int prime = 31;
     int result = 1;
     result = prime * result + getName().hashCode();
+    result = prime * result + getElementType().hashCode();
     return result;
   }
 
   public DataType getElementType() {
     return elementType;
   }
+
 }

http://git-wip-us.apache.org/repos/asf/carbondata/blob/33941281/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DataType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DataType.java b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DataType.java
index 8e08436..d71f984 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DataType.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DataType.java
@@ -115,4 +115,28 @@ public class DataType implements Serializable {
     }
   }
 
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + getName().hashCode();
+    return result;
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
+    }
+    if (obj == null) {
+      return false;
+    }
+    if (getClass() != obj.getClass()) {
+      return false;
+    }
+    if (!this.getName().equalsIgnoreCase(((DataType) obj).getName())) {
+      return false;
+    }
+    return true;
+  }
 }

http://git-wip-us.apache.org/repos/asf/carbondata/blob/33941281/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DecimalType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DecimalType.java b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DecimalType.java
index 8536222..a7f7a4e 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DecimalType.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/DecimalType.java
@@ -37,16 +37,17 @@ public class DecimalType extends DataType {
     if (obj == null) {
       return false;
     }
-    if (!(obj instanceof DecimalType)) {
+    if (getClass() != obj.getClass()) {
       return false;
     }
-    if (!this.getName().equalsIgnoreCase(((DecimalType) obj).getName())) {
+    DecimalType other = (DecimalType)obj;
+    if (!this.getName().equalsIgnoreCase(other.getName())) {
       return false;
     }
-    if (this.precision != ((DecimalType) obj).precision) {
+    if (this.precision != other.precision) {
       return false;
     }
-    if (this.scale != ((DecimalType) obj).scale) {
+    if (this.scale != other.scale) {
       return false;
     }
     return true;
@@ -57,6 +58,8 @@ public class DecimalType extends DataType {
     final int prime = 31;
     int result = 1;
     result = prime * result + getName().hashCode();
+    result = prime * result + getPrecision();
+    result = prime * result + getScale();
     return result;
   }
 

http://git-wip-us.apache.org/repos/asf/carbondata/blob/33941281/core/src/main/java/org/apache/carbondata/core/metadata/datatype/MapType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/MapType.java b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/MapType.java
index 69d49b8..47e536a 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/MapType.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/MapType.java
@@ -32,4 +32,38 @@ public class MapType extends DataType {
   public boolean isComplexType() {
     return true;
   }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
+    }
+    if (obj == null) {
+      return false;
+    }
+    if (getClass() != obj.getClass()) {
+      return false;
+    }
+    MapType other = (MapType) obj;
+    if (!this.getName().equalsIgnoreCase(other.getName())) {
+      return false;
+    }
+    if (!this.keyType.equals(other.keyType)) {
+      return false;
+    }
+    if (!this.valueType.equals(other.valueType)) {
+      return false;
+    }
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + getName().hashCode();
+    result = prime * result + keyType.hashCode();
+    result = prime * result + valueType.hashCode();
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/carbondata/blob/33941281/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructField.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructField.java b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructField.java
index bfca057..c076f69 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructField.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructField.java
@@ -54,4 +54,44 @@ public class StructField implements Serializable {
   public List<StructField> getChildren() {
     return children;
   }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + fieldName.hashCode();
+    result = prime * result + dataType.hashCode();
+    result = prime * result + ((children == null) ? 0 : children.hashCode());
+    return result;
+  }
+
+  @Override
+  public boolean equals(Object obj) {
+    if (this == obj) {
+      return true;
+    }
+    if (obj == null) {
+      return false;
+    }
+    if (getClass() != obj.getClass()) {
+      return false;
+    }
+    StructField other = (StructField) obj;
+    if (!this.fieldName.equalsIgnoreCase(other.fieldName)) {
+      return false;
+    }
+    if (!this.dataType.equals(other.dataType)) {
+      return false;
+    }
+    if (children == null) {
+      if (other.children != null) {
+        return false;
+      }
+    } else if (other.children == null) {
+      return false;
+    } else if (!children.equals(other.children)) {
+      return false;
+    }
+    return true;
+  }
 }

http://git-wip-us.apache.org/repos/asf/carbondata/blob/33941281/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructType.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructType.java b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructType.java
index 90b7374..e8559b2 100644
--- a/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructType.java
+++ b/core/src/main/java/org/apache/carbondata/core/metadata/datatype/StructType.java
@@ -41,10 +41,14 @@ public class StructType extends DataType {
     if (obj == null) {
       return false;
     }
-    if (!(obj instanceof StructType)) {
+    if (getClass() != obj.getClass()) {
       return false;
     }
-    if (!this.getName().equalsIgnoreCase(((StructType) obj).getName())) {
+    StructType other = (StructType) obj;
+    if (!this.getName().equalsIgnoreCase(other.getName())) {
+      return false;
+    }
+    if (!this.getFields().equals(other.getFields())) {
       return false;
     }
     return true;
@@ -55,6 +59,7 @@ public class StructType extends DataType {
     final int prime = 31;
     int result = 1;
     result = prime * result + getName().hashCode();
+    result = prime * result + getFields().hashCode();
     return result;
   }