@@ -105,75 +105,6 @@ TEST_F(MapSharedShreddingBatchConverterTest, BasicConversion) {
105105 ASSERT_EQ (expected_meta, converter.BuildFieldMeta (1 ));
106106}
107107
108- TEST_F (MapSharedShreddingBatchConverterTest, MultiConvertResetAndFileMeta) {
109- auto logical_schema = arrow::schema ({
110- arrow::field (" id" , arrow::int32 ()),
111- arrow::field (" tags" , arrow::map (arrow::utf8 (), arrow::int64 ())),
112- });
113- std::map<int32_t , int32_t > column_to_num_columns = {{1 , 3 }};
114- ASSERT_OK_AND_ASSIGN (auto physical_schema, MapSharedShreddingUtils::LogicalToPhysicalSchema (
115- logical_schema, column_to_num_columns));
116- MapSharedShreddingBatchConverter converter (logical_schema, physical_schema,
117- column_to_num_columns, pool_);
118-
119- auto logical_type = arrow::struct_ (logical_schema->fields ());
120- auto physical_type = arrow::struct_ (physical_schema->fields ());
121-
122- // --- File 1: two batches ---
123- // Batch1: {x:1, y:2}
124- RunConvert (&converter, logical_type, physical_type, R"( [
125- [1, [["x", 1], ["y", 2]]]
126- ])" );
127- // Batch2: {y:3, z:4, w:5, v:6} — 4 fields, K=3 -> 1 overflow
128- auto actual2 = RunConvert (&converter, logical_type, physical_type, R"( [
129- [2, [["y", 3], ["z", 4], ["w", 5], ["v", 6]]]
130- ])" );
131-
132- // Verify batch2 output: y=fid1->col0, z=fid2->col1, w=fid3->col2, v=fid4->overflow
133- auto expected2 = ArrayFromJSON (physical_type, R"( [
134- [2, [[1, 2, 3], 3, 4, 5, [[4, 6]]]]
135- ])" )
136- .ValueOrDie ();
137- AssertArrayEquals (expected2, actual2);
138-
139- // File1 meta: x=0,y=1,z=2,w=3,v=4; K=3, max_row_width=4; v overflowed
140- MapSharedShreddingFieldMeta expected_meta1;
141- expected_meta1.name_to_id = {{" x" , 0 }, {" y" , 1 }, {" z" , 2 }, {" w" , 3 }, {" v" , 4 }};
142- expected_meta1.field_to_columns = {{0 , {0 }}, {1 , {0 , 1 }}, {2 , {1 }}, {3 , {2 }}};
143- expected_meta1.overflow_field_set = {4 };
144- expected_meta1.num_columns = 3 ;
145- expected_meta1.max_row_width = 4 ;
146- ASSERT_EQ (expected_meta1, converter.BuildFieldMeta (1 ));
147-
148- // --- Reset for File 2 ---
149- converter.Reset ();
150-
151- // After reset, meta should be empty except num_columns (K is preserved)
152- MapSharedShreddingFieldMeta empty_meta;
153- empty_meta.num_columns = 3 ;
154- ASSERT_EQ (empty_meta, converter.BuildFieldMeta (1 ));
155-
156- // File 2: single batch with new keys — field_ids restart from 0
157- auto actual3 = RunConvert (&converter, logical_type, physical_type, R"( [
158- [10, [["p", 100], ["q", 200]]]
159- ])" );
160- auto expected3 = ArrayFromJSON (physical_type, R"( [
161- [10, [[0, 1, -1], 100, 200, null, []]]
162- ])" )
163- .ValueOrDie ();
164- AssertArrayEquals (expected3, actual3);
165-
166- MapSharedShreddingFieldMeta expected_meta2;
167- expected_meta2.name_to_id = {{" p" , 0 }, {" q" , 1 }};
168- expected_meta2.field_to_columns = {{0 , {0 }}, {1 , {1 }}};
169- expected_meta2.num_columns = 3 ;
170- expected_meta2.max_row_width = 2 ;
171- ASSERT_EQ (expected_meta2, converter.BuildFieldMeta (1 ));
172-
173- // GetShreddingColumnIndices unchanged across resets
174- ASSERT_EQ (std::vector<int32_t >({1 }), converter.GetShreddingColumnIndices ());
175- }
176-
177108TEST_F (MapSharedShreddingBatchConverterTest, NestedValueStruct) {
178109 // MAP<STRING, STRUCT<x:INT32, y:DOUBLE>>, K=2
179110 auto value_type = arrow::struct_ ({
0 commit comments