761417898 commented on code in PR #192:
URL: https://github.com/apache/tsfile/pull/192#discussion_r1714778572


##########
cpp/src/writer/tsfile_writer.cc:
##########
@@ -467,29 +670,65 @@ bool TsFileWriter::check_chunk_group_empty(
     return true;
 }
 
-int TsFileWriter::flush_chunk_group(MeasurementSchemaGroup *chunk_group) {
+int TsFileWriter::flush_chunk_group(MeasurementSchemaGroup *chunk_group,
+                                    bool is_aligned) {
     int ret = E_OK;
     MeasurementSchemaMap &map = chunk_group->measurement_schema_map_;
-    for (MeasurementSchemaMapIter ms_iter = map.begin(); ms_iter != map.end();
-         ms_iter++) {
-        MeasurementSchema *m_schema = ms_iter->second;
-        ChunkWriter *&chunk_writer = m_schema->chunk_writer_;
-        if (RET_FAIL(chunk_writer->end_encode_chunk())) {
+    if (chunk_group->is_aligned_) {
+        TimeChunkWriter *&time_chunk_writer = chunk_group->time_chunk_writer_;
+        ChunkHeader chunk_header = time_chunk_writer->get_chunk_header();
+        if (RET_FAIL(time_chunk_writer->end_encode_chunk())) {
         } else if (RET_FAIL(io_writer_->start_flush_chunk(
-                       chunk_writer->get_chunk_data(),
-                       m_schema->measurement_name_, m_schema->data_type_,
-                       m_schema->encoding_, m_schema->compression_type_,
-                       chunk_writer->num_of_pages()))) {
-            return ret;
+                       time_chunk_writer->get_chunk_data(),
+                       chunk_header.measurement_name_, chunk_header.data_type_,
+                       chunk_header.encoding_type_,
+                       chunk_header.compression_type_,
+                       time_chunk_writer->num_of_pages()))) {
         } else if (RET_FAIL(io_writer_->flush_chunk(
-                       chunk_writer->get_chunk_data()))) {
-            return ret;
+                       time_chunk_writer->get_chunk_data()))) {
         } else if (RET_FAIL(io_writer_->end_flush_chunk(
-                       chunk_writer->get_chunk_statistic()))) {
-            return ret;
+                       time_chunk_writer->get_chunk_statistic()))) {
         } else {
-            chunk_writer->destroy();
-            chunk_writer = nullptr;
+            time_chunk_writer->destroy();
+            time_chunk_writer = nullptr;
+        }
+    }
+    for (MeasurementSchemaMapIter ms_iter = map.begin(); ms_iter != map.end();
+         ms_iter++) {
+        MeasurementSchema *m_schema = ms_iter->second;
+        if (!chunk_group->is_aligned_) {
+            ChunkWriter *&chunk_writer = m_schema->chunk_writer_;
+            if (RET_FAIL(chunk_writer->end_encode_chunk())) {
+            } else if (RET_FAIL(io_writer_->start_flush_chunk(
+                           chunk_writer->get_chunk_data(),
+                           m_schema->measurement_name_, m_schema->data_type_,
+                           m_schema->encoding_, m_schema->compression_type_,
+                           chunk_writer->num_of_pages()))) {
+            } else if (RET_FAIL(io_writer_->flush_chunk(
+                           chunk_writer->get_chunk_data()))) {
+            } else if (RET_FAIL(io_writer_->end_flush_chunk(
+                           chunk_writer->get_chunk_statistic()))) {
+            } else {
+                chunk_writer->destroy();
+                chunk_writer = nullptr;
+            }
+        } else {
+            ValueChunkWriter *&value_chunk_writer =
+                m_schema->value_chunk_writer_;
+            if (RET_FAIL(value_chunk_writer->end_encode_chunk())) {
+            } else if (RET_FAIL(io_writer_->start_flush_chunk(
+                           value_chunk_writer->get_chunk_data(),
+                           m_schema->measurement_name_, m_schema->data_type_,
+                           m_schema->encoding_, m_schema->compression_type_,
+                           value_chunk_writer->num_of_pages()))) {
+            } else if (RET_FAIL(io_writer_->flush_chunk(
+                           value_chunk_writer->get_chunk_data()))) {
+            } else if (RET_FAIL(io_writer_->end_flush_chunk(
+                           value_chunk_writer->get_chunk_statistic()))) {
+            } else {
+                value_chunk_writer->destroy();
+                value_chunk_writer = nullptr;
+            }
         }

Review Comment:
   Rewrite the code with #define



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to