arrow::Status build_may_null()

in src/afs.cc [1202:1234]


	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] = std::string(VARDATA_ANY(datum), VARSIZE_ANY_EXHDR(datum));
			}
		}
		if (haveNull)
		{
			return builder_->AppendValues(values_, validBytes_.data());
		}
		else
		{
			return builder_->AppendValues(values_);
		}
	}