ClickHouse/dbms/src/Storages/SelectQueryInfo.h

55 lines
1.4 KiB
C++
Raw Normal View History

2017-07-15 04:06:51 +00:00
#pragma once
#include <memory>
2017-07-24 12:58:01 +00:00
#include <unordered_map>
#include <Parsers/StringRange.h>
2017-07-15 04:06:51 +00:00
namespace DB
{
class IAST;
using ASTPtr = std::shared_ptr<IAST>;
class ExpressionActions;
using ExpressionActionsPtr = std::shared_ptr<ExpressionActions>;
2017-07-15 04:06:51 +00:00
class Set;
using SetPtr = std::shared_ptr<Set>;
/// Information about calculated sets in right hand side of IN.
using PreparedSets = std::unordered_map<StringRange, SetPtr, StringRangePointersHash, StringRangePointersEqualTo>;
2017-07-15 04:06:51 +00:00
struct PrewhereInfo
{
/// Ections which are executed in order to alias columns are used for prewhere actions.
ExpressionActionsPtr alias_actions;
/// Actions which are executed on block in order to get filter column for prewhere step.
ExpressionActionsPtr prewhere_actions;
String prewhere_column_name;
bool remove_prewhere_column = false;
PrewhereInfo() = default;
2018-04-12 09:45:24 +00:00
explicit PrewhereInfo(ExpressionActionsPtr prewhere_actions_, String prewhere_column_name_)
: prewhere_actions(std::move(prewhere_actions_)), prewhere_column_name(std::move(prewhere_column_name_)) {}
};
using PrewhereInfoPtr = std::shared_ptr<PrewhereInfo>;
2017-07-15 04:06:51 +00:00
/** Query along with some additional data,
* that can be used during query processing
* inside storage engines.
*/
struct SelectQueryInfo
{
ASTPtr query;
PrewhereInfoPtr prewhere_info;
2017-07-15 04:06:51 +00:00
/// Prepared sets are used for indices by storage engine.
/// Example: x IN (1, 2, 3)
PreparedSets sets;
};
}