|
824 | 824 | <a href="#824" id="824">824</a> |
825 | 825 | <a href="#825" id="825">825</a> |
826 | 826 | <a href="#826" id="826">826</a> |
| 827 | +<a href="#827" id="827">827</a> |
| 828 | +<a href="#828" id="828">828</a> |
| 829 | +<a href="#829" id="829">829</a> |
| 830 | +<a href="#830" id="830">830</a> |
| 831 | +<a href="#831" id="831">831</a> |
| 832 | +<a href="#832" id="832">832</a> |
| 833 | +<a href="#833" id="833">833</a> |
| 834 | +<a href="#834" id="834">834</a> |
| 835 | +<a href="#835" id="835">835</a> |
| 836 | +<a href="#836" id="836">836</a> |
| 837 | +<a href="#837" id="837">837</a> |
| 838 | +<a href="#838" id="838">838</a> |
| 839 | +<a href="#839" id="839">839</a> |
| 840 | +<a href="#840" id="840">840</a> |
| 841 | +<a href="#841" id="841">841</a> |
| 842 | +<a href="#842" id="842">842</a> |
| 843 | +<a href="#843" id="843">843</a> |
| 844 | +<a href="#844" id="844">844</a> |
| 845 | +<a href="#845" id="845">845</a> |
| 846 | +<a href="#846" id="846">846</a> |
| 847 | +<a href="#847" id="847">847</a> |
| 848 | +<a href="#848" id="848">848</a> |
| 849 | +<a href="#849" id="849">849</a> |
| 850 | +<a href="#850" id="850">850</a> |
| 851 | +<a href="#851" id="851">851</a> |
| 852 | +<a href="#852" id="852">852</a> |
| 853 | +<a href="#853" id="853">853</a> |
| 854 | +<a href="#854" id="854">854</a> |
827 | 855 | </pre></div><pre class="rust"><code><span class="comment">// Licensed to the Apache Software Foundation (ASF) under one |
828 | 856 | // or more contributor license agreements. See the NOTICE file |
829 | 857 | // distributed with this work for additional information |
|
868 | 896 | } |
869 | 897 | } |
870 | 898 |
|
| 899 | + <span class="attr">#[inline] |
| 900 | + </span><span class="kw">fn </span>truncate_binary(s: <span class="kw-2">&</span>[u8], width: usize) -> <span class="kw-2">&</span>[u8] { |
| 901 | + <span class="kw-2">&</span>s[<span class="number">0</span>..width] |
| 902 | + } |
| 903 | + |
871 | 904 | <span class="attr">#[inline] |
872 | 905 | </span><span class="kw">fn </span>truncate_i32(v: i32, width: i32) -> i32 { |
873 | 906 | v - v.rem_euclid(width) |
|
945 | 978 | ); |
946 | 979 | <span class="prelude-val">Ok</span>(Arc::new(res)) |
947 | 980 | } |
| 981 | + DataType::Binary => { |
| 982 | + <span class="kw">let </span>len = <span class="self">self</span>.width <span class="kw">as </span>usize; |
| 983 | + <span class="kw">let </span>res: arrow_array::BinaryArray = arrow_array::BinaryArray::from_iter( |
| 984 | + input |
| 985 | + .as_any() |
| 986 | + .downcast_ref::<arrow_array::BinaryArray>() |
| 987 | + .unwrap() |
| 988 | + .iter() |
| 989 | + .map(|v| v.map(|v| <span class="self">Self</span>::truncate_binary(v, len))), |
| 990 | + ); |
| 991 | + <span class="prelude-val">Ok</span>(Arc::new(res)) |
| 992 | + } |
948 | 993 | <span class="kw">_ </span>=> <span class="prelude-val">Err</span>(<span class="kw">crate</span>::Error::new( |
949 | 994 | <span class="kw">crate</span>::ErrorKind::FeatureUnsupported, |
950 | 995 | <span class="macro">format!</span>( |
|
1573 | 1618 | .value(<span class="number">0</span>), |
1574 | 1619 | <span class="string">"ice" |
1575 | 1620 | </span>); |
| 1621 | + |
| 1622 | + <span class="comment">// test binary |
| 1623 | + </span><span class="kw">let </span>input = Arc::new(arrow_array::BinaryArray::from_vec(<span class="macro">vec!</span>[<span class="string">b"iceberg"</span>])); |
| 1624 | + <span class="kw">let </span>res = <span class="kw">super</span>::Truncate::new(<span class="number">3</span>).transform(input).unwrap(); |
| 1625 | + <span class="macro">assert_eq!</span>( |
| 1626 | + res.as_any() |
| 1627 | + .downcast_ref::<arrow_array::BinaryArray>() |
| 1628 | + .unwrap() |
| 1629 | + .value(<span class="number">0</span>), |
| 1630 | + <span class="string">b"ice" |
| 1631 | + </span>); |
1576 | 1632 | } |
1577 | 1633 |
|
1578 | 1634 | <span class="attr">#[test] |
|
0 commit comments