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

colinlee pushed a commit to branch colin_example_c_cpp
in repository https://gitbox.apache.org/repos/asf/tsfile.git

commit 57b101e72bda8ab3c7d8bfb8d6463941ba9d96d2
Author: colin <shuoli...@163.com>
AuthorDate: Wed Feb 26 20:54:34 2025 +0800

    fix some error.
---
 cpp/src/common/schema.h             |  2 +-
 cpp/src/cwrapper/tsfile_cwrapper.cc |  8 ++++++--
 cpp/src/cwrapper/tsfile_cwrapper.h  |  2 +-
 cpp/test/cwrapper/cwrapper_test.cc  | 19 ++++++++++++++-----
 4 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/cpp/src/common/schema.h b/cpp/src/common/schema.h
index 43cefbc8..3a67b7fa 100644
--- a/cpp/src/common/schema.h
+++ b/cpp/src/common/schema.h
@@ -184,7 +184,7 @@ class TableSchema {
      * in the table.
      */
     TableSchema(const std::string &table_name,
-                const std::vector<common::ColumnSchema> &column_schemas) {
+                const std::vector<common::ColumnSchema> 
&column_schemas):table_name_(table_name) {
         to_lowercase_inplace(table_name_);
         for (const common::ColumnSchema &column_schema : column_schemas) {
             column_schemas_.emplace_back(std::make_shared<MeasurementSchema>(
diff --git a/cpp/src/cwrapper/tsfile_cwrapper.cc 
b/cpp/src/cwrapper/tsfile_cwrapper.cc
index 048b4dfa..220bb6f2 100644
--- a/cpp/src/cwrapper/tsfile_cwrapper.cc
+++ b/cpp/src/cwrapper/tsfile_cwrapper.cc
@@ -290,14 +290,14 @@ ERRNO tsfile_writer_write(TsFileWriter writer, Tablet 
tablet) {
 
 ResultSet tsfile_query_table(TsFileReader reader, const char *table_name,
                              char **columns, uint32_t column_num,
-                             Timestamp start_time, Timestamp end_time) {
+                             Timestamp start_time, Timestamp end_time, ERRNO* 
err_code) {
     auto *r = static_cast<storage::TsFileReader *>(reader);
     storage::ResultSet *table_result_set = nullptr;
     std::vector<std::string> column_names;
     for (int i = 0; i < column_num; i++) {
         column_names.emplace_back(columns[i]);
     }
-    r->query(table_name, column_names, start_time, end_time, table_result_set);
+    *err_code = r->query(table_name, column_names, start_time, end_time, 
table_result_set);
     return table_result_set;
 }
 
@@ -385,6 +385,10 @@ bool tsfile_result_set_is_null_by_index(const ResultSet 
result_set,
 
 ResultSetMetaData tsfile_result_set_get_metadata(ResultSet result_set) {
     auto *r = static_cast<storage::TableResultSet *>(result_set);
+    if (result_set == NULL) {
+        return ResultSetMetaData();
+    }
+
     ResultSetMetaData meta_data;
     std::shared_ptr<storage::ResultSetMetadata> result_set_metadata =
         r->get_metadata();
diff --git a/cpp/src/cwrapper/tsfile_cwrapper.h 
b/cpp/src/cwrapper/tsfile_cwrapper.h
index fffb7b59..a10c2af0 100644
--- a/cpp/src/cwrapper/tsfile_cwrapper.h
+++ b/cpp/src/cwrapper/tsfile_cwrapper.h
@@ -313,7 +313,7 @@ ERRNO tsfile_writer_write(TsFileWriter writer, Tablet 
tablet);
  */
 ResultSet tsfile_query_table(TsFileReader reader, const char* table_name,
                              char** columns, uint32_t column_num,
-                             Timestamp start_time, Timestamp end_time);
+                             Timestamp start_time, Timestamp end_time, ERRNO* 
err_code);
 // ResultSet tsfile_reader_query_device(TsFileReader reader,
 //                                      const char* device_name,
 //                                      char** sensor_name, uint32_t 
sensor_num,
diff --git a/cpp/test/cwrapper/cwrapper_test.cc 
b/cpp/test/cwrapper/cwrapper_test.cc
index 85429af7..52b631ef 100644
--- a/cpp/test/cwrapper/cwrapper_test.cc
+++ b/cpp/test/cwrapper/cwrapper_test.cc
@@ -64,7 +64,7 @@ TEST_F(CWrapperTest, WriterFlushTabletAndReadData) {
     for (int i = 2; i < column_num; i++) {
         schema.column_schemas[i] = ColumnSchema{
             strdup(("s" + std::to_string(i)).c_str()), TS_DATATYPE_INT32,
-            TS_COMPRESSION_UNCOMPRESSED, TS_ENCODING_PLAIN, TAG};
+            TS_COMPRESSION_UNCOMPRESSED, TS_ENCODING_PLAIN, FIELD};
     }
     TsFileWriter writer = tsfile_writer_new(
         "cwrapper_write_flush_and_read.tsfile", &schema, &code);
@@ -91,6 +91,10 @@ TEST_F(CWrapperTest, WriterFlushTabletAndReadData) {
     data_types[0] = TS_DATATYPE_STRING;
     data_types[1] = TS_DATATYPE_STRING;
     Tablet tablet = tablet_new(column_names, data_types, column_num, max_rows);
+    for(int i = 2; i < column_num; i++) {
+        free(column_names[i]);
+    }
+    free(column_names);
 
     for (int i = 0; i < max_rows; i++) {
         code = tablet_add_timestamp(tablet, i, static_cast<Timestamp>(i * 10));
@@ -117,15 +121,20 @@ TEST_F(CWrapperTest, WriterFlushTabletAndReadData) {
     char** sensor_list = static_cast<char**>(malloc(4 * sizeof(char*)));
     sensor_list[0] = "id1";
     sensor_list[1] = "id2";
-    sensor_list[2] = "s1";
-    sensor_list[3] = "s2";
+    sensor_list[2] = "s3";
+    sensor_list[3] = "s4";
     ResultSet result_set =
-        tsfile_query_table(reader, "table1", sensor_list, 4, 0, 100);
+        tsfile_query_table(reader, "table1", sensor_list, 4, 0, 100, &code);
 
     ResultSetMetaData metadata = tsfile_result_set_get_metadata(result_set);
     ASSERT_EQ(metadata.column_num, 4);
     ASSERT_EQ(std::string(metadata.column_names[3]),
-              std::string("s2"));
+              std::string("s4"));
     ASSERT_EQ(metadata.data_types[3], TS_DATATYPE_INT32);
+    while(tsfile_result_set_next(result_set, &code) && code == E_OK) {
+        std::cout<< tsfile_result_set_is_null_by_index(result_set, 1);
+    }
+
+
 }
 }  // namespace cwrapper
\ No newline at end of file

Reply via email to