16
16
// under the License.
17
17
18
18
use crate :: array:: print_long_array;
19
- use crate :: builder:: GenericBytesViewBuilder ;
19
+ use crate :: builder:: GenericByteViewBuilder ;
20
20
use crate :: iterator:: ArrayIter ;
21
21
use crate :: types:: bytes:: ByteArrayNativeType ;
22
- use crate :: types:: BytesViewType ;
22
+ use crate :: types:: { BinaryViewType , ByteViewType , StringViewType } ;
23
23
use crate :: { Array , ArrayAccessor , ArrayRef } ;
24
24
use arrow_buffer:: { Buffer , NullBuffer , ScalarBuffer } ;
25
- use arrow_data:: { ArrayData , ArrayDataBuilder , BytesView } ;
25
+ use arrow_data:: { ArrayData , ArrayDataBuilder , ByteView } ;
26
26
use arrow_schema:: { ArrowError , DataType } ;
27
27
use std:: any:: Any ;
28
28
use std:: fmt:: Debug ;
29
29
use std:: marker:: PhantomData ;
30
30
use std:: sync:: Arc ;
31
31
32
32
/// An array of variable length bytes view arrays
33
- pub struct GenericBytesViewArray < T : BytesViewType + ?Sized > {
33
+ pub struct GenericByteViewArray < T : ByteViewType + ?Sized > {
34
34
data_type : DataType ,
35
35
views : ScalarBuffer < u128 > ,
36
36
buffers : Vec < Buffer > ,
37
37
phantom : PhantomData < T > ,
38
38
nulls : Option < NullBuffer > ,
39
39
}
40
40
41
- impl < T : BytesViewType + ?Sized > Clone for GenericBytesViewArray < T > {
41
+ impl < T : ByteViewType + ?Sized > Clone for GenericByteViewArray < T > {
42
42
fn clone ( & self ) -> Self {
43
43
Self {
44
44
data_type : T :: DATA_TYPE ,
@@ -50,22 +50,22 @@ impl<T: BytesViewType + ?Sized> Clone for GenericBytesViewArray<T> {
50
50
}
51
51
}
52
52
53
- impl < T : BytesViewType + ?Sized > GenericBytesViewArray < T > {
54
- /// Create a new [`GenericBytesViewArray `] from the provided parts, panicking on failure
53
+ impl < T : ByteViewType + ?Sized > GenericByteViewArray < T > {
54
+ /// Create a new [`GenericByteViewArray `] from the provided parts, panicking on failure
55
55
///
56
56
/// # Panics
57
57
///
58
- /// Panics if [`GenericBytesViewArray ::try_new`] returns an error
58
+ /// Panics if [`GenericByteViewArray ::try_new`] returns an error
59
59
pub fn new ( views : ScalarBuffer < u128 > , buffers : Vec < Buffer > , nulls : Option < NullBuffer > ) -> Self {
60
60
Self :: try_new ( views, buffers, nulls) . unwrap ( )
61
61
}
62
62
63
- /// Create a new [`GenericBytesViewArray `] from the provided parts, returning an error on failure
63
+ /// Create a new [`GenericByteViewArray `] from the provided parts, returning an error on failure
64
64
///
65
65
/// # Errors
66
66
///
67
67
/// * `views.len() != nulls.len()`
68
- /// * [BytesViewType ::validate] fails
68
+ /// * [ByteViewType ::validate] fails
69
69
pub fn try_new (
70
70
views : ScalarBuffer < u128 > ,
71
71
buffers : Vec < Buffer > ,
@@ -93,7 +93,7 @@ impl<T: BytesViewType + ?Sized> GenericBytesViewArray<T> {
93
93
} )
94
94
}
95
95
96
- /// Create a new [`GenericBytesViewArray `] from the provided parts, without validation
96
+ /// Create a new [`GenericByteViewArray `] from the provided parts, without validation
97
97
///
98
98
/// # Safety
99
99
///
@@ -112,7 +112,7 @@ impl<T: BytesViewType + ?Sized> GenericBytesViewArray<T> {
112
112
}
113
113
}
114
114
115
- /// Create a new [`GenericBytesViewArray `] of length `len` where all values are null
115
+ /// Create a new [`GenericByteViewArray `] of length `len` where all values are null
116
116
pub fn new_null ( len : usize ) -> Self {
117
117
Self {
118
118
data_type : T :: DATA_TYPE ,
@@ -123,14 +123,14 @@ impl<T: BytesViewType + ?Sized> GenericBytesViewArray<T> {
123
123
}
124
124
}
125
125
126
- /// Creates a [`GenericBytesViewArray `] based on an iterator of values without nulls
126
+ /// Creates a [`GenericByteViewArray `] based on an iterator of values without nulls
127
127
pub fn from_iter_values < Ptr , I > ( iter : I ) -> Self
128
128
where
129
129
Ptr : AsRef < T :: Native > ,
130
130
I : IntoIterator < Item = Ptr > ,
131
131
{
132
132
let iter = iter. into_iter ( ) ;
133
- let mut builder = GenericBytesViewBuilder :: < T > :: with_capacity ( iter. size_hint ( ) . 0 ) ;
133
+ let mut builder = GenericByteViewBuilder :: < T > :: with_capacity ( iter. size_hint ( ) . 0 ) ;
134
134
for v in iter {
135
135
builder. append_value ( v) ;
136
136
}
@@ -179,7 +179,7 @@ impl<T: BytesViewType + ?Sized> GenericBytesViewArray<T> {
179
179
let ptr = self . views . as_ptr ( ) as * const u8 ;
180
180
std:: slice:: from_raw_parts ( ptr. add ( idx * 16 + 4 ) , len as usize )
181
181
} else {
182
- let view = BytesView :: from ( * v) ;
182
+ let view = ByteView :: from ( * v) ;
183
183
let data = self . buffers . get_unchecked ( view. buffer_index as usize ) ;
184
184
let offset = view. offset as usize ;
185
185
data. get_unchecked ( offset..offset + len as usize )
@@ -204,7 +204,7 @@ impl<T: BytesViewType + ?Sized> GenericBytesViewArray<T> {
204
204
}
205
205
}
206
206
207
- impl < T : BytesViewType + ?Sized > Debug for GenericBytesViewArray < T > {
207
+ impl < T : ByteViewType + ?Sized > Debug for GenericByteViewArray < T > {
208
208
fn fmt ( & self , f : & mut std:: fmt:: Formatter ) -> std:: fmt:: Result {
209
209
write ! ( f, "{}ViewArray\n [\n " , T :: PREFIX ) ?;
210
210
print_long_array ( self , f, |array, index, f| {
@@ -214,7 +214,7 @@ impl<T: BytesViewType + ?Sized> Debug for GenericBytesViewArray<T> {
214
214
}
215
215
}
216
216
217
- impl < T : BytesViewType + ?Sized > Array for GenericBytesViewArray < T > {
217
+ impl < T : ByteViewType + ?Sized > Array for GenericByteViewArray < T > {
218
218
fn as_any ( & self ) -> & dyn Any {
219
219
self
220
220
}
@@ -265,19 +265,19 @@ impl<T: BytesViewType + ?Sized> Array for GenericBytesViewArray<T> {
265
265
}
266
266
}
267
267
268
- impl < ' a , T : BytesViewType + ?Sized > ArrayAccessor for & ' a GenericBytesViewArray < T > {
268
+ impl < ' a , T : ByteViewType + ?Sized > ArrayAccessor for & ' a GenericByteViewArray < T > {
269
269
type Item = & ' a T :: Native ;
270
270
271
271
fn value ( & self , index : usize ) -> Self :: Item {
272
- GenericBytesViewArray :: value ( self , index)
272
+ GenericByteViewArray :: value ( self , index)
273
273
}
274
274
275
275
unsafe fn value_unchecked ( & self , index : usize ) -> Self :: Item {
276
- GenericBytesViewArray :: value_unchecked ( self , index)
276
+ GenericByteViewArray :: value_unchecked ( self , index)
277
277
}
278
278
}
279
279
280
- impl < ' a , T : BytesViewType + ?Sized > IntoIterator for & ' a GenericBytesViewArray < T > {
280
+ impl < ' a , T : ByteViewType + ?Sized > IntoIterator for & ' a GenericByteViewArray < T > {
281
281
type Item = Option < & ' a T :: Native > ;
282
282
type IntoIter = ArrayIter < Self > ;
283
283
@@ -286,7 +286,7 @@ impl<'a, T: BytesViewType + ?Sized> IntoIterator for &'a GenericBytesViewArray<T
286
286
}
287
287
}
288
288
289
- impl < T : BytesViewType + ?Sized > From < ArrayData > for GenericBytesViewArray < T > {
289
+ impl < T : ByteViewType + ?Sized > From < ArrayData > for GenericByteViewArray < T > {
290
290
fn from ( value : ArrayData ) -> Self {
291
291
let views = value. buffers ( ) [ 0 ] . clone ( ) ;
292
292
let views = ScalarBuffer :: new ( views, value. offset ( ) , value. len ( ) ) ;
@@ -301,8 +301,8 @@ impl<T: BytesViewType + ?Sized> From<ArrayData> for GenericBytesViewArray<T> {
301
301
}
302
302
}
303
303
304
- impl < T : BytesViewType + ?Sized > From < GenericBytesViewArray < T > > for ArrayData {
305
- fn from ( mut array : GenericBytesViewArray < T > ) -> Self {
304
+ impl < T : ByteViewType + ?Sized > From < GenericByteViewArray < T > > for ArrayData {
305
+ fn from ( mut array : GenericByteViewArray < T > ) -> Self {
306
306
let len = array. len ( ) ;
307
307
array. buffers . insert ( 0 , array. views . into_inner ( ) ) ;
308
308
let builder = ArrayDataBuilder :: new ( T :: DATA_TYPE )
@@ -314,30 +314,30 @@ impl<T: BytesViewType + ?Sized> From<GenericBytesViewArray<T>> for ArrayData {
314
314
}
315
315
}
316
316
317
- impl < Ptr , T : BytesViewType + ?Sized > FromIterator < Option < Ptr > > for GenericBytesViewArray < T >
317
+ impl < Ptr , T : ByteViewType + ?Sized > FromIterator < Option < Ptr > > for GenericByteViewArray < T >
318
318
where
319
319
Ptr : AsRef < T :: Native > ,
320
320
{
321
321
fn from_iter < I : IntoIterator < Item = Option < Ptr > > > ( iter : I ) -> Self {
322
322
let iter = iter. into_iter ( ) ;
323
- let mut builder = GenericBytesViewBuilder :: < T > :: with_capacity ( iter. size_hint ( ) . 0 ) ;
323
+ let mut builder = GenericByteViewBuilder :: < T > :: with_capacity ( iter. size_hint ( ) . 0 ) ;
324
324
builder. extend ( iter) ;
325
325
builder. finish ( )
326
326
}
327
327
}
328
328
329
- /// A [`GenericBytesViewArray `] of `[u8]`
330
- pub type BinaryViewArray = GenericBytesViewArray < [ u8 ] > ;
329
+ /// A [`GenericByteViewArray `] of `[u8]`
330
+ pub type BinaryViewArray = GenericByteViewArray < BinaryViewType > ;
331
331
332
- /// A [`GenericBytesViewArray `] of `str`
332
+ /// A [`GenericByteViewArray `] of `str`
333
333
///
334
334
/// ```
335
335
/// use arrow_array::StringViewArray;
336
336
/// let array = StringViewArray::from_iter_values(vec!["hello", "world", "lulu", "large payload over 12 bytes"]);
337
337
/// assert_eq!(array.value(0), "hello");
338
338
/// assert_eq!(array.value(3), "large payload over 12 bytes");
339
339
/// ```
340
- pub type StringViewArray = GenericBytesViewArray < str > ;
340
+ pub type StringViewArray = GenericByteViewArray < StringViewType > ;
341
341
342
342
impl From < Vec < & str > > for StringViewArray {
343
343
fn from ( v : Vec < & str > ) -> Self {
@@ -348,7 +348,6 @@ impl From<Vec<&str>> for StringViewArray {
348
348
#[ cfg( test) ]
349
349
mod tests {
350
350
use crate :: builder:: StringViewBuilder ;
351
- use crate :: types:: BytesViewType ;
352
351
use crate :: { Array , BinaryViewArray , StringViewArray } ;
353
352
354
353
#[ test]
@@ -363,10 +362,10 @@ mod tests {
363
362
assert_eq ! ( array. value( 3 ) , "large payload over 12 bytes" ) ;
364
363
365
364
let array = BinaryViewArray :: from_iter_values ( vec ! [
366
- b"hello" . to_bytes ( ) ,
367
- b"world" . to_bytes ( ) ,
368
- b"lulu" . to_bytes ( ) ,
369
- b"large payload over 12 bytes" . to_bytes ( ) ,
365
+ b"hello" . as_slice ( ) ,
366
+ b"world" . as_slice ( ) ,
367
+ b"lulu" . as_slice ( ) ,
368
+ b"large payload over 12 bytes" . as_slice ( ) ,
370
369
] ) ;
371
370
assert_eq ! ( array. value( 0 ) , b"hello" ) ;
372
371
assert_eq ! ( array. value( 3 ) , b"large payload over 12 bytes" ) ;
0 commit comments