Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 5 additions & 26 deletions cpp/src/arrow/dataset/file_parquet.cc
Original file line number Diff line number Diff line change
Expand Up @@ -68,47 +68,26 @@ parquet::ReaderProperties MakeReaderProperties(
const ParquetFileFormat& format, ParquetFragmentScanOptions* parquet_scan_options,
const std::string& path = "", std::shared_ptr<fs::FileSystem> filesystem = nullptr,
MemoryPool* pool = default_memory_pool()) {
// FIXME (GH-51264): Can't mutate pool after ReaderProperties construction.
parquet::ReaderProperties properties(pool);
if (parquet_scan_options->reader_properties->is_buffered_stream_enabled()) {
properties.enable_buffered_stream();
} else {
properties.disable_buffered_stream();
}
properties.set_buffer_size(parquet_scan_options->reader_properties->buffer_size());
properties.set_footer_read_size(
parquet_scan_options->reader_properties->footer_read_size());

auto file_decryption_prop =
parquet_scan_options->reader_properties->file_decryption_properties();
parquet::ReaderProperties properties = *parquet_scan_options->reader_properties;
properties.set_memory_pool(pool);
Comment thread
pitrou marked this conversation as resolved.
properties.disable_read_dense_for_nullable();

#ifdef PARQUET_REQUIRE_ENCRYPTION
auto parquet_decrypt_config = parquet_scan_options->parquet_decryption_config;

if (parquet_decrypt_config != nullptr) {
file_decryption_prop =
auto file_decryption_prop =
parquet_decrypt_config->crypto_factory->GetFileDecryptionProperties(
*parquet_decrypt_config->kms_connection_config,
*parquet_decrypt_config->decryption_config, path, filesystem);
properties.file_decryption_properties(file_decryption_prop);
}
#else
if (parquet_scan_options->parquet_decryption_config != nullptr) {
parquet::ParquetException::NYI("Encryption is not supported in this build.");
}
#endif

properties.file_decryption_properties(file_decryption_prop);

properties.set_thrift_string_size_limit(
parquet_scan_options->reader_properties->thrift_string_size_limit());
properties.set_thrift_container_size_limit(
parquet_scan_options->reader_properties->thrift_container_size_limit());
properties.set_schema_depth_limit(
parquet_scan_options->reader_properties->schema_depth_limit());

properties.set_page_checksum_verification(
parquet_scan_options->reader_properties->page_checksum_verification());

return properties;
}

Expand Down
2 changes: 2 additions & 0 deletions cpp/src/parquet/properties.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ class PARQUET_EXPORT ReaderProperties {
: pool_(pool) {}

MemoryPool* memory_pool() const { return pool_; }
/// Set the memory pool.
void set_memory_pool(MemoryPool* pool) { pool_ = pool; }

std::shared_ptr<ArrowInputStream> GetStream(std::shared_ptr<ArrowInputFile> source,
int64_t start, int64_t num_bytes);
Expand Down
17 changes: 17 additions & 0 deletions cpp/src/parquet/properties_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

#include "arrow/buffer.h"
#include "arrow/io/memory.h"
#include "arrow/memory_pool.h"

#include "parquet/file_reader.h"
#include "parquet/properties.h"
Expand All @@ -44,6 +45,22 @@ TEST(TestReaderProperties, Basics) {
ASSERT_FALSE(props.page_checksum_verification());
}

TEST(TestReaderProperties, SetMemoryPool) {
ReaderProperties props;
ASSERT_EQ(props.memory_pool(), ::arrow::default_memory_pool());

::arrow::ProxyMemoryPool custom_pool(::arrow::default_memory_pool());
props.set_memory_pool(&custom_pool);
ASSERT_EQ(props.memory_pool(), &custom_pool);

ReaderProperties copied_props = props;
ASSERT_EQ(copied_props.memory_pool(), &custom_pool);

copied_props.set_memory_pool(::arrow::default_memory_pool());
ASSERT_EQ(copied_props.memory_pool(), ::arrow::default_memory_pool());
ASSERT_EQ(props.memory_pool(), &custom_pool);
}

TEST(TestWriterProperties, Basics) {
std::shared_ptr<WriterProperties> props = WriterProperties::Builder().build();

Expand Down
3 changes: 3 additions & 0 deletions python/pyarrow/includes/libparquet.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,9 @@ cdef extern from "parquet/api/reader.h" namespace "parquet" nogil:
uint32_t* metadata_len)

cdef cppclass CReaderProperties" parquet::ReaderProperties":
CMemoryPool* memory_pool() const
void set_memory_pool(CMemoryPool* pool)

c_bool is_buffered_stream_enabled() const
void enable_buffered_stream()
void disable_buffered_stream()
Expand Down
Loading