| 189 | } // ImpalaServer::WaitForResults |
| 190 | |
| 191 | Status ImpalaServer::SubmitQuery(const string& sql, const TUniqueId& session_id, |
| 192 | TUniqueId& new_query_id, const bool persist_in_db) { |
| 193 | |
| 194 | // build a query context |
| 195 | TQueryCtx query_context; |
| 196 | query_context.client_request.stmt = sql; |
| 197 | |
| 198 | // locate the previously opened session |
| 199 | shared_ptr<SessionState> session_state; |
| 200 | { |
| 201 | lock_guard<mutex> l(session_state_map_lock_); |
| 202 | |
| 203 | const auto iter = session_state_map_.find(session_id); |
| 204 | if (iter == session_state_map_.end()) { |
| 205 | return Status::Expected(TErrorCode::GENERAL, PrintId(session_id)); |
| 206 | } |
| 207 | |
| 208 | session_state = iter->second; |
| 209 | } |
| 210 | |
| 211 | session_state->ToThrift(session_state->session_id, &query_context.session); |
| 212 | |
| 213 | query_context.client_request.query_options = session_state->QueryOptions(); |
| 214 | AddPoolConfiguration(&query_context, ~session_state->set_query_options_mask); |
| 215 | |
| 216 | QueryHandle query_handle; |
| 217 | RETURN_IF_ERROR(Execute(&query_context, session_state, &query_handle, nullptr, |
| 218 | persist_in_db)); |
| 219 | new_query_id = query_handle->query_id(); |
| 220 | |
| 221 | return SetQueryInflight(session_state, query_handle); |
| 222 | } // ImpalaServer::SubmitQuery |
| 223 | |
| 224 | Status ImpalaServer::FetchAllRowsHS2(const TUniqueId& query_id, |
| 225 | vector<TRow>& query_results, results_columns* columns) { |