in src/afs.cc [1084:1117]
arrow::Status build_may_null(uint64_t iTuple, uint64_t iTupleEnd)
{
bool haveNull = false;
uint64_t n = iTupleEnd - iTuple;
values_.resize(n);
validBytes_.resize(n);
for (uint64_t i = 0; i < n; ++i)
{
bool isNull;
auto datum = SPI_getbinval(SPI_tuptable->vals[iTuple + i],
SPI_tuptable->tupdesc,
iAttribute_ + 1,
&isNull);
if (isNull)
{
haveNull = true;
validBytes_[i] = 0;
}
else
{
validBytes_[i] = 1;
values_[i] = convert_value<ArrowType>(datum);
}
}
if (haveNull)
{
return builder_->AppendValues(
values_.data(), values_.size(), validBytes_.data());
}
else
{
return builder_->AppendValues(values_.data(), values_.size());
}
}