Skip to content

Commit bec7750

Browse files
committed
Make parquet version selection less confusing
1 parent 9990f17 commit bec7750

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/Processors/Formats/Impl/ParquetBlockOutputFormat.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ ParquetBlockOutputFormat::ParquetBlockOutputFormat(WriteBuffer & out_, const Blo
8181
{
8282
if (format_settings.parquet.use_custom_encoder)
8383
{
84+
if (format_settings.parquet.output_version < FormatSettings::ParquetVersion::V2_6)
85+
throw Exception(ErrorCodes::NOT_IMPLEMENTED, "Custom parquet encoder doesn't support parquet versions < 2.6. Use output_format_parquet_use_custom_encoder = 0.");
86+
8487
if (format_settings.parquet.parallel_encoding && format_settings.max_threads > 1)
8588
pool = std::make_unique<ThreadPool>(
8689
CurrentMetrics::ParquetEncoderThreads,

src/Processors/Formats/Impl/ParquetMetadataInputFormat.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,9 @@ Chunk ParquetMetadataInputFormat::read()
182182
else if (name == names[3])
183183
{
184184
auto column = types[3]->createColumn();
185-
/// Version can be only PARQUET_1_0 or PARQUET_2_LATEST (which is 2.6).
186-
String version = metadata->version() == parquet::ParquetVersion::PARQUET_1_0 ? "1.0" : "2.6";
185+
/// Parquet file doesn't know its exact version, only whether it's 1.x or 2.x
186+
/// (FileMetaData.version = 1 or 2).
187+
String version = metadata->version() == parquet::ParquetVersion::PARQUET_1_0 ? "1" : "2";
187188
assert_cast<ColumnString &>(*column).insertData(version.data(), version.size());
188189
res.addColumn(std::move(column));
189190
}

0 commit comments

Comments
 (0)