2017-07-21 06:35:58 +00:00
|
|
|
#include <IO/Operators.h>
|
|
|
|
#include <IO/WriteBufferFromString.h>
|
2012-08-26 11:14:52 +00:00
|
|
|
|
2017-04-01 09:19:00 +00:00
|
|
|
#include <Columns/ColumnConst.h>
|
2017-07-21 20:20:22 +00:00
|
|
|
#include <Columns/ColumnNullable.h>
|
2017-11-24 13:55:31 +00:00
|
|
|
#include <Common/FieldVisitors.h>
|
2017-07-21 20:20:22 +00:00
|
|
|
#include <Common/typeid_cast.h>
|
2011-11-06 06:22:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
2013-03-06 13:56:11 +00:00
|
|
|
|
2017-12-15 19:46:24 +00:00
|
|
|
ColumnConst::ColumnConst(const ColumnPtr & data_, size_t s)
|
2017-12-08 03:52:33 +00:00
|
|
|
: data(data_), s(s)
|
2017-07-24 01:00:31 +00:00
|
|
|
{
|
2017-12-08 03:52:33 +00:00
|
|
|
/// Squash Const of Const.
|
2017-12-15 19:17:15 +00:00
|
|
|
while (const ColumnConst * const_data = typeid_cast<const ColumnConst *>(data.get()))
|
2017-12-08 03:52:33 +00:00
|
|
|
data = const_data->getDataColumnPtr();
|
|
|
|
|
2017-07-24 01:00:31 +00:00
|
|
|
if (data->size() != 1)
|
|
|
|
throw Exception("Incorrect size of nested column in constructor of ColumnConst: " + toString(data->size()) + ", must be 1.",
|
|
|
|
ErrorCodes::SIZES_OF_COLUMNS_DOESNT_MATCH);
|
|
|
|
}
|
|
|
|
|
2017-12-14 03:56:56 +00:00
|
|
|
MutableColumnPtr ColumnConst::convertToFullColumn() const
|
2017-07-24 01:00:31 +00:00
|
|
|
{
|
2017-12-15 21:32:25 +00:00
|
|
|
return data->replicate(Offsets(1, s));
|
2017-07-24 01:00:31 +00:00
|
|
|
}
|
|
|
|
|
2011-11-06 06:22:52 +00:00
|
|
|
}
|