1#pragma once
2
3#include <Parsers/IAST.h>
4#include <Interpreters/Aliases.h>
5#include <Interpreters/InDepthNodeVisitor.h>
6
7namespace DB
8{
9
10class ASTFunction;
11struct ASTTableExpression;
12
13class MarkTableIdentifiersMatcher
14{
15public:
16 using Visitor = InDepthNodeVisitor<MarkTableIdentifiersMatcher, true>;
17
18 struct Data
19 {
20 const Aliases & aliases;
21 };
22
23 static bool needChildVisit(ASTPtr & node, const ASTPtr & child);
24 static void visit(ASTPtr & ast, Data & data);
25
26private:
27 static void visit(ASTTableExpression & table, ASTPtr &, Data &);
28 static void visit(const ASTFunction & func, ASTPtr &, Data &);
29};
30
31using MarkTableIdentifiersVisitor = MarkTableIdentifiersMatcher::Visitor;
32
33}
34