(
decoder: &TupleDecoder,
tuples: &[&[u8]],
col_idx: usize,
n: usize,
)
| 121 | } |
| 122 | |
| 123 | fn extract_float64( |
| 124 | decoder: &TupleDecoder, |
| 125 | tuples: &[&[u8]], |
| 126 | col_idx: usize, |
| 127 | n: usize, |
| 128 | ) -> Result<ArrayRef, StrictError> { |
| 129 | let (null_buf, null_count) = build_null_buffer(decoder, tuples, col_idx)?; |
| 130 | let mut values = Vec::with_capacity(n); |
| 131 | |
| 132 | for tuple in tuples { |
| 133 | if let Some(raw) = decoder.extract_fixed_raw(tuple, col_idx)? { |
| 134 | values.push(f64::from_le_bytes( |
| 135 | raw[..8] |
| 136 | .try_into() |
| 137 | .expect("extract_fixed_raw guarantees exact size"), |
| 138 | )); |
| 139 | } else { |
| 140 | values.push(0.0); |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | let array = Float64Array::new( |
| 145 | values.into(), |
| 146 | if null_count > 0 { Some(null_buf) } else { None }, |
| 147 | ); |
| 148 | Ok(Arc::new(array)) |
| 149 | } |
| 150 | |
| 151 | fn extract_bool( |
| 152 | decoder: &TupleDecoder, |
no test coverage detected