diff --git a/cpp/src/common/constants.h b/cpp/src/common/constants.h index c8727937..1eea433a 100644 --- a/cpp/src/common/constants.h +++ b/cpp/src/common/constants.h @@ -7,6 +7,9 @@ const int kReadBatchSize = 1024; const std::string kManifestTempFileSuffix = ".manifest.tmp"; const std::string kManifestFileSuffix = ".manifest"; const std::string kManifestsDir = "versions"; +const std::string kScalarDataDir = "scalar"; +const std::string kVectorDataDir = "vector"; +const std::string kDeleteDataDir = "delete"; const std::string kParquetDataFileSuffix = ".parquet"; const std::string kOffsetFieldName = "__offset"; diff --git a/cpp/src/common/utils.cpp b/cpp/src/common/utils.cpp index e10b3de8..e0dc441f 100644 --- a/cpp/src/common/utils.cpp +++ b/cpp/src/common/utils.cpp @@ -231,6 +231,18 @@ std::string GetNewParquetFilePath(const std::string& path) { return path + boost::uuids::to_string(scalar_file_id) + kParquetDataFileSuffix; } +std::string GetScalarDataDir(const std::string& path) { + return arrow::fs::internal::JoinAbstractPath(std::vector{path, kScalarDataDir}); +} + +std::string GetVectorDataDir(const std::string& path) { + return arrow::fs::internal::JoinAbstractPath(std::vector{path, kVectorDataDir}); +} + +std::string GetDeleteDataDir(const std::string& path) { + return arrow::fs::internal::JoinAbstractPath(std::vector{path, kDeleteDataDir}); +} + std::string GetManifestFilePath(const std::string& path, const int64_t version) { return arrow::fs::internal::JoinAbstractPath( std::vector{path, kManifestsDir, std::to_string(version) + kManifestFileSuffix}); diff --git a/cpp/src/common/utils.h b/cpp/src/common/utils.h index c2b59b06..aed19d97 100644 --- a/cpp/src/common/utils.h +++ b/cpp/src/common/utils.h @@ -24,4 +24,7 @@ Result> ProjectSchema(std::shared_ptrnum_rows(), vector_cols); if (scalar_writer == nullptr) { - auto scalar_file_path = GetNewParquetFilePath(path_); + auto scalar_file_path = GetNewParquetFilePath(GetScalarDataDir(path_)); scalar_writer = new ParquetFileWriter(scalar_schema, fs_, scalar_file_path); RETURN_NOT_OK(scalar_writer->Init()); scalar_fragment.add_file(scalar_file_path); } if (vector_writer == nullptr) { - auto vector_file_path = GetNewParquetFilePath(path_); + auto vector_file_path = GetNewParquetFilePath(GetVectorDataDir(path_)); vector_writer = new ParquetFileWriter(vector_schema, fs_, vector_file_path); RETURN_NOT_OK(vector_writer->Init()); vector_fragment.add_file(vector_file_path); @@ -137,7 +137,7 @@ Status Space::Delete(arrow::RecordBatchReader* reader) { } if (!writer) { - delete_file = GetNewParquetFilePath(path_); + delete_file = GetNewParquetFilePath(GetDeleteDataDir(path_)); writer = new ParquetFileWriter(manifest_->schema()->delete_schema(), fs_, delete_file); RETURN_NOT_OK(writer->Init()); }