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

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

commit 363629891dced859fb16e18655d2c96ae9c5aebf
Author: HTHou <[email protected]>
AuthorDate: Thu Feb 18 16:23:44 2021 +0800

    [ISSUE-2687] fix insert NaN bug
---
 .../main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java | 2 +-
 .../main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
 
b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
index 817c6d1..1d49aeb 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/DoubleTVList.java
@@ -179,7 +179,7 @@ public class DoubleTVList extends TVList {
   protected TimeValuePair getTimeValuePair(int index, long time, Integer 
floatPrecision,
       TSEncoding encoding) {
     double value = getDouble(index);
-    if (encoding == TSEncoding.RLE || encoding == TSEncoding.TS_2DIFF) {
+    if (value != Double.NaN && (encoding == TSEncoding.RLE || encoding == 
TSEncoding.TS_2DIFF)) {
       value = MathUtils.roundWithGivenPrecision(value, floatPrecision);
     }
     return new TimeValuePair(time, 
TsPrimitiveType.getByType(TSDataType.DOUBLE, value));
diff --git 
a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java 
b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
index 8b02238..7f3b7ab 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/FloatTVList.java
@@ -178,7 +178,7 @@ public class FloatTVList extends TVList {
   protected TimeValuePair getTimeValuePair(int index, long time, Integer 
floatPrecision,
       TSEncoding encoding) {
     float value = getFloat(index);
-    if (encoding == TSEncoding.RLE || encoding == TSEncoding.TS_2DIFF) {
+    if (value != Float.NaN && (encoding == TSEncoding.RLE || encoding == 
TSEncoding.TS_2DIFF)) {
       value = MathUtils.roundWithGivenPrecision(value, floatPrecision);
     }
     return new TimeValuePair(time, TsPrimitiveType.getByType(TSDataType.FLOAT, 
value));

Reply via email to