diff --git a/presto-native-execution/presto_cpp/main/operators/BroadcastWrite.cpp b/presto-native-execution/presto_cpp/main/operators/BroadcastWrite.cpp index e39e7ea8a9b80..4c04052f990f9 100644 --- a/presto-native-execution/presto_cpp/main/operators/BroadcastWrite.cpp +++ b/presto-native-execution/presto_cpp/main/operators/BroadcastWrite.cpp @@ -13,6 +13,7 @@ */ #include "presto_cpp/main/operators/BroadcastWrite.h" #include "presto_cpp/main/operators/BroadcastFactory.h" +#include "velox/exec/OperatorUtils.h" using namespace facebook::velox::exec; using namespace facebook::velox; @@ -23,22 +24,7 @@ velox::core::PlanNodeId deserializePlanNodeId(const folly::dynamic& obj) { return obj["id"].asString(); } -// TODO: This is a copy from Exchange.cpp. We should refactor -// such that this method is globally accessible from a single location. This is -// to prevent diverges of serde options during write and read. -std::unique_ptr getVectorSerdeOptions( - const core::QueryConfig& queryConfig, - VectorSerde::Kind kind) { - std::unique_ptr options = - kind == VectorSerde::Kind::kPresto - ? std::make_unique() - : std::make_unique(); - options->compressionKind = - common::stringToCompressionKind(queryConfig.shuffleCompressionKind()); - return options; -} - -// BroadcastWriteOperator writes input RowVectors to specified file. +/// BroadcastWriteOperator writes input RowVectors to specified file. class BroadcastWriteOperator : public Operator { public: BroadcastWriteOperator( @@ -60,7 +46,10 @@ class BroadcastWriteOperator : public Operator { fileBroadcastWriter_ = fileBroadcast.createWriter( 8 << 20, operatorCtx_->pool(), - getVectorSerdeOptions(ctx->queryConfig(), VectorSerde::Kind::kPresto)); + getVectorSerdeOptions( + common::stringToCompressionKind( + ctx->queryConfig().shuffleCompressionKind()), + VectorSerde::Kind::kPresto)); } bool needsInput() const override {