MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / fillData

Method fillData

src/Storages/System/StorageSystemAsyncLoader.cpp:79–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77}
78
79void StorageSystemAsyncLoader::fillData(MutableColumns & res_columns, ContextPtr context, const ActionsDAG::Node *, std::vector<UInt8>) const
80{
81 TimePoint now = std::chrono::system_clock::now();
82
83 AsyncLoader & async_loader = context->getAsyncLoader();
84
85 for (const auto & state : async_loader.getJobStates())
86 {
87 Array dependencies;
88 dependencies.reserve(state.job->dependencies.size());
89 for (const auto & dep : state.job->dependencies)
90 dependencies.emplace_back(dep->jobId());
91
92 TimePoint started = state.job->startTime();
93 TimePoint finished = state.job->finishTime();
94 TimePoint last = finished != TimePoint{} ? finished : now;
95 TimeDuration elapsed = started != TimePoint{} ? last - started : TimeDuration{0};
96 double elapsed_sec = static_cast<double>(std::chrono::duration_cast<std::chrono::nanoseconds>(elapsed).count()) * 1e-9;
97
98 Field ready_seqno;
99 if (state.ready_seqno)
100 ready_seqno = state.ready_seqno;
101
102 Field exception;
103 if (state.job->exception())
104 {
105 try
106 {
107 std::rethrow_exception(state.job->exception());
108 }
109 catch (...)
110 {
111 exception = getCurrentExceptionMessage(false);
112 }
113 }
114
115 size_t i = 0;
116 res_columns[i++]->insert(state.job->name);
117 res_columns[i++]->insert(state.job->jobId());
118 res_columns[i++]->insert(dependencies);
119 res_columns[i++]->insert(state.dependencies_left);
120 res_columns[i++]->insert(static_cast<Int8>(state.job->status()));
121 res_columns[i++]->insert(state.is_executing);
122 res_columns[i++]->insert(state.is_blocked);
123 res_columns[i++]->insert(state.is_ready);
124 res_columns[i++]->insert(elapsed_sec);
125 res_columns[i++]->insert(state.job->pool());
126 res_columns[i++]->insert(async_loader.getPoolName(state.job->pool()));
127 res_columns[i++]->insert(async_loader.getPoolPriority(state.job->pool()).value);
128 res_columns[i++]->insert(state.job->executionPool());
129 res_columns[i++]->insert(async_loader.getPoolName(state.job->executionPool()));
130 res_columns[i++]->insert(async_loader.getPoolPriority(state.job->executionPool()).value);
131 res_columns[i++]->insert(ready_seqno);
132 res_columns[i++]->insert(state.job->waitersCount());
133 res_columns[i++]->insert(exception);
134 res_columns[i++]->insert(timeInMicroseconds(state.job->scheduleTime()));
135 res_columns[i++]->insert(optionalTimeInMicroseconds(state.job->enqueueTime()));
136 res_columns[i++]->insert(optionalTimeInMicroseconds(state.job->startTime()));

Callers

nothing calls this directly

Calls 15

getJobStatesMethod · 0.80
jobIdMethod · 0.80
startTimeMethod · 0.80
finishTimeMethod · 0.80
getPoolPriorityMethod · 0.80
executionPoolMethod · 0.80
waitersCountMethod · 0.80
scheduleTimeMethod · 0.80
enqueueTimeMethod · 0.80
timeInMicrosecondsFunction · 0.70

Tested by

no test coverage detected