Skip to content

Commit

Permalink
Merge branch 'master' into cargo_audit_ci
Browse files Browse the repository at this point in the history
  • Loading branch information
Jefffrey committed Dec 6, 2023
2 parents aa09d82 + f4bad68 commit 72cceec
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 15 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/dev_pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
github.event_name == 'pull_request_target' &&
(github.event.action == 'opened' ||
github.event.action == 'synchronize')
uses: actions/labeler@v4.3.0
uses: actions/labeler@v5.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
configuration-path: .github/workflows/dev_pr/labeler.yml
Expand Down
30 changes: 26 additions & 4 deletions arrow-select/src/take.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
use std::sync::Arc;

use arrow_array::builder::BufferBuilder;
use arrow_array::builder::{BufferBuilder, UInt32Builder};
use arrow_array::cast::AsArray;
use arrow_array::types::*;
use arrow_array::*;
Expand Down Expand Up @@ -689,7 +689,7 @@ fn take_value_indices_from_fixed_size_list<IndexType>(
where
IndexType: ArrowPrimitiveType,
{
let mut values = vec![];
let mut values = UInt32Builder::with_capacity(length as usize * indices.len());

for i in 0..indices.len() {
if indices.is_valid(i) {
Expand All @@ -699,11 +699,16 @@ where
.ok_or_else(|| ArrowError::ComputeError("Cast to usize failed".to_string()))?;
let start = list.value_offset(index) as <UInt32Type as ArrowPrimitiveType>::Native;

values.extend(start..start + length);
// Safety: Range always has known length.
unsafe {
values.append_trusted_len_iter(start..start + length);
}
} else {
values.append_nulls(length as usize);
}
}

Ok(PrimitiveArray::<UInt32Type>::from(values))
Ok(values.finish())
}

/// To avoid generating take implementations for every index type, instead we
Expand Down Expand Up @@ -1985,6 +1990,23 @@ mod tests {
assert_eq!(&values, &[Some(23), Some(4), None, None])
}

#[test]
fn test_take_fixed_size_list_null_indices() {
let indices = Int32Array::from_iter([Some(0), None]);
let values = Arc::new(Int32Array::from(vec![0, 1, 2, 3]));
let arr_field = Arc::new(Field::new("item", values.data_type().clone(), true));
let values = FixedSizeListArray::try_new(arr_field, 2, values, None).unwrap();

let r = take(&values, &indices, None).unwrap();
let values = r
.as_fixed_size_list()
.values()
.as_primitive::<Int32Type>()
.into_iter()
.collect::<Vec<_>>();
assert_eq!(values, &[Some(0), Some(1), None, None])
}

#[test]
fn test_take_bytes_null_indices() {
let indices = Int32Array::new(
Expand Down
2 changes: 1 addition & 1 deletion object_store/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ serde_json = { version = "1.0", default-features = false, optional = true }
rand = { version = "0.8", default-features = false, features = ["std", "std_rng"], optional = true }
reqwest = { version = "0.11", default-features = false, features = ["rustls-tls-native-roots"], optional = true }
ring = { version = "0.17", default-features = false, features = ["std"], optional = true }
rustls-pemfile = { version = "1.0", default-features = false, optional = true }
rustls-pemfile = { version = "2.0", default-features = false, features = ["std"], optional = true }
tokio = { version = "1.25.0", features = ["sync", "macros", "rt", "time", "io-util"] }

[target.'cfg(target_family="unix")'.dev-dependencies]
Expand Down
4 changes: 2 additions & 2 deletions object_store/src/gcp/credential.rs
Original file line number Diff line number Diff line change
Expand Up @@ -304,8 +304,8 @@ fn decode_first_rsa_key(private_key_pem: String) -> Result<RsaKeyPair> {

// Reading from string is infallible
match rustls_pemfile::read_one(&mut reader).unwrap() {
Some(Item::PKCS8Key(key)) => Ok(RsaKeyPair::from_pkcs8(&key)?),
Some(Item::RSAKey(key)) => Ok(RsaKeyPair::from_der(&key)?),
Some(Item::Pkcs8Key(key)) => Ok(RsaKeyPair::from_pkcs8(key.secret_pkcs8_der())?),
Some(Item::Pkcs1Key(key)) => Ok(RsaKeyPair::from_der(key.secret_pkcs1_der())?),
_ => Err(Error::MissingKey),
}
}
Expand Down
5 changes: 1 addition & 4 deletions parquet/src/column/reader.rs
Original file line number Diff line number Diff line change
Expand Up @@ -607,10 +607,7 @@ fn parse_v1_level(
}
Encoding::BIT_PACKED => {
let bit_width = num_required_bits(max_level as u64);
let num_bytes = ceil(
(num_buffered_values as usize * bit_width as usize) as i64,
8,
) as usize;
let num_bytes = ceil(num_buffered_values as usize * bit_width as usize, 8);
Ok((num_bytes, buf.slice(..num_bytes)))
}
_ => Err(general_err!("invalid level encoding: {}", encoding)),
Expand Down
6 changes: 3 additions & 3 deletions parquet/src/encodings/rle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ impl RleEncoder {
self.bit_writer.put_vlq_int(indicator_value as u64);
self.bit_writer.put_aligned(
self.current_value,
bit_util::ceil(self.bit_width as i64, 8) as usize,
bit_util::ceil(self.bit_width as usize, 8),
);
self.num_buffered_values = 0;
self.repeat_count = 0;
Expand Down Expand Up @@ -524,8 +524,8 @@ impl RleDecoder {
self.bit_packed_left = ((indicator_value >> 1) * 8) as u32;
} else {
self.rle_left = (indicator_value >> 1) as u32;
let value_width = bit_util::ceil(self.bit_width as i64, 8);
self.current_value = bit_reader.get_aligned::<u64>(value_width as usize);
let value_width = bit_util::ceil(self.bit_width as usize, 8);
self.current_value = bit_reader.get_aligned::<u64>(value_width);
assert!(self.current_value.is_some());
}
true
Expand Down

0 comments on commit 72cceec

Please sign in to comment.