void select_prepared_statement()

in src/afs.cc [2235:2280]


	void select_prepared_statement()
	{
		const char* tag = "select prepared statement";

		pgstat_report_activity(
			STATE_RUNNING, (std::string(Tag) + ": selecting prepared statement").c_str());

		auto session = find_session();
		SharedSessionReleaser sessionReleaser(sessions_, session);
		std::string handle;
		auto preparedStatement = find_prepared_statement(session, handle, tag);
		P("%s: %s: %s: %s", Tag, tag_, tag, handle.c_str());

		if (!preparedStatement)
		{
			return;
		}

		ScopedTransaction scopedTransaction;
		ScopedSnapshot scopedSnapshot;

		SetCurrentStatementStartTimestamp();
		SPI_connect();
		needFinish_ = true;
		struct Data {
			Executor* executor;
			const char* tag;
		} data = {this, tag};
		auto status = preparedStatement->select(
			[](void* data) {
				auto d = static_cast<Data*>(data);
				return d->executor->write_record_batches(d->tag);
			},
			&data);
		if (!status.ok())
		{
			set_error_message(session,
			                  std::string(Tag) + ": " + tag_ + ": " + tag +
			                      ": failed to select a prepared statement: <" + handle +
			                      ">: " + status.ToString(),
			                  tag);
		}
		SPI_finish();
		needFinish_ = false;
		signal_server(tag);
	}