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

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


The following commit(s) were added to refs/heads/query_v3_py by this push:
     new 7e04bc48b63 update
7e04bc48b63 is described below

commit 7e04bc48b63b7ebe62d7a60474ecd86ce425b326
Author: HTHou <[email protected]>
AuthorDate: Mon Mar 24 23:44:23 2025 +0800

    update
---
 .../client-py/iotdb/tsfile/utils/tsblock_serde.py  | 44 ++++++++++++----------
 .../client-py/iotdb/utils/iotdb_rpc_dataset.py     | 21 +++--------
 2 files changed, 30 insertions(+), 35 deletions(-)

diff --git a/iotdb-client/client-py/iotdb/tsfile/utils/tsblock_serde.py 
b/iotdb-client/client-py/iotdb/tsfile/utils/tsblock_serde.py
index dee944387f3..881113f62e3 100644
--- a/iotdb-client/client-py/iotdb/tsfile/utils/tsblock_serde.py
+++ b/iotdb-client/client-py/iotdb/tsfile/utils/tsblock_serde.py
@@ -272,16 +272,16 @@ def deserialize(buffer):
     column_encodings, buffer = read_column_encoding(buffer, value_column_count 
+ 1)
 
     time_column_values, _, buffer = read_column(
-        column_encodings[0], buffer, TSDataType.INT64, position_count
+        column_encodings[0], buffer, 2, position_count
     )
-    column_values = [None] * value_column_count
-    null_indicators = [None] * value_column_count
+    column_values = []
+    null_indicators = []
     for i in range(value_column_count):
         column_value, null_indicator, buffer = read_column(
             column_encodings[i + 1], buffer, data_types[i], position_count
         )
-        column_values[i] = column_value
-        null_indicators[i] = null_indicator
+        column_values.append(column_value)
+        null_indicators.append(null_indicator)
 
     return time_column_values, column_values, null_indicators, position_count
 
@@ -290,8 +290,9 @@ def deserialize(buffer):
 
 
 def read_int_from_buffer(buffer):
-    res, buffer = read_from_buffer(buffer, 4)
-    return int.from_bytes(res, "big"), buffer
+    res = np.frombuffer(buffer, dtype=">i4", count=1)
+    buffer = buffer[4:]
+    return res[0], buffer
 
 
 def read_byte_from_buffer(buffer):
@@ -299,9 +300,8 @@ def read_byte_from_buffer(buffer):
 
 
 def read_from_buffer(buffer, size):
-    mv = memoryview(buffer)
-    res = mv[:size]
-    new_buffer = mv[size:]
+    res = buffer[:size]
+    new_buffer = buffer[size:]
     return res, new_buffer
 
 
@@ -310,7 +310,7 @@ def read_from_buffer(buffer, size):
 
 def read_column_types(buffer, value_column_count):
     data_types = np.frombuffer(buffer, dtype=np.uint8, 
count=value_column_count)
-    new_buffer = memoryview(buffer)[value_column_count:]
+    new_buffer = buffer[value_column_count:]
     if not np.all(np.isin(data_types, [0, 1, 2, 3, 4, 5])):
         raise Exception("Invalid data type encountered: " + str(data_types))
     return data_types, new_buffer
@@ -348,7 +348,7 @@ def get_data_type_byte_from_str(value):
 
 def read_column_encoding(buffer, size):
     encodings = np.frombuffer(buffer, dtype=np.uint8, count=size)
-    new_buffer = memoryview(buffer)[size:]
+    new_buffer = buffer[size:]
     return encodings, new_buffer
 
 
@@ -356,9 +356,9 @@ def read_column_encoding(buffer, size):
 
 
 def deserialize_null_indicators(buffer, size):
-    may_have_null = np.frombuffer(buffer, dtype=np.uint8, count=1)
-    buffer = memoryview(buffer)[1:]
-    if may_have_null[0] != 0:
+    may_have_null = buffer[0]
+    buffer = buffer[1:]
+    if may_have_null != 0:
         return deserialize_from_boolean_array(buffer, size)
     return None, buffer
 
@@ -378,11 +378,15 @@ def read_int64_column(buffer, data_type, position_count):
     else:
         size = null_indicators.count(False)
 
-    if data_type == 2 or data_type == 4:
-        values, buffer = read_from_buffer(buffer, size * 8)
-        return values, null_indicators, buffer
+    if data_type == 2:
+        dtype = ">i8"
+    elif data_type == 4:
+        dtype = ">f8"
     else:
-        raise Exception("Invalid data type: " + data_type)
+        raise Exception("Invalid data type: " + str(data_type))
+    values = np.frombuffer(buffer, dtype, count=size)
+    buffer = buffer[size * 8 :]
+    return values, null_indicators, buffer
 
 
 # Serialized data layout:
@@ -407,7 +411,7 @@ def read_int32_column(buffer, data_type, position_count):
     else:
         raise Exception("Invalid data type: " + str(data_type))
     values = np.frombuffer(buffer, dtype, count=size)
-    buffer = memoryview(buffer)[size * 4:]
+    buffer = buffer[size * 4 :]
     return values, null_indicators, buffer
 
 
diff --git a/iotdb-client/client-py/iotdb/utils/iotdb_rpc_dataset.py 
b/iotdb-client/client-py/iotdb/utils/iotdb_rpc_dataset.py
index 5055593574c..1933667b77b 100644
--- a/iotdb-client/client-py/iotdb/utils/iotdb_rpc_dataset.py
+++ b/iotdb-client/client-py/iotdb/utils/iotdb_rpc_dataset.py
@@ -163,21 +163,18 @@ class IoTDBRpcDataSet(object):
             has_pd_series.append(False)
         total_length = 0
         while self.__query_result_index < len(self.__query_result):
-            time_column_values, column_values, null_indicators, _ = 
deserialize(
-                self.__query_result[self.__query_result_index]
+            time_column_values, column_values, null_indicators, current_length 
= (
+                
deserialize(memoryview(self.__query_result[self.__query_result_index]))
             )
             self.__query_result[self.__query_result_index] = None
             self.__query_result_index += 1
-            time_array = np.frombuffer(
-                time_column_values, np.dtype(np.longlong).newbyteorder(">")
-            )
+            time_array = time_column_values
             if time_array.dtype.byteorder == ">":
                 time_array = time_array.byteswap().view(
                     time_array.dtype.newbyteorder("<")
                 )
             if self.ignore_timestamp is None or self.ignore_timestamp is False:
                 result[0].append(time_array)
-            current_length = len(time_array)
             total_length += current_length
             for i, location in enumerate(
                 self.__column_index_2_tsblock_column_index_list
@@ -189,9 +186,7 @@ class IoTDBRpcDataSet(object):
                 value_buffer_len = len(value_buffer)
                 # DOUBLE
                 if data_type == 4:
-                    data_array = np.frombuffer(
-                        value_buffer, np.dtype(np.double).newbyteorder(">")
-                    )
+                    data_array = value_buffer
                 # FLOAT
                 elif data_type == 3:
                     data_array = value_buffer
@@ -200,14 +195,10 @@ class IoTDBRpcDataSet(object):
                     data_array = np.array(value_buffer).astype("bool")
                 # INT32, DATE
                 elif data_type == 1 or data_type == 9:
-                    data_array = np.frombuffer(
-                        value_buffer, np.dtype(np.int32).newbyteorder(">")
-                    )
+                    data_array = value_buffer
                 # INT64, TIMESTAMP
                 elif data_type == 2 or data_type == 8:
-                    data_array = np.frombuffer(
-                        value_buffer, np.dtype(np.int64).newbyteorder(">")
-                    )
+                    data_array = value_buffer
                 # TEXT, STRING, BLOB
                 elif data_type == 5 or data_type == 11 or data_type == 10:
                     index = 0

Reply via email to