MCPcopy Create free account
hub / github.com/apache/arrow / TestMinMaxEncode

Method TestMinMaxEncode

cpp/src/parquet/statistics_test.cc:315–360  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

313 void DeepFree(std::vector<c_type>&);
314
315 void TestMinMaxEncode() {
316 this->GenerateData(1000);
317
318 auto statistics1 = MakeStatistics<TestType>(this->schema_.Column(0));
319 statistics1->Update(this->values_ptr_, this->values_.size(), 0);
320 std::string encoded_min = statistics1->EncodeMin();
321 std::string encoded_max = statistics1->EncodeMax();
322
323 auto statistics2 = MakeStatistics<TestType>(
324 this->schema_.Column(0), encoded_min, encoded_max, this->values_.size(),
325 /*null_count=*/0, /*distinct_count=*/0,
326 /*has_min_max=*/true, /*has_null_count=*/true, /*has_distinct_count=*/true,
327 /*is_min_value_exact=*/true, /*is_max_value_exact=*/true);
328
329 auto statistics3 = MakeStatistics<TestType>(this->schema_.Column(0));
330 std::vector<uint8_t> valid_bits(
331 bit_util::BytesForBits(static_cast<uint32_t>(this->values_.size())) + 1, 255);
332 statistics3->UpdateSpaced(this->values_ptr_, valid_bits.data(), 0,
333 this->values_.size(), this->values_.size(), 0);
334 std::string encoded_min_spaced = statistics3->EncodeMin();
335 std::string encoded_max_spaced = statistics3->EncodeMax();
336
337 // Use old API without is_{min/max}_value_exact
338 auto statistics4 = MakeStatistics<TestType>(
339 this->schema_.Column(0), encoded_min, encoded_max, this->values_.size(),
340 /*null_count=*/0, /*distinct_count=*/0,
341 /*has_min_max=*/true, /*has_null_count=*/true, /*has_distinct_count=*/true);
342 ASSERT_EQ(encoded_min, statistics2->EncodeMin());
343 ASSERT_EQ(encoded_max, statistics2->EncodeMax());
344 ASSERT_EQ(statistics1->min(), statistics2->min());
345 ASSERT_EQ(statistics1->max(), statistics2->max());
346 ASSERT_EQ(statistics1->is_min_value_exact(), std::make_optional(true));
347 ASSERT_EQ(statistics1->is_max_value_exact(), std::make_optional(true));
348 ASSERT_EQ(statistics2->is_min_value_exact(), std::make_optional(true));
349 ASSERT_EQ(statistics2->is_max_value_exact(), std::make_optional(true));
350 ASSERT_EQ(encoded_min_spaced, statistics2->EncodeMin());
351 ASSERT_EQ(encoded_max_spaced, statistics2->EncodeMax());
352 ASSERT_EQ(statistics3->min(), statistics2->min());
353 ASSERT_EQ(statistics3->max(), statistics2->max());
354 ASSERT_EQ(statistics3->is_min_value_exact(), std::make_optional(true));
355 ASSERT_EQ(statistics3->is_max_value_exact(), std::make_optional(true));
356 ASSERT_EQ(statistics4->min(), statistics2->min());
357 ASSERT_EQ(statistics4->max(), statistics2->max());
358 ASSERT_EQ(statistics4->is_min_value_exact(), std::nullopt);
359 ASSERT_EQ(statistics4->is_max_value_exact(), std::nullopt);
360 }
361
362 void TestReset() {
363 this->GenerateData(1000);

Callers

nothing calls this directly

Calls 13

BytesForBitsFunction · 0.85
EncodeMinMethod · 0.80
EncodeMaxMethod · 0.80
is_min_value_exactMethod · 0.80
is_max_value_exactMethod · 0.80
GenerateDataMethod · 0.45
ColumnMethod · 0.45
UpdateMethod · 0.45
sizeMethod · 0.45
UpdateSpacedMethod · 0.45
dataMethod · 0.45
minMethod · 0.45

Tested by

no test coverage detected