(input, type: :file)
| 18 | module Helper |
| 19 | module Readable |
| 20 | def read_table(input, type: :file) |
| 21 | if input.is_a?(Arrow::Buffer) |
| 22 | input_stream = Arrow::BufferInputStream.new(input) |
| 23 | else |
| 24 | input_stream = Arrow::FileInputStream.new(input) |
| 25 | end |
| 26 | begin |
| 27 | if type == :file |
| 28 | reader = Arrow::RecordBatchFileReader.new(input_stream) |
| 29 | record_batches = [] |
| 30 | reader.n_record_batches.times do |i| |
| 31 | record_batches << reader.read_record_batch(i) |
| 32 | end |
| 33 | yield(Arrow::Table.new(record_batches[0].schema, record_batches)) |
| 34 | else |
| 35 | reader = Arrow::RecordBatchStreamReader.new(input_stream) |
| 36 | begin |
| 37 | yield(reader.read_all) |
| 38 | ensure |
| 39 | reader.close |
| 40 | end |
| 41 | end |
| 42 | ensure |
| 43 | input_stream.close |
| 44 | end |
| 45 | end |
| 46 | end |
| 47 | end |
no test coverage detected