17
17
18
18
//! [`VariantArray`] implementation
19
19
20
-
21
20
use arrow:: array:: { Array , ArrayData , ArrayRef , AsArray , StructArray } ;
22
21
use arrow:: buffer:: NullBuffer ;
23
22
use arrow_schema:: { ArrowError , DataType } ;
@@ -168,16 +167,6 @@ impl VariantArray {
168
167
& self . value_ref
169
168
}
170
169
171
- /// Get the metadata bytes for a specific index
172
- pub fn metadata_bytes ( & self , index : usize ) -> & [ u8 ] {
173
- self . metadata_field ( ) . as_binary_view ( ) . value ( index)
174
- }
175
-
176
- /// Get the value bytes for a specific index
177
- pub fn value_bytes ( & self , index : usize ) -> & [ u8 ] {
178
- self . value_field ( ) . as_binary_view ( ) . value ( index)
179
- }
180
-
181
170
/// Get the field names for an object at the given index
182
171
pub fn get_field_names ( & self , index : usize ) -> Vec < String > {
183
172
if index >= self . len ( ) || self . is_null ( index) {
@@ -201,7 +190,7 @@ impl VariantArray {
201
190
pub fn with_fields_removed ( & self , field_names : & [ & str ] ) -> Result < Self , ArrowError > {
202
191
use parquet_variant:: VariantBuilder ;
203
192
use std:: collections:: HashSet ;
204
-
193
+
205
194
let fields_to_remove: HashSet < & str > = field_names. iter ( ) . copied ( ) . collect ( ) ;
206
195
let mut builder = crate :: variant_array_builder:: VariantArrayBuilder :: new ( self . len ( ) ) ;
207
196
@@ -210,19 +199,19 @@ impl VariantArray {
210
199
builder. append_null ( ) ;
211
200
} else {
212
201
let variant = self . value ( i) ;
213
-
202
+
214
203
// If it's an object, create a new object without the specified fields
215
204
if let Some ( obj) = variant. as_object ( ) {
216
205
let mut variant_builder = VariantBuilder :: new ( ) ;
217
206
let mut object_builder = variant_builder. new_object ( ) ;
218
-
207
+
219
208
// Add all fields except the ones to remove
220
209
for ( field_name, field_value) in obj. iter ( ) {
221
210
if !fields_to_remove. contains ( field_name) {
222
211
object_builder. insert ( field_name, field_value) ;
223
212
}
224
213
}
225
-
214
+
226
215
object_builder. finish ( ) . unwrap ( ) ;
227
216
let ( metadata, value) = variant_builder. finish ( ) ;
228
217
builder. append_variant_buffers ( & metadata, & value) ;
0 commit comments