@@ -1538,6 +1538,73 @@ TEST_F(TestRecordBatch, MakeStatisticsArrayDistinctCountApproximate) {
15381538 AssertArraysEqual (*expected_statistics_array, *statistics_array, true );
15391539}
15401540
1541+ TEST_F (TestRecordBatch, MakeStatisticsArrayMaxByteWidthExact) {
1542+ auto schema =
1543+ ::arrow::schema ({field (" no-statistics" , boolean ()), field (" utf8" , utf8 ())});
1544+ auto no_statistics_array = ArrayFromJSON (boolean (), " [true, false, true]" );
1545+ auto string_array_data = ArrayFromJSON (utf8 (), R"( ["aa", null, "c"])" )->data ()->Copy ();
1546+ string_array_data->statistics = std::make_shared<ArrayStatistics>();
1547+ string_array_data->statistics ->null_count = 1 ;
1548+ string_array_data->statistics ->max_byte_width = static_cast <int64_t >(2 );
1549+ auto string_array = MakeArray (std::move (string_array_data));
1550+ auto batch = RecordBatch::Make (schema, string_array->length (),
1551+ {no_statistics_array, string_array});
1552+
1553+ ASSERT_OK_AND_ASSIGN (auto statistics_array, batch->MakeStatisticsArray ());
1554+
1555+ ASSERT_OK_AND_ASSIGN (auto expected_statistics_array,
1556+ MakeStatisticsArray (" [null, 1]" ,
1557+ {{
1558+ ARROW_STATISTICS_KEY_ROW_COUNT_EXACT,
1559+ },
1560+ {
1561+ ARROW_STATISTICS_KEY_NULL_COUNT_EXACT,
1562+ ARROW_STATISTICS_KEY_MAX_BYTE_WIDTH_EXACT,
1563+ }},
1564+ {{
1565+ ArrayStatistics::ValueType{int64_t {3 }},
1566+ },
1567+ {
1568+ ArrayStatistics::ValueType{int64_t {1 }},
1569+ ArrayStatistics::ValueType{int64_t {2 }},
1570+ }}));
1571+ AssertArraysEqual (*expected_statistics_array, *statistics_array, true );
1572+ }
1573+
1574+ TEST_F (TestRecordBatch, MakeStatisticsArrayMaxByteWidthApproximate) {
1575+ auto schema =
1576+ ::arrow::schema ({field (" no-statistics" , boolean ()), field (" utf8" , utf8 ())});
1577+ auto no_statistics_array = ArrayFromJSON (boolean (), " [true, false, true]" );
1578+ auto string_array_data = ArrayFromJSON (utf8 (), R"( ["aa", null, "c"])" )->data ()->Copy ();
1579+ string_array_data->statistics = std::make_shared<ArrayStatistics>();
1580+ string_array_data->statistics ->null_count = 1 ;
1581+ string_array_data->statistics ->max_byte_width = 2.0 ;
1582+ auto string_array = MakeArray (std::move (string_array_data));
1583+ auto batch = RecordBatch::Make (schema, string_array->length (),
1584+ {no_statistics_array, string_array});
1585+
1586+ ASSERT_OK_AND_ASSIGN (auto statistics_array, batch->MakeStatisticsArray ());
1587+
1588+ ASSERT_OK_AND_ASSIGN (
1589+ auto expected_statistics_array,
1590+ MakeStatisticsArray (" [null, 1]" ,
1591+ {{
1592+ ARROW_STATISTICS_KEY_ROW_COUNT_EXACT,
1593+ },
1594+ {
1595+ ARROW_STATISTICS_KEY_NULL_COUNT_EXACT,
1596+ ARROW_STATISTICS_KEY_MAX_BYTE_WIDTH_APPROXIMATE,
1597+ }},
1598+ {{
1599+ ArrayStatistics::ValueType{int64_t {3 }},
1600+ },
1601+ {
1602+ ArrayStatistics::ValueType{int64_t {1 }},
1603+ ArrayStatistics::ValueType{2.0 },
1604+ }}));
1605+ AssertArraysEqual (*expected_statistics_array, *statistics_array, true );
1606+ }
1607+
15411608TEST_F (TestRecordBatch, MakeStatisticsArrayAverageByteWidthApproximate) {
15421609 auto schema =
15431610 ::arrow::schema ({field (" no-statistics" , boolean ()), field (" utf8" , utf8 ())});
0 commit comments