forked from ClickHouse/ClickHouse
-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathextractTableFunctionFromSelectQuery.cpp
More file actions
52 lines (41 loc) · 1.62 KB
/
extractTableFunctionFromSelectQuery.cpp
File metadata and controls
52 lines (41 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <Storages/extractTableFunctionFromSelectQuery.h>
#include <Parsers/ASTExpressionList.h>
#include <Parsers/ASTLiteral.h>
#include <Parsers/ASTSelectQuery.h>
#include <Parsers/ASTTablesInSelectQuery.h>
namespace DB
{
ASTTableExpression * extractTableExpressionASTPtrFromSelectQuery(ASTPtr & query)
{
auto * select_query = query->as<ASTSelectQuery>();
if (!select_query || !select_query->tables())
return nullptr;
auto * tables = select_query->tables()->as<ASTTablesInSelectQuery>();
auto * table_expression = tables->children[0]->as<ASTTablesInSelectQueryElement>()->table_expression->as<ASTTableExpression>();
return table_expression;
}
ASTPtr extractTableFunctionASTPtrFromSelectQuery(ASTPtr & query)
{
auto table_expression = extractTableExpressionASTPtrFromSelectQuery(query);
return table_expression ? table_expression->table_function : nullptr;
}
ASTPtr extractTableASTPtrFromSelectQuery(ASTPtr & query)
{
auto table_expression = extractTableExpressionASTPtrFromSelectQuery(query);
return table_expression ? table_expression->database_and_table_name : nullptr;
}
ASTFunction * extractTableFunctionFromSelectQuery(ASTPtr & query)
{
auto table_function_ast = extractTableFunctionASTPtrFromSelectQuery(query);
if (!table_function_ast)
return nullptr;
return table_function_ast->as<ASTFunction>();
}
ASTExpressionList * extractTableFunctionArgumentsFromSelectQuery(ASTPtr & query)
{
auto * table_function = extractTableFunctionFromSelectQuery(query);
if (!table_function)
return nullptr;
return table_function->arguments->as<ASTExpressionList>();
}
}