| 173 | } |
| 174 | |
| 175 | Status QueryScanner::MaterializeNextTuple( |
| 176 | MemPool* pool, Tuple* tuple, const TupleDescriptor* tuple_desc) { |
| 177 | using impala::workloadmgmt::IncludeField; |
| 178 | DCHECK(!query_records_.empty()); |
| 179 | const QueryStateExpanded& query = *query_records_.front(); |
| 180 | const QueryStateRecord& record = *query.base_state; |
| 181 | ExecEnv* exec_env = ExecEnv::GetInstance(); |
| 182 | // Verify there are no clustering columns (partitions) to offset col_pos. |
| 183 | DCHECK_EQ(0, tuple_desc->table_desc()->num_clustering_cols()); |
| 184 | for (const SlotDescriptor* slot_desc : tuple_desc->slots()) { |
| 185 | void* slot = tuple->GetSlot(slot_desc->tuple_offset()); |
| 186 | |
| 187 | switch (slot_desc->col_pos()) { |
| 188 | case TQueryTableColumn::CLUSTER_ID: |
| 189 | RETURN_IF_ERROR(WriteStringSlot(FLAGS_cluster_id, pool, slot)); |
| 190 | break; |
| 191 | case TQueryTableColumn::QUERY_ID: |
| 192 | RETURN_IF_ERROR(WriteStringSlot(PrintId(record.id), pool, slot)); |
| 193 | break; |
| 194 | case TQueryTableColumn::SESSION_ID: |
| 195 | RETURN_IF_ERROR(WriteStringSlot(PrintId(query.session_id), pool, slot)); |
| 196 | break; |
| 197 | case TQueryTableColumn::SESSION_TYPE: |
| 198 | RETURN_IF_ERROR(WriteStringSlot(to_string(query.session_type), pool, slot)); |
| 199 | break; |
| 200 | case TQueryTableColumn::HIVESERVER2_PROTOCOL_VERSION: |
| 201 | if (query.session_type == TSessionType::HIVESERVER2) { |
| 202 | RETURN_IF_ERROR(WriteStringSlot( |
| 203 | query.hiveserver2_protocol_version_formatted(), pool, slot)); |
| 204 | } |
| 205 | break; |
| 206 | case TQueryTableColumn::DB_USER: |
| 207 | RETURN_IF_ERROR(WriteStringSlot(record.effective_user, pool, slot)); |
| 208 | break; |
| 209 | case TQueryTableColumn::DB_USER_CONNECTION: |
| 210 | RETURN_IF_ERROR(WriteStringSlot(query.db_user_connection, pool, slot)); |
| 211 | break; |
| 212 | case TQueryTableColumn::DB_NAME: |
| 213 | RETURN_IF_ERROR(WriteStringSlot(record.default_db, pool, slot)); |
| 214 | break; |
| 215 | case TQueryTableColumn::IMPALA_COORDINATOR: |
| 216 | RETURN_IF_ERROR(WriteStringSlot( |
| 217 | TNetworkAddressToString(exec_env->configured_backend_address()), pool, slot)); |
| 218 | break; |
| 219 | case TQueryTableColumn::QUERY_STATUS: |
| 220 | RETURN_IF_ERROR(WriteStringSlot(record.query_status.ok() ? |
| 221 | "OK" : record.query_status.msg().msg(), pool, slot)); |
| 222 | break; |
| 223 | case TQueryTableColumn::QUERY_STATE: |
| 224 | RETURN_IF_ERROR(WriteStringSlot(record.query_state, pool, slot)); |
| 225 | break; |
| 226 | case TQueryTableColumn::IMPALA_QUERY_END_STATE: |
| 227 | RETURN_IF_ERROR(WriteStringSlot(query.impala_query_end_state, pool, slot)); |
| 228 | break; |
| 229 | case TQueryTableColumn::QUERY_TYPE: |
| 230 | RETURN_IF_ERROR(WriteStringSlot(to_string(record.stmt_type), pool, slot)); |
| 231 | break; |
| 232 | case TQueryTableColumn::NETWORK_ADDRESS: |
nothing calls this directly
no test coverage detected