#pragma once #ifdef OS_LINUX /// Because of 'sigqueue' functions and RT signals. #include #include #include namespace Poco { class Logger; } namespace DB { class Context; /// Allows to introspect stack trace of all server threads. /// It acts like an embedded debugger. /// More than one instance of this table cannot be used. class StorageSystemStackTrace final : public ext::shared_ptr_helper, public IStorageSystemOneBlock { friend struct ext::shared_ptr_helper; public: String getName() const override { return "SystemStackTrace"; } static NamesAndTypesList getNamesAndTypes(); StorageSystemStackTrace(const StorageID & table_id_); protected: using IStorageSystemOneBlock::IStorageSystemOneBlock; void fillData(MutableColumns & res_columns, ContextPtr context, const SelectQueryInfo & query_info) const override; mutable std::mutex mutex; Poco::Logger * log; }; } #endif