#pragma once #include #include #include #include namespace DB { /** Вернуть список запросов, исполняющихся прямо сейчас. */ class InterpreterShowProcesslistQuery { public: InterpreterShowProcesslistQuery(ASTPtr query_ptr_, Context & context_) : query_ptr(query_ptr_), context(context_) {} BlockIO execute() { return executeQuery(getRewrittenQuery(), context, true); } BlockInputStreamPtr executeAndFormat(WriteBuffer & buf) { String query = getRewrittenQuery(); ReadBufferFromString in(query); BlockInputStreamPtr query_plan; executeQuery(in, buf, context, query_plan, true); return query_plan; } private: ASTPtr query_ptr; Context context; String getRewrittenQuery() { const ASTQueryWithOutput & query = dynamic_cast(*query_ptr); std::stringstream rewritten_query; rewritten_query << "SELECT * FROM system.processes"; if (query.format) rewritten_query << " FORMAT " << typeid_cast(*query.format).name; return rewritten_query.str(); } }; }