diff --git a/Cargo.lock b/Cargo.lock index 091dff9418d..fc193157f44 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3647,9 +3647,9 @@ checksum = "117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc" [[package]] name = "dtype_dispatch" -version = "0.1.1" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a5ccdfd6c5e7e2fea9c5cf256f2a08216047fab19c621c3da64e9ae4a1462d" +checksum = "ab23e69df104e2fd85ee63a533a22d2132ef5975dc6b36f9f3e5a7305e4a8ed7" [[package]] name = "duckdb-bench" @@ -7000,9 +7000,9 @@ dependencies = [ [[package]] name = "pco" -version = "0.4.9" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42382de9fb564e2d10cb4d5ca97cc06d928f0f9667bbef456b57e60827b6548b" +checksum = "e89d71ab3c07ed898defa4915bdc2a963131d811a1eab0eeacfac65c94cdeae8" dependencies = [ "better_io", "dtype_dispatch", diff --git a/Cargo.toml b/Cargo.toml index ba9a0268b87..732c61aea52 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -177,7 +177,7 @@ opentelemetry_sdk = "0.31.0" parking_lot = { version = "0.12.3", features = ["nightly"] } parquet = "57.1" paste = "1.0.15" -pco = "0.4.4" +pco = "1.0.1" pin-project-lite = "0.2.15" primitive-types = { version = "0.14.0" } proc-macro2 = "1.0.95" diff --git a/encodings/pco/src/array.rs b/encodings/pco/src/array.rs index 1cda0031520..961326a3d55 100644 --- a/encodings/pco/src/array.rs +++ b/encodings/pco/src/array.rs @@ -297,10 +297,10 @@ impl PcoArray { let mut chunk_infos = vec![]; // the Vortex metadata let mut page_buffers = vec![]; for chunk_start in (0..n_values).step_by(values_per_chunk) { - let cc = match_number_enum!( + let chunk_end = cmp::min(n_values, chunk_start + values_per_chunk); + let mut cc = match_number_enum!( number_type, NumberType => { - let chunk_end = cmp::min(n_values, chunk_start + values_per_chunk); let values = values.to_buffer::(); let chunk = &values.as_slice()[chunk_start..chunk_end]; fc @@ -309,8 +309,8 @@ impl PcoArray { } ); - let mut chunk_meta_buffer = ByteBufferMut::with_capacity(cc.chunk_meta_size_hint()); - cc.write_chunk_meta(&mut chunk_meta_buffer) + let mut chunk_meta_buffer = ByteBufferMut::with_capacity(cc.meta_size_hint()); + cc.write_meta(&mut chunk_meta_buffer) .map_err(vortex_err_from_pco)?; chunk_meta_buffers.push(chunk_meta_buffer.freeze()); @@ -424,7 +424,7 @@ impl PcoArray { .page_decompressor(page, page_n_values) .map_err(vortex_err_from_pco) .vortex_expect("page_decompressor should succeed with valid page data"); - pd.decompress(&mut decompressed_values[old_len..new_len]) + pd.read(&mut decompressed_values[old_len..new_len]) .map_err(vortex_err_from_pco) .vortex_expect("decompress should succeed with valid compressed data"); } else {