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