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

colinlee pushed a commit to branch feature/python-new-datatypes
in repository https://gitbox.apache.org/repos/asf/tsfile.git

commit bc7e1b02065a4650938ea7dcf0ad5ea8c3b9f188
Author: ColinLee <[email protected]>
AuthorDate: Sat Nov 29 12:14:22 2025 +0800

    fix some comment.
---
 cpp/src/common/record.h                            |  2 +-
 cpp/src/cwrapper/tsfile_cwrapper.cc                | 11 --------
 cpp/src/cwrapper/tsfile_cwrapper.h                 |  4 +--
 cpp/test/cwrapper/cwrapper_test.cc                 | 29 ++++++++++++----------
 .../reader/table_view/tsfile_reader_table_test.cc  |  1 +
 python/tests/test_write_and_read.py                |  1 -
 python/tsfile/tsfile_cpp.pxd                       |  4 ---
 python/tsfile/tsfile_py_cpp.pyx                    | 18 +++++++-------
 8 files changed, 28 insertions(+), 42 deletions(-)

diff --git a/cpp/src/common/record.h b/cpp/src/common/record.h
index cbbebbc5..a8449c65 100644
--- a/cpp/src/common/record.h
+++ b/cpp/src/common/record.h
@@ -118,7 +118,7 @@ struct TsRecord {
     }
 
     TsRecord(const std::string &device_name, const int64_t &timestamp)
-        : device_id_(device_name), timestamp_(timestamp) {
+        : timestamp_(timestamp), device_id_(device_name) {
         pa.init(512, common::MOD_TSFILE_READER);
     }
 
diff --git a/cpp/src/cwrapper/tsfile_cwrapper.cc 
b/cpp/src/cwrapper/tsfile_cwrapper.cc
index 198be3cc..20c60446 100644
--- a/cpp/src/cwrapper/tsfile_cwrapper.cc
+++ b/cpp/src/cwrapper/tsfile_cwrapper.cc
@@ -280,17 +280,6 @@ TsRecord _ts_record_new(const char *device_id, Timestamp 
timestamp,
         return common::E_OK;                                         \
     }
 
-ERRNO _insert_data_into_ts_record_by_name_string(TsRecord data,
-                                                 const char *measurement_name,
-                                                 const char *value) {
-    auto *record = (storage::TsRecord *)data;
-    if (record->points_.size() + 1 > record->points_.capacity())
-        return common::E_BUF_NOT_ENOUGH;
-    std::string str_value(value, strlen(value));
-    record->add_point(measurement_name, common::String(str_value, record->pa));
-    return common::E_OK;
-}
-
 ERRNO _insert_data_into_ts_record_by_name_string_with_len(
     TsRecord data, const char *measurement_name, const char *value,
     const uint32_t value_len) {
diff --git a/cpp/src/cwrapper/tsfile_cwrapper.h 
b/cpp/src/cwrapper/tsfile_cwrapper.h
index 83f6536e..d4f5bc1e 100644
--- a/cpp/src/cwrapper/tsfile_cwrapper.h
+++ b/cpp/src/cwrapper/tsfile_cwrapper.h
@@ -625,9 +625,7 @@ INSERT_DATA_INTO_TS_RECORD_BY_NAME(int64_t);
 INSERT_DATA_INTO_TS_RECORD_BY_NAME(bool);
 INSERT_DATA_INTO_TS_RECORD_BY_NAME(float);
 INSERT_DATA_INTO_TS_RECORD_BY_NAME(double);
-ERRNO _insert_data_into_ts_record_by_name_string(TsRecord data,
-                                                 const char* measurement_name,
-                                                 const char* value);
+
 ERRNO _insert_data_into_ts_record_by_name_string_with_len(
     TsRecord data, const char* measurement_name, const char* value,
     const uint32_t value_len);
diff --git a/cpp/test/cwrapper/cwrapper_test.cc 
b/cpp/test/cwrapper/cwrapper_test.cc
index 0196625b..625e24ef 100644
--- a/cpp/test/cwrapper/cwrapper_test.cc
+++ b/cpp/test/cwrapper/cwrapper_test.cc
@@ -48,15 +48,14 @@ class CWrapperTest : public testing::Test {
 
 TEST_F(CWrapperTest, TestForPythonInterfaceInsert) {
     ERRNO code = 0;
-    const int column_num = 10;
-    char* filename = "cwrapper_for_python.tsfile";
+    const char* filename = "cwrapper_for_python.tsfile";
     remove(filename);  // Clean up any existing file
 
     // Device and measurement definitions
-    char* device_id = "root.device1";
-    char* str_measurement_id = "str_measurement";
-    char* text_measurement_id = "text_measurement";
-    char* date_measurement_id = "date_measurement";
+    char* device_id = strdup("root.device1");
+    char* str_measurement_id = strdup("str_measurement");
+    char* text_measurement_id = strdup("text_measurement");
+    char* date_measurement_id = strdup("date_measurement");
 
     // Define time series schemas for different data types
     timeseries_schema str_measurement;
@@ -99,15 +98,15 @@ TEST_F(CWrapperTest, TestForPythonInterfaceInsert) {
     auto* record = (storage::TsRecord*)_ts_record_new(device_id, 0, 3);
 
     // Insert string data
-    char* test_str = "test_string";
-    ASSERT_OK(_insert_data_into_ts_record_by_name_string(
-                  record, str_measurement_id, test_str),
+    const char* test_str = "test_string";
+    ASSERT_OK(_insert_data_into_ts_record_by_name_string_with_len(
+                  record, str_measurement_id, test_str, strlen(test_str)),
               "insert data failed");
 
     // Insert text data
-    char* test_text = "test_text";
-    ASSERT_OK(_insert_data_into_ts_record_by_name_string(
-                  record, text_measurement_id, test_text),
+    const char* test_text = "test_text";
+    ASSERT_OK(_insert_data_into_ts_record_by_name_string_with_len(
+                  record, text_measurement_id, test_text, strlen(test_text)),
               "insert data failed");
 
     // Insert date data - NOTE: There's a bug here, should use
@@ -137,7 +136,7 @@ TEST_F(CWrapperTest, TestForPythonInterfaceInsert) {
     // Verify the retrieved data matches what we inserted
     bool has_next = false;
     int row_count = 0;
-    while (!result->next(has_next) && has_next) {
+    while (result->next(has_next) == common::E_OK && has_next) {
         // Verify timestamp
         EXPECT_EQ(result->get_value<int64_t>(1), row_count);
 
@@ -164,6 +163,10 @@ TEST_F(CWrapperTest, TestForPythonInterfaceInsert) {
     }
 
     ASSERT_OK(reader->close(), "close reader failed");
+    delete device_id;
+    delete str_measurement_id;
+    delete text_measurement_id;
+    delete date_measurement_id;
 }
 
 TEST_F(CWrapperTest, WriterFlushTabletAndReadData) {
diff --git a/cpp/test/reader/table_view/tsfile_reader_table_test.cc 
b/cpp/test/reader/table_view/tsfile_reader_table_test.cc
index 02398c68..c672a806 100644
--- a/cpp/test/reader/table_view/tsfile_reader_table_test.cc
+++ b/cpp/test/reader/table_view/tsfile_reader_table_test.cc
@@ -452,6 +452,7 @@ TEST_F(TsFileTableReaderTest, TestDecoder) {
     ResultSet* ret = nullptr;
     int ret_value =
         reader.query("test_table", columns, INT64_MIN, INT64_MAX, ret);
+    ASSERT_EQ(ret_value, E_OK);
     auto* table_result_set = (storage::TableResultSet*)ret;
     bool has_next = false;
     int cur_lin = 0;
diff --git a/python/tests/test_write_and_read.py 
b/python/tests/test_write_and_read.py
index ab916f21..665fcc2d 100644
--- a/python/tests/test_write_and_read.py
+++ b/python/tests/test_write_and_read.py
@@ -88,7 +88,6 @@ def test_row_record_write_and_read():
             os.remove("record_write_and_read.tsfile")
 
 
[email protected](reason="API not match")
 def test_tablet_write_and_read():
     try:
         if os.path.exists("record_write_and_read.tsfile"):
diff --git a/python/tsfile/tsfile_cpp.pxd b/python/tsfile/tsfile_cpp.pxd
index 7a1fa567..8e5f9913 100644
--- a/python/tsfile/tsfile_cpp.pxd
+++ b/python/tsfile/tsfile_cpp.pxd
@@ -161,13 +161,9 @@ cdef extern from "./tsfile_cwrapper.h":
     ErrorCode _insert_data_into_ts_record_by_name_double(TsRecord data, const 
char *measurement_name,
                                                          const double value);
     ErrorCode _insert_data_into_ts_record_by_name_bool(TsRecord data, const 
char *measurement_name, const  bint value);
-    ErrorCode _insert_data_into_ts_record_by_name_string(TsRecord data, const 
char *measurement_name,
-                                                         const char *value);
     ErrorCode _insert_data_into_ts_record_by_name_string_with_len(TsRecord 
data, const char *measurement_name,
                                                                   const char 
*value,
                                                                   const 
uint32_t value_len);
-    #ErrorCode _insert_data_into_ts_record_by_name_blob(record, 
PyUnicode_AsUTF8(field.get_field_name()), field.get_bytes_value())
-
     void _free_tsfile_ts_record(TsRecord * record);
 
     # resulSet : query data from tsfile reader
diff --git a/python/tsfile/tsfile_py_cpp.pyx b/python/tsfile/tsfile_py_cpp.pyx
index 5016ad74..5e6b4d89 100644
--- a/python/tsfile/tsfile_py_cpp.pyx
+++ b/python/tsfile/tsfile_py_cpp.pyx
@@ -24,7 +24,7 @@ from libc.stdlib cimport free
 from libc.stdlib cimport malloc
 from libc.string cimport strdup
 from cpython.exc cimport PyErr_SetObject
-from cpython.unicode cimport PyUnicode_AsUTF8String, PyUnicode_AsUTF8
+from cpython.unicode cimport PyUnicode_AsUTF8String, PyUnicode_AsUTF8, 
PyUnicode_AsUTF8AndSize
 from cpython.bytes cimport PyBytes_AsString, PyBytes_AsStringAndSize
 
 from tsfile.exceptions import ERROR_MAPPING
@@ -268,7 +268,7 @@ cdef Tablet to_c_tablet(object tablet):
                 if value[row] is not None:
                     tablet_add_value_by_index_double(ctablet, row, col, 
value[row])
 
-        # STRING or TEXT
+        # STRING or TEXT or BLOB
         elif data_type == TS_DATATYPE_STRING or data_type == TS_DATATYPE_TEXT 
or data_type == TS_DATATYPE_BLOB:
             for row in range(max_row_num):
                 if value[row] is not None:
@@ -286,8 +286,9 @@ cdef TsRecord to_c_record(object row_record):
     cdef int64_t timestamp = <int64_t>row_record.get_timestamp()
     cdef bytes device_id_bytes = 
PyUnicode_AsUTF8String(row_record.get_device_id())
     cdef const char* device_id = device_id_bytes
+    cdef const char* str_ptr
     cdef char* blob_ptr
-    cdef Py_ssize_t blob_len
+    cdef Py_ssize_t str_len
     cdef TsRecord record
     cdef int i
     cdef TSDataType data_type
@@ -306,14 +307,13 @@ cdef TsRecord to_c_record(object row_record):
         elif data_type == TS_DATATYPE_FLOAT:
             _insert_data_into_ts_record_by_name_float(record, 
PyUnicode_AsUTF8(field.get_field_name()), field.get_float_value())
         elif data_type == TS_DATATYPE_TEXT or data_type == TS_DATATYPE_STRING:
-            _insert_data_into_ts_record_by_name_string(record, 
PyUnicode_AsUTF8(field.get_field_name()), 
PyUnicode_AsUTF8(field.get_string_value()))
-        elif data_type == TS_DATATYPE_BLOB:
-            if PyBytes_AsStringAndSize(field.get_string_value(), &blob_ptr, 
&blob_len) < 0:
+            str_ptr =  PyUnicode_AsUTF8AndSize(field.get_string_value(), 
&str_len)
+            _insert_data_into_ts_record_by_name_string_with_len(record, 
PyUnicode_AsUTF8(field.get_field_name()), str_ptr, str_len)
+        elif data_type == TS_DATATYPE_BLOB or data_type == TS_DATATYPE_TEXT or 
data_type == TS_DATATYPE_STRING:
+            if PyBytes_AsStringAndSize(field.get_string_value(), &blob_ptr, 
&str_len) < 0:
                 raise ValueError("blob not legal")
             _insert_data_into_ts_record_by_name_string_with_len(record, 
PyUnicode_AsUTF8(field.get_field_name()),
-                                                                <const char*> 
blob_ptr, <uint32_t>blob_len)
-
-
+                                                                <const char*> 
blob_ptr, <uint32_t>str_len)
     return record
 
 # Free c structs' space

Reply via email to