1#pragma once
2
3#include <Parsers/IParserBase.h>
4
5
6namespace DB
7{
8
9/** List of single or multiple JOIN-ed tables or subqueries in SELECT query, with ARRAY JOINs and SAMPLE, FINAL modifiers.
10 */
11class ParserTablesInSelectQuery : public IParserBase
12{
13protected:
14 const char * getName() const { return "table, table function, subquery or list of joined tables"; }
15 bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected);
16};
17
18
19class ParserTablesInSelectQueryElement : public IParserBase
20{
21public:
22 ParserTablesInSelectQueryElement(bool is_first_) : is_first(is_first_) {}
23
24protected:
25 const char * getName() const { return "table, table function, subquery or list of joined tables"; }
26 bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected);
27
28private:
29 bool is_first;
30};
31
32
33class ParserTableExpression : public IParserBase
34{
35protected:
36 const char * getName() const { return "table or subquery or table function"; }
37 bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected);
38};
39
40
41class ParserArrayJoin : public IParserBase
42{
43protected:
44 const char * getName() const { return "array join"; }
45 bool parseImpl(Pos & pos, ASTPtr & node, Expected & expected);
46};
47
48
49}
50