You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@parquet.apache.org by we...@apache.org on 2016/09/25 23:23:14 UTC
parquet-cpp git commit: PARQUET-728: Incorporate upstream Arrow API
changes
Repository: parquet-cpp
Updated Branches:
refs/heads/master cd14a3d0f -> 5c1d9e94b
PARQUET-728: Incorporate upstream Arrow API changes
I bumped the thirdparty git hash to Arrow trunk. Pardon the diff noise from clang format. Also resolves PARQUET-729.
Author: Wes McKinney <we...@twosigma.com>
Closes #167 from wesm/PARQUET-728 and squashes the following commits:
222e72c [Wes McKinney] Write multiple columns in file-serialize-test. Fix PARQUET-729
ef56871 [Wes McKinney] Incorporate upstream Arrow API changes, clang format with LLVM 3.8.0
Project: http://git-wip-us.apache.org/repos/asf/parquet-cpp/repo
Commit: http://git-wip-us.apache.org/repos/asf/parquet-cpp/commit/5c1d9e94
Tree: http://git-wip-us.apache.org/repos/asf/parquet-cpp/tree/5c1d9e94
Diff: http://git-wip-us.apache.org/repos/asf/parquet-cpp/diff/5c1d9e94
Branch: refs/heads/master
Commit: 5c1d9e94b8409d1a2b31491e68f92b4207e48646
Parents: cd14a3d
Author: Wes McKinney <we...@twosigma.com>
Authored: Sun Sep 25 19:22:48 2016 -0400
Committer: Wes McKinney <we...@twosigma.com>
Committed: Sun Sep 25 19:22:48 2016 -0400
----------------------------------------------------------------------
CMakeLists.txt | 2 +-
benchmarks/decode_benchmark.cc | 6 +-
cmake_modules/FindArrow.cmake | 4 +-
src/parquet/arrow/CMakeLists.txt | 7 ++-
src/parquet/arrow/arrow-io-test.cc | 54 +----------------
src/parquet/arrow/arrow-reader-writer-test.cc | 9 +--
src/parquet/arrow/io.cc | 2 +-
src/parquet/arrow/io.h | 4 +-
src/parquet/arrow/reader.cc | 15 ++---
src/parquet/arrow/reader.h | 2 +-
src/parquet/arrow/utils.h | 16 ++---
src/parquet/arrow/writer.cc | 23 +++----
src/parquet/column/column-io-benchmark.cc | 4 +-
src/parquet/column/column-reader-test.cc | 2 +-
src/parquet/column/column-writer-test.cc | 35 ++++++-----
src/parquet/column/levels-test.cc | 4 +-
src/parquet/column/levels.h | 2 +-
src/parquet/column/properties.h | 2 +-
src/parquet/column/scanner-test.cc | 7 ++-
src/parquet/column/scanner.h | 2 +-
src/parquet/column/test-specialization.h | 57 ++++++++++--------
src/parquet/column/test-util.h | 4 +-
src/parquet/compression/codec-test.cc | 2 +-
src/parquet/compression/snappy-codec.cc | 2 +-
.../encodings/delta-byte-array-encoding.h | 2 +-
src/parquet/encodings/encoding-test.cc | 9 +--
src/parquet/exception.cc | 4 ++
src/parquet/exception.h | 1 +
src/parquet/file/file-deserialize-test.cc | 2 +-
src/parquet/file/file-metadata-test.cc | 2 +-
src/parquet/file/file-serialize-test.cc | 63 +++++++++++++-------
src/parquet/file/metadata.h | 2 +-
src/parquet/file/reader-internal.cc | 6 +-
src/parquet/file/reader.cc | 2 +-
src/parquet/file/reader.h | 2 +-
src/parquet/file/writer-internal.cc | 4 +-
src/parquet/reader-test.cc | 10 ++--
src/parquet/schema/descriptor.h | 6 +-
src/parquet/schema/schema-descriptor-test.cc | 2 +-
src/parquet/thrift/util.h | 10 ++--
src/parquet/util/bit-stream-utils.h | 4 +-
src/parquet/util/bit-util-test.cc | 8 +--
src/parquet/util/buffer-builder.h | 2 +-
src/parquet/util/buffer-test.cc | 4 +-
src/parquet/util/cpu-info.cc | 2 +-
src/parquet/util/input.cc | 2 +-
src/parquet/util/mem-pool-test.cc | 4 +-
src/parquet/util/mem-pool.h | 4 +-
src/parquet/util/rle-encoding.h | 4 +-
src/parquet/util/rle-test.cc | 4 +-
src/parquet/util/stopwatch.h | 2 +-
src/parquet/util/test-common.h | 3 +-
thirdparty/versions.sh | 2 +-
tools/parquet-scan.cc | 2 +-
tools/parquet_reader.cc | 2 +-
55 files changed, 216 insertions(+), 227 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 42b10ee..3cac3e8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -416,7 +416,7 @@ if (UNIX)
add_custom_target(lint ${BUILD_SUPPORT_DIR}/cpplint.py
--verbose=2
--linelength=90
- --filter=-whitespace/comments,-readability/todo,-build/header_guard,-runtime/references,-readability/check,-build/c++11
+ --filter=-whitespace/comments,-readability/todo,-build/header_guard,-runtime/references,-readability/check,-build/c++11,-build/include_order
`find ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_SOURCE_DIR}/tools ${CMAKE_CURRENT_SOURCE_DIR}/benchmarks -name \\*.cc -or -name \\*.h | sed -e '/parquet\\/thrift/g'`)
endif (UNIX)
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/benchmarks/decode_benchmark.cc
----------------------------------------------------------------------
diff --git a/benchmarks/decode_benchmark.cc b/benchmarks/decode_benchmark.cc
index d3748ca..7659234 100644
--- a/benchmarks/decode_benchmark.cc
+++ b/benchmarks/decode_benchmark.cc
@@ -15,16 +15,16 @@
// specific language governing permissions and limitations
// under the License.
-#include <stdio.h>
#include <iostream>
#include <random>
+#include <stdio.h>
#include "parquet/compression/codec.h"
-#include "parquet/encodings/plain-encoding.h"
-#include "parquet/encodings/dictionary-encoding.h"
#include "parquet/encodings/delta-bit-pack-encoding.h"
#include "parquet/encodings/delta-byte-array-encoding.h"
#include "parquet/encodings/delta-length-byte-array-encoding.h"
+#include "parquet/encodings/dictionary-encoding.h"
+#include "parquet/encodings/plain-encoding.h"
#include "parquet/util/stopwatch.h"
/**
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/cmake_modules/FindArrow.cmake
----------------------------------------------------------------------
diff --git a/cmake_modules/FindArrow.cmake b/cmake_modules/FindArrow.cmake
index 91d0e71..eec5d66 100644
--- a/cmake_modules/FindArrow.cmake
+++ b/cmake_modules/FindArrow.cmake
@@ -53,10 +53,10 @@ if (ARROW_INCLUDE_DIR AND ARROW_LIB_PATH)
set(ARROW_IO_LIB_NAME libarrow_io)
set(ARROW_LIBS ${ARROW_SEARCH_LIB_PATH})
- set(ARROW_STATIC_LIB ${ARROW_SEARCH_LIB_PATH}/${ARROW_LIB_NAME}.a)
+ set(ARROW_STATIC_LIB ${ARROW_LIBS}/${ARROW_LIB_NAME}.a)
set(ARROW_SHARED_LIB ${ARROW_LIBS}/${ARROW_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
- set(ARROW_IO_STATIC_LIB ${ARROW_SEARCH_LIB_PATH}/${ARROW_IO_LIB_NAME}.a)
+ set(ARROW_IO_STATIC_LIB ${ARROW_LIBS}/${ARROW_IO_LIB_NAME}.a)
set(ARROW_IO_SHARED_LIB ${ARROW_LIBS}/${ARROW_IO_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
if (NOT Arrow_FIND_QUIETLY)
message(STATUS "Found the Arrow core library: ${ARROW_LIB_PATH}")
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/CMakeLists.txt b/src/parquet/arrow/CMakeLists.txt
index 5d923a7..f36abe6 100644
--- a/src/parquet/arrow/CMakeLists.txt
+++ b/src/parquet/arrow/CMakeLists.txt
@@ -48,6 +48,10 @@ if (PARQUET_BUILD_SHARED)
BUILD_WITH_INSTALL_RPATH ON
INSTALL_NAME_DIR "@rpath")
endif()
+
+ install(TARGETS parquet_arrow_shared
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
endif()
if (PARQUET_BUILD_STATIC)
@@ -58,7 +62,7 @@ if (PARQUET_BUILD_STATIC)
OUTPUT_NAME "parquet_arrow")
target_link_libraries(parquet_arrow_static
arrow_static
- arrow_static
+ arrow_io
parquet_static)
install(TARGETS parquet_arrow_static
ARCHIVE DESTINATION lib
@@ -87,4 +91,3 @@ install(FILES
utils.h
writer.h
DESTINATION include/parquet/arrow)
-
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/arrow-io-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/arrow-io-test.cc b/src/parquet/arrow/arrow-io-test.cc
index 377fb97..344dd13 100644
--- a/src/parquet/arrow/arrow-io-test.cc
+++ b/src/parquet/arrow/arrow-io-test.cc
@@ -22,6 +22,7 @@
#include "gtest/gtest.h"
+#include "arrow/io/memory.h"
#include "arrow/test-util.h"
#include "arrow/util/memory-pool.h"
#include "arrow/util/status.h"
@@ -33,8 +34,7 @@ using arrow::default_memory_pool;
using arrow::MemoryPool;
using arrow::Status;
-// To assist with readability
-using ArrowROFile = arrow::io::RandomAccessFile;
+using ArrowBufferReader = arrow::io::BufferReader;
namespace parquet {
namespace arrow {
@@ -103,61 +103,13 @@ TEST(TestParquetAllocator, CustomPool) {
// ----------------------------------------------------------------------
// Read source tests
-class BufferReader : public ArrowROFile {
- public:
- BufferReader(const uint8_t* buffer, int buffer_size)
- : buffer_(buffer), buffer_size_(buffer_size), position_(0) {}
-
- Status Close() override {
- // no-op
- return Status::OK();
- }
-
- Status Tell(int64_t* position) override {
- *position = position_;
- return Status::OK();
- }
-
- Status ReadAt(
- int64_t position, int64_t nbytes, int64_t* bytes_read, uint8_t* buffer) override {
- RETURN_NOT_OK(Seek(position));
- return Read(nbytes, bytes_read, buffer);
- }
-
- Status Read(int64_t nbytes, int64_t* bytes_read, uint8_t* buffer) override {
- memcpy(buffer, buffer_ + position_, nbytes);
- *bytes_read = std::min(nbytes, buffer_size_ - position_);
- position_ += *bytes_read;
- return Status::OK();
- }
-
- Status GetSize(int64_t* size) override {
- *size = buffer_size_;
- return Status::OK();
- }
-
- Status Seek(int64_t position) override {
- if (position < 0 || position >= buffer_size_) {
- return Status::IOError("position out of bounds");
- }
-
- position_ = position;
- return Status::OK();
- }
-
- private:
- const uint8_t* buffer_;
- int buffer_size_;
- int64_t position_;
-};
-
TEST(TestParquetReadSource, Basics) {
std::string data = "this is the data";
auto data_buffer = reinterpret_cast<const uint8_t*>(data.c_str());
ParquetAllocator allocator(default_memory_pool());
- auto file = std::make_shared<BufferReader>(data_buffer, data.size());
+ auto file = std::make_shared<ArrowBufferReader>(data_buffer, data.size());
auto source = std::make_shared<ParquetReadSource>(&allocator);
ASSERT_OK(source->Open(file));
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/arrow-reader-writer-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/arrow-reader-writer-test.cc b/src/parquet/arrow/arrow-reader-writer-test.cc
index e4e9efa..b1f1c52 100644
--- a/src/parquet/arrow/arrow-reader-writer-test.cc
+++ b/src/parquet/arrow/arrow-reader-writer-test.cc
@@ -20,8 +20,8 @@
#include "parquet/api/reader.h"
#include "parquet/api/writer.h"
-#include "parquet/arrow/test-util.h"
#include "parquet/arrow/reader.h"
+#include "parquet/arrow/test-util.h"
#include "parquet/arrow/writer.h"
#include "arrow/test-util.h"
@@ -258,7 +258,8 @@ class TestParquetIO : public ::testing::Test {
typedef ::testing::Types<::arrow::BooleanType, ::arrow::UInt8Type, ::arrow::Int8Type,
::arrow::UInt16Type, ::arrow::Int16Type, ::arrow::Int32Type, ::arrow::UInt64Type,
::arrow::Int64Type, ::arrow::TimestampType, ::arrow::FloatType, ::arrow::DoubleType,
- ::arrow::StringType> TestTypes;
+ ::arrow::StringType>
+ TestTypes;
TYPED_TEST_CASE(TestParquetIO, TestTypes);
@@ -476,8 +477,8 @@ class TestPrimitiveParquetIO : public TestParquetIO<TestType> {
typedef ::testing::Types<::arrow::BooleanType, ::arrow::UInt8Type, ::arrow::Int8Type,
::arrow::UInt16Type, ::arrow::Int16Type, ::arrow::UInt32Type, ::arrow::Int32Type,
- ::arrow::UInt64Type, ::arrow::Int64Type, ::arrow::FloatType,
- ::arrow::DoubleType> PrimitiveTestTypes;
+ ::arrow::UInt64Type, ::arrow::Int64Type, ::arrow::FloatType, ::arrow::DoubleType>
+ PrimitiveTestTypes;
TYPED_TEST_CASE(TestPrimitiveParquetIO, PrimitiveTestTypes);
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/io.cc
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/io.cc b/src/parquet/arrow/io.cc
index 8e2645a..8f3aa3e 100644
--- a/src/parquet/arrow/io.cc
+++ b/src/parquet/arrow/io.cc
@@ -29,7 +29,7 @@ using arrow::Status;
using arrow::MemoryPool;
// To assist with readability
-using ArrowROFile = arrow::io::RandomAccessFile;
+using ArrowROFile = arrow::io::ReadableFileInterface;
namespace parquet {
namespace arrow {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/io.h
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/io.h b/src/parquet/arrow/io.h
index dc60635..119f8de 100644
--- a/src/parquet/arrow/io.h
+++ b/src/parquet/arrow/io.h
@@ -60,7 +60,7 @@ class PARQUET_EXPORT ParquetReadSource : public RandomAccessSource {
explicit ParquetReadSource(ParquetAllocator* allocator);
// We need to ask for the file size on opening the file, and this can fail
- ::arrow::Status Open(const std::shared_ptr<::arrow::io::RandomAccessFile>& file);
+ ::arrow::Status Open(const std::shared_ptr<::arrow::io::ReadableFileInterface>& file);
void Close() override;
int64_t Tell() const override;
@@ -70,7 +70,7 @@ class PARQUET_EXPORT ParquetReadSource : public RandomAccessSource {
private:
// An Arrow readable file of some kind
- std::shared_ptr<::arrow::io::RandomAccessFile> file_;
+ std::shared_ptr<::arrow::io::ReadableFileInterface> file_;
// The allocator is required for creating managed buffers
ParquetAllocator* allocator_;
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/reader.cc
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/reader.cc b/src/parquet/arrow/reader.cc
index 056b5ab..0e9f255 100644
--- a/src/parquet/arrow/reader.cc
+++ b/src/parquet/arrow/reader.cc
@@ -78,8 +78,8 @@ class FileReader::Impl {
class FlatColumnReader::Impl {
public:
- Impl(MemoryPool* pool, const ColumnDescriptor* descr,
- ParquetFileReader* reader, int column_index);
+ Impl(MemoryPool* pool, const ColumnDescriptor* descr, ParquetFileReader* reader,
+ int column_index);
virtual ~Impl() {}
Status NextBatch(int batch_size, std::shared_ptr<Array>* out);
@@ -139,8 +139,7 @@ class FlatColumnReader::Impl {
PoolBuffer valid_bytes_buffer_;
};
-FileReader::Impl::Impl(
- MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader)
+FileReader::Impl::Impl(MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader)
: pool_(pool), reader_(std::move(reader)) {}
bool FileReader::Impl::CheckForFlatColumn(const ColumnDescriptor* descr) {
@@ -191,14 +190,13 @@ Status FileReader::Impl::ReadFlatTable(std::shared_ptr<Table>* table) {
return Status::OK();
}
-FileReader::FileReader(
- MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader)
+FileReader::FileReader(MemoryPool* pool, std::unique_ptr<ParquetFileReader> reader)
: impl_(new FileReader::Impl(pool, std::move(reader))) {}
FileReader::~FileReader() {}
// Static ctor
-Status OpenFile(const std::shared_ptr<::arrow::io::RandomAccessFile>& file,
+Status OpenFile(const std::shared_ptr<::arrow::io::ReadableFileInterface>& file,
ParquetAllocator* allocator, std::unique_ptr<FileReader>* reader) {
std::unique_ptr<ParquetReadSource> source(new ParquetReadSource(allocator));
RETURN_NOT_OK(source->Open(file));
@@ -320,8 +318,7 @@ Status FlatColumnReader::Impl::TypedReadBatch<::arrow::StringType, ByteArrayType
if (descr_->max_definition_level() > 0) {
def_levels_buffer_.Resize(values_to_read * sizeof(int16_t));
}
- auto reader =
- dynamic_cast<TypedColumnReader<ByteArrayType>*>(column_reader_.get());
+ auto reader = dynamic_cast<TypedColumnReader<ByteArrayType>*>(column_reader_.get());
int64_t values_read;
int64_t levels_read;
int16_t* def_levels = reinterpret_cast<int16_t*>(def_levels_buffer_.mutable_data());
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/reader.h
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/reader.h b/src/parquet/arrow/reader.h
index e725728..7028be4 100644
--- a/src/parquet/arrow/reader.h
+++ b/src/parquet/arrow/reader.h
@@ -139,7 +139,7 @@ class PARQUET_EXPORT FlatColumnReader {
// Helper function to create a file reader from an implementation of an Arrow
// readable file
PARQUET_EXPORT
-::arrow::Status OpenFile(const std::shared_ptr<::arrow::io::RandomAccessFile>& file,
+::arrow::Status OpenFile(const std::shared_ptr<::arrow::io::ReadableFileInterface>& file,
ParquetAllocator* allocator, std::unique_ptr<FileReader>* reader);
} // namespace arrow
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/utils.h
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/utils.h b/src/parquet/arrow/utils.h
index b443c99..bd53792 100644
--- a/src/parquet/arrow/utils.h
+++ b/src/parquet/arrow/utils.h
@@ -38,14 +38,14 @@ namespace arrow {
(s); \
} catch (const ::parquet::ParquetException& e) {}
-#define PARQUET_THROW_NOT_OK(s) \
- do { \
- ::arrow::Status _s = (s); \
- if (!_s.ok()) { \
- std::stringstream ss; \
- ss << "Arrow error: " << _s.ToString(); \
- throw ::parquet::ParquetException(ss.str()); \
- } \
+#define PARQUET_THROW_NOT_OK(s) \
+ do { \
+ ::arrow::Status _s = (s); \
+ if (!_s.ok()) { \
+ std::stringstream ss; \
+ ss << "Arrow error: " << _s.ToString(); \
+ ParquetException::Throw(ss.str()); \
+ } \
} while (0);
} // namespace arrow
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/arrow/writer.cc
----------------------------------------------------------------------
diff --git a/src/parquet/arrow/writer.cc b/src/parquet/arrow/writer.cc
index 5b5f41f..ff3707b 100644
--- a/src/parquet/arrow/writer.cc
+++ b/src/parquet/arrow/writer.cc
@@ -51,8 +51,8 @@ class FileWriter::Impl {
Status NewRowGroup(int64_t chunk_size);
template <typename ParquetType, typename ArrowType>
- Status TypedWriteBatch(ColumnWriter* writer, const PrimitiveArray* data,
- int64_t offset, int64_t length);
+ Status TypedWriteBatch(
+ ColumnWriter* writer, const PrimitiveArray* data, int64_t offset, int64_t length);
// TODO(uwe): Same code as in reader.cc the only difference is the name of the temporary
// buffer
@@ -100,8 +100,7 @@ class FileWriter::Impl {
RowGroupWriter* row_group_writer_;
};
-FileWriter::Impl::Impl(
- MemoryPool* pool, std::unique_ptr<ParquetFileWriter> writer)
+FileWriter::Impl::Impl(MemoryPool* pool, std::unique_ptr<ParquetFileWriter> writer)
: pool_(pool),
data_buffer_(pool),
writer_(std::move(writer)),
@@ -121,8 +120,7 @@ Status FileWriter::Impl::TypedWriteBatch(ColumnWriter* column_writer,
DCHECK((offset + length) <= data->length());
auto data_ptr = reinterpret_cast<const ArrowCType*>(data->data()->data()) + offset;
- auto writer =
- reinterpret_cast<TypedColumnWriter<ParquetType>*>(column_writer);
+ auto writer = reinterpret_cast<TypedColumnWriter<ParquetType>*>(column_writer);
if (writer->descr()->max_definition_level() == 0) {
// no nulls, just dump the data
const ParquetCType* data_writer_ptr = nullptr;
@@ -174,8 +172,7 @@ Status FileWriter::Impl::TypedWriteBatch<BooleanType, ::arrow::BooleanType>(
RETURN_NOT_OK(data_buffer_.Resize(length));
auto data_ptr = reinterpret_cast<const uint8_t*>(data->data()->data());
auto buffer_ptr = reinterpret_cast<bool*>(data_buffer_.mutable_data());
- auto writer = reinterpret_cast<TypedColumnWriter<BooleanType>*>(
- column_writer);
+ auto writer = reinterpret_cast<TypedColumnWriter<BooleanType>*>(column_writer);
if (writer->descr()->max_definition_level() == 0) {
// no nulls, just dump the data
for (int64_t i = 0; i < length; i++) {
@@ -266,8 +263,7 @@ Status FileWriter::Impl::WriteFlatColumnChunk(
auto values = std::dynamic_pointer_cast<PrimitiveArray>(data->values());
auto data_ptr = reinterpret_cast<const uint8_t*>(values->data()->data());
DCHECK(values != nullptr);
- auto writer = reinterpret_cast<TypedColumnWriter<ByteArrayType>*>(
- column_writer);
+ auto writer = reinterpret_cast<TypedColumnWriter<ByteArrayType>*>(column_writer);
if (writer->descr()->max_definition_level() > 0) {
RETURN_NOT_OK(def_levels_buffer_.Resize(length * sizeof(int16_t)));
}
@@ -275,8 +271,8 @@ Status FileWriter::Impl::WriteFlatColumnChunk(
if (writer->descr()->max_definition_level() == 0 || data->null_count() == 0) {
// no nulls, just dump the data
for (int64_t i = 0; i < length; i++) {
- buffer_ptr[i] = ByteArray(
- data->value_length(i + offset), data_ptr + data->value_offset(i));
+ buffer_ptr[i] =
+ ByteArray(data->value_length(i + offset), data_ptr + data->value_offset(i));
}
if (writer->descr()->max_definition_level() > 0) {
std::fill(def_levels_ptr, def_levels_ptr + length, 1);
@@ -301,8 +297,7 @@ Status FileWriter::Impl::WriteFlatColumnChunk(
return Status::OK();
}
-FileWriter::FileWriter(
- MemoryPool* pool, std::unique_ptr<ParquetFileWriter> writer)
+FileWriter::FileWriter(MemoryPool* pool, std::unique_ptr<ParquetFileWriter> writer)
: impl_(new FileWriter::Impl(pool, std::move(writer))) {}
Status FileWriter::NewRowGroup(int64_t chunk_size) {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/column-io-benchmark.cc
----------------------------------------------------------------------
diff --git a/src/parquet/column/column-io-benchmark.cc b/src/parquet/column/column-io-benchmark.cc
index 319c8f5..bc4afec 100644
--- a/src/parquet/column/column-io-benchmark.cc
+++ b/src/parquet/column/column-io-benchmark.cc
@@ -17,10 +17,10 @@
#include "benchmark/benchmark.h"
-#include "parquet/file/reader-internal.h"
-#include "parquet/file/writer-internal.h"
#include "parquet/column/reader.h"
#include "parquet/column/writer.h"
+#include "parquet/file/reader-internal.h"
+#include "parquet/file/writer-internal.h"
#include "parquet/util/input.h"
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/column-reader-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/column/column-reader-test.cc b/src/parquet/column/column-reader-test.cc
index 524ec50..ee29f4b 100644
--- a/src/parquet/column/column-reader-test.cc
+++ b/src/parquet/column/column-reader-test.cc
@@ -25,12 +25,12 @@
#include <string>
#include <vector>
-#include "parquet/types.h"
#include "parquet/column/page.h"
#include "parquet/column/reader.h"
#include "parquet/column/test-util.h"
#include "parquet/schema/descriptor.h"
#include "parquet/schema/types.h"
+#include "parquet/types.h"
#include "parquet/util/test-common.h"
using std::string;
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/column-writer-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/column/column-writer-test.cc b/src/parquet/column/column-writer-test.cc
index 57f1d1b..c843a20 100644
--- a/src/parquet/column/column-writer-test.cc
+++ b/src/parquet/column/column-writer-test.cc
@@ -17,16 +17,16 @@
#include <gtest/gtest.h>
-#include "parquet/column/test-util.h"
#include "parquet/column/test-specialization.h"
+#include "parquet/column/test-util.h"
-#include "parquet/file/reader-internal.h"
-#include "parquet/file/writer-internal.h"
#include "parquet/column/reader.h"
#include "parquet/column/writer.h"
+#include "parquet/file/reader-internal.h"
+#include "parquet/file/writer-internal.h"
+#include "parquet/types.h"
#include "parquet/util/input.h"
#include "parquet/util/output.h"
-#include "parquet/types.h"
namespace parquet {
@@ -53,7 +53,9 @@ class TestPrimitiveWriter : public PrimitiveTypedTest<TestType> {
definition_levels_out_.resize(SMALL_SIZE);
repetition_levels_out_.resize(SMALL_SIZE);
- this->SetUpSchemaRequired();
+ this->SetUpSchema(Repetition::REQUIRED);
+
+ descr_ = this->schema_.Column(0);
}
Type::type type_num() { return TestType::type_num; }
@@ -63,15 +65,14 @@ class TestPrimitiveWriter : public PrimitiveTypedTest<TestType> {
std::unique_ptr<InMemoryInputStream> source(new InMemoryInputStream(buffer));
std::unique_ptr<SerializedPageReader> page_reader(
new SerializedPageReader(std::move(source), Compression::UNCOMPRESSED));
- reader_.reset(
- new TypedColumnReader<TestType>(this->descr_.get(), std::move(page_reader)));
+ reader_.reset(new TypedColumnReader<TestType>(this->descr_, std::move(page_reader)));
}
std::shared_ptr<TypedColumnWriter<TestType>> BuildWriter(
int64_t output_size = SMALL_SIZE, Encoding::type encoding = Encoding::PLAIN) {
sink_.reset(new InMemoryOutputStream());
- metadata_ = ColumnChunkMetaDataBuilder::Make(writer_properties_, this->descr_.get(),
- reinterpret_cast<uint8_t*>(&thrift_metadata_));
+ metadata_ = ColumnChunkMetaDataBuilder::Make(
+ writer_properties_, this->descr_, reinterpret_cast<uint8_t*>(&thrift_metadata_));
std::unique_ptr<SerializedPageWriter> pager(new SerializedPageWriter(
sink_.get(), Compression::UNCOMPRESSED, metadata_.get()));
WriterProperties::Builder wp_builder;
@@ -83,7 +84,7 @@ class TestPrimitiveWriter : public PrimitiveTypedTest<TestType> {
}
writer_properties_ = wp_builder.build();
std::shared_ptr<ColumnWriter> writer = ColumnWriter::Make(
- this->descr_.get(), std::move(pager), output_size, writer_properties_.get());
+ this->descr_, std::move(pager), output_size, writer_properties_.get());
return std::static_pointer_cast<TypedColumnWriter<TestType>>(writer);
}
@@ -137,16 +138,18 @@ class TestPrimitiveWriter : public PrimitiveTypedTest<TestType> {
std::vector<int16_t> definition_levels_out_;
std::vector<int16_t> repetition_levels_out_;
+ const ColumnDescriptor* descr_;
+
private:
format::ColumnChunk thrift_metadata_;
std::unique_ptr<ColumnChunkMetaDataBuilder> metadata_;
- std::shared_ptr<ColumnDescriptor> schema_;
std::unique_ptr<InMemoryOutputStream> sink_;
std::shared_ptr<WriterProperties> writer_properties_;
};
typedef ::testing::Types<Int32Type, Int64Type, Int96Type, FloatType, DoubleType,
- BooleanType, ByteArrayType, FLBAType> TestTypes;
+ BooleanType, ByteArrayType, FLBAType>
+ TestTypes;
TYPED_TEST_CASE(TestPrimitiveWriter, TestTypes);
@@ -189,7 +192,7 @@ TYPED_TEST(TestPrimitiveWriter, RequiredRLEDictionary) {
TYPED_TEST(TestPrimitiveWriter, Optional) {
// Optional and non-repeated, with definition levels
// but no repetition levels
- this->SetUpSchemaOptional();
+ this->SetUpSchema(Repetition::OPTIONAL);
this->GenerateData(SMALL_SIZE);
std::vector<int16_t> definition_levels(SMALL_SIZE, 1);
@@ -212,7 +215,7 @@ TYPED_TEST(TestPrimitiveWriter, Optional) {
TYPED_TEST(TestPrimitiveWriter, Repeated) {
// Optional and repeated, so definition and repetition levels
- this->SetUpSchemaRepeated();
+ this->SetUpSchema(Repetition::REPEATED);
this->GenerateData(SMALL_SIZE);
std::vector<int16_t> definition_levels(SMALL_SIZE, 1);
@@ -250,7 +253,7 @@ TYPED_TEST(TestPrimitiveWriter, RequiredTooMany) {
TYPED_TEST(TestPrimitiveWriter, RepeatedTooFewRows) {
// Optional and repeated, so definition and repetition levels
- this->SetUpSchemaRepeated();
+ this->SetUpSchema(Repetition::REPEATED);
this->GenerateData(SMALL_SIZE);
std::vector<int16_t> definition_levels(SMALL_SIZE, 1);
@@ -308,7 +311,7 @@ TYPED_TEST(TestPrimitiveWriter, RequiredVeryLargeChunk) {
// PARQUET-719
// Test case for NULL values
TEST_F(TestNullValuesWriter, OptionalNullValueChunk) {
- this->SetUpSchemaOptional();
+ this->SetUpSchema(Repetition::OPTIONAL);
this->GenerateData(LARGE_SIZE);
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/levels-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/column/levels-test.cc b/src/parquet/column/levels-test.cc
index 126873c..cee2763 100644
--- a/src/parquet/column/levels-test.cc
+++ b/src/parquet/column/levels-test.cc
@@ -15,11 +15,11 @@
// specific language governing permissions and limitations
// under the License.
-#include <gtest/gtest.h>
#include <cstdint>
+#include <gtest/gtest.h>
#include <memory>
-#include <vector>
#include <string>
+#include <vector>
#include "parquet/column/levels.h"
#include "parquet/types.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/levels.h
----------------------------------------------------------------------
diff --git a/src/parquet/column/levels.h b/src/parquet/column/levels.h
index c57ca2f..f676db2 100644
--- a/src/parquet/column/levels.h
+++ b/src/parquet/column/levels.h
@@ -18,8 +18,8 @@
#ifndef PARQUET_COLUMN_LEVELS_H
#define PARQUET_COLUMN_LEVELS_H
-#include <memory>
#include <algorithm>
+#include <memory>
#include "parquet/exception.h"
#include "parquet/types.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/properties.h
----------------------------------------------------------------------
diff --git a/src/parquet/column/properties.h b/src/parquet/column/properties.h
index 91a4672..cdd1a12 100644
--- a/src/parquet/column/properties.h
+++ b/src/parquet/column/properties.h
@@ -23,8 +23,8 @@
#include <unordered_map>
#include "parquet/exception.h"
-#include "parquet/types.h"
#include "parquet/schema/types.h"
+#include "parquet/types.h"
#include "parquet/util/input.h"
#include "parquet/util/mem-allocator.h"
#include "parquet/util/visibility.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/scanner-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/column/scanner-test.cc b/src/parquet/column/scanner-test.cc
index fb5178a..8eee191 100644
--- a/src/parquet/column/scanner-test.cc
+++ b/src/parquet/column/scanner-test.cc
@@ -24,14 +24,14 @@
#include <string>
#include <vector>
-#include "parquet/types.h"
#include "parquet/column/page.h"
#include "parquet/column/scanner.h"
+#include "parquet/column/test-specialization.h"
#include "parquet/column/test-util.h"
#include "parquet/schema/descriptor.h"
#include "parquet/schema/types.h"
+#include "parquet/types.h"
#include "parquet/util/test-common.h"
-#include "parquet/column/test-specialization.h"
using std::string;
using std::vector;
@@ -146,7 +146,8 @@ static int num_pages = 20;
static int batch_size = 32;
typedef ::testing::Types<Int32Type, Int64Type, Int96Type, FloatType, DoubleType,
- ByteArrayType> TestTypes;
+ ByteArrayType>
+ TestTypes;
using TestBooleanFlatScanner = TestFlatScanner<BooleanType>;
using TestFLBAFlatScanner = TestFlatScanner<FLBAType>;
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/scanner.h
----------------------------------------------------------------------
diff --git a/src/parquet/column/scanner.h b/src/parquet/column/scanner.h
index 4373c7a..184c74d 100644
--- a/src/parquet/column/scanner.h
+++ b/src/parquet/column/scanner.h
@@ -18,10 +18,10 @@
#ifndef PARQUET_COLUMN_SCANNER_H
#define PARQUET_COLUMN_SCANNER_H
-#include <stdio.h>
#include <cstdint>
#include <memory>
#include <ostream>
+#include <stdio.h>
#include <string>
#include <vector>
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/test-specialization.h
----------------------------------------------------------------------
diff --git a/src/parquet/column/test-specialization.h b/src/parquet/column/test-specialization.h
index 5803b65..27781cc 100644
--- a/src/parquet/column/test-specialization.h
+++ b/src/parquet/column/test-specialization.h
@@ -24,6 +24,8 @@
#include <algorithm>
#include <limits>
+#include <sstream>
+#include <string>
#include <vector>
#include "parquet/column/test-util.h"
@@ -60,52 +62,43 @@ void InitValues<Int96>(int num_values, vector<Int96>& values, vector<uint8_t>& b
std::numeric_limits<int32_t>::max(), values.data());
}
+inline std::string TestColumnName(int i) {
+ std::stringstream col_name;
+ col_name << "column_" << i;
+ return col_name.str();
+}
+
// This class lives here because of its dependency on the InitValues specializations.
template <typename TestType>
class PrimitiveTypedTest : public ::testing::Test {
public:
typedef typename TestType::c_type T;
- void SetUpSchemaRequired() {
- primitive_node_ = schema::PrimitiveNode::Make("column", Repetition::REQUIRED,
- TestType::type_num, LogicalType::NONE, FLBA_LENGTH);
- descr_ = std::make_shared<ColumnDescriptor>(primitive_node_, 0, 0);
- node_ = schema::GroupNode::Make(
- "schema", Repetition::REQUIRED, std::vector<schema::NodePtr>({primitive_node_}));
- schema_.Init(node_);
- }
-
- void SetUpSchemaOptional() {
- primitive_node_ = schema::PrimitiveNode::Make("column", Repetition::OPTIONAL,
- TestType::type_num, LogicalType::NONE, FLBA_LENGTH);
- descr_ = std::make_shared<ColumnDescriptor>(primitive_node_, 1, 0);
- node_ = schema::GroupNode::Make(
- "schema", Repetition::REQUIRED, std::vector<schema::NodePtr>({primitive_node_}));
- schema_.Init(node_);
- }
+ void SetUpSchema(Repetition::type repetition, int num_columns = 1) {
+ std::vector<schema::NodePtr> fields;
- void SetUpSchemaRepeated() {
- primitive_node_ = schema::PrimitiveNode::Make("column", Repetition::REPEATED,
- TestType::type_num, LogicalType::NONE, FLBA_LENGTH);
- descr_ = std::make_shared<ColumnDescriptor>(primitive_node_, 1, 1);
- node_ = schema::GroupNode::Make(
- "schema", Repetition::REQUIRED, std::vector<schema::NodePtr>({primitive_node_}));
+ for (int i = 0; i < num_columns; ++i) {
+ std::string name = TestColumnName(i);
+ fields.push_back(schema::PrimitiveNode::Make(
+ name, repetition, TestType::type_num, LogicalType::NONE, FLBA_LENGTH));
+ }
+ node_ = schema::GroupNode::Make("schema", Repetition::REQUIRED, fields);
schema_.Init(node_);
}
void GenerateData(int64_t num_values);
void SetupValuesOut(int64_t num_values);
void SyncValuesOut();
- void SetUp() { SetUpSchemaRequired(); }
protected:
- schema::NodePtr primitive_node_;
schema::NodePtr node_;
SchemaDescriptor schema_;
- std::shared_ptr<ColumnDescriptor> descr_;
// Input buffers
std::vector<T> values_;
+
+ std::vector<int16_t> def_levels_;
+
std::vector<uint8_t> buffer_;
// Pointer to the values, needed as we cannot use vector<bool>::data()
T* values_ptr_;
@@ -127,13 +120,17 @@ void PrimitiveTypedTest<BooleanType>::SyncValuesOut() {
template <typename TestType>
void PrimitiveTypedTest<TestType>::SetupValuesOut(int64_t num_values) {
+ values_out_.clear();
values_out_.resize(num_values);
values_out_ptr_ = values_out_.data();
}
template <>
void PrimitiveTypedTest<BooleanType>::SetupValuesOut(int64_t num_values) {
+ values_out_.clear();
values_out_.resize(num_values);
+
+ bool_buffer_out_.clear();
bool_buffer_out_.resize(num_values);
// Write once to all values so we can copy it without getting Valgrind errors
// about uninitialised values.
@@ -143,18 +140,26 @@ void PrimitiveTypedTest<BooleanType>::SetupValuesOut(int64_t num_values) {
template <typename TestType>
void PrimitiveTypedTest<TestType>::GenerateData(int64_t num_values) {
+ def_levels_.resize(num_values);
values_.resize(num_values);
+
InitValues<T>(num_values, values_, buffer_);
values_ptr_ = values_.data();
+
+ std::fill(def_levels_.begin(), def_levels_.end(), 1);
}
template <>
void PrimitiveTypedTest<BooleanType>::GenerateData(int64_t num_values) {
+ def_levels_.resize(num_values);
values_.resize(num_values);
+
InitValues<T>(num_values, values_, buffer_);
bool_buffer_.resize(num_values);
std::copy(values_.begin(), values_.end(), bool_buffer_.begin());
values_ptr_ = reinterpret_cast<bool*>(bool_buffer_.data());
+
+ std::fill(def_levels_.begin(), def_levels_.end(), 1);
}
} // namespace test
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/column/test-util.h
----------------------------------------------------------------------
diff --git a/src/parquet/column/test-util.h b/src/parquet/column/test-util.h
index b11e620..10632d2 100644
--- a/src/parquet/column/test-util.h
+++ b/src/parquet/column/test-util.h
@@ -25,15 +25,15 @@
#include <algorithm>
#include <limits>
#include <memory>
-#include <vector>
#include <string>
+#include <vector>
#include "parquet/column/levels.h"
#include "parquet/column/page.h"
// Depended on by SerializedPageReader test utilities for now
-#include "parquet/encodings/plain-encoding.h"
#include "parquet/encodings/dictionary-encoding.h"
+#include "parquet/encodings/plain-encoding.h"
#include "parquet/util/input.h"
#include "parquet/util/test-common.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/compression/codec-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/compression/codec-test.cc b/src/parquet/compression/codec-test.cc
index 417ecc7..2f7cc1a 100644
--- a/src/parquet/compression/codec-test.cc
+++ b/src/parquet/compression/codec-test.cc
@@ -15,8 +15,8 @@
// specific language governing permissions and limitations
// under the License.
-#include <gtest/gtest.h>
#include <cstdint>
+#include <gtest/gtest.h>
#include <string>
#include <vector>
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/compression/snappy-codec.cc
----------------------------------------------------------------------
diff --git a/src/parquet/compression/snappy-codec.cc b/src/parquet/compression/snappy-codec.cc
index ccd25b9..70f3a41 100644
--- a/src/parquet/compression/snappy-codec.cc
+++ b/src/parquet/compression/snappy-codec.cc
@@ -15,9 +15,9 @@
// specific language governing permissions and limitations
// under the License.
-#include <snappy.h>
#include <cstdint>
#include <cstdlib>
+#include <snappy.h>
#include "parquet/compression/codec.h"
#include "parquet/exception.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/encodings/delta-byte-array-encoding.h
----------------------------------------------------------------------
diff --git a/src/parquet/encodings/delta-byte-array-encoding.h b/src/parquet/encodings/delta-byte-array-encoding.h
index d208f26..827789d 100644
--- a/src/parquet/encodings/delta-byte-array-encoding.h
+++ b/src/parquet/encodings/delta-byte-array-encoding.h
@@ -21,8 +21,8 @@
#include <algorithm>
#include "parquet/encodings/decoder.h"
-#include "parquet/encodings/delta-length-byte-array-encoding.h"
#include "parquet/encodings/delta-bit-pack-encoding.h"
+#include "parquet/encodings/delta-length-byte-array-encoding.h"
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/encodings/encoding-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/encodings/encoding-test.cc b/src/parquet/encodings/encoding-test.cc
index 50adc9e..daa25cb 100644
--- a/src/parquet/encodings/encoding-test.cc
+++ b/src/parquet/encodings/encoding-test.cc
@@ -15,18 +15,18 @@
// specific language governing permissions and limitations
// under the License.
-#include <gtest/gtest.h>
#include <cstdint>
#include <cstdlib>
#include <cstring>
+#include <gtest/gtest.h>
#include <string>
#include <vector>
-#include "parquet/schema/descriptor.h"
#include "parquet/encodings/dictionary-encoding.h"
#include "parquet/encodings/plain-encoding.h"
-#include "parquet/types.h"
+#include "parquet/schema/descriptor.h"
#include "parquet/schema/types.h"
+#include "parquet/types.h"
#include "parquet/util/bit-util.h"
#include "parquet/util/buffer.h"
#include "parquet/util/output.h"
@@ -238,7 +238,8 @@ TYPED_TEST(TestPlainEncoding, BasicRoundTrip) {
// Dictionary encoding tests
typedef ::testing::Types<Int32Type, Int64Type, Int96Type, FloatType, DoubleType,
- ByteArrayType, FLBAType> DictEncodedTypes;
+ ByteArrayType, FLBAType>
+ DictEncodedTypes;
template <typename Type>
class TestDictionaryEncoding : public TestEncodingBase<Type> {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/exception.cc
----------------------------------------------------------------------
diff --git a/src/parquet/exception.cc b/src/parquet/exception.cc
index 0973e5a..96bbc4b 100644
--- a/src/parquet/exception.cc
+++ b/src/parquet/exception.cc
@@ -33,6 +33,10 @@ void ParquetException::NYI(const std::string& msg) {
throw ParquetException(ss.str());
}
+void ParquetException::Throw(const std::string& msg) {
+ throw ParquetException(msg);
+}
+
ParquetException::ParquetException(const char* msg) : msg_(msg) {}
ParquetException::ParquetException(const std::string& msg) : msg_(msg) {}
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/exception.h
----------------------------------------------------------------------
diff --git a/src/parquet/exception.h b/src/parquet/exception.h
index 3851018..b161bf7 100644
--- a/src/parquet/exception.h
+++ b/src/parquet/exception.h
@@ -29,6 +29,7 @@ class PARQUET_EXPORT ParquetException : public std::exception {
public:
static void EofException();
static void NYI(const std::string& msg);
+ static void Throw(const std::string& msg);
explicit ParquetException(const char* msg);
explicit ParquetException(const std::string& msg);
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/file/file-deserialize-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/file/file-deserialize-test.cc b/src/parquet/file/file-deserialize-test.cc
index db99f16..adc90ed 100644
--- a/src/parquet/file/file-deserialize-test.cc
+++ b/src/parquet/file/file-deserialize-test.cc
@@ -18,8 +18,8 @@
#include <gtest/gtest.h>
#include <algorithm>
-#include <cstdlib>
#include <cstdint>
+#include <cstdlib>
#include <cstring>
#include <exception>
#include <memory>
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/file/file-metadata-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/file/file-metadata-test.cc b/src/parquet/file/file-metadata-test.cc
index a7f83c5..576db43 100644
--- a/src/parquet/file/file-metadata-test.cc
+++ b/src/parquet/file/file-metadata-test.cc
@@ -15,11 +15,11 @@
// specific language governing permissions and limitations
// under the License.
-#include <gtest/gtest.h>
#include "parquet/file/metadata.h"
#include "parquet/schema/descriptor.h"
#include "parquet/schema/types.h"
#include "parquet/types.h"
+#include <gtest/gtest.h>
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/file/file-serialize-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/file/file-serialize-test.cc b/src/parquet/file/file-serialize-test.cc
index 90ee7de..42a73c9 100644
--- a/src/parquet/file/file-serialize-test.cc
+++ b/src/parquet/file/file-serialize-test.cc
@@ -18,8 +18,8 @@
#include <gtest/gtest.h>
#include "parquet/column/reader.h"
-#include "parquet/column/test-util.h"
#include "parquet/column/test-specialization.h"
+#include "parquet/column/test-util.h"
#include "parquet/column/writer.h"
#include "parquet/file/reader.h"
#include "parquet/file/writer.h"
@@ -40,51 +40,74 @@ class TestSerialize : public PrimitiveTypedTest<TestType> {
public:
typedef typename TestType::c_type T;
+ void SetUp() {
+ num_columns_ = 4;
+ this->SetUpSchema(Repetition::OPTIONAL, num_columns_);
+ }
+
protected:
+ int num_columns_;
+
void FileSerializeTest(Compression::type codec_type) {
std::shared_ptr<InMemoryOutputStream> sink(new InMemoryOutputStream());
auto gnode = std::static_pointer_cast<GroupNode>(this->node_);
- std::shared_ptr<WriterProperties> writer_properties =
- WriterProperties::Builder().compression("column", codec_type)->build();
+
+ WriterProperties::Builder prop_builder;
+
+ for (int i = 0; i < num_columns_; ++i) {
+ prop_builder.compression(this->schema_.Column(i)->name(), codec_type);
+ }
+ std::shared_ptr<WriterProperties> writer_properties = prop_builder.build();
+
auto file_writer = ParquetFileWriter::Open(sink, gnode, writer_properties);
auto row_group_writer = file_writer->AppendRowGroup(100);
- auto column_writer =
- static_cast<TypedColumnWriter<TestType>*>(row_group_writer->NextColumn());
+
this->GenerateData(100);
- column_writer->WriteBatch(100, nullptr, nullptr, this->values_ptr_);
- column_writer->Close();
+ for (int i = 0; i < num_columns_; ++i) {
+ auto column_writer =
+ static_cast<TypedColumnWriter<TestType>*>(row_group_writer->NextColumn());
+ column_writer->WriteBatch(
+ 100, this->def_levels_.data(), nullptr, this->values_ptr_);
+ column_writer->Close();
+ }
+
row_group_writer->Close();
file_writer->Close();
auto buffer = sink->GetBuffer();
std::unique_ptr<RandomAccessSource> source(new BufferReader(buffer));
auto file_reader = ParquetFileReader::Open(std::move(source));
- ASSERT_EQ(1, file_reader->metadata()->num_columns());
+ ASSERT_EQ(num_columns_, file_reader->metadata()->num_columns());
ASSERT_EQ(1, file_reader->metadata()->num_row_groups());
ASSERT_EQ(100, file_reader->metadata()->num_rows());
auto rg_reader = file_reader->RowGroup(0);
- ASSERT_EQ(1, rg_reader->metadata()->num_columns());
+ ASSERT_EQ(num_columns_, rg_reader->metadata()->num_columns());
ASSERT_EQ(100, rg_reader->metadata()->num_rows());
// Check that the specified compression was actually used.
ASSERT_EQ(codec_type, rg_reader->metadata()->ColumnChunk(0)->compression());
- auto col_reader =
- std::static_pointer_cast<TypedColumnReader<TestType>>(rg_reader->Column(0));
- std::vector<int16_t> def_levels_out(100);
- std::vector<int16_t> rep_levels_out(100);
int64_t values_read;
- this->SetupValuesOut(100);
- col_reader->ReadBatch(100, def_levels_out.data(), rep_levels_out.data(),
- this->values_out_ptr_, &values_read);
- this->SyncValuesOut();
- ASSERT_EQ(100, values_read);
- ASSERT_EQ(this->values_, this->values_out_);
+
+ for (int i = 0; i < num_columns_; ++i) {
+ std::vector<int16_t> def_levels_out(100);
+ std::vector<int16_t> rep_levels_out(100);
+ auto col_reader =
+ std::static_pointer_cast<TypedColumnReader<TestType>>(rg_reader->Column(i));
+ this->SetupValuesOut(100);
+ col_reader->ReadBatch(100, def_levels_out.data(), rep_levels_out.data(),
+ this->values_out_ptr_, &values_read);
+ this->SyncValuesOut();
+ ASSERT_EQ(100, values_read);
+ ASSERT_EQ(this->values_, this->values_out_);
+ ASSERT_EQ(this->def_levels_, def_levels_out);
+ }
}
};
typedef ::testing::Types<Int32Type, Int64Type, Int96Type, FloatType, DoubleType,
- BooleanType, ByteArrayType, FLBAType> TestTypes;
+ BooleanType, ByteArrayType, FLBAType>
+ TestTypes;
TYPED_TEST_CASE(TestSerialize, TestTypes);
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/file/metadata.h
----------------------------------------------------------------------
diff --git a/src/parquet/file/metadata.h b/src/parquet/file/metadata.h
index 0ef6fa0..b36ced8 100644
--- a/src/parquet/file/metadata.h
+++ b/src/parquet/file/metadata.h
@@ -18,9 +18,9 @@
#ifndef PARQUET_FILE_METADATA_H
#define PARQUET_FILE_METADATA_H
+#include <set>
#include <string>
#include <vector>
-#include <set>
#include "parquet/column/properties.h"
#include "parquet/compression/codec.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/file/reader-internal.cc
----------------------------------------------------------------------
diff --git a/src/parquet/file/reader-internal.cc b/src/parquet/file/reader-internal.cc
index 1cb91f0..8477052 100644
--- a/src/parquet/file/reader-internal.cc
+++ b/src/parquet/file/reader-internal.cc
@@ -17,10 +17,10 @@
#include "parquet/file/reader-internal.h"
-#include <string.h>
#include <algorithm>
#include <exception>
#include <ostream>
+#include <string.h>
#include <string>
#include <vector>
@@ -196,8 +196,8 @@ SerializedFile::~SerializedFile() {
}
std::shared_ptr<RowGroupReader> SerializedFile::GetRowGroup(int i) {
- std::unique_ptr<SerializedRowGroup> contents(new SerializedRowGroup(
- source_.get(), std::move(file_metadata_->RowGroup(i)), properties_));
+ std::unique_ptr<SerializedRowGroup> contents(
+ new SerializedRowGroup(source_.get(), file_metadata_->RowGroup(i), properties_));
return std::make_shared<RowGroupReader>(std::move(contents));
}
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/file/reader.cc
----------------------------------------------------------------------
diff --git a/src/parquet/file/reader.cc b/src/parquet/file/reader.cc
index 7cf3f1a..3672d94 100644
--- a/src/parquet/file/reader.cc
+++ b/src/parquet/file/reader.cc
@@ -29,9 +29,9 @@
#include "parquet/column/scanner.h"
#include "parquet/exception.h"
#include "parquet/file/reader-internal.h"
+#include "parquet/types.h"
#include "parquet/util/input.h"
#include "parquet/util/logging.h"
-#include "parquet/types.h"
using std::string;
using std::vector;
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/file/reader.h
----------------------------------------------------------------------
diff --git a/src/parquet/file/reader.h b/src/parquet/file/reader.h
index c1ee9d4..bc92af3 100644
--- a/src/parquet/file/reader.h
+++ b/src/parquet/file/reader.h
@@ -20,8 +20,8 @@
#include <cstdint>
#include <iosfwd>
-#include <memory>
#include <list>
+#include <memory>
#include <string>
#include <vector>
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/file/writer-internal.cc
----------------------------------------------------------------------
diff --git a/src/parquet/file/writer-internal.cc b/src/parquet/file/writer-internal.cc
index 05aefb9..554e779 100644
--- a/src/parquet/file/writer-internal.cc
+++ b/src/parquet/file/writer-internal.cc
@@ -142,7 +142,7 @@ ColumnWriter* RowGroupSerializer::NextColumn() {
// Throws an error if more columns are being written
auto col_meta = metadata_->NextColumnChunk();
- if (current_column_writer_) { total_bytes_written_ = current_column_writer_->Close(); }
+ if (current_column_writer_) { total_bytes_written_ += current_column_writer_->Close(); }
const ColumnDescriptor* column_descr = col_meta->descr();
std::unique_ptr<PageWriter> pager(
@@ -158,7 +158,7 @@ void RowGroupSerializer::Close() {
closed_ = true;
if (current_column_writer_) {
- total_bytes_written_ = current_column_writer_->Close();
+ total_bytes_written_ += current_column_writer_->Close();
current_column_writer_.reset();
}
// Ensures all columns have been written
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/reader-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/reader-test.cc b/src/parquet/reader-test.cc
index 2e28c80..04437b2 100644
--- a/src/parquet/reader-test.cc
+++ b/src/parquet/reader-test.cc
@@ -15,18 +15,18 @@
// specific language governing permissions and limitations
// under the License.
-#include <gtest/gtest.h>
-#include <fcntl.h>
-#include <cstdlib>
#include <cstdint>
+#include <cstdlib>
+#include <fcntl.h>
+#include <gtest/gtest.h>
#include <iostream>
#include <memory>
#include <string>
-#include "parquet/file/reader.h"
-#include "parquet/file/reader-internal.h"
#include "parquet/column/reader.h"
#include "parquet/column/scanner.h"
+#include "parquet/file/reader-internal.h"
+#include "parquet/file/reader.h"
#include "parquet/util/input.h"
#include "parquet/util/mem-allocator.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/schema/descriptor.h
----------------------------------------------------------------------
diff --git a/src/parquet/schema/descriptor.h b/src/parquet/schema/descriptor.h
index c591954..1673d5f 100644
--- a/src/parquet/schema/descriptor.h
+++ b/src/parquet/schema/descriptor.h
@@ -18,15 +18,15 @@
#ifndef PARQUET_SCHEMA_DESCRIPTOR_H
#define PARQUET_SCHEMA_DESCRIPTOR_H
+#include "parquet/schema/types.h"
+#include "parquet/types.h"
+#include "parquet/util/visibility.h"
#include <cstdint>
#include <cstdlib>
#include <memory>
#include <string>
#include <unordered_map>
#include <vector>
-#include "parquet/schema/types.h"
-#include "parquet/types.h"
-#include "parquet/util/visibility.h"
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/schema/schema-descriptor-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/schema/schema-descriptor-test.cc b/src/parquet/schema/schema-descriptor-test.cc
index 5be8db7..eeaec5b 100644
--- a/src/parquet/schema/schema-descriptor-test.cc
+++ b/src/parquet/schema/schema-descriptor-test.cc
@@ -17,9 +17,9 @@
// Schema / column descriptor correctness tests (from flat Parquet schemas)
-#include <gtest/gtest.h>
#include <cstdint>
#include <cstdlib>
+#include <gtest/gtest.h>
#include <string>
#include <vector>
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/thrift/util.h
----------------------------------------------------------------------
diff --git a/src/parquet/thrift/util.h b/src/parquet/thrift/util.h
index 38b1a15..a340c6c 100644
--- a/src/parquet/thrift/util.h
+++ b/src/parquet/thrift/util.h
@@ -9,13 +9,13 @@
// TCompactProtocol requires some #defines to work right.
#define SIGNED_RIGHT_SHIFT_IS 1
#define ARITHMETIC_RIGHT_SHIFT 1
+#include <thrift/TApplicationException.h>
#include <thrift/protocol/TCompactProtocol.h>
#include <thrift/protocol/TDebugProtocol.h>
-#include <thrift/TApplicationException.h>
+#include <sstream>
#include <thrift/protocol/TBinaryProtocol.h>
#include <thrift/transport/TBufferTransports.h>
-#include <sstream>
#include "parquet/exception.h"
#include "parquet/thrift/parquet_types.h"
@@ -82,7 +82,8 @@ inline void DeserializeThriftMsg(const uint8_t* buf, uint32_t* len, T* deseriali
boost::shared_ptr<apache::thrift::transport::TMemoryBuffer> tmem_transport(
new apache::thrift::transport::TMemoryBuffer(const_cast<uint8_t*>(buf), *len));
apache::thrift::protocol::TCompactProtocolFactoryT<
- apache::thrift::transport::TMemoryBuffer> tproto_factory;
+ apache::thrift::transport::TMemoryBuffer>
+ tproto_factory;
boost::shared_ptr<apache::thrift::protocol::TProtocol> tproto =
tproto_factory.getProtocol(tmem_transport);
try {
@@ -104,7 +105,8 @@ inline void SerializeThriftMsg(T* obj, uint32_t len, OutputStream* out) {
boost::shared_ptr<apache::thrift::transport::TMemoryBuffer> mem_buffer(
new apache::thrift::transport::TMemoryBuffer(len));
apache::thrift::protocol::TCompactProtocolFactoryT<
- apache::thrift::transport::TMemoryBuffer> tproto_factory;
+ apache::thrift::transport::TMemoryBuffer>
+ tproto_factory;
boost::shared_ptr<apache::thrift::protocol::TProtocol> tproto =
tproto_factory.getProtocol(mem_buffer);
try {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/bit-stream-utils.h
----------------------------------------------------------------------
diff --git a/src/parquet/util/bit-stream-utils.h b/src/parquet/util/bit-stream-utils.h
index f7d09a9..1fdf563 100644
--- a/src/parquet/util/bit-stream-utils.h
+++ b/src/parquet/util/bit-stream-utils.h
@@ -20,13 +20,13 @@
#ifndef PARQUET_UTIL_BIT_STREAM_UTILS_H
#define PARQUET_UTIL_BIT_STREAM_UTILS_H
-#include <string.h>
#include <algorithm>
#include <cstdint>
+#include <string.h>
+#include "parquet/util/bit-util.h"
#include "parquet/util/compiler-util.h"
#include "parquet/util/logging.h"
-#include "parquet/util/bit-util.h"
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/bit-util-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/util/bit-util-test.cc b/src/parquet/util/bit-util-test.cc
index f305b9c..bc3e182 100644
--- a/src/parquet/util/bit-util-test.cc
+++ b/src/parquet/util/bit-util-test.cc
@@ -17,17 +17,17 @@
// From Apache Impala as of 2016-01-29
-#include <stdlib.h>
-#include <stdio.h>
-#include <limits.h>
#include <gtest/gtest.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <boost/utility.hpp>
#include <iostream>
-#include "parquet/util/bit-util.h"
#include "parquet/util/bit-stream-utils.inline.h"
+#include "parquet/util/bit-util.h"
#include "parquet/util/cpu-info.h"
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/buffer-builder.h
----------------------------------------------------------------------
diff --git a/src/parquet/util/buffer-builder.h b/src/parquet/util/buffer-builder.h
index 26f134e..b72e70d 100644
--- a/src/parquet/util/buffer-builder.h
+++ b/src/parquet/util/buffer-builder.h
@@ -20,8 +20,8 @@
#ifndef PARQUET_UTIL_BUFFER_BUILDER_H
#define PARQUET_UTIL_BUFFER_BUILDER_H
-#include <stdlib.h>
#include <cstdint>
+#include <stdlib.h>
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/buffer-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/util/buffer-test.cc b/src/parquet/util/buffer-test.cc
index a71a1f6..ee5b000 100644
--- a/src/parquet/util/buffer-test.cc
+++ b/src/parquet/util/buffer-test.cc
@@ -15,10 +15,10 @@
// specific language governing permissions and limitations
// under the License.
-#include <gtest/gtest.h>
-#include <cstdlib>
#include <cstdint>
+#include <cstdlib>
#include <exception>
+#include <gtest/gtest.h>
#include <limits>
#include <memory>
#include <string>
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/cpu-info.cc
----------------------------------------------------------------------
diff --git a/src/parquet/util/cpu-info.cc b/src/parquet/util/cpu-info.cc
index 1b1bc00..e8f6fac 100644
--- a/src/parquet/util/cpu-info.cc
+++ b/src/parquet/util/cpu-info.cc
@@ -32,8 +32,8 @@
#include <algorithm>
#include <cstdint>
-#include <iostream>
#include <fstream>
+#include <iostream>
#include <sstream>
#include <string>
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/input.cc
----------------------------------------------------------------------
diff --git a/src/parquet/util/input.cc b/src/parquet/util/input.cc
index e1659f7..10e1573 100644
--- a/src/parquet/util/input.cc
+++ b/src/parquet/util/input.cc
@@ -17,10 +17,10 @@
#include "parquet/util/input.h"
-#include <sys/mman.h>
#include <algorithm>
#include <sstream>
#include <string>
+#include <sys/mman.h>
#include "parquet/exception.h"
#include "parquet/util/buffer.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/mem-pool-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/util/mem-pool-test.cc b/src/parquet/util/mem-pool-test.cc
index 7e1443a..3f3424b 100644
--- a/src/parquet/util/mem-pool-test.cc
+++ b/src/parquet/util/mem-pool-test.cc
@@ -18,13 +18,13 @@
// Initially imported from Apache Impala on 2016-02-23, and has been modified
// since for parquet-cpp
-#include <gtest/gtest.h>
#include <cstdint>
+#include <gtest/gtest.h>
#include <limits>
#include <string>
-#include "parquet/util/mem-pool.h"
#include "parquet/util/bit-util.h"
+#include "parquet/util/mem-pool.h"
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/mem-pool.h
----------------------------------------------------------------------
diff --git a/src/parquet/util/mem-pool.h b/src/parquet/util/mem-pool.h
index 496665d..5f6afa9 100644
--- a/src/parquet/util/mem-pool.h
+++ b/src/parquet/util/mem-pool.h
@@ -21,11 +21,11 @@
#ifndef PARQUET_UTIL_MEM_POOL_H
#define PARQUET_UTIL_MEM_POOL_H
-#include <stdio.h>
#include <algorithm>
#include <cstdint>
-#include <vector>
+#include <stdio.h>
#include <string>
+#include <vector>
#include "parquet/util/mem-allocator.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/rle-encoding.h
----------------------------------------------------------------------
diff --git a/src/parquet/util/rle-encoding.h b/src/parquet/util/rle-encoding.h
index 8fa1c41..c6b9577 100644
--- a/src/parquet/util/rle-encoding.h
+++ b/src/parquet/util/rle-encoding.h
@@ -20,13 +20,13 @@
#ifndef PARQUET_UTIL_RLE_ENCODING_H
#define PARQUET_UTIL_RLE_ENCODING_H
-#include <math.h>
#include <algorithm>
+#include <math.h>
-#include "parquet/util/compiler-util.h"
#include "parquet/util/bit-stream-utils.inline.h"
#include "parquet/util/bit-util.h"
#include "parquet/util/buffer.h"
+#include "parquet/util/compiler-util.h"
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/rle-test.cc
----------------------------------------------------------------------
diff --git a/src/parquet/util/rle-test.cc b/src/parquet/util/rle-test.cc
index c7d95d4..e50cd72 100644
--- a/src/parquet/util/rle-test.cc
+++ b/src/parquet/util/rle-test.cc
@@ -19,8 +19,8 @@
#include <gtest/gtest.h>
#include <math.h>
-#include <stdlib.h>
#include <stdio.h>
+#include <stdlib.h>
#include <boost/utility.hpp>
@@ -29,8 +29,8 @@
#include <random>
#include <vector>
-#include "parquet/util/rle-encoding.h"
#include "parquet/util/bit-stream-utils.inline.h"
+#include "parquet/util/rle-encoding.h"
using std::vector;
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/stopwatch.h
----------------------------------------------------------------------
diff --git a/src/parquet/util/stopwatch.h b/src/parquet/util/stopwatch.h
index b940d8c..ad50267 100644
--- a/src/parquet/util/stopwatch.h
+++ b/src/parquet/util/stopwatch.h
@@ -21,8 +21,8 @@
#include <stdio.h>
#include <sys/time.h>
-#include <iostream>
#include <ctime>
+#include <iostream>
namespace parquet {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/src/parquet/util/test-common.h
----------------------------------------------------------------------
diff --git a/src/parquet/util/test-common.h b/src/parquet/util/test-common.h
index edadb53..2327aeb 100644
--- a/src/parquet/util/test-common.h
+++ b/src/parquet/util/test-common.h
@@ -32,7 +32,8 @@ namespace parquet {
namespace test {
typedef ::testing::Types<BooleanType, Int32Type, Int64Type, Int96Type, FloatType,
- DoubleType, ByteArrayType, FLBAType> ParquetTypes;
+ DoubleType, ByteArrayType, FLBAType>
+ ParquetTypes;
template <typename T>
static inline void assert_vector_equal(const vector<T>& left, const vector<T>& right) {
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/thirdparty/versions.sh
----------------------------------------------------------------------
diff --git a/thirdparty/versions.sh b/thirdparty/versions.sh
index 05f5cc2..e60ce05 100755
--- a/thirdparty/versions.sh
+++ b/thirdparty/versions.sh
@@ -1,4 +1,4 @@
-ARROW_VERSION="6b8abb4402ff1f39fc5944a7df6e3b4755691d87"
+ARROW_VERSION="7e39747eec05379710e1a42ecbaf1d9795bc3cf0"
ARROW_URL="https://github.com/apache/arrow/archive/${ARROW_VERSION}.tar.gz"
ARROW_BASEDIR="arrow-${ARROW_VERSION}"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/tools/parquet-scan.cc
----------------------------------------------------------------------
diff --git a/tools/parquet-scan.cc b/tools/parquet-scan.cc
index d146a1d..f0bbb8e 100644
--- a/tools/parquet-scan.cc
+++ b/tools/parquet-scan.cc
@@ -17,8 +17,8 @@
#include <ctime>
#include <iostream>
-#include <memory>
#include <list>
+#include <memory>
#include "parquet/api/reader.h"
http://git-wip-us.apache.org/repos/asf/parquet-cpp/blob/5c1d9e94/tools/parquet_reader.cc
----------------------------------------------------------------------
diff --git a/tools/parquet_reader.cc b/tools/parquet_reader.cc
index ced84d5..bc0711f 100644
--- a/tools/parquet_reader.cc
+++ b/tools/parquet_reader.cc
@@ -16,8 +16,8 @@
// under the License.
#include <iostream>
-#include <memory>
#include <list>
+#include <memory>
#include "parquet/api/reader.h"