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 b73abd227975f0f3e85601e8655856c02f937167
Author: colin <shuoli...@163.com>
AuthorDate: Wed Feb 26 15:03:34 2025 +0800

    fix some error.
---
 cpp/examples/cpp_examples/cpp_examples.h |   1 +
 cpp/examples/cpp_examples/demo_read.cpp  |   5 +-
 cpp/examples/cpp_examples/demo_write.cpp |   3 +-
 cpp/src/common/tablet.cc                 | 120 ++++++++++++++++++-------------
 cpp/src/cwrapper/tsfile_cwrapper.cc      |  25 ++++++-
 cpp/src/cwrapper/tsfile_cwrapper.h       |  10 +--
 6 files changed, 108 insertions(+), 56 deletions(-)

diff --git a/cpp/examples/cpp_examples/cpp_examples.h 
b/cpp/examples/cpp_examples/cpp_examples.h
index 7f877453..31ced477 100644
--- a/cpp/examples/cpp_examples/cpp_examples.h
+++ b/cpp/examples/cpp_examples/cpp_examples.h
@@ -20,6 +20,7 @@
 #include "common/db_common.h"
 #include "common/path.h"
 #include "common/record.h"
+#include "common/tablet.h"
 #include "common/row_record.h"
 #include "common/schema.h"
 #include "reader/expression.h"
diff --git a/cpp/examples/cpp_examples/demo_read.cpp 
b/cpp/examples/cpp_examples/demo_read.cpp
index 08424b9b..c5b759a0 100644
--- a/cpp/examples/cpp_examples/demo_read.cpp
+++ b/cpp/examples/cpp_examples/demo_read.cpp
@@ -82,6 +82,9 @@ int demo_read() {
                 std::cout << "null" << std::endl;
             } else {
                 switch (metadata->get_column_type(i)) {
+                        case common::BOOLEAN:
+                            std::cout << ret->get_value<bool>(i) << std::endl;
+                    break;
                     case common::INT32:
                         std::cout << ret->get_value<int32_t>(i) << std::endl;
                         break;
@@ -95,7 +98,7 @@ int demo_read() {
                         std::cout << ret->get_value<double>(i) << std::endl;
                         break;
                     case common::STRING:
-                        std::cout << ret->get_value<std::string>(i)
+                        std::cout << ret->get_value<common::String*>(i)
                                   << std::endl;
                         break;
                     default:;
diff --git a/cpp/examples/cpp_examples/demo_write.cpp 
b/cpp/examples/cpp_examples/demo_write.cpp
index 89879e8d..967a84d1 100644
--- a/cpp/examples/cpp_examples/demo_write.cpp
+++ b/cpp/examples/cpp_examples/demo_write.cpp
@@ -54,7 +54,7 @@ int demo_write() {
         table_name, {"id1", "id2", "s1"},
         {common::STRING, common::STRING, common::INT32},
         {common::ColumnCategory::TAG, common::ColumnCategory::TAG,
-         common::ColumnCategory::FIELD})
+         common::ColumnCategory::FIELD});
 
         for (int row = 0; row < 5; row++) {
             long timestamp = row;
@@ -67,4 +67,5 @@ int demo_write() {
     writer->flush();
     writer->close();
     delete writer;
+    return 0;
 }
diff --git a/cpp/src/common/tablet.cc b/cpp/src/common/tablet.cc
index 181e9920..54f39df5 100644
--- a/cpp/src/common/tablet.cc
+++ b/cpp/src/common/tablet.cc
@@ -43,33 +43,40 @@ int Tablet::init() {
         }
     }
     ASSERT(schema_map_.size() == schema_count);
-    value_matrix_ = (ValueMatrixEntry *)malloc(sizeof(ValueMatrixEntry) * 
schema_count);
+    value_matrix_ =
+        (ValueMatrixEntry *)malloc(sizeof(ValueMatrixEntry) * schema_count);
     for (size_t c = 0; c < schema_count; ++c) {
         const MeasurementSchema &schema = schema_vec_->at(c);
 
         switch (schema.data_type_) {
             case BOOLEAN:
-                value_matrix_[c].bool_data = (bool 
*)malloc(get_data_type_size(schema.data_type_) * max_row_num_);
+                value_matrix_[c].bool_data = (bool *)malloc(
+                    get_data_type_size(schema.data_type_) * max_row_num_);
                 break;
             case INT32:
-                value_matrix_[c].int32_data = (int32_t 
*)malloc(get_data_type_size(schema.data_type_) * max_row_num_);
+                value_matrix_[c].int32_data = (int32_t *)malloc(
+                    get_data_type_size(schema.data_type_) * max_row_num_);
                 break;
             case INT64:
-                value_matrix_[c].int64_data = (int64_t 
*)malloc(get_data_type_size(schema.data_type_) * max_row_num_);
+                value_matrix_[c].int64_data = (int64_t *)malloc(
+                    get_data_type_size(schema.data_type_) * max_row_num_);
                 break;
             case FLOAT:
-                value_matrix_[c].float_data = (float 
*)malloc(get_data_type_size(schema.data_type_) * max_row_num_);
+                value_matrix_[c].float_data = (float *)malloc(
+                    get_data_type_size(schema.data_type_) * max_row_num_);
                 break;
             case DOUBLE:
-                value_matrix_[c].double_data = (double 
*)malloc(get_data_type_size(schema.data_type_) * max_row_num_);
+                value_matrix_[c].double_data = (double *)malloc(
+                    get_data_type_size(schema.data_type_) * max_row_num_);
                 break;
             case STRING: {
-                value_matrix_[c].string_data = (common::String 
*)malloc(sizeof(String) * max_row_num_);
+                value_matrix_[c].string_data =
+                    (common::String *)malloc(sizeof(String) * max_row_num_);
                 break;
             }
             default:
                 ASSERT(false);
-            return E_INVALID_ARG;
+                return E_INVALID_ARG;
         }
     }
 
@@ -92,24 +99,24 @@ void Tablet::destroy() {
             switch (schema.data_type_) {
                 case INT32:
                     free(value_matrix_[c].int32_data);
-                break;
+                    break;
                 case INT64:
                     free(value_matrix_[c].int64_data);
-                break;
+                    break;
                 case FLOAT:
                     free(value_matrix_[c].float_data);
-                break;
+                    break;
                 case DOUBLE:
                     free(value_matrix_[c].double_data);
-                break;
+                    break;
                 case BOOLEAN:
                     free(value_matrix_[c].bool_data);
-                break;
+                    break;
                 case STRING:
                     free(value_matrix_[c].string_data);
-                break;
+                    break;
                 default:
-                        break;
+                    break;
             }
         }
         free(value_matrix_);
@@ -133,11 +140,12 @@ int Tablet::add_timestamp(uint32_t row_index, int64_t 
timestamp) {
     return E_OK;
 }
 
-void* Tablet::get_value(int row_index, uint32_t schema_index, 
common::TSDataType& data_type) const {
+void *Tablet::get_value(int row_index, uint32_t schema_index,
+                        common::TSDataType &data_type) const {
     if (UNLIKELY(schema_index >= schema_vec_->size())) {
         return nullptr;
     }
-    const MeasurementSchema& schema = schema_vec_->at(schema_index);
+    const MeasurementSchema &schema = schema_vec_->at(schema_index);
 
     ValueMatrixEntry column_values = value_matrix_[schema_index];
     data_type = schema.data_type_;
@@ -146,23 +154,23 @@ void* Tablet::get_value(int row_index, uint32_t 
schema_index, common::TSDataType
     }
     switch (schema.data_type_) {
         case BOOLEAN: {
-            bool* bool_values = column_values.bool_data;
+            bool *bool_values = column_values.bool_data;
             return &bool_values[row_index];
         }
         case INT32: {
-            int32_t* int32_values = column_values.int32_data;
+            int32_t *int32_values = column_values.int32_data;
             return &int32_values[row_index];
         }
         case INT64: {
-            int64_t* int64_values = column_values.int64_data;
+            int64_t *int64_values = column_values.int64_data;
             return &int64_values[row_index];
         }
         case FLOAT: {
-            float* float_values = column_values.float_data;
+            float *float_values = column_values.float_data;
             return &float_values[row_index];
         }
         case DOUBLE: {
-            double* double_values = column_values.double_data;
+            double *double_values = column_values.double_data;
             return &double_values[row_index];
         }
         case STRING: {
@@ -175,8 +183,10 @@ void* Tablet::get_value(int row_index, uint32_t 
schema_index, common::TSDataType
 }
 
 template <>
-void Tablet::process_val(uint32_t row_index, uint32_t schema_index, 
common::String val) {
-    value_matrix_[schema_index].string_data[row_index].dup_from(val, 
page_arena_);
+void Tablet::process_val(uint32_t row_index, uint32_t schema_index,
+                         common::String val) {
+    value_matrix_[schema_index].string_data[row_index].dup_from(val,
+                                                                page_arena_);
     bitmaps_[schema_index].clear(row_index); /* mark as non-null */
 }
 
@@ -184,20 +194,25 @@ template <typename T>
 void Tablet::process_val(uint32_t row_index, uint32_t schema_index, T val) {
     switch (schema_vec_->at(schema_index).data_type_) {
         case common::BOOLEAN:
-            (value_matrix_[schema_index].bool_data)[row_index] = 
static_cast<bool>(val);
-        break;
+            (value_matrix_[schema_index].bool_data)[row_index] =
+                static_cast<bool>(val);
+            break;
         case common::INT32:
-            value_matrix_[schema_index].int32_data[row_index] = 
static_cast<int32_t>(val);
-        break;
+            value_matrix_[schema_index].int32_data[row_index] =
+                static_cast<int32_t>(val);
+            break;
         case common::INT64:
-            value_matrix_[schema_index].int64_data[row_index] = 
static_cast<int64_t>(val);
-        break;
+            value_matrix_[schema_index].int64_data[row_index] =
+                static_cast<int64_t>(val);
+            break;
         case common::FLOAT:
-            value_matrix_[schema_index].float_data[row_index] = 
static_cast<float>(val);
-        break;
+            value_matrix_[schema_index].float_data[row_index] =
+                static_cast<float>(val);
+            break;
         case common::DOUBLE:
-            value_matrix_[schema_index].double_data[row_index] = 
static_cast<double>(val);
-        break;
+            value_matrix_[schema_index].double_data[row_index] =
+                static_cast<double>(val);
+            break;
         default:
             ASSERT(false);
     }
@@ -216,13 +231,13 @@ int Tablet::add_value(uint32_t row_index, uint32_t 
schema_index, T val) {
             if (GetDataTypeFromTemplateType<T>() == common::INT32 &&
                 schema.data_type_ == common::INT64) {
                 process_val(row_index, schema_index, 
static_cast<int64_t>(val));
-                } else if (GetDataTypeFromTemplateType<T>() == common::FLOAT &&
-                           schema.data_type_ == common::DOUBLE) {
-                    process_val(row_index, schema_index, 
static_cast<double>(val));
-                           } else {
-                               ASSERT(false);
-                               return E_TYPE_NOT_MATCH;
-                           }
+            } else if (GetDataTypeFromTemplateType<T>() == common::FLOAT &&
+                       schema.data_type_ == common::DOUBLE) {
+                process_val(row_index, schema_index, static_cast<double>(val));
+            } else {
+                ASSERT(false);
+                return E_TYPE_NOT_MATCH;
+            }
         } else {
             process_val(row_index, schema_index, val);
         }
@@ -231,7 +246,8 @@ int Tablet::add_value(uint32_t row_index, uint32_t 
schema_index, T val) {
 }
 
 template <>
-int Tablet::add_value(uint32_t row_index, uint32_t schema_index, 
common::String val) {
+int Tablet::add_value(uint32_t row_index, uint32_t schema_index,
+                      common::String val) {
     int ret = common::E_OK;
     if (UNLIKELY(schema_index >= schema_vec_->size())) {
         ASSERT(false);
@@ -255,6 +271,13 @@ int Tablet::add_value(uint32_t row_index, const 
std::string &measurement_name,
     return ret;
 }
 
+template<>
+int Tablet::add_value(uint32_t row_index,
+                               const std::string &measurement_name,
+                               const char *val) {
+    add_value(row_index, measurement_name, String(val));
+}
+
 template int Tablet::add_value(uint32_t row_index, uint32_t schema_index,
                                bool val);
 template int Tablet::add_value(uint32_t row_index, uint32_t schema_index,
@@ -279,10 +302,11 @@ template int Tablet::add_value(uint32_t row_index,
 template int Tablet::add_value(uint32_t row_index,
                                const std::string &measurement_name, double 
val);
 template int Tablet::add_value(uint32_t row_index,
-                               const std::string &measurement_name,
-                               String val);
+                               const std::string &measurement_name, String 
val);
+
 
-void Tablet::set_column_categories(const std::vector<ColumnCategory>& 
column_categories) {
+void Tablet::set_column_categories(
+    const std::vector<ColumnCategory> &column_categories) {
     column_categories_ = column_categories;
     id_column_indexes_.clear();
     for (size_t i = 0; i < column_categories_.size(); i++) {
@@ -298,15 +322,15 @@ std::shared_ptr<IDeviceID> Tablet::get_device_id(int i) 
const {
     id_array.push_back(insert_target_name_);
     for (auto id_column_idx : id_column_indexes_) {
         common::TSDataType data_type = INVALID_DATATYPE;
-        void* value_ptr = get_value(i, id_column_idx, data_type);
+        void *value_ptr = get_value(i, id_column_idx, data_type);
         common::String str;
         switch (data_type) {
             case STRING:
-                str = *static_cast<common::String*>(value_ptr);
+                str = *static_cast<common::String *>(value_ptr);
                 id_array.push_back(str.to_std_string());
                 break;
             default:
-                break ;
+                break;
         }
     }
     return std::make_shared<StringArrayDeviceID>(id_array);
diff --git a/cpp/src/cwrapper/tsfile_cwrapper.cc 
b/cpp/src/cwrapper/tsfile_cwrapper.cc
index efe024b6..50fba728 100644
--- a/cpp/src/cwrapper/tsfile_cwrapper.cc
+++ b/cpp/src/cwrapper/tsfile_cwrapper.cc
@@ -26,6 +26,10 @@
 #include "reader/tsfile_reader.h"
 #include "writer/tsfile_writer.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 static bool is_init = false;
 
 Tablet tablet_new_with_device(const char *device_id, char **column_name_list,
@@ -74,6 +78,13 @@ ERRNO tablet_add_timestamp(Tablet tablet, uint32_t row_index,
             row_index, column_name, value);                                  \
     }
 
+ERRNO tablet_add_value_by_name_string(Tablet tablet, uint32_t row_index,
+                                      const char* column_name, char* value) {
+    return static_cast<storage::Tablet *>(tablet)->add_value(
+        row_index, column_name, common::String(value));
+
+}
+
 TABLET_ADD_VALUE_BY_NAME_DEF(int32_t);
 TABLET_ADD_VALUE_BY_NAME_DEF(int64_t);
 TABLET_ADD_VALUE_BY_NAME_DEF(float);
@@ -88,6 +99,14 @@ TABLET_ADD_VALUE_BY_NAME_DEF(bool);
             row_index, column_index, value);                                  \
     }
 
+ERRNO tablet_add_value_by_index_string(Tablet tablet, uint32_t row_index,
+                                      uint32_t column_index, char* value) {
+    return static_cast<storage::Tablet *>(tablet)->add_value(
+        row_index, column_index, common::String(value));
+
+}
+
+
 TABLE_ADD_VALUE_BY_INDEX_DEF(int32_t);
 TABLE_ADD_VALUE_BY_INDEX_DEF(int64_t);
 TABLE_ADD_VALUE_BY_INDEX_DEF(float);
@@ -460,4 +479,8 @@ void free_table_schema(TableSchema schema) {
     }
     free(schema.column_schemas);
 }
-void free_column_schema(ColumnSchema schema) { free(schema.column_name); }
\ No newline at end of file
+void free_column_schema(ColumnSchema schema) { free(schema.column_name); }
+
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/cpp/src/cwrapper/tsfile_cwrapper.h 
b/cpp/src/cwrapper/tsfile_cwrapper.h
index 5c1e30fc..f0e4cdc6 100644
--- a/cpp/src/cwrapper/tsfile_cwrapper.h
+++ b/cpp/src/cwrapper/tsfile_cwrapper.h
@@ -124,7 +124,7 @@ Tablet tablet_new_with_device(const char* device_id, char** 
column_name_list,
                               int max_rows);
 
 Tablet tablet_new(const char** column_name_list, TSDataType* data_types,
-                  int column_num);
+                  uint32_t column_num);
 
 uint32_t tablet_get_cur_row_size(Tablet tablet);
 
@@ -133,7 +133,7 @@ ERRNO tablet_add_timestamp(Tablet tablet, uint32_t 
row_index,
 
 #define TABLET_ADD_VALUE_BY_NAME(type)                                       \
     ERRNO tablet_add_value_by_name_##type(Tablet tablet, uint32_t row_index, \
-                                          char* column_name, type value);
+                                          const char* column_name, type value);
 
 TABLET_ADD_VALUE_BY_NAME(int32_t);
 TABLET_ADD_VALUE_BY_NAME(int64_t);
@@ -142,7 +142,7 @@ TABLET_ADD_VALUE_BY_NAME(double);
 TABLET_ADD_VALUE_BY_NAME(bool);
 
 ERRNO tablet_add_value_by_name_string(Tablet tablet, uint32_t row_index,
-                                      char* column_name, char* value);
+                                      const char* column_name, char* value);
 
 #define TABLE_ADD_VALUE_BY_INDEX(type)                                        \
     ERRNO tablet_add_value_by_index_##type(Tablet tablet, uint32_t row_index, \
@@ -228,8 +228,8 @@ TSFILE_RESULT_SET_GET_VALUE_BY_INDEX(float);
 TSFILE_RESULT_SET_GET_VALUE_BY_INDEX(double);
 TSFILE_RESULT_SET_GET_VALUE_BY_INDEX(bool);
 
-char* tsfile_result_set_get_value_by_name_string(ResultSet result_set,
-                                                 const char* column_name);
+char* tsfile_result_set_get_value_by_index_string(ResultSet result_set,
+                                                 uint32_t column_index);
 bool tsfile_result_set_is_null_by_name(ResultSet result_set,
                                        const char* column_name);
 

Reply via email to