mapleFU commented on code in PR #40768:
URL: https://github.com/apache/arrow/pull/40768#discussion_r1538922777


##########
cpp/src/parquet/file_writer.cc:
##########
@@ -288,45 +256,48 @@ class RowGroupSerializer : public 
RowGroupWriter::Contents {
   }
 
   void InitColumns() {
-    for (int i = 0; i < num_columns(); i++) {
+    for (int i = 0; i < RowGroupSerializer::num_columns(); i++) {
       auto col_meta = metadata_->NextColumnChunk();
-      const auto& path = col_meta->descr()->path();
       const int32_t column_ordinal = next_column_index_++;
-      auto meta_encryptor =
-          file_encryptor_ ? 
file_encryptor_->GetColumnMetaEncryptor(path->ToDotString())
+      column_writers_.push_back(CreateColumnWriterForColumn(col_meta, 
column_ordinal));
+    }
+  }
+
+  std::shared_ptr<ColumnWriter> CreateColumnWriterForColumn(
+      ColumnChunkMetaDataBuilder* col_meta, int32_t column_ordinal) const {
+    const auto& path = col_meta->descr()->path();
+    const ColumnProperties& column_properties = 
properties_->column_properties(path);
+    auto meta_encryptor =
+        file_encryptor_ ? 
file_encryptor_->GetColumnMetaEncryptor(path->ToDotString())
+                        : nullptr;
+    auto data_encryptor =
+        file_encryptor_ ? 
file_encryptor_->GetColumnDataEncryptor(path->ToDotString())
+                        : nullptr;
+    auto ci_builder = page_index_builder_ && 
column_properties.page_index_enabled()
+                          ? 
page_index_builder_->GetColumnIndexBuilder(column_ordinal)
                           : nullptr;
-      auto data_encryptor =
-          file_encryptor_ ? 
file_encryptor_->GetColumnDataEncryptor(path->ToDotString())
+    auto oi_builder = page_index_builder_ && 
column_properties.page_index_enabled()
+                          ? 
page_index_builder_->GetOffsetIndexBuilder(column_ordinal)
                           : nullptr;
-      auto ci_builder = page_index_builder_ && 
properties_->page_index_enabled(path)
-                            ? 
page_index_builder_->GetColumnIndexBuilder(column_ordinal)
-                            : nullptr;
-      auto oi_builder = page_index_builder_ && 
properties_->page_index_enabled(path)
-                            ? 
page_index_builder_->GetOffsetIndexBuilder(column_ordinal)
-                            : nullptr;
-      auto codec_options = properties_->codec_options(path)
-                               ? (properties_->codec_options(path)).get()
-                               : nullptr;
-
-      std::unique_ptr<PageWriter> pager;
-      if (!codec_options) {
-        pager = PageWriter::Open(
-            sink_, properties_->compression(path), col_meta, 
row_group_ordinal_,
-            static_cast<int16_t>(column_ordinal), properties_->memory_pool(),
-            buffered_row_group_, meta_encryptor, data_encryptor,
-            properties_->page_checksum_enabled(), ci_builder, oi_builder, 
CodecOptions());
-      } else {
-        pager = PageWriter::Open(
-            sink_, properties_->compression(path), col_meta, 
row_group_ordinal_,
-            static_cast<int16_t>(column_ordinal), properties_->memory_pool(),
-            buffered_row_group_, meta_encryptor, data_encryptor,
-            properties_->page_checksum_enabled(), ci_builder, oi_builder, 
*codec_options);
-      }
-      column_writers_.push_back(
-          ColumnWriter::Make(col_meta, std::move(pager), properties_));
+
+    const CodecOptions* codec_options = column_properties.codec_options()
+                                            ? 
column_properties.codec_options().get()
+                                            : nullptr;
+    CodecOptions default_codec_options;
+    if (!codec_options) {
+      codec_options = &default_codec_options;
     }
+    DCHECK_NE(nullptr, codec_options);
+    std::unique_ptr<PageWriter> pager = PageWriter::Open(
+        sink_, column_properties.compression(), col_meta, row_group_ordinal_,
+        static_cast<int16_t>(column_ordinal), properties_->memory_pool(),
+        buffered_row_group_, meta_encryptor, data_encryptor,

Review Comment:
   Previously, `NextColumn()` hardcode `buffered_row_group_` as false. But it 
already check `!buffered_row_group_`, so, we can just unify this here



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to