You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2022/01/04 14:04:14 UTC
[iotdb] 01/02: Fix npe when insert wrong type data into aligned timeseries
This is an automated email from the ASF dual-hosted git repository.
haonan pushed a commit to branch aligned_insert_npe
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 75c7eae063e5cc3959bb678c757be144dd09db79
Author: HTHou <hh...@outlook.com>
AuthorDate: Tue Jan 4 18:16:24 2022 +0800
Fix npe when insert wrong type data into aligned timeseries
---
.../apache/iotdb/db/utils/datastructure/AlignedTVList.java | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
index 6f42171..c010d38 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/datastructure/AlignedTVList.java
@@ -857,14 +857,20 @@ public class AlignedTVList extends TVList {
*/
public static long alignedTvListArrayMemCost(TSDataType[] types) {
long size = 0;
+ // value array mem size
+ for (TSDataType type : types) {
+ if (type != null) {
+ size += (long) PrimitiveArrayManager.ARRAY_SIZE * (long) type.getDataTypeSize();
+ }
+ }
+ // size is 0 when all types are null
+ if (size == 0) {
+ return size;
+ }
// time array mem size
size += (long) PrimitiveArrayManager.ARRAY_SIZE * 8L;
// index array mem size
size += (long) PrimitiveArrayManager.ARRAY_SIZE * 4L;
- // value array mem size
- for (TSDataType type : types) {
- size += (long) PrimitiveArrayManager.ARRAY_SIZE * (long) type.getDataTypeSize();
- }
// array headers mem size
size += NUM_BYTES_ARRAY_HEADER * (2 + types.length);
// Object references size in ArrayList