You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by uw...@apache.org on 2017/03/14 08:17:36 UTC

arrow git commit: ARROW-624: [C++] Restore MakePrimitiveArray function, use in feather.cc

Repository: arrow
Updated Branches:
  refs/heads/master 6aed18f96 -> f442879d3


ARROW-624: [C++] Restore MakePrimitiveArray function, use in feather.cc

I verified locally the parquet-cpp test suite passes again

Author: Wes McKinney <we...@twosigma.com>

Closes #378 from wesm/ARROW-624 and squashes the following commits:

023df9b [Wes McKinney] Use passed offset in MakePrimitiveArray
30a553e [Wes McKinney] Restore MakePrimitiveArray function, use in Feather, verify fixes parquet test suite


Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/f442879d
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/f442879d
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/f442879d

Branch: refs/heads/master
Commit: f442879d3c791d86fb0fdfa098a72329843f5baf
Parents: 6aed18f
Author: Wes McKinney <we...@twosigma.com>
Authored: Tue Mar 14 09:17:30 2017 +0100
Committer: Uwe L. Korn <uw...@xhochy.com>
Committed: Tue Mar 14 09:17:30 2017 +0100

----------------------------------------------------------------------
 cpp/src/arrow/api.h          |  3 +++
 cpp/src/arrow/ipc/feather.cc |  8 +-------
 cpp/src/arrow/loader.cc      | 28 +++++++++++++++++++++++-----
 cpp/src/arrow/loader.h       | 10 ++++++++++
 4 files changed, 37 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/arrow/blob/f442879d/cpp/src/arrow/api.h
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/api.h b/cpp/src/arrow/api.h
index 51437d8..3bc8666 100644
--- a/cpp/src/arrow/api.h
+++ b/cpp/src/arrow/api.h
@@ -24,7 +24,10 @@
 #include "arrow/buffer.h"
 #include "arrow/builder.h"
 #include "arrow/column.h"
+#include "arrow/compare.h"
+#include "arrow/loader.h"
 #include "arrow/memory_pool.h"
+#include "arrow/pretty_print.h"
 #include "arrow/schema.h"
 #include "arrow/status.h"
 #include "arrow/table.h"

http://git-wip-us.apache.org/repos/asf/arrow/blob/f442879d/cpp/src/arrow/ipc/feather.cc
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/ipc/feather.cc b/cpp/src/arrow/ipc/feather.cc
index 13dfa58..1d165ac 100644
--- a/cpp/src/arrow/ipc/feather.cc
+++ b/cpp/src/arrow/ipc/feather.cc
@@ -331,7 +331,6 @@ class TableReader::TableReaderImpl {
     std::shared_ptr<DataType> type;
     RETURN_NOT_OK(GetDataType(meta, metadata_type, metadata, &type));
 
-    std::vector<FieldMetadata> fields(1);
     std::vector<std::shared_ptr<Buffer>> buffers;
 
     // Buffer data from the source (may or may not perform a copy depending on
@@ -357,12 +356,7 @@ class TableReader::TableReaderImpl {
     }
 
     buffers.push_back(SliceBuffer(buffer, offset, buffer->size() - offset));
-
-    fields[0].length = meta->length();
-    fields[0].null_count = meta->null_count();
-    fields[0].offset = 0;
-
-    return LoadArray(type, fields, buffers, out);
+    return MakePrimitiveArray(type, buffers, meta->length(), meta->null_count(), 0, out);
   }
 
   bool HasDescription() const { return metadata_->HasDescription(); }

http://git-wip-us.apache.org/repos/asf/arrow/blob/f442879d/cpp/src/arrow/loader.cc
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/loader.cc b/cpp/src/arrow/loader.cc
index 3cb51ae..0b3ee1c 100644
--- a/cpp/src/arrow/loader.cc
+++ b/cpp/src/arrow/loader.cc
@@ -235,8 +235,8 @@ class ArrayLoader : public TypeVisitor {
   std::shared_ptr<Array> result_;
 };
 
-Status ARROW_EXPORT LoadArray(const std::shared_ptr<DataType>& type,
-    ArrayComponentSource* source, std::shared_ptr<Array>* out) {
+Status LoadArray(const std::shared_ptr<DataType>& type, ArrayComponentSource* source,
+    std::shared_ptr<Array>* out) {
   ArrayLoaderContext context;
   context.source = source;
   context.field_index = context.buffer_index = 0;
@@ -244,8 +244,8 @@ Status ARROW_EXPORT LoadArray(const std::shared_ptr<DataType>& type,
   return LoadArray(type, &context, out);
 }
 
-Status ARROW_EXPORT LoadArray(const std::shared_ptr<DataType>& type,
-    ArrayLoaderContext* context, std::shared_ptr<Array>* out) {
+Status LoadArray(const std::shared_ptr<DataType>& type, ArrayLoaderContext* context,
+    std::shared_ptr<Array>* out) {
   ArrayLoader loader(type, context);
   RETURN_NOT_OK(loader.Load(out));
 
@@ -275,11 +275,29 @@ class InMemorySource : public ArrayComponentSource {
   const std::vector<std::shared_ptr<Buffer>>& buffers_;
 };
 
-Status ARROW_EXPORT LoadArray(const std::shared_ptr<DataType>& type,
+Status LoadArray(const std::shared_ptr<DataType>& type,
     const std::vector<FieldMetadata>& fields,
     const std::vector<std::shared_ptr<Buffer>>& buffers, std::shared_ptr<Array>* out) {
   InMemorySource source(fields, buffers);
   return LoadArray(type, &source, out);
 }
 
+Status MakePrimitiveArray(const std::shared_ptr<DataType>& type, int64_t length,
+    const std::shared_ptr<Buffer>& data, const std::shared_ptr<Buffer>& null_bitmap,
+    int64_t null_count, int64_t offset, std::shared_ptr<Array>* out) {
+  std::vector<std::shared_ptr<Buffer>> buffers = {null_bitmap, data};
+  return MakePrimitiveArray(type, buffers, length, null_count, offset, out);
+}
+
+Status MakePrimitiveArray(const std::shared_ptr<DataType>& type,
+    const std::vector<std::shared_ptr<Buffer>>& buffers, int64_t length,
+    int64_t null_count, int64_t offset, std::shared_ptr<Array>* out) {
+  std::vector<FieldMetadata> fields(1);
+  fields[0].length = length;
+  fields[0].null_count = null_count;
+  fields[0].offset = offset;
+
+  return LoadArray(type, fields, buffers, out);
+}
+
 }  // namespace arrow

http://git-wip-us.apache.org/repos/asf/arrow/blob/f442879d/cpp/src/arrow/loader.h
----------------------------------------------------------------------
diff --git a/cpp/src/arrow/loader.h b/cpp/src/arrow/loader.h
index b4949f2..f116d64 100644
--- a/cpp/src/arrow/loader.h
+++ b/cpp/src/arrow/loader.h
@@ -84,6 +84,16 @@ Status ARROW_EXPORT LoadArray(const std::shared_ptr<DataType>& type,
     const std::vector<FieldMetadata>& fields,
     const std::vector<std::shared_ptr<Buffer>>& buffers, std::shared_ptr<Array>* out);
 
+/// Create new arrays for logical types that are backed by primitive arrays.
+Status ARROW_EXPORT MakePrimitiveArray(const std::shared_ptr<DataType>& type,
+    int64_t length, const std::shared_ptr<Buffer>& data,
+    const std::shared_ptr<Buffer>& null_bitmap, int64_t null_count, int64_t offset,
+    std::shared_ptr<Array>* out);
+
+Status ARROW_EXPORT MakePrimitiveArray(const std::shared_ptr<DataType>& type,
+    const std::vector<std::shared_ptr<Buffer>>& buffers, int64_t length,
+    int64_t null_count, int64_t offset, std::shared_ptr<Array>* out);
+
 }  // namespace arrow
 
 #endif  // ARROW_LOADER_H