arrow::Result update()

in src/afs.cc [1237:1262]


	arrow::Result<int64_t> update(uint64_t sessionID, const std::string& query)
	{
		auto session = find_session(sessionID);
		SessionReleaser sessionReleaser(sessions_, session);
		set_shared_string(session->updateQuery, query);
		session->nUpdatedRecords = -1;
		if (session->executorPID != InvalidPid)
		{
			P("%s: %s: update: kill executor: %d", Tag, tag_, session->executorPID);
			kill(session->executorPID, SIGUSR1);
		}
		{
			std::unique_lock<std::mutex> lock(mutex_);
			conditionVariable_.wait(lock, [&] {
				P("%s: %s: %s: wait: update", Tag, tag_, AFS_FUNC);
				return DsaPointerIsValid(session->errorMessage) ||
				       session->nUpdatedRecords >= 0;
			});
		}
		if (DsaPointerIsValid(session->errorMessage))
		{
			return report_session_error(session);
		}
		P("%s: %s: update: done: %ld", Tag, tag_, session->nUpdatedRecords);
		return session->nUpdatedRecords;
	}