| 47 | } |
| 48 | |
| 49 | std::vector<TaskInfoLog> batchReadTaskLog(ContextPtr context, DateTime64 min_event_time) |
| 50 | { |
| 51 | std::vector<TaskInfoLog> result; |
| 52 | |
| 53 | auto event_time_str = serializeToText(min_event_time); |
| 54 | |
| 55 | auto event_date = convertToDate(min_event_time); |
| 56 | auto event_date_str = serializeToText(event_date); |
| 57 | |
| 58 | String table_sql = "system.auto_stats_task_log"; |
| 59 | auto select_sql = fmt::format( |
| 60 | FMT_STRING( |
| 61 | " select event_time, task_uuid, task_type, table_uuid, stats_row_count, udi, priority, retry, status, settings_json, columns" |
| 62 | " from (" |
| 63 | " select" |
| 64 | " *," |
| 65 | " row_number() over (" |
| 66 | " partition by task_uuid" |
| 67 | " order by event_time desc" |
| 68 | " ) as _tmp__rn" |
| 69 | " from {}" |
| 70 | " where event_date >= toDate('{}') and event_time >= toDateTime64('{}', 3)" |
| 71 | " ) " |
| 72 | " where _tmp__rn=1 and status not in ('Success', 'Failed', 'Cancelled')"), |
| 73 | table_sql, |
| 74 | event_date_str, |
| 75 | event_time_str); |
| 76 | |
| 77 | auto proc_block = [&result](Block & block) { |
| 78 | auto index_base = result.size(); |
| 79 | result.resize(result.size() + block.rows()); |
| 80 | for (size_t i = 0; i < block.columns(); ++i) |
| 81 | { |
| 82 | auto & column = block.safeGetByPosition(i).column; |
| 83 | for (size_t row = 0; row < block.rows(); ++row) |
| 84 | { |
| 85 | auto & task = result[index_base + row]; |
| 86 | switch (i) |
| 87 | { |
| 88 | case 0: |
| 89 | task.event_time = column->get64(row); |
| 90 | break; |
| 91 | case 1: |
| 92 | task.task_uuid = getUUID(column, row); |
| 93 | break; |
| 94 | case 2: |
| 95 | task.task_type = static_cast<TaskType>(column->get64(row)); |
| 96 | break; |
| 97 | case 3: |
| 98 | task.table_uuid = getUUID(column, row); |
| 99 | break; |
| 100 | case 4: |
| 101 | task.stats_row_count = column->get64(row); |
| 102 | break; |
| 103 | case 5: |
| 104 | task.udi_count = column->get64(row); |
| 105 | break; |
| 106 | case 6: |
no test coverage detected