From c14a9a6bdb0e2dc9cfefc4cc2b86fab48601d574 Mon Sep 17 00:00:00 2001 From: Yuan Date: Mon, 1 Feb 2021 14:13:46 +0800 Subject: [PATCH] using forward_as_tuple in multiple keys based SMJ (#74) Signed-off-by: Yuan Zhou --- .../arrow_compute/ext/conditioned_merge_join_kernel.cc | 6 +++--- cpp/src/codegen/arrow_compute/ext/merge_join_kernel.cc | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cpp/src/codegen/arrow_compute/ext/conditioned_merge_join_kernel.cc b/cpp/src/codegen/arrow_compute/ext/conditioned_merge_join_kernel.cc index 1c9cec54c..2c7422265 100644 --- a/cpp/src/codegen/arrow_compute/ext/conditioned_merge_join_kernel.cc +++ b/cpp/src/codegen/arrow_compute/ext/conditioned_merge_join_kernel.cc @@ -219,12 +219,12 @@ class ConditionedMergeJoinKernel::Impl { auto left_tuple_name = left_paramater; auto right_tuple_name = right_paramater; if (project_output_list[0].size() > 1) { - function_define_ss << "auto left_tuple = std::make_tuple(" << left_paramater + function_define_ss << "auto left_tuple = std::forward_as_tuple(" << left_paramater << " );" << std::endl; left_tuple_name = "left_tuple"; } if (project_output_list[1].size() > 1) { - function_define_ss << "auto right_tuple = std::make_tuple(" << right_paramater + function_define_ss << "auto right_tuple = std::forward_as_tuple(" << right_paramater << " );" << std::endl; right_tuple_name = "right_tuple"; } @@ -929,4 +929,4 @@ arrow::Status ConditionedMergeJoinKernel::DoCodeGen( } // namespace extra } // namespace arrowcompute } // namespace codegen -} // namespace sparkcolumnarplugin \ No newline at end of file +} // namespace sparkcolumnarplugin diff --git a/cpp/src/codegen/arrow_compute/ext/merge_join_kernel.cc b/cpp/src/codegen/arrow_compute/ext/merge_join_kernel.cc index f00e2cddc..7e8b4e46e 100644 --- a/cpp/src/codegen/arrow_compute/ext/merge_join_kernel.cc +++ b/cpp/src/codegen/arrow_compute/ext/merge_join_kernel.cc @@ -1069,7 +1069,7 @@ class ConditionedJoinArraysKernel::Impl { std::stringstream ss; std::string tuple_str; if (multiple_cols) { - tuple_str = "std::make_tuple"; + tuple_str = "std::forward_as_tuple"; } if (multiple_cols) { for (int i = 0; i < size; i++) { @@ -1115,7 +1115,7 @@ class ConditionedJoinArraysKernel::Impl { tuple_str += local_tuple; } tuple_str.erase(tuple_str.end() - 1, tuple_str.end()); - ss << std::endl << "return {" + tuple_str + "};" << std::endl; + ss << std::endl << "return std::forward_as_tuple(" + tuple_str + ");" << std::endl; } else { ss << std::endl << "return it->GetView(segment_len);" << std::endl;