| 998 | } |
| 999 | |
| 1000 | void TestCacheMetadata(std::function<Status(Scanner*)> consume_scanner) { |
| 1001 | // Test that ClearCachedMetadata() is called if ScanOptions::cache_metadata is false. |
| 1002 | SetSchema({field("i32", int32())}); |
| 1003 | auto batch = ConstantArrayGenerator::Zeroes(GetParam().items_per_batch, schema_); |
| 1004 | RecordBatchVector batches{batch, batch}; |
| 1005 | auto frag1 = std::make_shared<ClearCachedMetadataFragment>(batches); |
| 1006 | auto frag2 = std::make_shared<ClearCachedMetadataFragment>(batches); |
| 1007 | auto check_metadata_clear_counts = [&](const std::vector<int>& expected) { |
| 1008 | auto actual = |
| 1009 | std::vector<int>{frag1->metadata_clear_count(), frag2->metadata_clear_count()}; |
| 1010 | ASSERT_EQ(expected, actual); |
| 1011 | }; |
| 1012 | { |
| 1013 | ScannerBuilder builder( |
| 1014 | std::make_shared<FragmentDataset>(schema_, FragmentVector{frag1, frag2}), |
| 1015 | options_); |
| 1016 | ASSERT_OK(builder.UseThreads(GetParam().use_threads)); |
| 1017 | ASSERT_OK_AND_ASSIGN(auto scanner, builder.Finish()); |
| 1018 | ASSERT_OK(consume_scanner(scanner.get())); |
| 1019 | check_metadata_clear_counts({0, 0}); |
| 1020 | } |
| 1021 | options_->cache_metadata = false; |
| 1022 | { |
| 1023 | ScannerBuilder builder( |
| 1024 | std::make_shared<FragmentDataset>(schema_, FragmentVector{frag1, frag2}), |
| 1025 | options_); |
| 1026 | ASSERT_OK(builder.UseThreads(GetParam().use_threads)); |
| 1027 | ASSERT_OK_AND_ASSIGN(auto scanner, builder.Finish()); |
| 1028 | ASSERT_OK(consume_scanner(scanner.get())); |
| 1029 | check_metadata_clear_counts({1, 1}); |
| 1030 | } |
| 1031 | } |
| 1032 | }; |
| 1033 | |
| 1034 | TEST_P(TestScanner, Scan) { |
nothing calls this directly
no test coverage detected