2012-08-23 18:05:31 +00:00
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <DB/DataTypes/IDataType.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/** Базовые класс для типов данных, которые не поддерживают сериализацию и десериализацию,
|
|
|
|
|
* а возникают лишь в качестве промежуточного результата вычислений.
|
|
|
|
|
*
|
|
|
|
|
* То есть, этот класс используется всего лишь чтобы отличить соответствующий тип данных от других.
|
|
|
|
|
*/
|
|
|
|
|
class IDataTypeDummy : public IDataType
|
|
|
|
|
{
|
|
|
|
|
private:
|
2012-08-23 18:43:57 +00:00
|
|
|
|
void throwNoSerialization() const
|
2012-08-23 18:05:31 +00:00
|
|
|
|
{
|
|
|
|
|
throw Exception("Serialization is not implemented for data type " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
void serializeBinary(const Field & field, WriteBuffer & ostr) const { throwNoSerialization(); }
|
|
|
|
|
void deserializeBinary(Field & field, ReadBuffer & istr) const { throwNoSerialization(); }
|
|
|
|
|
|
|
|
|
|
void serializeBinary(const IColumn & column, WriteBuffer & ostr,
|
2012-12-11 20:31:39 +00:00
|
|
|
|
size_t offset = 0, size_t limit = 0) const { throwNoSerialization(); }
|
2012-08-23 18:05:31 +00:00
|
|
|
|
|
|
|
|
|
void deserializeBinary(IColumn & column, ReadBuffer & istr, size_t limit) const { throwNoSerialization(); }
|
|
|
|
|
|
|
|
|
|
void serializeText(const Field & field, WriteBuffer & ostr) const { throwNoSerialization(); }
|
|
|
|
|
void deserializeText(Field & field, ReadBuffer & istr) const { throwNoSerialization(); }
|
|
|
|
|
|
|
|
|
|
void serializeTextEscaped(const Field & field, WriteBuffer & ostr) const { throwNoSerialization(); }
|
|
|
|
|
void deserializeTextEscaped(Field & field, ReadBuffer & istr) const { throwNoSerialization(); }
|
|
|
|
|
|
2012-08-26 06:48:39 +00:00
|
|
|
|
void serializeTextQuoted(const Field & field, WriteBuffer & ostr) const { throwNoSerialization(); }
|
|
|
|
|
void deserializeTextQuoted(Field & field, ReadBuffer & istr) const { throwNoSerialization(); }
|
2013-05-16 12:52:09 +00:00
|
|
|
|
|
|
|
|
|
void serializeTextJSON(const Field & field, WriteBuffer & ostr) const { throwNoSerialization(); }
|
2012-08-23 18:05:31 +00:00
|
|
|
|
|
|
|
|
|
SharedPtr<IColumn> createColumn() const
|
|
|
|
|
{
|
|
|
|
|
throw Exception("Method createColumn() is not implemented for data type " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SharedPtr<IColumn> createConstColumn(size_t size, const Field & field) const
|
|
|
|
|
{
|
|
|
|
|
throw Exception("Method createConstColumn() is not implemented for data type " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Field getDefault() const
|
|
|
|
|
{
|
|
|
|
|
throw Exception("Method getDefault() is not implemented for data type " + getName(), ErrorCodes::NOT_IMPLEMENTED);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|