1818
1919#include " paimon/common/utils/arrow/arrow_output_stream_adapter.h"
2020#include " paimon/common/utils/arrow/arrow_utils.h"
21+ #include " paimon/common/utils/arrow/mem_utils.h"
2122#include " paimon/common/utils/arrow/status_utils.h"
2223#include " paimon/common/utils/scope_guard.h"
2324#include " paimon/core/mergetree/spill_channel_manager.h"
@@ -28,28 +29,33 @@ SpillWriter::SpillWriter(const std::shared_ptr<FileSystem>& fs,
2829 const std::shared_ptr<arrow::Schema>& schema,
2930 const std::shared_ptr<FileIOChannel::Enumerator>& channel_enumerator,
3031 const std::shared_ptr<SpillChannelManager>& spill_channel_manager,
31- const std::string& compression, int32_t compression_level)
32+ const std::string& compression, int32_t compression_level,
33+ const std::shared_ptr<MemoryPool>& pool)
3234 : fs_(fs),
3335 schema_ (schema),
3436 channel_enumerator_(channel_enumerator),
3537 spill_channel_manager_(spill_channel_manager),
3638 compression_(compression),
37- compression_level_(compression_level) {}
39+ compression_level_(compression_level),
40+ arrow_pool_(GetArrowPool(pool)) {}
3841
3942Result<std::unique_ptr<SpillWriter>> SpillWriter::Create (
4043 const std::shared_ptr<FileSystem>& fs, const std::shared_ptr<arrow::Schema>& schema,
4144 const std::shared_ptr<FileIOChannel::Enumerator>& channel_enumerator,
4245 const std::shared_ptr<SpillChannelManager>& spill_channel_manager,
43- const std::string& compression, int32_t compression_level) {
44- std::unique_ptr<SpillWriter> writer (new SpillWriter (
45- fs, schema, channel_enumerator, spill_channel_manager, compression, compression_level));
46+ const std::string& compression, int32_t compression_level,
47+ const std::shared_ptr<MemoryPool>& pool) {
48+ std::unique_ptr<SpillWriter> writer (new SpillWriter (fs, schema, channel_enumerator,
49+ spill_channel_manager, compression,
50+ compression_level, pool));
4651 PAIMON_RETURN_NOT_OK (writer->Open ());
4752 return writer;
4853}
4954
5055Status SpillWriter::Open () {
5156 channel_id_ = channel_enumerator_->Next ();
5257 auto ipc_write_options = arrow::ipc::IpcWriteOptions::Defaults ();
58+ ipc_write_options.memory_pool = arrow_pool_.get ();
5359 auto cleanup_guard = ScopeGuard ([&]() {
5460 arrow_writer_.reset ();
5561 arrow_output_stream_adapter_.reset ();
0 commit comments