MCPcopy Create free account
hub / github.com/apache/arrow / PrepareBuffersForField

Method PrepareBuffersForField

cpp/src/gandiva/annotator.cc:66–94  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64}
65
66void Annotator::PrepareBuffersForField(const FieldDescriptor& desc,
67 const arrow::ArrayData& array_data,
68 EvalBatch* eval_batch, bool is_output) const {
69 int buffer_idx = 0;
70
71 // The validity buffer is optional. Use nullptr if it does not have one.
72 if (array_data.buffers[buffer_idx]) {
73 uint8_t* validity_buf = const_cast<uint8_t*>(array_data.buffers[buffer_idx]->data());
74 eval_batch->SetBuffer(desc.validity_idx(), validity_buf, array_data.offset);
75 } else {
76 eval_batch->SetBuffer(desc.validity_idx(), nullptr, array_data.offset);
77 }
78 ++buffer_idx;
79
80 if (desc.HasOffsetsIdx()) {
81 uint8_t* offsets_buf = const_cast<uint8_t*>(array_data.buffers[buffer_idx]->data());
82 eval_batch->SetBuffer(desc.offsets_idx(), offsets_buf, array_data.offset);
83 ++buffer_idx;
84 }
85
86 uint8_t* data_buf = const_cast<uint8_t*>(array_data.buffers[buffer_idx]->data());
87 eval_batch->SetBuffer(desc.data_idx(), data_buf, array_data.offset);
88 if (is_output) {
89 // pass in the Buffer object for output data buffers. Can be used for resizing.
90 uint8_t* data_buf_ptr =
91 reinterpret_cast<uint8_t*>(array_data.buffers[buffer_idx].get());
92 eval_batch->SetBuffer(desc.data_buffer_ptr_idx(), data_buf_ptr, array_data.offset);
93 }
94}
95
96EvalBatchPtr Annotator::PrepareEvalBatch(const arrow::RecordBatch& record_batch,
97 const ArrayDataVector& out_vector) const {

Callers

nothing calls this directly

Calls 8

SetBufferMethod · 0.80
validity_idxMethod · 0.80
HasOffsetsIdxMethod · 0.80
offsets_idxMethod · 0.80
data_idxMethod · 0.80
data_buffer_ptr_idxMethod · 0.80
dataMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected