void update_prepared_statement()

in src/afs.cc [2282:2323]


	void update_prepared_statement()
	{
		const char* tag = "update prepared statement";

		pgstat_report_activity(
			STATE_RUNNING, (std::string(Tag) + ": updating 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;
		auto input = std::make_shared<SharedRingBufferInputStream>(this, localSession_);
		auto n_updated_records_result = preparedStatement->update(input);
		if (n_updated_records_result.ok())
		{
			session->nUpdatedRecords = *n_updated_records_result;
		}
		else
		{
			set_error_message(session,
			                  std::string(Tag) + ": " + tag_ + ": " + tag +
			                      ": failed to update a prepared statement: <" + handle +
			                      ">: " + n_updated_records_result.status().ToString(),
			                  tag);
		}
		SPI_finish();
		needFinish_ = false;
		signal_server(tag);
	}