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);
}