in src/failover/cluster_topology_query_helper.cc [61:86]
std::string ClusterTopologyQueryHelper::GetNodeId(SQLHDBC hdbc) {
SQLHSTMT stmt = SQL_NULL_HANDLE;
SQLTCHAR node_id[BUFFER_SIZE] = {0};
SQLLEN rt = 0;
if (!OdbcHelper::AllocateHandle(SQL_HANDLE_STMT, hdbc, stmt, "ClusterTopologyQueryHelper failed to allocate handle")) {
return std::string();
}
if (!OdbcHelper::ExecuteQuery(stmt, AS_SQLTCHAR(node_id_query_.c_str()), "ClusterTopologyQueryHelper failed to execute node ID query")) {
return std::string();
}
SQLRETURN rc = SQLBindCol(stmt, NODE_ID_COL, SQL_C_TCHAR, &node_id, sizeof(node_id), &rt);
if (!OdbcHelper::CheckResult(rc, "ClusterTopologyQueryHelper failed to bind node_id column", stmt, SQL_HANDLE_STMT)) {
OdbcHelper::Cleanup(SQL_NULL_HANDLE, SQL_NULL_HANDLE, stmt);
return std::string();
}
if (!OdbcHelper::FetchResults(stmt, "ClusterTopologyQueryHelper failed to fetch node ID from results")) {
return std::string();
}
OdbcHelper::Cleanup(SQL_NULL_HANDLE, SQL_NULL_HANDLE, stmt);
return StringHelper::ToString(node_id);
}