Skip to content

Commit fa50636

Browse files
authored
Implement physical plan serialization for parquet Copy plans (#11735)
* Implement physical plan serialization for parquet Copy plans * fix clippy
1 parent 2887491 commit fa50636

File tree

9 files changed

+867
-492
lines changed

9 files changed

+867
-492
lines changed

datafusion/core/src/datasource/file_format/parquet.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ const BUFFER_FLUSH_BYTES: usize = 1024000;
9393
#[derive(Default)]
9494
/// Factory struct used to create [ParquetFormat]
9595
pub struct ParquetFormatFactory {
96-
options: Option<TableParquetOptions>,
96+
/// inner options for parquet
97+
pub options: Option<TableParquetOptions>,
9798
}
9899

99100
impl ParquetFormatFactory {

datafusion/proto-common/proto/datafusion_common.proto

+1
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ message JsonOptions {
434434
message TableParquetOptions {
435435
ParquetOptions global = 1;
436436
repeated ParquetColumnSpecificOptions column_specific_options = 2;
437+
map<string, string> key_value_metadata = 3;
437438
}
438439

439440
message ParquetColumnSpecificOptions {

datafusion/proto-common/src/from_proto/mod.rs

+11-11
Original file line numberDiff line numberDiff line change
@@ -961,48 +961,48 @@ impl TryFrom<&protobuf::ParquetOptions> for ParquetOptions {
961961
}
962962
}
963963

964-
impl TryFrom<&protobuf::ColumnOptions> for ParquetColumnOptions {
964+
impl TryFrom<&protobuf::ParquetColumnOptions> for ParquetColumnOptions {
965965
type Error = DataFusionError;
966966
fn try_from(
967-
value: &protobuf::ColumnOptions,
967+
value: &protobuf::ParquetColumnOptions,
968968
) -> datafusion_common::Result<Self, Self::Error> {
969969
Ok(ParquetColumnOptions {
970970
compression: value.compression_opt.clone().map(|opt| match opt {
971-
protobuf::column_options::CompressionOpt::Compression(v) => Some(v),
971+
protobuf::parquet_column_options::CompressionOpt::Compression(v) => Some(v),
972972
}).unwrap_or(None),
973-
dictionary_enabled: value.dictionary_enabled_opt.as_ref().map(|protobuf::column_options::DictionaryEnabledOpt::DictionaryEnabled(v)| *v),
973+
dictionary_enabled: value.dictionary_enabled_opt.as_ref().map(|protobuf::parquet_column_options::DictionaryEnabledOpt::DictionaryEnabled(v)| *v),
974974
statistics_enabled: value
975975
.statistics_enabled_opt.clone()
976976
.map(|opt| match opt {
977-
protobuf::column_options::StatisticsEnabledOpt::StatisticsEnabled(v) => Some(v),
977+
protobuf::parquet_column_options::StatisticsEnabledOpt::StatisticsEnabled(v) => Some(v),
978978
})
979979
.unwrap_or(None),
980980
max_statistics_size: value
981981
.max_statistics_size_opt.clone()
982982
.map(|opt| match opt {
983-
protobuf::column_options::MaxStatisticsSizeOpt::MaxStatisticsSize(v) => Some(v as usize),
983+
protobuf::parquet_column_options::MaxStatisticsSizeOpt::MaxStatisticsSize(v) => Some(v as usize),
984984
})
985985
.unwrap_or(None),
986986
encoding: value
987987
.encoding_opt.clone()
988988
.map(|opt| match opt {
989-
protobuf::column_options::EncodingOpt::Encoding(v) => Some(v),
989+
protobuf::parquet_column_options::EncodingOpt::Encoding(v) => Some(v),
990990
})
991991
.unwrap_or(None),
992992
bloom_filter_enabled: value.bloom_filter_enabled_opt.clone().map(|opt| match opt {
993-
protobuf::column_options::BloomFilterEnabledOpt::BloomFilterEnabled(v) => Some(v),
993+
protobuf::parquet_column_options::BloomFilterEnabledOpt::BloomFilterEnabled(v) => Some(v),
994994
})
995995
.unwrap_or(None),
996996
bloom_filter_fpp: value
997997
.bloom_filter_fpp_opt.clone()
998998
.map(|opt| match opt {
999-
protobuf::column_options::BloomFilterFppOpt::BloomFilterFpp(v) => Some(v),
999+
protobuf::parquet_column_options::BloomFilterFppOpt::BloomFilterFpp(v) => Some(v),
10001000
})
10011001
.unwrap_or(None),
10021002
bloom_filter_ndv: value
10031003
.bloom_filter_ndv_opt.clone()
10041004
.map(|opt| match opt {
1005-
protobuf::column_options::BloomFilterNdvOpt::BloomFilterNdv(v) => Some(v),
1005+
protobuf::parquet_column_options::BloomFilterNdvOpt::BloomFilterNdv(v) => Some(v),
10061006
})
10071007
.unwrap_or(None),
10081008
})
@@ -1016,7 +1016,7 @@ impl TryFrom<&protobuf::TableParquetOptions> for TableParquetOptions {
10161016
) -> datafusion_common::Result<Self, Self::Error> {
10171017
let mut column_specific_options: HashMap<String, ParquetColumnOptions> =
10181018
HashMap::new();
1019-
for protobuf::ColumnSpecificOptions {
1019+
for protobuf::ParquetColumnSpecificOptions {
10201020
column_name,
10211021
options: maybe_options,
10221022
} in &value.column_specific_options

0 commit comments

Comments
 (0)