This is an automated email from the ASF dual-hosted git repository. haonan pushed a commit to branch iotdb in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit 96998adfb9182eef421828886bbeb55e12bdb629 Author: shuwenwei <[email protected]> AuthorDate: Thu Jul 11 11:15:19 2024 +0800 Fix aligned TimeValuePair npe (#173) --- .../java/org/apache/tsfile/utils/TsPrimitiveType.java | 6 ++++++ .../org/apache/tsfile/utils/TsPrimitiveTypeTest.java | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java b/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java index 50a74436..226862ff 100644 --- a/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java +++ b/java/common/src/main/java/org/apache/tsfile/utils/TsPrimitiveType.java @@ -691,6 +691,12 @@ public abstract class TsPrimitiveType implements Serializable { return false; } for (int i = 0; i < this.values.length; i++) { + if (values[i] == null && anotherTs.values[i] == null) { + continue; + } + if (values[i] == null || anotherTs.values[i] == null) { + return false; + } if (!values[i].equals(anotherTs.values[i])) { return false; } diff --git a/java/tsfile/src/test/java/org/apache/tsfile/utils/TsPrimitiveTypeTest.java b/java/tsfile/src/test/java/org/apache/tsfile/utils/TsPrimitiveTypeTest.java index f554271b..d74847b3 100644 --- a/java/tsfile/src/test/java/org/apache/tsfile/utils/TsPrimitiveTypeTest.java +++ b/java/tsfile/src/test/java/org/apache/tsfile/utils/TsPrimitiveTypeTest.java @@ -20,6 +20,7 @@ package org.apache.tsfile.utils; import org.apache.tsfile.common.conf.TSFileConfig; import org.apache.tsfile.enums.TSDataType; +import org.apache.tsfile.read.TimeValuePair; import org.apache.tsfile.utils.TsPrimitiveType.TsBinary; import org.apache.tsfile.utils.TsPrimitiveType.TsBoolean; import org.apache.tsfile.utils.TsPrimitiveType.TsDouble; @@ -59,4 +60,19 @@ public class TsPrimitiveTypeTest { Assert.assertEquals(new TsBoolean(true), booleanValue); Assert.assertTrue(booleanValue.getBoolean()); } + + @Test + public void testCompareWithNullValue() { + TimeValuePair timeValuePair1 = + new TimeValuePair( + 1, + new TsPrimitiveType.TsVector( + new TsPrimitiveType[] {new TsBoolean(true), null, null, new TsInt(1)})); + TimeValuePair timeValuePair2 = + new TimeValuePair( + 1, + new TsPrimitiveType.TsVector( + new TsPrimitiveType[] {new TsBoolean(true), null, new TsInt(1), null})); + Assert.assertFalse(timeValuePair1.equals(timeValuePair2)); + } }
