#pragma once #include #include namespace DB { struct ASTTableExpression; class ASTSelectQuery; class Context; NameSet removeDuplicateColumns(NamesAndTypesList & columns); std::vector getTableExpressions(const ASTSelectQuery & select_query); const ASTTableExpression * getTableExpression(const ASTSelectQuery & select, size_t table_number); ASTPtr extractTableExpression(const ASTSelectQuery & select, size_t table_number); NamesAndTypesList getColumnsFromTableExpression(const ASTTableExpression & table_expression, const Context & context); std::vector getDatabaseAndTablesWithColumns(const std::vector & table_expressions, const Context & context); std::vector getDatabaseAndTablesWithColumnNames(const std::vector & table_expressions, const Context & context); }