Skip to content
Closed
8 changes: 8 additions & 0 deletions cpp/src/parquet/metadata.cc
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,14 @@ std::string ParquetVersionToString(ParquetVersion::type ver) {
return "2.4";
case ParquetVersion::PARQUET_2_6:
return "2.6";
case ParquetVersion::PARQUET_2_7:
return "2.7";
case ParquetVersion::PARQUET_2_8:
return "2.8";
case ParquetVersion::PARQUET_2_9:
return "2.9";
case ParquetVersion::PARQUET_2_10:
return "2.10";
}

// This should be unreachable
Expand Down
10 changes: 10 additions & 0 deletions cpp/src/parquet/metadata_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -745,5 +745,15 @@ TEST(ApplicationVersion, FullWithSpaces) {
ASSERT_EQ("cd", version.version.build_info);
}

TEST(ParquetVersionToString, AllVersions) {
ASSERT_EQ("1.0", ParquetVersionToString(ParquetVersion::PARQUET_1_0));
ASSERT_EQ("2.4", ParquetVersionToString(ParquetVersion::PARQUET_2_4));
ASSERT_EQ("2.6", ParquetVersionToString(ParquetVersion::PARQUET_2_6));
ASSERT_EQ("2.7", ParquetVersionToString(ParquetVersion::PARQUET_2_7));
ASSERT_EQ("2.8", ParquetVersionToString(ParquetVersion::PARQUET_2_8));
ASSERT_EQ("2.9", ParquetVersionToString(ParquetVersion::PARQUET_2_9));
ASSERT_EQ("2.10", ParquetVersionToString(ParquetVersion::PARQUET_2_10));
}

} // namespace metadata
} // namespace parquet
34 changes: 33 additions & 1 deletion cpp/src/parquet/type_fwd.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,43 @@ struct ParquetVersion {
/// Note: Parquet format 2.6.0 was released in September 2018.
PARQUET_2_6,

/// Enable Parquet format 2.7 and earlier features when writing
///
/// This enables bloom filters and encryption in addition to the
/// PARQUET_2_6 features.
///
/// Note: Parquet format 2.7.0 was released in June 2019.
PARQUET_2_7,

/// Enable Parquet format 2.8 and earlier features when writing
///
/// This enables BYTE_STREAM_SPLIT encoding in addition to the
/// PARQUET_2_7 features.
///
/// Note: Parquet format 2.8.0 was released in February 2020.
PARQUET_2_8,

/// Enable Parquet format 2.9 and earlier features when writing
///
/// This enables interoperable LZ4 codec in addition to the
/// PARQUET_2_8 features.
///
/// Note: Parquet format 2.9.0 was released in January 2021.
PARQUET_2_9,

/// Enable Parquet format 2.10 and earlier features when writing
///
/// This enables Float16 logical type in addition to the
/// PARQUET_2_9 features.
///
/// Note: Parquet format 2.10.0 was released in October 2022.
PARQUET_2_10,

/// Enable latest Parquet format 2.x features
///
/// This value is equal to the greatest 2.x version supported by
/// this library.
PARQUET_2_LATEST = PARQUET_2_6
PARQUET_2_LATEST = PARQUET_2_10
};
};

Expand Down
4 changes: 4 additions & 0 deletions python/pyarrow/includes/libparquet.pxd
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,10 @@ cdef extern from "parquet/api/schema.h" namespace "parquet" nogil:
ParquetVersion_V1" parquet::ParquetVersion::PARQUET_1_0"
ParquetVersion_V2_4" parquet::ParquetVersion::PARQUET_2_4"
ParquetVersion_V2_6" parquet::ParquetVersion::PARQUET_2_6"
ParquetVersion_V2_7" parquet::ParquetVersion::PARQUET_2_7"
ParquetVersion_V2_8" parquet::ParquetVersion::PARQUET_2_8"
ParquetVersion_V2_9" parquet::ParquetVersion::PARQUET_2_9"
ParquetVersion_V2_10" parquet::ParquetVersion::PARQUET_2_10"

enum ParquetSortOrder" parquet::SortOrder::type":
ParquetSortOrder_SIGNED" parquet::SortOrder::SIGNED"
Expand Down
3 changes: 2 additions & 1 deletion r/R/enums.R
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ FileType <- enum("FileType",
#' @export
#' @rdname enums
ParquetVersionType <- enum("ParquetVersionType",
PARQUET_1_0 = 0L, PARQUET_2_4 = 2L, PARQUET_2_6 = 3L
PARQUET_1_0 = 0L, PARQUET_2_4 = 2L, PARQUET_2_6 = 3L,
PARQUET_2_7 = 4L, PARQUET_2_8 = 5L, PARQUET_2_9 = 6L, PARQUET_2_10 = 7L
)

#' @export
Expand Down
6 changes: 5 additions & 1 deletion r/R/parquet.R
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,11 @@ valid_parquet_version <- c(
"1.0" = ParquetVersionType$PARQUET_1_0,
"2.4" = ParquetVersionType$PARQUET_2_4,
"2.6" = ParquetVersionType$PARQUET_2_6,
"latest" = ParquetVersionType$PARQUET_2_6
"2.7" = ParquetVersionType$PARQUET_2_7,
"2.8" = ParquetVersionType$PARQUET_2_8,
"2.9" = ParquetVersionType$PARQUET_2_9,
"2.10" = ParquetVersionType$PARQUET_2_10,
"latest" = ParquetVersionType$PARQUET_2_10
)

make_valid_parquet_version <- function(version, valid_versions = valid_parquet_version) {
Expand Down
18 changes: 17 additions & 1 deletion r/tests/testthat/test-parquet.R
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,25 @@ test_that("make_valid_parquet_version()", {
make_valid_parquet_version("2.6"),
ParquetVersionType$PARQUET_2_6
)
expect_equal(
make_valid_parquet_version("2.7"),
ParquetVersionType$PARQUET_2_7
)
expect_equal(
make_valid_parquet_version("2.8"),
ParquetVersionType$PARQUET_2_8
)
expect_equal(
make_valid_parquet_version("2.9"),
ParquetVersionType$PARQUET_2_9
)
expect_equal(
make_valid_parquet_version("2.10"),
ParquetVersionType$PARQUET_2_10
)
expect_equal(
make_valid_parquet_version("latest"),
ParquetVersionType$PARQUET_2_6
ParquetVersionType$PARQUET_2_10
)

expect_equal(make_valid_parquet_version(1), ParquetVersionType$PARQUET_1_0)
Expand Down
Loading