(args: &[ArrayRef])
| 128 | } |
| 129 | |
| 130 | fn spark_substring(args: &[ArrayRef]) -> Result<ArrayRef> { |
| 131 | let start_array = as_int64_array(&args[1])?; |
| 132 | let length_array = if args.len() > 2 { |
| 133 | Some(as_int64_array(&args[2])?) |
| 134 | } else { |
| 135 | None |
| 136 | }; |
| 137 | |
| 138 | match args[0].data_type() { |
| 139 | DataType::Utf8 => { |
| 140 | let array = args[0].as_string::<i32>(); |
| 141 | let is_ascii = enable_ascii_fast_path(&array, start_array, length_array); |
| 142 | spark_substring_generic( |
| 143 | &array, |
| 144 | start_array, |
| 145 | length_array, |
| 146 | GenericStringBuilder::<i32>::new(), |
| 147 | is_ascii, |
| 148 | ) |
| 149 | } |
| 150 | DataType::LargeUtf8 => { |
| 151 | let array = args[0].as_string::<i64>(); |
| 152 | let is_ascii = enable_ascii_fast_path(&array, start_array, length_array); |
| 153 | spark_substring_generic( |
| 154 | &array, |
| 155 | start_array, |
| 156 | length_array, |
| 157 | GenericStringBuilder::<i64>::new(), |
| 158 | is_ascii, |
| 159 | ) |
| 160 | } |
| 161 | DataType::Utf8View => { |
| 162 | let array = args[0].as_string_view(); |
| 163 | let is_ascii = enable_ascii_fast_path(&array, start_array, length_array); |
| 164 | spark_substring_generic( |
| 165 | &array, |
| 166 | start_array, |
| 167 | length_array, |
| 168 | StringViewBuilder::new(), |
| 169 | is_ascii, |
| 170 | ) |
| 171 | } |
| 172 | // Binary paths always use byte-level indexing, so `is_ascii` is irrelevant |
| 173 | // and set to `true` (its value is ignored by the `[u8]` impl of |
| 174 | // `SubstringItem`). |
| 175 | DataType::Binary => spark_substring_generic( |
| 176 | &args[0].as_binary::<i32>(), |
| 177 | start_array, |
| 178 | length_array, |
| 179 | GenericBinaryBuilder::<i32>::new(), |
| 180 | true, |
| 181 | ), |
| 182 | DataType::LargeBinary => spark_substring_generic( |
| 183 | &args[0].as_binary::<i64>(), |
| 184 | start_array, |
| 185 | length_array, |
| 186 | GenericBinaryBuilder::<i64>::new(), |
| 187 | true, |
nothing calls this directly
no test coverage detected
searching dependent graphs…