diff --git a/r/R/arrowExports.R b/r/R/arrowExports.R index b65d161d178..18bdccf76ae 100644 --- a/r/R/arrowExports.R +++ b/r/R/arrowExports.R @@ -1080,10 +1080,6 @@ parquet___arrow___FileReader__ReadTable2 <- function(reader, column_indices){ .Call(`_arrow_parquet___arrow___FileReader__ReadTable2` , reader, column_indices) } -parquet___default_arrow_writer_properties <- function(){ - .Call(`_arrow_parquet___default_arrow_writer_properties` ) -} - parquet___ArrowWriterProperties___Builder__create <- function(){ .Call(`_arrow_parquet___ArrowWriterProperties___Builder__create` ) } diff --git a/r/R/parquet.R b/r/R/parquet.R index 0973a8b30b3..8a5d3bd3cba 100644 --- a/r/R/parquet.R +++ b/r/R/parquet.R @@ -205,16 +205,12 @@ ParquetArrowWriterPropertiesBuilder <- R6Class("ParquetArrowWriterPropertiesBuil ParquetArrowWriterProperties <- R6Class("ParquetArrowWriterProperties", inherit = Object) ParquetArrowWriterProperties$create <- function(use_deprecated_int96_timestamps = FALSE, coerce_timestamps = NULL, allow_truncated_timestamps = FALSE) { - if (!use_deprecated_int96_timestamps && is.null(coerce_timestamps) && !allow_truncated_timestamps) { - shared_ptr(ParquetArrowWriterProperties, parquet___default_arrow_writer_properties()) - } else { - builder <- shared_ptr(ParquetArrowWriterPropertiesBuilder, parquet___ArrowWriterProperties___Builder__create()) - builder$store_schema() - builder$set_int96_support(use_deprecated_int96_timestamps) - builder$set_coerce_timestamps(coerce_timestamps) - builder$set_allow_truncated_timestamps(allow_truncated_timestamps) - shared_ptr(ParquetArrowWriterProperties, parquet___ArrowWriterProperties___Builder__build(builder)) - } + builder <- shared_ptr(ParquetArrowWriterPropertiesBuilder, parquet___ArrowWriterProperties___Builder__create()) + builder$store_schema() + builder$set_int96_support(use_deprecated_int96_timestamps) + builder$set_coerce_timestamps(coerce_timestamps) + builder$set_allow_truncated_timestamps(allow_truncated_timestamps) + shared_ptr(ParquetArrowWriterProperties, parquet___ArrowWriterProperties___Builder__build(builder)) } valid_parquet_version <- c( diff --git a/r/src/arrowExports.cpp b/r/src/arrowExports.cpp index 0e4fdba1823..822a968fd08 100644 --- a/r/src/arrowExports.cpp +++ b/r/src/arrowExports.cpp @@ -4200,20 +4200,6 @@ RcppExport SEXP _arrow_parquet___arrow___FileReader__ReadTable2(SEXP reader_sexp } #endif -// parquet.cpp -#if defined(ARROW_R_WITH_ARROW) -std::shared_ptr parquet___default_arrow_writer_properties(); -RcppExport SEXP _arrow_parquet___default_arrow_writer_properties(){ -BEGIN_RCPP - return Rcpp::wrap(parquet___default_arrow_writer_properties()); -END_RCPP -} -#else -RcppExport SEXP _arrow_parquet___default_arrow_writer_properties(){ - Rf_error("Cannot call parquet___default_arrow_writer_properties(). Please use arrow::install_arrow() to install required runtime libraries. "); -} -#endif - // parquet.cpp #if defined(ARROW_R_WITH_ARROW) std::shared_ptr parquet___ArrowWriterProperties___Builder__create(); @@ -5799,7 +5785,6 @@ static const R_CallMethodDef CallEntries[] = { { "_arrow_parquet___arrow___FileReader__OpenFile", (DL_FUNC) &_arrow_parquet___arrow___FileReader__OpenFile, 2}, { "_arrow_parquet___arrow___FileReader__ReadTable1", (DL_FUNC) &_arrow_parquet___arrow___FileReader__ReadTable1, 1}, { "_arrow_parquet___arrow___FileReader__ReadTable2", (DL_FUNC) &_arrow_parquet___arrow___FileReader__ReadTable2, 2}, - { "_arrow_parquet___default_arrow_writer_properties", (DL_FUNC) &_arrow_parquet___default_arrow_writer_properties, 0}, { "_arrow_parquet___ArrowWriterProperties___Builder__create", (DL_FUNC) &_arrow_parquet___ArrowWriterProperties___Builder__create, 0}, { "_arrow_parquet___ArrowWriterProperties___Builder__store_schema", (DL_FUNC) &_arrow_parquet___ArrowWriterProperties___Builder__store_schema, 1}, { "_arrow_parquet___ArrowWriterProperties___Builder__enable_deprecated_int96_timestamps", (DL_FUNC) &_arrow_parquet___ArrowWriterProperties___Builder__enable_deprecated_int96_timestamps, 1}, diff --git a/r/src/parquet.cpp b/r/src/parquet.cpp index add820b7dee..a0bae549207 100644 --- a/r/src/parquet.cpp +++ b/r/src/parquet.cpp @@ -82,12 +82,6 @@ std::shared_ptr parquet___arrow___FileReader__ReadTable2( return table; } -// [[arrow::export]] -std::shared_ptr -parquet___default_arrow_writer_properties() { - return parquet::default_arrow_writer_properties(); -} - // [[arrow::export]] std::shared_ptr parquet___ArrowWriterProperties___Builder__create() { diff --git a/r/tests/testthat/test-parquet.R b/r/tests/testthat/test-parquet.R index 11c32fe8b5e..a01101b4d37 100644 --- a/r/tests/testthat/test-parquet.R +++ b/r/tests/testthat/test-parquet.R @@ -106,3 +106,17 @@ test_that("write_parquet() defaults to snappy compression", { write_parquet(mtcars, tmp2, compression = "snappy") expect_equal(file.size(tmp1), file.size(tmp2)) }) + +test_that("Factors are preserved when writing/reading from Parquet", { + fct <- factor(c("a", "b"), levels = c("c", "a", "b")) + ord <- factor(c("a", "b"), levels = c("c", "a", "b"), ordered = TRUE) + chr <- c("a", "b") + df <- tibble::tibble(fct = fct, ord = ord, chr = chr) + + pq_tmp_file <- tempfile() + on.exit(unlink(pq_tmp_file)) + + write_parquet(df, pq_tmp_file) + df_read <- read_parquet(pq_tmp_file) + expect_identical(df, df_read) +})