| 264 | } // namespace |
| 265 | |
| 266 | BlockSplitBloomFilter BlockSplitBloomFilter::DeserializeEncrypted( |
| 267 | const ReaderProperties& properties, ArrowInputStream* input, |
| 268 | std::optional<int64_t> bloom_filter_length, Decryptor* decryptor, |
| 269 | int16_t row_group_ordinal, int16_t column_ordinal) { |
| 270 | if (decryptor == nullptr) { |
| 271 | throw ParquetException("Bloom filter decryptor must be provided"); |
| 272 | } |
| 273 | |
| 274 | // Read the full Bloom filter payload up front when the total length is known. |
| 275 | if (bloom_filter_length.has_value()) { |
| 276 | PARQUET_ASSIGN_OR_THROW(auto bloom_filter_buf, input->Read(*bloom_filter_length)); |
| 277 | CheckBloomFilterShortRead(*bloom_filter_length, bloom_filter_buf->size(), |
| 278 | "Bloom filter"); |
| 279 | ::arrow::io::BufferReader reader(bloom_filter_buf); |
| 280 | return DeserializeEncryptedFromStream(properties, &reader, bloom_filter_length, |
| 281 | decryptor, row_group_ordinal, column_ordinal); |
| 282 | } |
| 283 | |
| 284 | return DeserializeEncryptedFromStream(properties, input, bloom_filter_length, decryptor, |
| 285 | row_group_ordinal, column_ordinal); |
| 286 | } |
| 287 | |
| 288 | BlockSplitBloomFilter BlockSplitBloomFilter::Deserialize( |
| 289 | const ReaderProperties& properties, ArrowInputStream* input, |
nothing calls this directly
no test coverage detected