#pragma once #include #include #include #include namespace DB { class TableFunctionExplain : public ITableFunction { public: static constexpr auto name = "viewExplain"; std::string getName() const override { return name; } private: StoragePtr executeImpl(const ASTPtr & ast_function, ContextPtr context, const String & table_name, ColumnsDescription cached_columns) const override; const char * getStorageTypeName() const override { return "Explain"; } void parseArguments(const ASTPtr & ast_function, ContextPtr context) override; ColumnsDescription getActualTableStructure(ContextPtr context) const override; InterpreterExplainQuery getInterpreter(ContextPtr context) const; ASTPtr query = nullptr; }; }