in src/failover/failover_service.cc [388:413]
bool FailoverService::is_connected_to_writer(SQLHDBC hdbc) {
SQLHSTMT stmt = SQL_NULL_HANDLE;
SQLTCHAR writer_id[BUFFER_SIZE];
if (!odbc_helper_->AllocateHandle(SQL_HANDLE_STMT, hdbc, stmt, "[Failover Service] writer failed to allocate handle")) {
return false;
}
if (!odbc_helper_->ExecuteQuery(stmt, AS_SQLTCHAR(dialect_->GetWriterIdQuery().c_str()),
"[Failover Service] writer failed to execute writer query")) {
return false;
}
SQLLEN rt = 0;
SQLRETURN rc = SQLBindCol(stmt, 1, SQL_C_SLONG, &writer_id, sizeof(writer_id), &rt);
if (!OdbcHelper::CheckResult(rc, "[Failover Service] writer failed to bind writer_id column", stmt, SQL_HANDLE_STMT)) {
OdbcHelper::Cleanup(SQL_NULL_HANDLE, SQL_NULL_HANDLE, stmt);
return false;
}
if (!odbc_helper_->FetchResults(stmt, "[Failover Service] writer failed to fetch writer from results")) {
return false;
}
return writer_id[0] != TEXT('\0');
}