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
namespace DB
{
2017-01-14 09:00:19 +00:00
class Set ;
using ConstSetPtr = std : : shared_ptr < const Set > ;
2012-08-23 18:05:31 +00:00
/** Столбец, содержащий множество значений в секции IN.
* В е д ё т с е б я к а к с т о л б е ц - к о н с т а н т а ( т а к к а к м н о ж е с т в о о д н о , а н е с в о ё н а к а ж д у ю с т р о к у ) .
* З н а ч е н и е у э т о г о с т о л б ц а н е с т а н д а р т н о е , п о э т о м у е г о н е в о з м о ж н о п о л у ч и т ь ч е р е з о б ы ч н ы й и н т е р ф е й с .
*/
2014-06-04 01:00:09 +00:00
class ColumnSet final : public IColumnDummy
2012-08-23 18:05:31 +00:00
{
public :
2015-11-02 19:19:29 +00:00
ColumnSet ( size_t s_ , ConstSetPtr data_ ) : IColumnDummy ( s_ ) , data ( data_ ) { }
2012-08-23 18:05:31 +00:00
2014-03-12 18:20:03 +00:00
/// Столбец не константный. Иначе столбец будет использоваться в вычислениях в ExpressionActions::prepare, когда множество из подзапроса ещё не готово.
2014-10-31 22:15:17 +00:00
bool isConst ( ) const override { return false ; }
std : : string getName ( ) const override { return " ColumnSet " ; }
2016-05-28 05:31:36 +00:00
ColumnPtr cloneDummy ( size_t s_ ) const override { return std : : make_shared < ColumnSet > ( s_ , data ) ; }
2014-03-12 18:20:03 +00:00
2015-11-02 19:19:29 +00:00
ConstSetPtr getData ( ) const { return data ; }
2012-08-23 18:05:31 +00:00
private :
2015-11-02 19:19:29 +00:00
ConstSetPtr data ;
2012-08-23 18:05:31 +00:00
} ;
}