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

Function ExtractSegmenterValues

cpp/src/arrow/acero/aggregate_internal.cc:181–200  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

179}
180
181Status ExtractSegmenterValues(std::vector<Datum>* values_ptr,
182 const ExecBatch& input_batch,
183 const std::vector<int>& field_ids) {
184 DCHECK_GT(input_batch.length, 0);
185 std::vector<Datum>& values = *values_ptr;
186 DCHECK_EQ(values.size(), field_ids.size());
187 int64_t row = input_batch.length - 1;
188 for (size_t i = 0; i < field_ids.size(); i++) {
189 const Datum& value = input_batch.values[field_ids[i]];
190 if (value.is_scalar()) {
191 values[i] = value;
192 } else if (value.is_array()) {
193 ARROW_ASSIGN_OR_RAISE(auto scalar, value.make_array()->GetScalar(row));
194 values[i] = scalar;
195 } else {
196 DCHECK(false);
197 }
198 }
199 return Status::OK();
200}
201
202void PlaceFields(ExecBatch& batch, size_t base, std::vector<Datum>& values) {
203 DCHECK_LE(base + values.size(), batch.values.size());

Callers 2

InputReceivedMethod · 0.85
InputReceivedMethod · 0.85

Calls 4

is_scalarMethod · 0.80
is_arrayMethod · 0.80
OKFunction · 0.50
sizeMethod · 0.45

Tested by

no test coverage detected