Parquet C++ 1.3.1
--------------------------------------------------------------------------------
## Bug
    * [PARQUET-1105] - [CPP] Remove libboost_system dependency 
    * [PARQUET-1123] - [C++] Update parquet-cpp to use Arrow's AssertArraysEqual
    * [PARQUET-1121] - C++: DictionaryArrays of NullType cannot be written

## Improvement
    * [PARQUET-1070] - Add CPack support to the build


Parquet C++ 1.3.0
--------------------------------------------------------------------------------
## Bug
    * [PARQUET-1098] - [C++] Install new header in parquet/util
    * [PARQUET-1085] - [C++] Backwards compatibility from macro cleanup in transitive dependencies in ARROW-1452
    * [PARQUET-1074] - [C++] Switch to long key ids in KEYs file
    * [PARQUET-1075] - C++: Coverage upload is broken
    * [PARQUET-1088] - [CPP] remove parquet_version.h from version control since it gets auto generated 
    * [PARQUET-1002] - [C++] Compute statistics based on Logical Types
    * [PARQUET-1100] - [C++] Reading repeated types should decode number of records rather than number of values
    * [PARQUET-1090] - [C++] Fix int32 overflow in Arrow table writer, add max row group size property
    * [PARQUET-1108] - [C++] Fix Int96 comparators

## Improvement
    * [PARQUET-1104] - [C++] Upgrade to Apache Arrow 0.7.0 RC0
    * [PARQUET-1072] - [C++] Add ARROW_NO_DEPRECATED_API to CI to check for deprecated API use
    * [PARQUET-1096] - C++: Update sha{1, 256, 512} checksums per latest ASF release policy
    * [PARQUET-1079] - [C++] Account for Arrow API change in ARROW-1335
    * [PARQUET-1087] - [C++] Add wrapper for ScanFileContents in parquet::arrow that catches exceptions
    * [PARQUET-1093] - C++: Improve Arrow level generation error message
    * [PARQUET-1094] - C++: Add benchmark for boolean Arrow column I/O
    * [PARQUET-1083] - [C++] Refactor core logic in parquet-scan.cc so that it can be used as a library function for benchmarking
    * [PARQUET-1037] - Allow final RowGroup to be unfilled

## New Feature
    * [PARQUET-1078] - [C++] Add Arrow writer option to coerce timestamps to milliseconds or microseconds
    * [PARQUET-929] - [C++] Handle arrow::DictionaryArray when writing Arrow data


Parquet C++ 1.2.0
--------------------------------------------------------------------------------
## Bug
    * [PARQUET-1029] - [C++] TypedColumnReader/TypeColumnWriter symbols are no longer being exported
    * [PARQUET-997] - Fix override compiler warnings
    * [PARQUET-1033] - Mismatched Read and Write
    * [PARQUET-1007] - [C++ ] Update parquet.thrift from https://github.com/apache/parquet-format
    * [PARQUET-1039] - PARQUET-911 Breaks Arrow
    * [PARQUET-1038] - Key value metadata should be nullptr if not set
    * [PARQUET-1018] - [C++] parquet.dll has runtime dependencies on one or more libraries in the build toolchain
    * [PARQUET-1003] - [C++] Modify DEFAULT_CREATED_BY value for every new release version
    * [PARQUET-1004] - CPP Building fails on windows
    * [PARQUET-1040] - Missing writer method implementations
    * [PARQUET-1054] - [C++] Account for Arrow API changes in ARROW-1199
    * [PARQUET-1042] - C++: Compilation breaks on GCC 4.8
    * [PARQUET-1048] - [C++] Static linking of libarrow is no longer supported
    * [PARQUET-1013] - Fix ZLIB_INCLUDE_DIR
    * [PARQUET-998] - C++: Release script is not usable
    * [PARQUET-1023] - [C++] Brotli libraries are not being statically linked on Windows
    * [PARQUET-1000] - [C++] Do not build thirdparty Arrow with /WX on MSVC
    * [PARQUET-1052] - [C++] add_compiler_export_flags() throws warning with CMake >= 3.3
    * [PARQUET-1069] - C++: ./dev/release/verify-release-candidate is broken due to missing Arrow dependencies

## Improvement
    * [PARQUET-996] - Improve MSVC build - ThirdpartyToolchain - Arrow
    * [PARQUET-911] - C++: Support nested structs in parquet_arrow
    * [PARQUET-986] - Improve MSVC build - ThirdpartyToolchain - Thrift
    * [PARQUET-864] - [C++] Consolidate non-Parquet-specific bit utility code into Apache Arrow
    * [PARQUET-1043] - [C++] Raise minimum supported CMake version to 3.2
    * [PARQUET-1016] - Upgrade thirdparty Arrow to 0.4.0
    * [PARQUET-858] - [C++] Flatten parquet/column directory, consolidate related code
    * [PARQUET-978] - [C++] Minimizing footer reads for small(ish) metadata
    * [PARQUET-991] - [C++] Fix compiler warnings on MSVC and build with /WX in Appveyor
    * [PARQUET-863] - [C++] Move SIMD, CPU info, hashing, and other generic utilities into Apache Arrow
    * [PARQUET-1053] - Fix unused result warnings due to unchecked Statuses
    * [PARQUET-1067] - C++: Update arrow hash to 0.5.0
    * [PARQUET-1041] - C++: Support Arrow's NullArray
    * [PARQUET-1008] - Update TypedColumnReader::ReadBatch method to accept batch_size as int64_t
    * [PARQUET-1044] - [C++] Use compression libraries from Apache Arrow
    * [PARQUET-999] - Improve MSVC build - Enable PARQUET_BUILD_BENCHMARKS
    * [PARQUET-967] - [C++] Combine libparquet/libparquet_arrow libraries
    * [PARQUET-1045] - [C++] Refactor to account for computational utility code migration in ARROW-1154

## New Feature
    * [PARQUET-1035] - Write Int96 from Arrow Timestamp(ns)

## Task
    * [PARQUET-994] - C++: release-candidate script should not push to master
    * [PARQUET-902] - [C++] Move compressor interfaces into Apache Arrow

## Test
    * [PARQUET-706] - [C++] Create test case that uses libparquet as a 3rd party library


Parquet C++ 1.1.0
--------------------------------------------------------------------------------
## Bug
    * [PARQUET-898] - [C++] Change Travis CI OS X image to Xcode 6.4 and fix our thirdparty build
    * [PARQUET-976] - [C++] Pass unit test suite with MSVC, build in Appveyor
    * [PARQUET-963] - [C++] Disallow reading struct types in Arrow reader for now
    * [PARQUET-959] - [C++] Arrow thirdparty build fails on multiarch systems
    * [PARQUET-962] - [C++] GTEST_MAIN_STATIC_LIB is not defined in FindGTest.cmake
    * [PARQUET-958] - [C++] Print Parquet metadata in JSON format
    * [PARQUET-956] - C++: BUILD_BYPRODUCTS not specified anymore for gtest
    * [PARQUET-948] - [C++] Account for API changes in ARROW-782
    * [PARQUET-947] - [C++] Refactor to account for ARROW-795 Arrow core library consolidation
    * [PARQUET-965] - [C++] FIXED_LEN_BYTE_ARRAY types are unhandled in the Arrow reader
    * [PARQUET-949] - [C++] Arrow version pinning seems to not be working properly
    * [PARQUET-955] - [C++] pkg_check_modules will override $ARROW_HOME if it is set in the environment
    * [PARQUET-945] - [C++] Thrift static libraries are not used with recent patch
    * [PARQUET-943] - [C++] Overflow build error on x86
    * [PARQUET-938] - [C++] There is a typo in cmake_modules/FindSnappy.cmake comment
    * [PARQUET-936] - [C++] parquet::arrow::WriteTable can enter infinite loop if chunk_size is 0
    * [PARQUET-981] - Repair usage of *_HOME 3rd party dependencies environment variables during Windows build 
    * [PARQUET-992] - [C++] parquet/compression.h leaks zlib.h
    * [PARQUET-987] - [C++] Fix regressions caused by PARQUET-981
    * [PARQUET-933] - [C++] Account for Arrow Table API changes coming in ARROW-728
    * [PARQUET-915] - Support Arrow Time Types in Schema
    * [PARQUET-914] - [C++] Throw more informative exception when user writes too many values to a column in a row group
    * [PARQUET-923] - [C++] Account for Time metadata changes in ARROW-686
    * [PARQUET-918] - FromParquetSchema API crashes on nested schemas
    * [PARQUET-925] - [C++] FindArrow.cmake sets the wrong library path after ARROW-648
    * [PARQUET-932] - [c++] Add option to build parquet library with minimal dependency
    * [PARQUET-919] - [C++] Account for API changes in ARROW-683
    * [PARQUET-995] - [C++] Int96 reader in parquet_arrow uses size of Int96Type instead of Int96

## Improvement
    * [PARQUET-508] - Add ParquetFilePrinter
    * [PARQUET-595] - Add API for key-value metadata
    * [PARQUET-897] - [C++] Only use designated public headers from libarrow
    * [PARQUET-679] - [C++] Build and unit tests support for MSVC on Windows
    * [PARQUET-977] - Improve MSVC build
    * [PARQUET-957] - [C++] Add optional $PARQUET_BUILD_TOOLCHAIN environment variable option for configuring build environment
    * [PARQUET-961] - [C++] Strip debug symbols from libparquet libraries in release builds by default
    * [PARQUET-954] - C++: Use Brolti 0.6 release
    * [PARQUET-953] - [C++] Change arrow::FileWriter API to be initialized from a Schema, and provide for writing multiple tables
    * [PARQUET-941] - [C++] Stop needless Boost static library detection for CentOS 7 support
    * [PARQUET-942] - [C++] Fix wrong variabe use in FindSnappy
    * [PARQUET-939] - [C++] Support Thrift_HOME CMake variable like FindSnappy does as Snappy_HOME
    * [PARQUET-940] - [C++] Fix Arrow library path detection
    * [PARQUET-937] - [C++] Support CMake < 3.4 again for Arrow detection
    * [PARQUET-935] - [C++] Set shared library version for .deb packages
    * [PARQUET-934] - [C++] Support multiarch on Debian
    * [PARQUET-984] - C++: Add abi and so version to pkg-config
    * [PARQUET-983] - C++: Update Thirdparty hash to Arrow 0.3.0
    * [PARQUET-989] - [C++] Link dynamically to libarrow in toolchain build, set LD_LIBRARY_PATH
    * [PARQUET-988] - [C++] Add Linux toolchain-based build to Travis CI
    * [PARQUET-928] - [C++] Support pkg-config
    * [PARQUET-927] - [C++] Specify shared library version of Apache Arrow
    * [PARQUET-931] - [C++] Add option to pin thirdparty Arrow version used in ExternalProject
    * [PARQUET-926] - [C++] Use pkg-config to find Apache Arrow
    * [PARQUET-917] - C++: Build parquet_arrow by default
    * [PARQUET-910] - C++: Support TIME logical type in parquet_arrow
    * [PARQUET-909] - [CPP]: Reduce buffer allocations (mallocs) on critical path

## New Feature
    * [PARQUET-853] - [C++] Add option to link with shared boost libraries when building Arrow in the thirdparty toolchain
    * [PARQUET-946] - [C++] Refactoring in parquet::arrow::FileReader to be able to read a single row group
    * [PARQUET-930] - [C++] Account for all Arrow date/time types 


Parquet C++ 1.0.0
--------------------------------------------------------------------------------
## Bug
    * [PARQUET-455] - Fix compiler warnings on OS X / Clang
    * [PARQUET-558] - Support ZSH in build scripts
    * [PARQUET-720] - Parquet-cpp fails to link when included in multiple TUs
    * [PARQUET-718] - Reading boolean pages written by parquet-cpp fails
    * [PARQUET-640] - [C++] Force the use of gcc 4.9 in conda builds
    * [PARQUET-643] - Add const modifier to schema pointer reference in ParquetFileWriter
    * [PARQUET-672] - [C++] Build testing conda artifacts in debug mode
    * [PARQUET-661] - [C++] Do not assume that perl is found in /usr/bin
    * [PARQUET-659] - [C++] Instantiated template visibility is broken on clang / OS X
    * [PARQUET-657] - [C++] Don't define DISALLOW_COPY_AND_ASSIGN if already defined
    * [PARQUET-656] - [C++] Revert PARQUET-653
    * [PARQUET-676] - MAX_VALUES_PER_LITERAL_RUN causes RLE encoding failure
    * [PARQUET-614] - C++: Remove unneeded LZ4-related code
    * [PARQUET-604] - Install writer.h headers
    * [PARQUET-621] - C++: Uninitialised DecimalMetadata is read
    * [PARQUET-620] - C++: Duplicate calls to ParquetFileWriter::Close cause duplicate metdata writes
    * [PARQUET-599] - ColumnWriter::RleEncodeLevels' size estimation might be wrong
    * [PARQUET-617] - C++: Enable conda build to work on systems with non-default C++ toolchains
    * [PARQUET-627] - Ensure that thrift headers are generated before source compilation
    * [PARQUET-745] - TypedRowGroupStatistics fails to PlainDecode min and max in ByteArrayType
    * [PARQUET-738] - Update arrow version that also supports newer Xcode
    * [PARQUET-747] - [C++] TypedRowGroupStatistics are not being exported in libparquet.so
    * [PARQUET-711] - Use metadata builders in parquet writer
    * [PARQUET-732] - Building a subset of dependencies does not work
    * [PARQUET-760] - On switching from dictionary to the fallback encoding, an incorrect encoding is set
    * [PARQUET-691] - [C++] Write ColumnChunk metadata after each column chunk in the file
    * [PARQUET-797] - [C++] Update for API changes in ARROW-418
    * [PARQUET-837] - [C++] SerializedFile::ParseMetaData uses Seek, followed by Read, and could have race conditions
    * [PARQUET-827] - [C++] Incorporate addition of arrow::MemoryPool::Reallocate
    * [PARQUET-502] - Scanner segfaults when its batch size is smaller than the number of rows
    * [PARQUET-469] - Roll back Thrift bindings to 0.9.0
    * [PARQUET-889] - Fix compilation when PARQUET_USE_SSE is on
    * [PARQUET-888] - C++ Memory leak in RowGroupSerializer
    * [PARQUET-819] - C++: Trying to install non-existing parquet/arrow/utils.h
    * [PARQUET-736] - XCode 8.0 breaks builds
    * [PARQUET-505] - Column reader: automatically handle large data pages
    * [PARQUET-615] - C++: Building static or shared libparquet should not be mutually exclusive
    * [PARQUET-658] - ColumnReader has no virtual destructor
    * [PARQUET-799] - concurrent usage of the file reader API
    * [PARQUET-513] - Valgrind errors are not failing the Travis CI build
    * [PARQUET-841] - [C++] Writing wrong format version when using ParquetVersion::PARQUET_1_0
    * [PARQUET-742] - Add missing license headers
    * [PARQUET-741] - compression_buffer_ is reused although it shouldn't
    * [PARQUET-700] - C++: Disable dictionary encoding for boolean columns
    * [PARQUET-662] - [C++] ParquetException must be explicitly exported in dynamic libraries
    * [PARQUET-704] - [C++] scan-all.h is not being installed
    * [PARQUET-865] - C++: Pass all CXXFLAGS to Thrift ExternalProject
    * [PARQUET-875] - [C++] Fix coveralls build given changes to thirdparty build procedure
    * [PARQUET-709] - [C++] Fix conda dev binary builds
    * [PARQUET-638] - [C++] Revert static linking of libstdc++ in conda builds until symbol visibility addressed
    * [PARQUET-606] - Travis coverage is broken
    * [PARQUET-880] - [CPP] Prevent destructors from throwing
    * [PARQUET-886] - [C++] Revise build documentation and requirements in README.md
    * [PARQUET-900] - C++: Fix NOTICE / LICENSE issues
    * [PARQUET-885] - [C++] Do not search for Thrift in default system paths
    * [PARQUET-879] - C++: ExternalProject compilation for Thrift fails on older CMake versions
    * [PARQUET-635] - [C++] Statically link libstdc++ on Linux in conda recipe
    * [PARQUET-710] - Remove unneeded private member variables from RowGroupReader ABI
    * [PARQUET-766] - C++: Expose ParquetFileReader through Arrow reader as const
    * [PARQUET-876] - C++: Correct snapshot version
    * [PARQUET-821] - [C++] zlib download link is broken
    * [PARQUET-818] - [C++] Refactor library to share IO, Buffer, and memory management abstractions with Apache Arrow
    * [PARQUET-537] - LocalFileSource leaks resources
    * [PARQUET-764] - [CPP] Parquet Writer does not write Boolean values correctly
    * [PARQUET-812] - [C++] Failure reading BYTE_ARRAY data from file in parquet-compatibility project
    * [PARQUET-759] - Cannot store columns consisting of empty strings
    * [PARQUET-846] - [CPP] CpuInfo::Init() is not thread safe
    * [PARQUET-694] - C++: Revert default data page size back to 1M
    * [PARQUET-842] - [C++] Impala rejects DOUBLE columns if decimal metadata is set
    * [PARQUET-708] - [C++] RleEncoder does not account for "worst case scenario" in MaxBufferSize for bit_width > 1
    * [PARQUET-639] - Do not export DCHECK in public headers
    * [PARQUET-828] - [C++] "version" field set improperly in file metadata
    * [PARQUET-891] - [C++] Do not search for Snappy in default system paths
    * [PARQUET-626] - Fix builds due to unavailable llvm.org apt mirror
    * [PARQUET-629] - RowGroupSerializer should only close itself once
    * [PARQUET-472] - Clean up InputStream ownership semantics in ColumnReader
    * [PARQUET-739] - Rle-decoding uses static buffer that is shared accross threads
    * [PARQUET-561] - ParquetFileReader::Contents PIMPL missing a virtual destructor
    * [PARQUET-892] - [C++] Clean up link library targets in CMake files
    * [PARQUET-454] - Address inconsistencies in boolean decoding
    * [PARQUET-816] - [C++] Failure decoding sample dict-encoded file from parquet-compatibility project
    * [PARQUET-565] - Use PATH instead of DIRECTORY in get_filename_component to support CMake<2.8.12
    * [PARQUET-446] - Hide thrift dependency in parquet-cpp
    * [PARQUET-843] - [C++] Impala unable to read files created by parquet-cpp
    * [PARQUET-555] - Dictionary page metadata handling inconsistencies
    * [PARQUET-908] - Fix for PARQUET-890 introduces undefined symbol in libparquet_arrow.so
    * [PARQUET-793] - [CPP] Do not return incorrect statistics
    * [PARQUET-887] - C++: Fix issues in release scripts arise in RC1

## Improvement
    * [PARQUET-277] - Remove boost dependency
    * [PARQUET-500] - Enable coveralls.io for apache/parquet-cpp
    * [PARQUET-497] - Decouple Parquet physical file structure from FileReader class
    * [PARQUET-597] - Add data rates to benchmark output
    * [PARQUET-522] - #include cleanup with include-what-you-use 
    * [PARQUET-515] - Add "Reset" to LevelEncoder and LevelDecoder
    * [PARQUET-514] - Automate coveralls.io updates in Travis CI
    * [PARQUET-551] - Handle compiler warnings due to disabled DCHECKs in release builds
    * [PARQUET-559] - Enable InputStream as a source to the ParquetFileReader
    * [PARQUET-562] - Simplified ZSH support in build scripts
    * [PARQUET-538] - Improve ColumnReader Tests
    * [PARQUET-541] - Portable build scripts
    * [PARQUET-724] - Test more advanced properties setting
    * [PARQUET-641] - Instantiate stringstream only if needed in SerializedPageReader::NextPage
    * [PARQUET-636] - Expose selection for different encodings
    * [PARQUET-603] - Implement missing information in schema descriptor
    * [PARQUET-610] - Print ColumnMetaData for each RowGroup
    * [PARQUET-600] - Add benchmarks for RLE-Level encoding
    * [PARQUET-592] - Support compressed writes
    * [PARQUET-593] - Add API for writing Page statistics
    * [PARQUET-589] - Implement Chunked InMemoryInputStream for better memory usage
    * [PARQUET-587] - Implement BufferReader::Read(int64_t,uint8_t*)
    * [PARQUET-616] - C++: WriteBatch should accept const arrays
    * [PARQUET-630] - C++: Support link flags for older CMake versions
    * [PARQUET-634] - Consistent private linking of dependencies
    * [PARQUET-633] - Add version to WriterProperties
    * [PARQUET-625] - Improve RLE read performance
    * [PARQUET-737] - Use absolute namespace in macros
    * [PARQUET-762] - C++: Use optimistic allocation instead of Arrow Builders
    * [PARQUET-773] - C++: Check licenses with RAT in CI
    * [PARQUET-687] - C++: Switch to PLAIN encoding if dictionary grows too large
    * [PARQUET-784] - C++: Reference Spark, Kudu and FrameOfReference in LICENSE
    * [PARQUET-809] - [C++] Add API to determine if two files' schemas are compatible 
    * [PARQUET-778] - Standardize the schema output to match the parquet-mr format
    * [PARQUET-463] - Add DCHECK* macros for assertions in debug builds
    * [PARQUET-471] - Use the same environment setup script for Travis CI as local sandbox development
    * [PARQUET-449] - Update to latest parquet.thrift
    * [PARQUET-496] - Fix cpplint configuration to be more restrictive
    * [PARQUET-468] - Add a cmake option to generate the Parquet thrift headers with the thriftc in the environment
    * [PARQUET-482] - Organize src code file structure to have a very clear folder with public headers.
    * [PARQUET-591] - Page size estimation during writes
    * [PARQUET-518] - Review usages of size_t and unsigned integers generally per Google style guide
    * [PARQUET-533] - Simplify RandomAccessSource API to combine Seek/Read 
    * [PARQUET-767] - Add release scripts for parquet-cpp
    * [PARQUET-699] - Update parquet.thrift from https://github.com/apache/parquet-format
    * [PARQUET-653] - [C++] Re-enable -static-libstdc++ in dev artifact builds
    * [PARQUET-763] - C++: Expose ParquetFileReader through Arrow reader
    * [PARQUET-857] - [C++] Flatten parquet/encodings directory
    * [PARQUET-862] - Provide defaut cache size values if CPU info probing is not available
    * [PARQUET-689] - C++: Compress DataPages eagerly
    * [PARQUET-874] - [C++] Use default memory allocator from Arrow
    * [PARQUET-267] - Detach thirdparty code from build configuration.
    * [PARQUET-418] - Add a utility to print contents of a Parquet file to stdout
    * [PARQUET-519] - Disable compiler warning supressions and fix all DEBUG build warnings
    * [PARQUET-447] - Add Debug and Release build types and associated compiler flags
    * [PARQUET-868] - C++: Build snappy with optimizations
    * [PARQUET-894] - Fix compilation warning
    * [PARQUET-883] - C++: Support non-standard gcc version strings
    * [PARQUET-607] - Public Writer header
    * [PARQUET-731] - [CPP] Add API to return metadata size and Skip reading values
    * [PARQUET-628] - Link thrift privately
    * [PARQUET-877] - C++: Update Arrow Hash, update Version in metadata.
    * [PARQUET-547] - Refactor most templates to use DataType structs rather than the Type::type enum
    * [PARQUET-882] - [CPP] Improve Application Version parsing
    * [PARQUET-448] - Add cmake option to skip building the unit tests
    * [PARQUET-721] - Performance benchmarks for reading into Arrow structures
    * [PARQUET-820] - C++: Decoders should directly emit arrays with spacing for null entries
    * [PARQUET-813] - C++: Build dependencies using CMake External project
    * [PARQUET-488] - Add SSE-related cmake options to manage compiler flags
    * [PARQUET-564] - Add option to run unit tests with valgrind --tool=memcheck
    * [PARQUET-572] - Rename parquet_cpp namespace to parquet
    * [PARQUET-829] - C++: Make use of ARROW-469
    * [PARQUET-501] - Add an OutputStream abstraction (capable of memory allocation) for Encoder public API
    * [PARQUET-744] - Clarifications on build instructions
    * [PARQUET-520] - Add version of LocalFileSource that uses memory-mapping for zero-copy reads
    * [PARQUET-556] - Extend RowGroupStatistics to include "min" "max" statistics
    * [PARQUET-671] - Improve performance of RLE/bit-packed decoding in parquet-cpp
    * [PARQUET-681] - Add tool to scan a parquet file

## New Feature
    * [PARQUET-499] - Complete PlainEncoder implementation for all primitive types and test end to end
    * [PARQUET-439] - Conform all copyright headers to ASF requirements
    * [PARQUET-436] - Implement ParquetFileWriter class entry point for generating new Parquet files
    * [PARQUET-435] - Provide vectorized ColumnReader interface
    * [PARQUET-438] - Update RLE encoder/decoder modules from Impala upstream changes and adapt unit tests
    * [PARQUET-512] - Add optional google/benchmark 3rd-party dependency for performance testing
    * [PARQUET-566] - Add method to retrieve the full column path
    * [PARQUET-613] - C++: Add conda packaging recipe
    * [PARQUET-605] - Expose schema node in ColumnDescriptor
    * [PARQUET-619] - C++: Add OutputStream for local files
    * [PARQUET-583] - Implement Parquet to Thrift schema conversion
    * [PARQUET-582] - Conversion functions for Parquet enums to Thrift enums
    * [PARQUET-728] - [C++] Bring parquet::arrow up to date with API changes in arrow::io 
    * [PARQUET-752] - [C++] Conform parquet_arrow to upstream API changes
    * [PARQUET-788] - [C++] Reference Impala / Apache Impala (incubating) in LICENSE
    * [PARQUET-808] - [C++] Add API to read file given externally-provided FileMetadata
    * [PARQUET-807] - [C++] Add API to read file metadata only from a file handle
    * [PARQUET-805] - C++: Read Int96 into Arrow Timestamp(ns)
    * [PARQUET-836] - [C++] Add column selection to parquet::arrow::FileReader
    * [PARQUET-835] - [C++] Add option to parquet::arrow to read columns in parallel using a thread pool
    * [PARQUET-830] - [C++] Add additional configuration options to parquet::arrow::OpenFIle
    * [PARQUET-769] - C++: Add support for Brotli Compression
    * [PARQUET-489] - Add visibility macros to be used for public and internal APIs of libparquet
    * [PARQUET-542] - Support memory allocation from external memory
    * [PARQUET-844] - [C++] Consolidate encodings, schema, and compression subdirectories into fewer files
    * [PARQUET-848] - [C++] Consolidate libparquet_thrift subcomponent
    * [PARQUET-646] - [C++] Enable easier 3rd-party toolchain clang builds on Linux
    * [PARQUET-598] - [C++] Test writing all primitive data types
    * [PARQUET-442] - Convert flat SchemaElement vector to implied nested schema data structure
    * [PARQUET-867] - [C++] Support writing sliced Arrow arrays
    * [PARQUET-456] - Add zlib codec support
    * [PARQUET-834] - C++: Support r/w of arrow::ListArray
    * [PARQUET-485] - Decouple data page delimiting from column reader / scanner classes, create test fixtures
    * [PARQUET-434] - Add a ParquetFileReader class to encapsulate some low-level details of interacting with Parquet files
    * [PARQUET-666] - PLAIN_DICTIONARY write support
    * [PARQUET-437] - Incorporate googletest thirdparty dependency and add cmake tools (ADD_PARQUET_TEST) to simplify adding new unit tests
    * [PARQUET-866] - [C++] Account for API changes in ARROW-33
    * [PARQUET-545] - Improve API to support Decimal type
    * [PARQUET-579] - Add API for writing Column statistics
    * [PARQUET-494] - Implement PLAIN_DICTIONARY encoding and decoding
    * [PARQUET-618] - C++: Automatically upload conda build artifacts on commits to master
    * [PARQUET-833] - C++: Provide API to write spaced arrays (e.g. Arrow)
    * [PARQUET-903] - C++: Add option to set RPATH to ORIGIN
    * [PARQUET-451] - Add a RowGroup reader interface class
    * [PARQUET-785] - C++: List conversion for Arrow Schemas
    * [PARQUET-712] - C++: Read into Arrow memory
    * [PARQUET-890] - C++: Support I/O of DATE columns in parquet_arrow
    * [PARQUET-782] - C++: Support writing to Arrow sinks
    * [PARQUET-849] - [C++] Upgrade default Thrift in thirdparty toolchain to 0.9.3 or 0.10
    * [PARQUET-573] - C++: Create a public API for reading and writing file metadata

## Task
    * [PARQUET-814] - C++: Remove Conda recipes
    * [PARQUET-503] - Re-enable parquet 2.0 encodings
    * [PARQUET-169] - Parquet-cpp: Implement support for bulk reading and writing repetition/definition levels.
    * [PARQUET-878] - C++: Remove setup_build_env from rc-verification script
    * [PARQUET-881] - C++: Update Arrow hash to 0.2.0-rc2
    * [PARQUET-771] - C++: Sync KEYS file
    * [PARQUET-901] - C++: Publish RCs in apache-parquet-VERSION in SVN

## Test
    * [PARQUET-525] - Test coverage for malformed file failure modes on the read path
    * [PARQUET-703] - [C++] Validate num_values metadata for columns with nulls
    * [PARQUET-507] - Improve runtime of rle-test.cc
    * [PARQUET-549] - Add scanner and column reader tests for dictionary data pages
    * [PARQUET-457] - Add compressed data page unit tests


