Generic hex encoding for int64 type
(
iter: impl Iterator<Item = Option<i64>>,
len: usize,
)
| 196 | |
| 197 | /// Generic hex encoding for int64 type |
| 198 | fn hex_encode_int64( |
| 199 | iter: impl Iterator<Item = Option<i64>>, |
| 200 | len: usize, |
| 201 | ) -> Result<ArrayRef, DataFusionError> { |
| 202 | let mut builder = StringBuilder::with_capacity(len, len * 16); |
| 203 | |
| 204 | for v in iter { |
| 205 | if let Some(num) = v { |
| 206 | let mut temp = [0u8; 16]; |
| 207 | let slice = hex_int64(num, &mut temp); |
| 208 | // SAFETY: slice contains only ASCII hex digests, which are valid UTF-8 |
| 209 | unsafe { |
| 210 | builder.append_value(from_utf8_unchecked(slice)); |
| 211 | } |
| 212 | } else { |
| 213 | builder.append_null(); |
| 214 | } |
| 215 | } |
| 216 | |
| 217 | Ok(Arc::new(builder.finish())) |
| 218 | } |
| 219 | |
| 220 | /// Spark-compatible `hex` function |
| 221 | pub fn spark_hex(args: &[ColumnarValue]) -> Result<ColumnarValue, DataFusionError> { |
no test coverage detected
searching dependent graphs…