Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cpp/src/reader/aligned_chunk_reader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ int AlignedChunkReader::decode_cur_time_page_data() {
if (RET_FAIL(read_from_file_and_rewrap(
time_in_stream_, time_chunk_meta_, time_chunk_visit_offset_,
file_data_time_buf_size_,
cur_value_page_header_.compressed_size_))) {
cur_time_page_header_.compressed_size_))) {
}
}

Expand Down
48 changes: 48 additions & 0 deletions cpp/test/reader/table_view/tsfile_reader_table_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -421,3 +421,51 @@ TEST_F(TsFileTableReaderTest, ReadNonExistColumn) {
reader.close();
delete table_schema;
}

TEST_F(TsFileTableReaderTest, TestDecoder) {
std::vector<ColumnSchema> column_schema;
column_schema.emplace_back("value1", TSDataType::INT32);
auto* schema = new TableSchema("test_table", column_schema);
auto tsfile_table_writer_ =
std::make_shared<TsFileTableWriter>(&write_file_, schema);
std::vector<std::string> columns = {"value1"};
std::vector<TSDataType> datatypes = {TSDataType::INT32};
storage::Tablet tablet("test_table", &columns, &datatypes, 5000);
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(1, 200);
int64_t timestamp = 0;
for (int i = 0; i < 5000; i++) {
// Time will bigger than value after encoding and compression.
timestamp += dis(gen);
tablet.add_timestamp(i, timestamp);
tablet.add_value(i, 0, (int32_t)i);
}
int ret_ = tsfile_table_writer_->write_table(tablet);
ASSERT_EQ(ret_, common::E_OK);
ret_ = tsfile_table_writer_->flush();
ASSERT_EQ(ret_, common::E_OK);
ret_ = tsfile_table_writer_->close();
Comment on lines +444 to +448

Copilot AI Nov 5, 2025

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The return values from write_table(), flush(), and close() are stored in ret_ but never checked. These operations can fail and should be validated with assertions like ASSERT_EQ(ret_, common::E_OK); to ensure proper error handling in the test.

Suggested change
int ret_ = tsfile_table_writer_->write_table(tablet);
ret_ = tsfile_table_writer_->flush();
ret_ = tsfile_table_writer_->close();
int ret_ = tsfile_table_writer_->write_table(tablet);
ASSERT_EQ(ret_, common::E_OK);
ret_ = tsfile_table_writer_->flush();
ASSERT_EQ(ret_, common::E_OK);
ret_ = tsfile_table_writer_->close();
ASSERT_EQ(ret_, common::E_OK);

Copilot uses AI. Check for mistakes.
ASSERT_EQ(ret_, common::E_OK);
TsFileReader reader = TsFileReader();
reader.open(write_file_.get_file_path());
ResultSet* ret = nullptr;
int ret_value =
reader.query("test_table", columns, INT64_MIN, INT64_MAX, ret);
auto* table_result_set = (storage::TableResultSet*)ret;
bool has_next = false;
int cur_lin = 0;
int64_t prev_time = 0;
while (IS_SUCC(table_result_set->next(has_next)) && has_next) {
auto t = table_result_set->get_value<int64_t>(1);
ASSERT_TRUE(t - prev_time <= 200);
prev_time = t;
auto value = table_result_set->get_value<int32_t>(2);
ASSERT_EQ(value, cur_lin);
cur_lin++;
}
ASSERT_EQ(cur_lin, 5000);
delete schema;
reader.destroy_query_data_set(table_result_set);
reader.close();
}
Loading