@@ -169,139 +169,101 @@ impl<W: Write> BatchWriter<W> {
169
169
match col. data_type ( ) {
170
170
DataType :: Boolean => {
171
171
let arr = col. as_any ( ) . downcast_ref :: < BooleanArray > ( ) . unwrap ( ) ;
172
-
173
172
// boolean array is the only type we write the array length because it cannot
174
- // be determined from the data buffer size
173
+ // be determined from the data buffer size (length is in bits rather than bytes)
175
174
self . write_all ( & arr. len ( ) . to_le_bytes ( ) ) ?;
176
-
177
175
// write data buffer
178
- let buffer = arr. values ( ) ;
179
- let buffer = buffer. inner ( ) ;
180
- self . write_buffer ( buffer) ?;
181
-
176
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
177
+ // write null buffer
182
178
self . write_null_buffer ( arr. nulls ( ) ) ?;
183
179
}
184
180
DataType :: Int8 => {
185
181
let arr = col. as_any ( ) . downcast_ref :: < Int8Array > ( ) . unwrap ( ) ;
186
-
187
182
// write data buffer
188
- let buffer = arr. values ( ) ;
189
- let buffer = buffer. inner ( ) ;
190
- self . write_buffer ( buffer) ?;
191
-
183
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
184
+ // write null buffer
192
185
self . write_null_buffer ( arr. nulls ( ) ) ?;
193
186
}
194
187
DataType :: Int16 => {
195
188
let arr = col. as_any ( ) . downcast_ref :: < Int16Array > ( ) . unwrap ( ) ;
196
-
197
189
// write data buffer
198
- let buffer = arr. values ( ) ;
199
- let buffer = buffer. inner ( ) ;
200
- self . write_buffer ( buffer) ?;
201
-
190
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
191
+ // write null buffer
202
192
self . write_null_buffer ( arr. nulls ( ) ) ?;
203
193
}
204
194
DataType :: Int32 => {
205
195
let arr = col. as_any ( ) . downcast_ref :: < Int32Array > ( ) . unwrap ( ) ;
206
-
207
196
// write data buffer
208
- let buffer = arr. values ( ) ;
209
- let buffer = buffer. inner ( ) ;
210
- self . write_buffer ( buffer) ?;
211
-
197
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
198
+ // write null buffer
212
199
self . write_null_buffer ( arr. nulls ( ) ) ?;
213
200
}
214
201
DataType :: Int64 => {
215
202
let arr = col. as_any ( ) . downcast_ref :: < Int64Array > ( ) . unwrap ( ) ;
216
-
217
203
// write data buffer
218
- let buffer = arr. values ( ) ;
219
- let buffer = buffer. inner ( ) ;
220
- self . write_buffer ( buffer) ?;
221
-
204
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
205
+ // write null buffer
222
206
self . write_null_buffer ( arr. nulls ( ) ) ?;
223
207
}
224
208
DataType :: Float32 => {
225
209
let arr = col. as_any ( ) . downcast_ref :: < Float32Array > ( ) . unwrap ( ) ;
226
-
227
210
// write data buffer
228
- let buffer = arr. values ( ) ;
229
- let buffer = buffer. inner ( ) ;
230
- self . write_buffer ( buffer) ?;
231
-
211
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
212
+ // write null buffer
232
213
self . write_null_buffer ( arr. nulls ( ) ) ?;
233
214
}
234
215
DataType :: Float64 => {
235
216
let arr = col. as_any ( ) . downcast_ref :: < Float64Array > ( ) . unwrap ( ) ;
236
-
237
217
// write data buffer
238
- let buffer = arr. values ( ) ;
239
- let buffer = buffer. inner ( ) ;
240
- self . write_buffer ( buffer) ?;
241
-
218
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
219
+ // write null buffer
242
220
self . write_null_buffer ( arr. nulls ( ) ) ?;
243
221
}
244
222
DataType :: Date32 => {
245
223
let arr = col. as_any ( ) . downcast_ref :: < Date32Array > ( ) . unwrap ( ) ;
246
-
247
224
// write data buffer
248
- let buffer = arr. values ( ) ;
249
- let buffer = buffer. inner ( ) ;
250
- self . write_buffer ( buffer) ?;
251
-
225
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
226
+ // write null buffer
252
227
self . write_null_buffer ( arr. nulls ( ) ) ?;
253
228
}
254
229
DataType :: Timestamp ( TimeUnit :: Microsecond , _) => {
255
230
let arr = col
256
231
. as_any ( )
257
232
. downcast_ref :: < TimestampMicrosecondArray > ( )
258
233
. unwrap ( ) ;
259
-
260
234
// write data buffer
261
- let buffer = arr. values ( ) ;
262
- let buffer = buffer. inner ( ) ;
263
- self . write_buffer ( buffer) ?;
264
-
235
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
236
+ // write null buffer
265
237
self . write_null_buffer ( arr. nulls ( ) ) ?;
266
238
}
267
239
DataType :: Decimal128 ( _, _) => {
268
240
let arr = col. as_any ( ) . downcast_ref :: < Decimal128Array > ( ) . unwrap ( ) ;
269
-
270
241
// write data buffer
271
- let buffer = arr. values ( ) ;
272
- let buffer = buffer. inner ( ) ;
273
- self . write_buffer ( buffer) ?;
274
-
242
+ self . write_buffer ( arr. values ( ) . inner ( ) ) ?;
243
+ // write null buffer
275
244
self . write_null_buffer ( arr. nulls ( ) ) ?;
276
245
}
277
246
DataType :: Utf8 => {
278
247
let arr = col. as_any ( ) . downcast_ref :: < StringArray > ( ) . unwrap ( ) ;
279
-
280
248
// write data buffer
281
- let buffer = arr. values ( ) ;
282
- self . write_buffer ( buffer) ?;
283
-
249
+ self . write_buffer ( arr. values ( ) ) ?;
284
250
// write offset buffer
285
251
let offsets = arr. offsets ( ) ;
286
252
let scalar_buffer = offsets. inner ( ) ;
287
- let buffer = scalar_buffer. inner ( ) ;
288
- self . write_buffer ( buffer) ?;
289
-
253
+ self . write_buffer ( scalar_buffer. inner ( ) ) ?;
254
+ // write null buffer
290
255
self . write_null_buffer ( arr. nulls ( ) ) ?;
291
256
}
292
257
DataType :: Binary => {
293
258
let arr = col. as_any ( ) . downcast_ref :: < BinaryArray > ( ) . unwrap ( ) ;
294
-
295
259
// write data buffer
296
- let buffer = arr. values ( ) ;
297
- self . write_buffer ( buffer) ?;
298
-
260
+ self . write_buffer ( arr. values ( ) ) ?;
299
261
// write offset buffer
300
262
let offsets = arr. offsets ( ) ;
301
263
let scalar_buffer = offsets. inner ( ) ;
302
264
let buffer = scalar_buffer. inner ( ) ;
303
265
self . write_buffer ( buffer) ?;
304
-
266
+ // write null buffer
305
267
self . write_null_buffer ( arr. nulls ( ) ) ?;
306
268
}
307
269
DataType :: Dictionary ( k, _) if * * k == DataType :: Int32 => {
@@ -327,10 +289,8 @@ impl<W: Write> BatchWriter<W> {
327
289
) -> Result < ( ) , DataFusionError > {
328
290
if let Some ( nulls) = null_buffer {
329
291
let buffer = nulls. inner ( ) ;
330
-
331
292
// write null buffer length in bits
332
293
self . write_all ( & buffer. len ( ) . to_le_bytes ( ) ) ?;
333
-
334
294
// write null buffer
335
295
let buffer = buffer. inner ( ) ;
336
296
self . write_buffer ( buffer) ?;
0 commit comments