Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
ae3d27e
Add alp code
sfc-gh-pgaur Dec 4, 2025
19968d2
Integrate ALP with arrow
sfc-gh-pgaur Dec 4, 2025
2274077
Add alp benchmark
sfc-gh-pgaur Dec 4, 2025
06a4027
Add datasets for alp benchmarking
sfc-gh-pgaur Dec 4, 2025
3f25cc3
Update cmake file
sfc-gh-pgaur Dec 4, 2025
3b0a0d7
Move hpp files to h
sfc-gh-pgaur Dec 6, 2025
93f291c
Update flow digram and layout digram to use ASCII and not unicode cha…
sfc-gh-pgaur Dec 7, 2025
6931ca5
Rename cpp files to cc
sfc-gh-pgaur Dec 7, 2025
2a62002
Update documentation to align with arrow's doxygen style
sfc-gh-pgaur Dec 7, 2025
eaef4d0
Adapt methods and variable names to arrow style
sfc-gh-pgaur Dec 7, 2025
c62111e
Update the tests to adhere to arrow style code
sfc-gh-pgaur Dec 7, 2025
2832385
Update callers
sfc-gh-pgaur Dec 7, 2025
eb2ce54
Fuse FOR and decode loop
sfc-gh-pgaur Dec 7, 2025
66b59e0
Reduce memory allocation in the decompress call
sfc-gh-pgaur Dec 7, 2025
7db0f18
Attempt at making decoding faster with SIMD
sfc-gh-pgaur Dec 8, 2025
eab7cae
Revert "Attempt at making decoding faster with SIMD"
sfc-gh-pgaur Dec 8, 2025
57ec026
Move cpp files to cc
sfc-gh-pgaur Dec 8, 2025
af324cb
Move data file to parquet-testing submodule
sfc-gh-pgaur Dec 8, 2025
eadc951
Update path to the data file
sfc-gh-pgaur Dec 9, 2025
80f9d98
Adapt files names to arrow convention
sfc-gh-pgaur Dec 15, 2025
2629bda
File rename
sfc-gh-pgaur Dec 15, 2025
595bf65
Obtain compressed size and number of elements from page header
sfc-gh-pgaur Dec 15, 2025
f2a7e90
Fix namespace depth
sfc-gh-pgaur Dec 16, 2025
da142b6
Better pack the compression block header
sfc-gh-pgaur Dec 16, 2025
0f896e8
Rename class
sfc-gh-pgaur Dec 16, 2025
3be05a2
Rearrage field for vector metadata for better packing
sfc-gh-pgaur Dec 16, 2025
f07c5cc
Add spec files
sfc-gh-pgaur Dec 31, 2025
29a513b
Add more tests
sfc-gh-pgaur Jan 2, 2026
a68121f
Move number of elements metadata info to uber header
sfc-gh-pgaur Jan 12, 2026
c500689
Keep version as 1
sfc-gh-pgaur Jan 12, 2026
77caa8c
Tests pass
sfc-gh-pgaur Jan 12, 2026
42b4601
Get rid of numElements and derive it for each vector
sfc-gh-pgaur Jan 12, 2026
a4f02f2
Update the md files
sfc-gh-pgaur Jan 12, 2026
fa2e820
Fix ubsan error
sfc-gh-pgaur Jan 13, 2026
0098a01
Use safe copy
sfc-gh-pgaur Jan 13, 2026
9524032
Add more unit tests
sfc-gh-pgaur Jan 13, 2026
8b1447b
Templatize AlpEncodedVectorInfo
sfc-gh-pgaur Jan 14, 2026
15b0344
Fix
sfc-gh-pgaur Jan 14, 2026
8e13cc5
[SpecReview] Num values in page is at max int32
sfc-gh-pgaur Jan 14, 2026
596340b
[SpecReview] Rename layout to IntegerEncoding
sfc-gh-pgaur Jan 14, 2026
63015f5
[SpecReview] Rename enum
sfc-gh-pgaur Jan 14, 2026
154ee3a
[SpecReview] Make AlpHeader exact 8 bytes
sfc-gh-pgaur Jan 14, 2026
318d79b
[SpecReview] Move all vector data towards the start
sfc-gh-pgaur Jan 15, 2026
a5c3623
[SpecReview][Metadata] Introduce wrapper to read metadata
sfc-gh-pgaur Jan 15, 2026
1ad5d78
[SpecReview] Separate out ALP and FOR metadata
sfc-gh-pgaur Jan 15, 2026
6b2fba0
[SpecReview] Remove unnecessary field
sfc-gh-pgaur Jan 16, 2026
8629a9f
[FutureFlexibility] Add the FOR specific code behind switch
sfc-gh-pgaur Jan 16, 2026
c592e09
Add unit test
sfc-gh-pgaur Jan 17, 2026
6f159a7
ALP: Implement offset-based layout for O(1) random access
sfc-gh-pgaur Jan 26, 2026
69d7e5c
ALP: Update documentation for offset-based layout
sfc-gh-pgaur Jan 26, 2026
95e020a
ALP: Add CreateSamplingPreset and EncodeWithPreset APIs
sfc-gh-pgaur Jan 27, 2026
31d2701
ALP: Update all comments and docs for offset-based layout
sfc-gh-pgaur Jan 27, 2026
f845dac
ALP: Add cross-implementation reference blob generator
sfc-gh-pgaur Mar 7, 2026
0e2fc95
ALP: Add generate_alp_parquet utility for creating ALP test parquet f…
sfc-gh-pgaur Mar 7, 2026
afdec0d
ALP: Remove version field from header (8B → 7B)
sfc-gh-pgaur Mar 7, 2026
a678c96
Update parquet-testing submodule with ALP test data files
sfc-gh-pgaur Mar 7, 2026
f36110f
ALP: Add C++ correctness tests for ALP-encoded parquet files
sfc-gh-pgaur Mar 7, 2026
64607ca
ALP: Add cross-language tests reading Java-generated ALP parquet files
sfc-gh-pgaur Mar 7, 2026
e015b6d
ALP: Add float32 cross-language tests and generator support
sfc-gh-pgaur Mar 8, 2026
57f4c2f
Address code review comments
sfc-gh-pgaur Apr 22, 2026
9fffec8
Address code review comments: endianness assert and decode bounds checks
sfc-gh-pgaur Apr 27, 2026
35c7fe4
Address code review comments: renames, API cleanup, and simplifications
sfc-gh-pgaur Apr 27, 2026
ad0d639
Fix build errors from code review changes
sfc-gh-pgaur Apr 27, 2026
39dd599
Split EstimateCompressedSize loop into batched passes for vectorization
sfc-gh-pgaur Apr 27, 2026
2f78bb0
Address review nits: uint64_t→int64_t, spell out ALP, use uint8_t for…
sfc-gh-pgaur May 6, 2026
4586802
Move decoder creation outside benchmark loop
sfc-gh-pgaur May 6, 2026
38aa1ec
Rename alp_wrapper.h/.cc to alp_codec.h/.cc
sfc-gh-pgaur May 6, 2026
86ec59c
Convert ARROW_CHECK to Status returns on decode/load paths
sfc-gh-pgaur May 6, 2026
6d9cb43
Add precondition docs to Store methods
sfc-gh-pgaur May 6, 2026
92dee2c
Use signed integer types consistently per Arrow style guide
sfc-gh-pgaur May 6, 2026
2469b22
Move out parameters to last position and remove unused enforce_mode
sfc-gh-pgaur May 7, 2026
76c85fa
Add ALP encoding to parquet.thrift Encoding enum
sfc-gh-pgaur May 7, 2026
7773c8e
Remove ALP spec files; spec belongs in parquet-format repo
sfc-gh-pgaur May 13, 2026
edda0c5
Rename decomp/comp params to input/output; remove ARROW_CHECK(false) …
sfc-gh-pgaur May 13, 2026
dc1e9bc
Copy header fields individually instead of bulk memcpy
sfc-gh-pgaur May 13, 2026
d3ea5a0
Replace StaticVector with std::vector for flexible vector size
sfc-gh-pgaur May 13, 2026
1996ea5
Make ALP vector_size configurable on the encode path
sfc-gh-pgaur May 13, 2026
fab5d30
Add parquet-level round-trip test for ALP at non-default vector sizes
sfc-gh-pgaur May 13, 2026
9cf3d3c
Address reviewer feedback: use int64_t, reorder out-params last, clea…
sfc-gh-pgaur May 14, 2026
f96e902
Add sign branching to FastRound for correct rounding of negative values
sfc-gh-pgaur Jun 3, 2026
2c310d8
Address reviewer feedback: SafeLoad/SafeStore, struct→class conversion
sfc-gh-pgaur Jun 8, 2026
275b93b
Convert AlpEncodedVector and AlpEncodedVectorView to private members …
sfc-gh-pgaur Jun 8, 2026
4b28dc2
Remove unused AlpMetadataCache class and redundant GetNumElements()
sfc-gh-pgaur Jun 8, 2026
c805e9a
Remove private inheritance from AlpCompression and AlpInlines
sfc-gh-pgaur Jun 8, 2026
d62c475
Replace trailing return type with explicit Result<AlpHeader> in LoadH…
sfc-gh-pgaur Jun 8, 2026
df08fb2
Use SafeLoadAs for all header fields in LoadHeader
sfc-gh-pgaur Jun 8, 2026
20f6394
Validate header fields in LoadHeader
sfc-gh-pgaur Jun 8, 2026
b62c063
Change AlpCodec public API from byte size to element count
sfc-gh-pgaur Jun 8, 2026
5dc4032
Use uint8_t* consistently in AlpCodec API instead of char*
sfc-gh-pgaur Jun 8, 2026
ef1ea11
Replace trailing return types with explicit return types
sfc-gh-pgaur Jun 25, 2026
620b7b3
Cite ALP paper §3.1.2 for combination tie-break rule
sfc-gh-pgaur Jun 25, 2026
2a8aa77
Pin AlpMode underlying type to uint8_t for serialization safety
sfc-gh-pgaur Jun 25, 2026
12f31e3
Address reviewer nits: doc tweaks, sizeof(member_), incremental-decod…
sfc-gh-pgaur Jun 25, 2026
89460ea
Convert AlpSampler uint64_t to int64_t
sfc-gh-pgaur Jun 25, 2026
3777241
Remove GH-48701 reference from incremental-decode TODO
sfc-gh-pgaur Jun 25, 2026
b96dea5
Document actual crash/abort behavior in AlpCodec encode-path docs
sfc-gh-pgaur Jun 25, 2026
6c2a109
Use bit_util::CeilDiv for vector-count computations in AlpCodec
sfc-gh-pgaur Jun 25, 2026
6e792d2
Replace memcmp with IsBitwiseEqual helper in alp_test.cc
sfc-gh-pgaur Jun 25, 2026
81ffb57
Type-parameterize alp_test integration tests and fix TruncatedData
sfc-gh-pgaur Jun 26, 2026
1869d9f
Type-parameterize AlpEncodingAdHoc tests in encoding_test.cc
sfc-gh-pgaur Jun 26, 2026
9da0605
Widen RandomData test range to exercise ALP exception fallback path
sfc-gh-pgaur Jun 26, 2026
81d9cba
Remove uncompiled generate_alp_parquet and generate_reference_blobs
sfc-gh-pgaur Jun 26, 2026
60c3d89
Add incremental-encode TODO and snake_case rename in AlpEncoder
sfc-gh-pgaur Jun 26, 2026
e20e3d1
Rename EncodeAlp parameter combinations to preset
sfc-gh-pgaur Jun 26, 2026
defe57a
Use bit_util::IsPowerOf2 and BytesForBits instead of raw bit manipula…
sfc-gh-pgaur Jun 26, 2026
ba08de2
Remove remaining 'non-templated' references in ALP comments
sfc-gh-pgaur Jun 26, 2026
bb64c79
Remove GetBitPackedSize wrapper, inline bit_util::BytesForBits at cal…
sfc-gh-pgaur Jun 26, 2026
c3f5b00
Code review changes
sfc-gh-pgaur Jun 28, 2026
a99ae06
Convert AlpCodec public API from ARROW_CHECK aborts to Status returns
sfc-gh-pgaur Jun 30, 2026
504dcea
Use arrow::csv::TableReader for ALP benchmark dataset loading
sfc-gh-pgaur Jun 30, 2026
899d2e6
Reorder AlpEncoded(For)VectorInfo so kStoredSize uses sizeof(member_)
sfc-gh-pgaur Jun 30, 2026
43eb5a7
Make ALP num_exceptions and exception positions unsigned
sfc-gh-pgaur Aug 12, 2026
5c6706c
Enforce the spec's [3, 15] log_vector_size range in ALP
sfc-gh-pgaur Aug 12, 2026
9bd4b6f
Use array matchers in ALP tests; note PLAIN fallback
sfc-gh-pgaur Aug 12, 2026
7b7c1fd
Document the [3, 15] vector_size range in AlpCodec docs
sfc-gh-pgaur Aug 14, 2026
78bde38
Put EncodeAlp output parameters last
sfc-gh-pgaur Aug 24, 2026
c9d6196
Test that ALP rejects malformed page headers
sfc-gh-pgaur Aug 24, 2026
fc53d86
Use std::countr_zero instead of __builtin_ctz in ALP
sfc-gh-pgaur Aug 24, 2026
bb414c9
Apply clang-format 18 to the ALP sources
sfc-gh-pgaur Aug 24, 2026
8647b0d
Validate ALP vector metadata before it steers the decode
sfc-gh-pgaur Aug 26, 2026
021e4f9
Correct inaccurate ALP comments; drop unused UnsafeResize
sfc-gh-pgaur Aug 26, 2026
fc74a1e
Type-parameterize ALP compression tests; tighten round-trip asserts
sfc-gh-pgaur Aug 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions cpp/src/arrow/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -654,6 +654,12 @@ if(ARROW_WITH_ZSTD)
list(APPEND ARROW_UTIL_SRCS util/compression_zstd.cc)
endif()

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the reviewer rough stats about this PR :

Production Code | ~2,449 | ~39%
Test Code. | ~1,151+ | ~18%
Benchmark | ~1,824 | ~29%
Documentation. | ~897 | ~14%

# ALP (for Parquet encoder/decoder)
list(APPEND ARROW_UTIL_SRCS
util/alp/alp.cc
util/alp/alp_sampler.cc
util/alp/alp_codec.cc)

arrow_add_object_library(ARROW_UTIL ${ARROW_UTIL_SRCS})

# Disable DLL exports in vendored uriparser library
Expand Down
7 changes: 7 additions & 0 deletions cpp/src/arrow/util/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,13 @@ add_arrow_test(bit-utility-test
rle_encoding_test.cc
test_common.cc)

add_arrow_test(alp-test
SOURCES
alp/alp_test.cc
alp/alp.cc
alp/alp_sampler.cc
alp/alp_codec.cc)

add_arrow_test(crc32-test
SOURCES
crc32_test.cc
Expand Down
Loading
Loading