You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2022/04/15 20:23:58 UTC

[arrow] branch master updated: ARROW-16043: [C++][Filesystem][S3] Add missing empty content for creating directory

This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new c03b6eb1cb ARROW-16043: [C++][Filesystem][S3] Add missing empty content for creating directory
c03b6eb1cb is described below

commit c03b6eb1cb167cceb5aec850bb233ffaa1e0ce14
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Sat Apr 16 05:23:45 2022 +0900

    ARROW-16043: [C++][Filesystem][S3] Add missing empty content for creating directory
    
    We can't omit body to create a directory.
    
    Closes #12895 from kou/cpp-s3-create-directory
    
    Authored-by: Sutou Kouhei <ko...@clear-code.com>
    Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
 cpp/src/arrow/filesystem/s3fs.cc      | 1 +
 cpp/src/arrow/filesystem/s3fs_test.cc | 1 +
 2 files changed, 2 insertions(+)

diff --git a/cpp/src/arrow/filesystem/s3fs.cc b/cpp/src/arrow/filesystem/s3fs.cc
index 28017cad7e..91d4359012 100644
--- a/cpp/src/arrow/filesystem/s3fs.cc
+++ b/cpp/src/arrow/filesystem/s3fs.cc
@@ -1702,6 +1702,7 @@ class S3FileSystem::Impl : public std::enable_shared_from_this<S3FileSystem::Imp
     S3Model::PutObjectRequest req;
     req.SetBucket(ToAwsString(bucket));
     req.SetKey(ToAwsString(key));
+    req.SetBody(std::make_shared<std::stringstream>(""));
     return OutcomeToStatus(
         std::forward_as_tuple("When creating key '", key, "' in bucket '", bucket, "': "),
         client_->PutObject(req));
diff --git a/cpp/src/arrow/filesystem/s3fs_test.cc b/cpp/src/arrow/filesystem/s3fs_test.cc
index 9e63d548a3..98ee30e848 100644
--- a/cpp/src/arrow/filesystem/s3fs_test.cc
+++ b/cpp/src/arrow/filesystem/s3fs_test.cc
@@ -418,6 +418,7 @@ class TestS3FS : public S3TestMixin {
       Aws::S3::Model::PutObjectRequest req;
       req.SetBucket(ToAwsString("bucket"));
       req.SetKey(ToAwsString("emptydir/"));
+      req.SetBody(std::make_shared<std::stringstream>(""));
       ASSERT_OK(OutcomeToStatus(client_->PutObject(req)));
       // NOTE: no need to create intermediate "directories" somedir/ and
       // somedir/subdir/