mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 10:02:01 +00:00
Preparations, part 7: Analyzers use const Context (and could be used in ExpressionAnalyzer) [#CLICKHOUSE-31].
This commit is contained in:
parent
34cd1b9787
commit
c4f58f776b
@ -20,7 +20,7 @@ namespace ErrorCodes
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void AnalyzeResultOfQuery::process(ASTPtr & ast, Context & context)
|
void AnalyzeResultOfQuery::process(ASTPtr & ast, const Context & context)
|
||||||
{
|
{
|
||||||
const ASTSelectQuery * select = typeid_cast<const ASTSelectQuery *>(ast.get());
|
const ASTSelectQuery * select = typeid_cast<const ASTSelectQuery *>(ast.get());
|
||||||
if (!select)
|
if (!select)
|
||||||
|
@ -19,7 +19,7 @@ class Context;
|
|||||||
*/
|
*/
|
||||||
struct AnalyzeResultOfQuery
|
struct AnalyzeResultOfQuery
|
||||||
{
|
{
|
||||||
void process(ASTPtr & ast, Context & context);
|
void process(ASTPtr & ast, const Context & context);
|
||||||
|
|
||||||
/// Block will have non-nullptr columns for constant expressions.
|
/// Block will have non-nullptr columns for constant expressions.
|
||||||
Block result;
|
Block result;
|
||||||
|
@ -31,9 +31,9 @@ struct CollectAliases
|
|||||||
|
|
||||||
enum class Kind
|
enum class Kind
|
||||||
{
|
{
|
||||||
Expression, /// Example: SELECT a AS b, f(x) AS y
|
Expression, /// Example: SELECT a AS b, f(x) AS y
|
||||||
Table, /// Example: SELECT t.* FROM (SELECT 1) AS t
|
Table, /// Example: SELECT t.* FROM (SELECT 1) AS t
|
||||||
ArrayJoin /// Example: SELECT t.x.a FROM t ARRAY JOIN arr AS x
|
ArrayJoin /// Example: SELECT t.x.a FROM t ARRAY JOIN arr AS x
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AliasInfo
|
struct AliasInfo
|
||||||
|
@ -49,7 +49,7 @@ static CollectTables::TableInfo processOrdinaryTable(const ASTPtr & ast_database
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static CollectTables::TableInfo processTableFunction(const ASTPtr & ast_table_function, Context & context)
|
static CollectTables::TableInfo processTableFunction(const ASTPtr & ast_table_function, const Context & context)
|
||||||
{
|
{
|
||||||
const ASTFunction & function = typeid_cast<const ASTFunction &>(*ast_table_function);
|
const ASTFunction & function = typeid_cast<const ASTFunction &>(*ast_table_function);
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ static CollectTables::TableInfo processNoTables(const Context & context)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static CollectTables::TableInfo processSubquery(ASTPtr & ast_subquery, Context & context)
|
static CollectTables::TableInfo processSubquery(ASTPtr & ast_subquery, const Context & context)
|
||||||
{
|
{
|
||||||
AnalyzeResultOfQuery analyzer;
|
AnalyzeResultOfQuery analyzer;
|
||||||
analyzer.process(typeid_cast<ASTSubquery &>(*ast_subquery).children.at(0), context);
|
analyzer.process(typeid_cast<ASTSubquery &>(*ast_subquery).children.at(0), context);
|
||||||
@ -91,7 +91,7 @@ static CollectTables::TableInfo processSubquery(ASTPtr & ast_subquery, Context &
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CollectTables::process(ASTPtr & ast, Context & context, const CollectAliases & aliases)
|
void CollectTables::process(ASTPtr & ast, const Context & context, const CollectAliases & aliases)
|
||||||
{
|
{
|
||||||
const ASTSelectQuery * select = typeid_cast<const ASTSelectQuery *>(ast.get());
|
const ASTSelectQuery * select = typeid_cast<const ASTSelectQuery *>(ast.get());
|
||||||
if (!select)
|
if (!select)
|
||||||
|
@ -24,7 +24,7 @@ class WriteBuffer;
|
|||||||
*/
|
*/
|
||||||
struct CollectTables
|
struct CollectTables
|
||||||
{
|
{
|
||||||
void process(ASTPtr & ast, Context & context, const CollectAliases & aliases);
|
void process(ASTPtr & ast, const Context & context, const CollectAliases & aliases);
|
||||||
|
|
||||||
enum class Kind
|
enum class Kind
|
||||||
{
|
{
|
||||||
|
@ -56,7 +56,7 @@ using LambdaParameters = std::unordered_map<String, DataTypePtr>;
|
|||||||
|
|
||||||
|
|
||||||
void processImpl(
|
void processImpl(
|
||||||
ASTPtr & ast, Context & context,
|
ASTPtr & ast, const Context & context,
|
||||||
CollectAliases & aliases, const AnalyzeColumns & columns,
|
CollectAliases & aliases, const AnalyzeColumns & columns,
|
||||||
TypeAndConstantInference::Info & info,
|
TypeAndConstantInference::Info & info,
|
||||||
const AnalyzeLambdas & lambdas);
|
const AnalyzeLambdas & lambdas);
|
||||||
@ -76,7 +76,7 @@ void processLiteral(const String & column_name, const ASTPtr & ast, TypeAndConst
|
|||||||
|
|
||||||
|
|
||||||
void processIdentifier(const String & column_name, const ASTPtr & ast, TypeAndConstantInference::Info & info,
|
void processIdentifier(const String & column_name, const ASTPtr & ast, TypeAndConstantInference::Info & info,
|
||||||
Context & context, CollectAliases & aliases, const AnalyzeColumns & columns,
|
const Context & context, CollectAliases & aliases, const AnalyzeColumns & columns,
|
||||||
const AnalyzeLambdas & lambdas)
|
const AnalyzeLambdas & lambdas)
|
||||||
{
|
{
|
||||||
/// Column from table
|
/// Column from table
|
||||||
@ -258,7 +258,7 @@ void processFunction(const String & column_name, ASTPtr & ast, TypeAndConstantIn
|
|||||||
|
|
||||||
|
|
||||||
void processScalarSubquery(const String & column_name, ASTPtr & ast, TypeAndConstantInference::Info & info,
|
void processScalarSubquery(const String & column_name, ASTPtr & ast, TypeAndConstantInference::Info & info,
|
||||||
Context & context)
|
const Context & context)
|
||||||
{
|
{
|
||||||
ASTSubquery * subquery = static_cast<ASTSubquery *>(ast.get());
|
ASTSubquery * subquery = static_cast<ASTSubquery *>(ast.get());
|
||||||
|
|
||||||
@ -316,7 +316,7 @@ void processScalarSubquery(const String & column_name, ASTPtr & ast, TypeAndCons
|
|||||||
|
|
||||||
|
|
||||||
void processHigherOrderFunction(const String & column_name,
|
void processHigherOrderFunction(const String & column_name,
|
||||||
ASTPtr & ast, Context & context,
|
ASTPtr & ast, const Context & context,
|
||||||
CollectAliases & aliases, const AnalyzeColumns & columns,
|
CollectAliases & aliases, const AnalyzeColumns & columns,
|
||||||
TypeAndConstantInference::Info & info,
|
TypeAndConstantInference::Info & info,
|
||||||
const AnalyzeLambdas & lambdas)
|
const AnalyzeLambdas & lambdas)
|
||||||
@ -395,7 +395,7 @@ void processHigherOrderFunction(const String & column_name,
|
|||||||
|
|
||||||
|
|
||||||
void processImpl(
|
void processImpl(
|
||||||
ASTPtr & ast, Context & context,
|
ASTPtr & ast, const Context & context,
|
||||||
CollectAliases & aliases, const AnalyzeColumns & columns,
|
CollectAliases & aliases, const AnalyzeColumns & columns,
|
||||||
TypeAndConstantInference::Info & info,
|
TypeAndConstantInference::Info & info,
|
||||||
const AnalyzeLambdas & lambdas)
|
const AnalyzeLambdas & lambdas)
|
||||||
@ -468,7 +468,7 @@ void processImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TypeAndConstantInference::process(ASTPtr & ast, Context & context,
|
void TypeAndConstantInference::process(ASTPtr & ast, const Context & context,
|
||||||
CollectAliases & aliases, const AnalyzeColumns & columns, const AnalyzeLambdas & lambdas)
|
CollectAliases & aliases, const AnalyzeColumns & columns, const AnalyzeLambdas & lambdas)
|
||||||
{
|
{
|
||||||
processImpl(ast, context, aliases, columns, info, lambdas);
|
processImpl(ast, context, aliases, columns, info, lambdas);
|
||||||
|
@ -30,7 +30,7 @@ class IAggregateFunction;
|
|||||||
*/
|
*/
|
||||||
struct TypeAndConstantInference
|
struct TypeAndConstantInference
|
||||||
{
|
{
|
||||||
void process(ASTPtr & ast, Context & context,
|
void process(ASTPtr & ast, const Context & context,
|
||||||
CollectAliases & aliases,
|
CollectAliases & aliases,
|
||||||
const AnalyzeColumns & columns,
|
const AnalyzeColumns & columns,
|
||||||
const AnalyzeLambdas & analyze_lambdas);
|
const AnalyzeLambdas & analyze_lambdas);
|
||||||
|
Loading…
Reference in New Issue
Block a user