Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
54bc343
Add alp to the thrift definitions
sdf-jkl Feb 6, 2026
622841b
Add alp to the encoding enum
sdf-jkl Feb 6, 2026
bf754b2
Add alp header and page layout structs
sdf-jkl Feb 12, 2026
8337fcd
Add Interleaved Vectors​ support
sdf-jkl Feb 15, 2026
5349a9e
Merge branch 'main' into alp
sdf-jkl Feb 15, 2026
148b1d5
Add bit unpacking, reverse FOR and exceptions patching
sdf-jkl Feb 18, 2026
5f0222e
Decode page works
sdf-jkl Feb 18, 2026
027172f
Add more checks and tests
sdf-jkl Feb 19, 2026
8ee1b7e
Make decode page lazy + some tests
sdf-jkl Feb 20, 2026
18f885e
Find vectors using offsets at decode time, not parse time
sdf-jkl Feb 20, 2026
a9fa0c3
get decode fast path
sdf-jkl Feb 20, 2026
7754ebc
Simplify decode_page_values
sdf-jkl Feb 20, 2026
6b7e923
remove `version` from page header
sdf-jkl Mar 12, 2026
a13f244
change `log_vetctor_size` range consts
sdf-jkl Mar 12, 2026
6e86d6f
redo the integration test using a test file from the c++ pr
sdf-jkl Mar 12, 2026
ac56cc2
cache parsed vectors
sdf-jkl Mar 12, 2026
07ca6f0
use `Bytes` for `packed_values`
sdf-jkl Mar 12, 2026
def5c09
clippy too many args
sdf-jkl Mar 12, 2026
5e5c8d2
cargo fmt
sdf-jkl Mar 12, 2026
6060ca2
Merge branch 'main' of https://github.com/apache/arrow-rs into alp
sdf-jkl Mar 16, 2026
5ed70ae
fix decode to two-step multiplication
sdf-jkl Mar 16, 2026
e328d7a
make vector byte count more strict
sdf-jkl Mar 16, 2026
1807d32
add stricter offset validation
sdf-jkl Mar 16, 2026
11c7905
fmt
sdf-jkl Mar 16, 2026
e9827e5
Merge tag '58.2.0' into alp
alamb May 8, 2026
cacacf4
Fix up compilation
alamb May 8, 2026
578481c
Refactor: Pull common header structures into common module
alamb May 8, 2026
131851a
Merge pull request #3 from alamb/alamb/move_common_structures
sdf-jkl May 9, 2026
f10279c
fmt
sdf-jkl May 9, 2026
fbf4ad2
small fix
sdf-jkl May 9, 2026
f65ff9a
Align structure names with spec
alamb May 9, 2026
c912f4e
Merge pull request #5 from alamb/alamb/alp_names
sdf-jkl May 9, 2026
26c382c
fmt
sdf-jkl May 9, 2026
82cdba3
use arrow-csv
sdf-jkl May 18, 2026
d15f0ca
add page layout ASCII art
sdf-jkl May 18, 2026
a6b5f05
add `AlpHeader` serde methods for `vector_size` and `num_elements`
sdf-jkl Jun 2, 2026
10bbc6b
store offsets instead of vecs in `AlpEncodedVectorView`
sdf-jkl Jun 7, 2026
9978b31
pass output slice instead of allocating a vec
sdf-jkl Jun 7, 2026
70e35a8
fuse inverse FOR and decimal decode in one pass + remove `PhantonData…
sdf-jkl Jun 7, 2026
e970919
Merge branch 'main' of https://github.com/apache/arrow-rs into alp
sdf-jkl Jun 7, 2026
81c14cb
lazy vector decode
sdf-jkl Jun 7, 2026
93eb925
even lazier decode
sdf-jkl Jun 8, 2026
ad84bde
use `BitReader::get_batch` to support autovectorization with a scratc…
sdf-jkl Jun 8, 2026
23fac76
update parquet-testing dep
sdf-jkl Jun 8, 2026
b0199e0
avoid division
sdf-jkl Jul 14, 2026
532b025
v1 header doesn't know num_value upfront
sdf-jkl Jul 14, 2026
3b7d362
add encoder support
sdf-jkl Jul 14, 2026
3306fd2
Merge branch 'main' of https://github.com/apache/arrow-rs into alp
sdf-jkl Jul 14, 2026
dc193a6
skip loading each vector during skip
sdf-jkl Jul 16, 2026
5b0d8ad
add streaming ALP encoder + throughput bench
sdf-jkl Jul 17, 2026
0dd0324
use copysign for fast_round
sdf-jkl Jul 19, 2026
e5d9bf9
branchless exceptions encode
sdf-jkl Jul 19, 2026
b58a7e5
comment trim
sdf-jkl Jul 19, 2026
526b8af
drop the sign in fast rounding
sdf-jkl Jul 31, 2026
2196346
drop the bench
sdf-jkl Jul 31, 2026
799d58c
Merge branch 'main' of https://github.com/apache/arrow-rs into alp
sdf-jkl Jul 31, 2026
e23b476
fmt
sdf-jkl Jul 31, 2026
2c25e55
comments clean up pass
sdf-jkl Jul 31, 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
3 changes: 2 additions & 1 deletion parquet/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,8 @@ zstd = { version = "0.13", default-features = false }
serde_json = { version = "1.0", features = ["std"], default-features = false }
arrow = { workspace = true, features = ["ipc", "test_utils", "prettyprint", "json"] }
arrow-cast = { workspace = true }
tokio = { version = "1.0", default-features = false, features = ["macros", "rt-multi-thread", "io-util", "fs", "sync"] }
arrow-csv = { workspace = true }
tokio = { version = "1.0", default-features = false, features = ["macros", "rt-multi-thread", "io-util", "fs"] }
rand = { version = "0.9", default-features = false, features = ["std", "std_rng", "thread_rng"] }
object_store = { workspace = true, features = ["azure", "fs"] }
sysinfo = { version = "0.39.6", default-features = false, features = ["system"] }
Expand Down
2 changes: 1 addition & 1 deletion parquet/src/arrow/arrow_writer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3236,7 +3236,7 @@ mod tests {
Encoding::BYTE_STREAM_SPLIT,
],
DataType::Float32 | DataType::Float64 => {
vec![Encoding::PLAIN, Encoding::BYTE_STREAM_SPLIT]
vec![Encoding::PLAIN, Encoding::BYTE_STREAM_SPLIT, Encoding::ALP]
}
_ => vec![Encoding::PLAIN],
};
Expand Down
10 changes: 10 additions & 0 deletions parquet/src/basic.rs
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,10 @@ enum Encoding {
/// afterwards. Note that the use of this encoding with FIXED_LEN_BYTE_ARRAY(N) data may
/// perform poorly for large values of N.
BYTE_STREAM_SPLIT = 9;
/// Adaptive Lossless floating-Point encoding (ALP).
///
/// Currently specified for FLOAT and DOUBLE.
ALP = 10;
}
);

Expand All @@ -469,6 +473,7 @@ impl FromStr for Encoding {
"DELTA_BYTE_ARRAY" | "delta_byte_array" => Ok(Encoding::DELTA_BYTE_ARRAY),
"RLE_DICTIONARY" | "rle_dictionary" => Ok(Encoding::RLE_DICTIONARY),
"BYTE_STREAM_SPLIT" | "byte_stream_split" => Ok(Encoding::BYTE_STREAM_SPLIT),
"ALP" | "alp" => Ok(Encoding::ALP),
_ => Err(general_err!("unknown encoding: {}", s)),
}
}
Expand Down Expand Up @@ -608,6 +613,7 @@ fn i32_to_encoding(val: i32) -> Encoding {
7 => Encoding::DELTA_BYTE_ARRAY,
8 => Encoding::RLE_DICTIONARY,
9 => Encoding::BYTE_STREAM_SPLIT,
10 => Encoding::ALP,
_ => panic!("Impossible encoding {val}"),
}
}
Expand Down Expand Up @@ -1866,6 +1872,7 @@ mod tests {
);
assert_eq!(Encoding::DELTA_BYTE_ARRAY.to_string(), "DELTA_BYTE_ARRAY");
assert_eq!(Encoding::RLE_DICTIONARY.to_string(), "RLE_DICTIONARY");
assert_eq!(Encoding::ALP.to_string(), "ALP");
}

#[test]
Expand Down Expand Up @@ -2174,6 +2181,8 @@ mod tests {
assert_eq!(encoding, Encoding::RLE_DICTIONARY);
encoding = "BYTE_STREAM_SPLIT".parse().unwrap();
assert_eq!(encoding, Encoding::BYTE_STREAM_SPLIT);
encoding = "alp".parse().unwrap();
assert_eq!(encoding, Encoding::ALP);

// test lowercase
encoding = "byte_stream_split".parse().unwrap();
Expand Down Expand Up @@ -2309,6 +2318,7 @@ mod tests {
Encoding::PLAIN_DICTIONARY,
Encoding::RLE_DICTIONARY,
Encoding::BYTE_STREAM_SPLIT,
Encoding::ALP,
];
encodings_roundtrip(encodings.into());
}
Expand Down
1 change: 1 addition & 0 deletions parquet/src/data_type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -702,6 +702,7 @@ pub(crate) mod private {
+ Send
+ HeapSize
+ crate::encodings::decoding::private::GetDecoder
+ crate::encodings::encoding::private::GetEncoder
+ crate::file::statistics::private::MakeStatistics
{
const PHYSICAL_TYPE: Type;
Expand Down
Loading
Loading