Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E6A0F200D43 for ; Tue, 21 Nov 2017 15:57:41 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id E53F3160BFC; Tue, 21 Nov 2017 14:57:41 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 39400160BED for ; Tue, 21 Nov 2017 15:57:41 +0100 (CET) Received: (qmail 36720 invoked by uid 500); 21 Nov 2017 14:57:40 -0000 Mailing-List: contact commits-help@arrow.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@arrow.apache.org Delivered-To: mailing list commits@arrow.apache.org Received: (qmail 36711 invoked by uid 99); 21 Nov 2017 14:57:40 -0000 Received: from ec2-52-202-80-70.compute-1.amazonaws.com (HELO gitbox.apache.org) (52.202.80.70) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 21 Nov 2017 14:57:40 +0000 Received: by gitbox.apache.org (ASF Mail Server at gitbox.apache.org, from userid 33) id D493781C1E; Tue, 21 Nov 2017 14:57:39 +0000 (UTC) Date: Tue, 21 Nov 2017 14:57:39 +0000 To: "commits@arrow.apache.org" Subject: [arrow] branch master updated: ARROW-1838: [C++] Conform kernel API to use Datum for input and output MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Message-ID: <151127625970.18345.9784438709509269616@gitbox.apache.org> From: wesm@apache.org X-Git-Host: gitbox.apache.org X-Git-Repo: arrow X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: e98adc3b54aab1139239c5b475dc36a809412d99 X-Git-Newrev: c436376b0ab880202c4e2f2735aff74b4667d98b X-Git-Rev: c436376b0ab880202c4e2f2735aff74b4667d98b X-Git-NotificationType: ref_changed_plus_diff X-Git-Multimail-Version: 1.5.dev Auto-Submitted: auto-generated archived-at: Tue, 21 Nov 2017 14:57:42 -0000 This is an automated email from the ASF dual-hosted git repository. wesm 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 c436376 ARROW-1838: [C++] Conform kernel API to use Datum for input and output c436376 is described below commit c436376b0ab880202c4e2f2735aff74b4667d98b Author: Wes McKinney AuthorDate: Tue Nov 21 09:57:36 2017 -0500 ARROW-1838: [C++] Conform kernel API to use Datum for input and output We could also add helper methods that do automatic boxing into a `Datum` at a later time if it helps with code complexity. Author: Wes McKinney Closes #1339 from wesm/ARROW-1838 and squashes the following commits: f83a866e [Wes McKinney] Conform kernel API to use Datum for input and output --- cpp/src/arrow/compute/compute-test.cc | 2 +- cpp/src/arrow/compute/kernel.h | 2 +- cpp/src/arrow/compute/kernels/cast.cc | 11 +++++++---- cpp/src/arrow/compute/kernels/hash.cc | 5 +++-- cpp/src/arrow/compute/kernels/util-internal.cc | 4 ++-- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/cpp/src/arrow/compute/compute-test.cc b/cpp/src/arrow/compute/compute-test.cc index 58a991c..fa408ae 100644 --- a/cpp/src/arrow/compute/compute-test.cc +++ b/cpp/src/arrow/compute/compute-test.cc @@ -697,7 +697,7 @@ TEST_F(TestCast, PreallocatedMemory) { out_data->buffers.push_back(out_values); Datum out(out_data); - ASSERT_OK(kernel->Call(&this->ctx_, *arr->data(), &out)); + ASSERT_OK(kernel->Call(&this->ctx_, Datum(arr), &out)); // Buffer address unchanged ASSERT_EQ(out_values.get(), out_data->buffers[1].get()); diff --git a/cpp/src/arrow/compute/kernel.h b/cpp/src/arrow/compute/kernel.h index 0037245..7ff506c 100644 --- a/cpp/src/arrow/compute/kernel.h +++ b/cpp/src/arrow/compute/kernel.h @@ -131,7 +131,7 @@ struct ARROW_EXPORT Datum { /// \brief An array-valued function of a single input argument class ARROW_EXPORT UnaryKernel : public OpKernel { public: - virtual Status Call(FunctionContext* ctx, const ArrayData& input, Datum* out) = 0; + virtual Status Call(FunctionContext* ctx, const Datum& input, Datum* out) = 0; }; } // namespace compute diff --git a/cpp/src/arrow/compute/kernels/cast.cc b/cpp/src/arrow/compute/kernels/cast.cc index c866054..d595d2e 100644 --- a/cpp/src/arrow/compute/kernels/cast.cc +++ b/cpp/src/arrow/compute/kernels/cast.cc @@ -740,20 +740,23 @@ class CastKernel : public UnaryKernel { can_pre_allocate_values_(can_pre_allocate_values), out_type_(out_type) {} - Status Call(FunctionContext* ctx, const ArrayData& input, Datum* out) override { + Status Call(FunctionContext* ctx, const Datum& input, Datum* out) override { + DCHECK_EQ(Datum::ARRAY, input.kind()); + + const ArrayData& in_data = *input.array(); ArrayData* result; if (out->kind() == Datum::NONE) { - out->value = std::make_shared(out_type_, input.length); + out->value = std::make_shared(out_type_, in_data.length); } result = out->array().get(); if (!is_zero_copy_) { RETURN_NOT_OK( - AllocateIfNotPreallocated(ctx, input, can_pre_allocate_values_, result)); + AllocateIfNotPreallocated(ctx, in_data, can_pre_allocate_values_, result)); } - func_(ctx, options_, input, result); + func_(ctx, options_, in_data, result); RETURN_IF_ERROR(ctx); return Status::OK(); diff --git a/cpp/src/arrow/compute/kernels/hash.cc b/cpp/src/arrow/compute/kernels/hash.cc index 3af4160..95f0399 100644 --- a/cpp/src/arrow/compute/kernels/hash.cc +++ b/cpp/src/arrow/compute/kernels/hash.cc @@ -658,8 +658,9 @@ class HashKernelImpl : public HashKernel { explicit HashKernelImpl(std::unique_ptr hasher) : hasher_(std::move(hasher)) {} - Status Call(FunctionContext* ctx, const ArrayData& input, Datum* out) override { - RETURN_NOT_OK(Append(ctx, input)); + Status Call(FunctionContext* ctx, const Datum& input, Datum* out) override { + DCHECK_EQ(Datum::ARRAY, input.kind()); + RETURN_NOT_OK(Append(ctx, *input.array())); return Flush(out); } diff --git a/cpp/src/arrow/compute/kernels/util-internal.cc b/cpp/src/arrow/compute/kernels/util-internal.cc index df68637..28428bf 100644 --- a/cpp/src/arrow/compute/kernels/util-internal.cc +++ b/cpp/src/arrow/compute/kernels/util-internal.cc @@ -34,13 +34,13 @@ Status InvokeUnaryArrayKernel(FunctionContext* ctx, UnaryKernel* kernel, const Datum& value, std::vector* outputs) { if (value.kind() == Datum::ARRAY) { Datum output; - RETURN_NOT_OK(kernel->Call(ctx, *value.array(), &output)); + RETURN_NOT_OK(kernel->Call(ctx, value, &output)); outputs->push_back(output); } else if (value.kind() == Datum::CHUNKED_ARRAY) { const ChunkedArray& array = *value.chunked_array(); for (int i = 0; i < array.num_chunks(); i++) { Datum output; - RETURN_NOT_OK(kernel->Call(ctx, *(array.chunk(i)->data()), &output)); + RETURN_NOT_OK(kernel->Call(ctx, Datum(array.chunk(i)), &output)); outputs->push_back(output); } } else { -- To stop receiving notification emails like this one, please contact ['"commits@arrow.apache.org" '].