@@ -233,6 +233,57 @@ TEST_F(PackedFileSystemTest, CreateFileWrapsWithPackedFileWriter) {
233233 EXPECT_TRUE (st.ok ());
234234}
235235
236+ TEST_F (PackedFileSystemTest, FirstSegmentDataFileUsesPackedWriter) {
237+ PackedFileSystem merge_fs (_inner_fs, _append_info);
238+
239+ Path file_path (" rowset_1_0.dat" );
240+ FileWriterPtr writer;
241+ ASSERT_TRUE (merge_fs.create_file (file_path, &writer, nullptr ).ok ());
242+ ASSERT_NE (writer, nullptr );
243+
244+ std::string data = " test" ;
245+ Slice slice (data);
246+ ASSERT_TRUE (writer->appendv (&slice, 1 ).ok ());
247+
248+ ASSERT_NE (_inner_fs->last_writer (), nullptr );
249+ EXPECT_EQ (_inner_fs->last_writer ()->bytes_appended (), 0 );
250+ EXPECT_TRUE (writer->is_in_packed_file ());
251+ }
252+
253+ TEST_F (PackedFileSystemTest, LaterSegmentDataFileUsesDirectWriter) {
254+ PackedFileSystem merge_fs (_inner_fs, _append_info);
255+
256+ Path file_path (" rowset_1_1.dat" );
257+ FileWriterPtr writer;
258+ ASSERT_TRUE (merge_fs.create_file (file_path, &writer, nullptr ).ok ());
259+ ASSERT_NE (writer, nullptr );
260+
261+ std::string data = " test" ;
262+ Slice slice (data);
263+ ASSERT_TRUE (writer->appendv (&slice, 1 ).ok ());
264+
265+ ASSERT_NE (_inner_fs->last_writer (), nullptr );
266+ EXPECT_EQ (_inner_fs->last_writer ()->bytes_appended (), data.size ());
267+ EXPECT_FALSE (writer->is_in_packed_file ());
268+ }
269+
270+ TEST_F (PackedFileSystemTest, LaterSegmentIndexFileUsesDirectWriter) {
271+ PackedFileSystem merge_fs (_inner_fs, _append_info);
272+
273+ Path file_path (" rowset_1_2.idx" );
274+ FileWriterPtr writer;
275+ ASSERT_TRUE (merge_fs.create_file (file_path, &writer, nullptr ).ok ());
276+ ASSERT_NE (writer, nullptr );
277+
278+ std::string data = " idx" ;
279+ Slice slice (data);
280+ ASSERT_TRUE (writer->appendv (&slice, 1 ).ok ());
281+
282+ ASSERT_NE (_inner_fs->last_writer (), nullptr );
283+ EXPECT_EQ (_inner_fs->last_writer ()->bytes_appended (), data.size ());
284+ EXPECT_FALSE (writer->is_in_packed_file ());
285+ }
286+
236287TEST_F (PackedFileSystemTest, OpenFileNotInMergeFile) {
237288 PackedFileSystem merge_fs (_inner_fs, _append_info);
238289
0 commit comments