This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch VectorCodeSmell
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 559c545eda2f33df61252db95ee83ead13924c71
Author: HTHou <[email protected]>
AuthorDate: Mon Apr 12 13:55:28 2021 +0800

    [To Vector] Fix Vector Code Smell Step 2
---
 .../org/apache/iotdb/VectorSessionExample.java     | 12 +++--
 .../db/engine/querycontext/ReadOnlyMemChunk.java   |  4 +-
 .../db/engine/storagegroup/TsFileResource.java     |  6 ++-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  2 +-
 .../db/qp/physical/crud/CreateTemplatePlan.java    |  1 +
 .../iotdb/tsfile/file/metadata/IChunkMetadata.java |  1 +
 .../java/org/apache/iotdb/tsfile/utils/BitMap.java |  6 ++-
 .../apache/iotdb/tsfile/utils/TsPrimitiveType.java | 53 ++++++++++++++++------
 8 files changed, 60 insertions(+), 25 deletions(-)

diff --git 
a/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java 
b/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java
index 2d09761..9dd2bbf 100644
--- a/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java
+++ b/example/session/src/main/java/org/apache/iotdb/VectorSessionExample.java
@@ -31,9 +31,9 @@ import org.apache.iotdb.tsfile.write.record.Tablet;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 import org.apache.iotdb.tsfile.write.schema.VectorMeasurementSchema;
 
+import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Random;
 
 @SuppressWarnings("squid:S106")
 public class VectorSessionExample {
@@ -226,10 +226,10 @@ public class VectorSessionExample {
       timestamps[row] = time;
 
       long[] sensor = (long[]) values[0];
-      sensor[row] = new Random().nextLong();
+      sensor[row] = new SecureRandom().nextLong();
 
       int[] sensors = (int[]) values[1];
-      sensors[row] = new Random().nextInt();
+      sensors[row] = new SecureRandom().nextInt();
 
       if (tablet.rowSize == tablet.getMaxRowNumber()) {
         session.insertTablet(tablet, true);
@@ -258,6 +258,7 @@ public class VectorSessionExample {
 
     long[] timestamps = tablet.timestamps;
     Object[] values = tablet.values;
+    // Use the bitMap to mark the null value point
     BitMap[] bitMaps = new BitMap[values.length];
     tablet.bitMaps = bitMaps;
 
@@ -267,11 +268,12 @@ public class VectorSessionExample {
       timestamps[row] = time;
 
       long[] sensor = (long[]) values[0];
-      sensor[row] = new Random().nextLong();
+      sensor[row] = new SecureRandom().nextLong();
 
       int[] sensors = (int[]) values[1];
-      sensors[row] = new Random().nextInt();
+      sensors[row] = new SecureRandom().nextInt();
 
+      // mark this point as null value
       if (time % 5 == 0) {
         bitMaps[1].mark(row);
       }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
index dced8ed..883fc00 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
@@ -140,14 +140,12 @@ public class ReadOnlyMemChunk {
   }
 
   /**
-   * The constructor for VECTOR type
+   * The constructor for VECTOR type.
    *
    * @param schema VectorMeasurementSchema
    * @param tvList VectorTvList
    * @param size The Number of Chunk data points
    * @param deletionList The timeRange of deletionList
-   * @throws IOException
-   * @throws QueryProcessException
    */
   public ReadOnlyMemChunk(
       IMeasurementSchema schema, TVList tvList, int size, List<TimeRange> 
deletionList)
diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
index 2390a7c..c6a7abc 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
@@ -662,7 +662,11 @@ public class TsFileResource {
     this.processor = processor;
   }
 
-  /** @return TimeseriesMetadata or VectorTimeseriesMetadata */
+  /**
+   * Get a timeseriesMetadata.
+   *
+   * @return TimeseriesMetadata or the first ValueTimeseriesMetadata in 
VectorTimeseriesMetadata
+   */
   public TimeseriesMetadata getTimeSeriesMetadata() {
     if (timeSeriesMetadata == null) {
       return null;
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java 
b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index 3cc4bc5..cb5c32e 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -1238,7 +1238,7 @@ public class PlanExecutor implements IPlanExecutor {
         throw new StorageEngineException(
             "failed to insert points "
                 + failedMeasurements
-                + (" caused by " + exception.getMessage()));
+                + (exception != null ? (" caused by " + 
exception.getMessage()) : ""));
       }
 
     } catch (StorageEngineException | MetadataException e) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/CreateTemplatePlan.java
 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/CreateTemplatePlan.java
index 35bae43..6dba97a 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/CreateTemplatePlan.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/CreateTemplatePlan.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.db.qp.physical.crud;
 
 import org.apache.iotdb.db.metadata.PartialPath;
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
index 092c3d3..b81a18b 100644
--- 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
+++ 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/IChunkMetadata.java
@@ -16,6 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+
 package org.apache.iotdb.tsfile.file.metadata;
 
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java
index a7f2589..91affdb 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/BitMap.java
@@ -38,12 +38,14 @@ public class BitMap {
   private byte[] bits;
   private int size;
 
+  /** Initialize a BitMap with given size. */
   public BitMap(int size) {
     this.size = size;
     bits = new byte[size / Byte.SIZE + 1];
     Arrays.fill(bits, (byte) 0);
   }
 
+  /** Initialize a BitMap with given size and bytes. */
   public BitMap(int size, byte[] bits) {
     this.size = size;
     this.bits = bits;
@@ -62,12 +64,12 @@ public class BitMap {
     return (bits[position / Byte.SIZE] & BIT_UTIL[position % Byte.SIZE]) != 0;
   }
 
-  /** mark as 1 at the given bit position */
+  /** mark as 1 at the given bit position. */
   public void mark(int position) {
     bits[position / Byte.SIZE] |= BIT_UTIL[position % Byte.SIZE];
   }
 
-  /** mark as 0 at all positions */
+  /** mark as 0 at all positions. */
   public void reset() {
     Arrays.fill(bits, (byte) 0);
   }
diff --git 
a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsPrimitiveType.java 
b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsPrimitiveType.java
index 165566a..81249b3 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsPrimitiveType.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/utils/TsPrimitiveType.java
@@ -77,7 +77,7 @@ public abstract class TsPrimitiveType implements Serializable 
{
   }
 
   public TsPrimitiveType[] getVector() {
-    throw new UnsupportedOperationException("setDouble() is not supported for 
current sub-class");
+    throw new UnsupportedOperationException("getVector() is not supported for 
current sub-class");
   }
 
   public void setBoolean(boolean val) {
@@ -105,7 +105,7 @@ public abstract class TsPrimitiveType implements 
Serializable {
   }
 
   public void setVector(TsPrimitiveType[] val) {
-    throw new UnsupportedOperationException("setDouble() is not supported for 
current sub-class");
+    throw new UnsupportedOperationException("setVector() is not supported for 
current sub-class");
   }
 
   /**
@@ -475,27 +475,29 @@ public abstract class TsPrimitiveType implements 
Serializable {
 
   public static class TsVector extends TsPrimitiveType {
 
-    private TsPrimitiveType[] value;
+    private TsPrimitiveType[] values;
 
-    public TsVector(TsPrimitiveType[] value) {
-      this.value = value;
+    public TsVector(TsPrimitiveType[] values) {
+      this.values = values;
     }
 
     @Override
     public TsPrimitiveType[] getVector() {
-      return value;
+      return values;
     }
 
     @Override
-    public void setVector(TsPrimitiveType[] val) {
-      this.value = val;
+    public void setVector(TsPrimitiveType[] vals) {
+      this.values = vals;
     }
 
     @Override
     public int getSize() {
       int size = 0;
-      for (TsPrimitiveType type : value) {
-        size += type.getSize();
+      for (TsPrimitiveType type : values) {
+        if (type != null) {
+          size += type.getSize();
+        }
       }
       // object header + array object header
       return 4 + 4 + size;
@@ -509,9 +511,9 @@ public abstract class TsPrimitiveType implements 
Serializable {
     @Override
     public String getStringValue() {
       StringBuilder builder = new StringBuilder("[");
-      builder.append(value[0] == null ? "null" : value[0].getStringValue());
-      for (int i = 1; i < value.length; i++) {
-        builder.append(", ").append(value[i] == null ? "null" : 
value[i].getStringValue());
+      builder.append(values[0] == null ? "null" : values[0].getStringValue());
+      for (int i = 1; i < values.length; i++) {
+        builder.append(", ").append(values[i] == null ? "null" : 
values[i].getStringValue());
       }
       builder.append("]");
       return builder.toString();
@@ -521,5 +523,30 @@ public abstract class TsPrimitiveType implements 
Serializable {
     public TSDataType getDataType() {
       return TSDataType.VECTOR;
     }
+
+    @Override
+    public int hashCode() {
+      return values.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object anObject) {
+      if (this == anObject) {
+        return true;
+      }
+      if (anObject instanceof TsVector) {
+        TsVector anotherTs = (TsVector) anObject;
+        if (anotherTs.values.length != this.values.length) {
+          return false;
+        }
+        for (int i = 0; i < this.values.length; i++) {
+          if (!values[i].equals(anotherTs.values[i])) {
+            return false;
+          }
+        }
+        return true;
+      }
+      return false;
+    }
   }
 }

Reply via email to