From 45437d51cf4ec6d6a15bf1e7ca591d5004efb332 Mon Sep 17 00:00:00 2001 From: Luwei <814383175@qq.com> Date: Tue, 23 Jul 2024 17:18:06 +0800 Subject: [PATCH 1/3] [fix](compaction) fix the issue of writing segment with 0 rows during compaction --- be/src/olap/rowset/vertical_beta_rowset_writer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/be/src/olap/rowset/vertical_beta_rowset_writer.cpp b/be/src/olap/rowset/vertical_beta_rowset_writer.cpp index 942ced616fcaae..4e13239e59b490 100644 --- a/be/src/olap/rowset/vertical_beta_rowset_writer.cpp +++ b/be/src/olap/rowset/vertical_beta_rowset_writer.cpp @@ -89,7 +89,7 @@ Status VerticalBetaRowsetWriter::add_columns(const vectorized::Block* block, VLOG_NOTICE << "num_rows_written: " << num_rows_written << ", _cur_writer_idx: " << _cur_writer_idx; uint32_t num_rows_key_group = _segment_writers[_cur_writer_idx]->row_count(); - CHECK_LE(num_rows_written, num_rows_key_group); + CHECK_LT(num_rows_written, num_rows_key_group); // init if it's first value column write in current segment if (num_rows_written == 0) { VLOG_NOTICE << "init first value column segment writer"; @@ -104,7 +104,7 @@ Status VerticalBetaRowsetWriter::add_columns(const vectorized::Block* block, left -= to_write; CHECK_GE(left, 0); - if (left > 0) { + if (num_rows_key_group == num_rows_written + to_write) { ++_cur_writer_idx; } } From 346d7c0f617f59335c7f198b4061887cc7550fb7 Mon Sep 17 00:00:00 2001 From: Luwei <814383175@qq.com> Date: Tue, 23 Jul 2024 19:28:45 +0800 Subject: [PATCH 2/3] fix --- be/src/olap/rowset/vertical_beta_rowset_writer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/be/src/olap/rowset/vertical_beta_rowset_writer.cpp b/be/src/olap/rowset/vertical_beta_rowset_writer.cpp index 4e13239e59b490..b51772590a4f0e 100644 --- a/be/src/olap/rowset/vertical_beta_rowset_writer.cpp +++ b/be/src/olap/rowset/vertical_beta_rowset_writer.cpp @@ -104,7 +104,7 @@ Status VerticalBetaRowsetWriter::add_columns(const vectorized::Block* block, left -= to_write; CHECK_GE(left, 0); - if (num_rows_key_group == num_rows_written + to_write) { + if (num_rows_key_group == num_rows_written + to_write && _cur_writer_idx < _segment_writers.size() - 1) { ++_cur_writer_idx; } } From e2bb50b15b164dc31c39fbc5fd91f4f0d2e0d946 Mon Sep 17 00:00:00 2001 From: Luwei <814383175@qq.com> Date: Tue, 23 Jul 2024 19:29:39 +0800 Subject: [PATCH 3/3] fix code style --- be/src/olap/rowset/vertical_beta_rowset_writer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/be/src/olap/rowset/vertical_beta_rowset_writer.cpp b/be/src/olap/rowset/vertical_beta_rowset_writer.cpp index b51772590a4f0e..e0c1b65059fd05 100644 --- a/be/src/olap/rowset/vertical_beta_rowset_writer.cpp +++ b/be/src/olap/rowset/vertical_beta_rowset_writer.cpp @@ -104,7 +104,8 @@ Status VerticalBetaRowsetWriter::add_columns(const vectorized::Block* block, left -= to_write; CHECK_GE(left, 0); - if (num_rows_key_group == num_rows_written + to_write && _cur_writer_idx < _segment_writers.size() - 1) { + if (num_rows_key_group == num_rows_written + to_write && + _cur_writer_idx < _segment_writers.size() - 1) { ++_cur_writer_idx; } }