2017-12-07 08:31:47 +00:00
|
|
|
#include <Common/typeid_cast.h>
|
|
|
|
#include <DataTypes/DataTypeNothing.h>
|
|
|
|
#include <DataTypes/DataTypeFactory.h>
|
|
|
|
#include <Columns/ColumnNothing.h>
|
|
|
|
#include <IO/ReadBuffer.h>
|
|
|
|
#include <IO/WriteBuffer.h>
|
|
|
|
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
|
2017-12-14 03:56:56 +00:00
|
|
|
MutableColumnPtr DataTypeNothing::createColumn() const
|
2017-12-07 08:31:47 +00:00
|
|
|
{
|
2017-12-14 01:43:19 +00:00
|
|
|
return ColumnNothing::create(0);
|
2017-12-07 08:31:47 +00:00
|
|
|
}
|
|
|
|
|
2019-02-19 00:41:24 +00:00
|
|
|
void DataTypeNothing::serializeBinaryBulk(const IColumn & column, WriteBuffer & ostr, size_t offset, size_t limit) const
|
2017-12-07 08:31:47 +00:00
|
|
|
{
|
|
|
|
size_t size = column.size();
|
|
|
|
|
|
|
|
if (limit == 0 || offset + limit > size)
|
|
|
|
limit = size - offset;
|
|
|
|
|
|
|
|
for (size_t i = 0; i < limit; ++i)
|
|
|
|
ostr.write('0');
|
|
|
|
}
|
|
|
|
|
2019-02-19 00:41:24 +00:00
|
|
|
void DataTypeNothing::deserializeBinaryBulk(IColumn & column, ReadBuffer & istr, size_t limit, double /*avg_value_size_hint*/) const
|
2017-12-07 08:31:47 +00:00
|
|
|
{
|
|
|
|
typeid_cast<ColumnNothing &>(column).addSize(istr.tryIgnore(limit));
|
|
|
|
}
|
|
|
|
|
2017-12-23 01:05:29 +00:00
|
|
|
bool DataTypeNothing::equals(const IDataType & rhs) const
|
|
|
|
{
|
|
|
|
return typeid(rhs) == typeid(*this);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-12-07 08:31:47 +00:00
|
|
|
void registerDataTypeNothing(DataTypeFactory & factory)
|
|
|
|
{
|
2020-03-10 18:16:14 +00:00
|
|
|
factory.registerSimpleDataType("Nothing", [] { return DataTypePtr(std::make_shared<DataTypeNothing>()); });
|
2017-12-07 08:31:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|