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