ClickHouse/dbms/include/DB/Columns/ColumnSet.h

32 lines
1.2 KiB
C++
Raw Normal View History

2012-08-23 18:05:31 +00:00
#pragma once
#include <DB/Columns/IColumnDummy.h>
2012-08-23 18:05:31 +00:00
#include <DB/Interpreters/Set.h>
namespace DB
{
/** Столбец, содержащий множество значений в секции IN.
* Ведёт себя как столбец-константа (так как множество одно, а не своё на каждую строку).
* Значение у этого столбца нестандартное, поэтому его невозможно получить через обычный интерфейс.
*/
class ColumnSet final : public IColumnDummy
2012-08-23 18:05:31 +00:00
{
public:
ColumnSet(size_t s_, ConstSetPtr data_) : IColumnDummy(s_), data(data_) {}
2012-08-23 18:05:31 +00:00
/// Столбец не константный. Иначе столбец будет использоваться в вычислениях в ExpressionActions::prepare, когда множество из подзапроса ещё не готово.
bool isConst() const override { return false; }
std::string getName() const override { return "ColumnSet"; }
ColumnPtr cloneDummy(size_t s_) const override { return std::make_shared<ColumnSet>(s_, data); }
ConstSetPtr getData() const { return data; }
2012-08-23 18:05:31 +00:00
private:
ConstSetPtr data;
2012-08-23 18:05:31 +00:00
};
}