mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-28 02:21:59 +00:00
Serialize Null Fields correctly in DataTypeNullable.
This commit is contained in:
parent
6f51d92031
commit
a5b1496fe9
@ -118,6 +118,33 @@ void DataTypeNullable::deserializeBinaryBulkWithMultipleStreams(
|
||||
}
|
||||
|
||||
|
||||
void DataTypeNullable::serializeBinary(const Field & field, WriteBuffer & ostr) const
|
||||
{
|
||||
if (field.isNull())
|
||||
{
|
||||
writeBinary(true, ostr);
|
||||
}
|
||||
else
|
||||
{
|
||||
writeBinary(false, ostr);
|
||||
nested_data_type->serializeBinary(field, ostr);
|
||||
}
|
||||
}
|
||||
|
||||
void DataTypeNullable::deserializeBinary(Field & field, ReadBuffer & istr) const
|
||||
{
|
||||
bool is_null = false;
|
||||
readBinary(is_null, istr);
|
||||
if (!is_null)
|
||||
{
|
||||
nested_data_type->deserializeBinary(field, istr);
|
||||
}
|
||||
else
|
||||
{
|
||||
field = Null();
|
||||
}
|
||||
}
|
||||
|
||||
void DataTypeNullable::serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const
|
||||
{
|
||||
const ColumnNullable & col = assert_cast<const ColumnNullable &>(column);
|
||||
@ -416,6 +443,10 @@ MutableColumnPtr DataTypeNullable::createColumn() const
|
||||
return ColumnNullable::create(nested_data_type->createColumn(), ColumnUInt8::create());
|
||||
}
|
||||
|
||||
Field DataTypeNullable::getDefault() const
|
||||
{
|
||||
return Null();
|
||||
}
|
||||
|
||||
size_t DataTypeNullable::getSizeOfValueInMemory() const
|
||||
{
|
||||
|
@ -45,8 +45,8 @@ public:
|
||||
DeserializeBinaryBulkSettings & settings,
|
||||
DeserializeBinaryBulkStatePtr & state) const override;
|
||||
|
||||
void serializeBinary(const Field & field, WriteBuffer & ostr) const override { nested_data_type->serializeBinary(field, ostr); }
|
||||
void deserializeBinary(Field & field, ReadBuffer & istr) const override { nested_data_type->deserializeBinary(field, istr); }
|
||||
void serializeBinary(const Field & field, WriteBuffer & ostr) const override;
|
||||
void deserializeBinary(Field & field, ReadBuffer & istr) const override;
|
||||
void serializeBinary(const IColumn & column, size_t row_num, WriteBuffer & ostr) const override;
|
||||
void deserializeBinary(IColumn & column, ReadBuffer & istr) const override;
|
||||
void serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const override;
|
||||
@ -77,7 +77,7 @@ public:
|
||||
|
||||
MutableColumnPtr createColumn() const override;
|
||||
|
||||
Field getDefault() const override { return Null(); }
|
||||
Field getDefault() const override;
|
||||
|
||||
bool equals(const IDataType & rhs) const override;
|
||||
|
||||
|
@ -0,0 +1,3 @@
|
||||
-- this test checks that null values are correctly serialized inside minmax index (issue #7113)
|
||||
create table null_01016 (x Nullable(String)) engine MergeTree order by ifNull(x, 'order-null') partition by ifNull(x, 'partition-null');
|
||||
insert into null_01016 values (null);
|
Loading…
Reference in New Issue
Block a user