arrow::Status select()

in src/afs.cc [1313:1339]


	arrow::Status select(WriteFunc write, void* writeData)
	{
		if (parameters_.empty())
		{
			auto result = SPI_execute(query_.c_str(), false, 0);
			if (result <= 0)
			{
				return arrow::Status::Invalid("failed to run a query: ",
				                              SPI_result_code_string(result),
				                              ": ",
				                              query_);
			}
			return write(writeData);
		}

		for (const auto& recordBatch : parameters_)
		{
			SPIExecuteOptions options = {};
			std::vector<Oid> pgTypes;
			ARROW_RETURN_NOT_OK(prepare(options, pgTypes, recordBatch->schema()));
			auto plan = SPI_prepare(query_.c_str(), pgTypes.size(), pgTypes.data());
			ScopedPlan scopedPlan(plan);
			ARROW_RETURN_NOT_OK(
				execute(plan, recordBatch, options, [&]() { return write(writeData); }));
		}
		return arrow::Status::OK();
	}