Skip to content

Commit

Permalink
remove changes in count
Browse files Browse the repository at this point in the history
Signed-off-by: guo-shaoge <[email protected]>
  • Loading branch information
guo-shaoge committed Jan 25, 2025
1 parent 370bf0a commit a13008f
Show file tree
Hide file tree
Showing 17 changed files with 83 additions and 283 deletions.
6 changes: 2 additions & 4 deletions dbms/src/Columns/ColumnAggregateFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,7 @@ class ColumnAggregateFunction final : public COWPtrHelper<IColumn, ColumnAggrega

void countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & /* byte_size */,
const TiDB::TiDBCollatorPtr & /* collator */,
const NullMap * /* nullmap */) const override
const TiDB::TiDBCollatorPtr & /* collator */) const override
{
throw Exception(
"Method countSerializeByteSizeForCmp is not supported for " + getName(),
Expand All @@ -181,8 +180,7 @@ class ColumnAggregateFunction final : public COWPtrHelper<IColumn, ColumnAggrega
void countSerializeByteSizeForCmpColumnArray(
PaddedPODArray<size_t> & /* byte_size */,
const IColumn::Offsets & /* offsets */,
const TiDB::TiDBCollatorPtr & /* collator */,
const NullMap * /* nullmap */) const override
const TiDB::TiDBCollatorPtr & /* collator */) const override
{
throw Exception(
"Method countSerializeByteSizeForCmpColumnArray is not supported for " + getName(),
Expand Down
16 changes: 6 additions & 10 deletions dbms/src/Columns/ColumnArray.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -220,25 +220,21 @@ const char * ColumnArray::deserializeAndInsertFromArena(const char * pos, const

void ColumnArray::countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & byte_size,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const
const TiDB::TiDBCollatorPtr & collator) const
{
countSerializeByteSizeImpl<true>(byte_size, collator, nullmap);
countSerializeByteSizeImpl<true>(byte_size, collator);
}

void ColumnArray::countSerializeByteSize(PaddedPODArray<size_t> & byte_size) const
{
countSerializeByteSizeImpl<false>(byte_size, nullptr, nullptr);
countSerializeByteSizeImpl<false>(byte_size, nullptr);
}

template <bool compare_semantics>
void ColumnArray::countSerializeByteSizeImpl(
PaddedPODArray<size_t> & byte_size,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const
void ColumnArray::countSerializeByteSizeImpl(PaddedPODArray<size_t> & byte_size, const TiDB::TiDBCollatorPtr & collator)
const
{
RUNTIME_CHECK_MSG(byte_size.size() == size(), "size of byte_size({}) != column size({})", byte_size.size(), size());
assert(!nullmap || (nullmap->size() == size()));

if unlikely (!getOffsets().empty() && getOffsets().back() > UINT32_MAX)
{
Expand All @@ -256,7 +252,7 @@ void ColumnArray::countSerializeByteSizeImpl(
byte_size[i] += sizeof(UInt32);

if constexpr (compare_semantics)
getData().countSerializeByteSizeForCmpColumnArray(byte_size, getOffsets(), collator, nullmap);
getData().countSerializeByteSizeForCmpColumnArray(byte_size, getOffsets(), collator);
else
getData().countSerializeByteSizeForColumnArray(byte_size, getOffsets());
}
Expand Down
14 changes: 4 additions & 10 deletions dbms/src/Columns/ColumnArray.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,7 @@ class ColumnArray final : public COWPtrHelper<IColumn, ColumnArray>
ColumnArray(const ColumnArray &) = default;

template <bool compare_semantics>
void countSerializeByteSizeImpl(
PaddedPODArray<size_t> & byte_size,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const;
void countSerializeByteSizeImpl(PaddedPODArray<size_t> & byte_size, const TiDB::TiDBCollatorPtr & collator) const;

template <bool has_null, bool compare_semantics, bool has_nullmap>
void serializeToPosImpl(
Expand Down Expand Up @@ -100,17 +97,14 @@ class ColumnArray final : public COWPtrHelper<IColumn, ColumnArray>
String &) const override;
const char * deserializeAndInsertFromArena(const char * pos, const TiDB::TiDBCollatorPtr &) override;

void countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & byte_size,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const override;
void countSerializeByteSizeForCmp(PaddedPODArray<size_t> & byte_size, const TiDB::TiDBCollatorPtr & collator)
const override;
void countSerializeByteSize(PaddedPODArray<size_t> & byte_size) const override;

void countSerializeByteSizeForCmpColumnArray(
PaddedPODArray<size_t> & /* byte_size */,
const IColumn::Offsets & /* array_offsets */,
const TiDB::TiDBCollatorPtr & /* collator */,
const NullMap * /* nullmap */) const override
const TiDB::TiDBCollatorPtr & /* collator */) const override
{
throw Exception(
"Method countSerializeByteSizeForCmpColumnArray is not supported for " + getName(),
Expand Down
6 changes: 2 additions & 4 deletions dbms/src/Columns/ColumnConst.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,7 @@ class ColumnConst final : public COWPtrHelper<IColumn, ColumnConst>

void countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & /* byte_size */,
const TiDB::TiDBCollatorPtr & /* collator */,
const NullMap * /* nullmap */) const override
const TiDB::TiDBCollatorPtr & /* collator */) const override
{
throw Exception(
"Method countSerializeByteSizeForCmp is not supported for " + getName(),
Expand All @@ -129,8 +128,7 @@ class ColumnConst final : public COWPtrHelper<IColumn, ColumnConst>
void countSerializeByteSizeForCmpColumnArray(
PaddedPODArray<size_t> & /* byte_size */,
const IColumn::Offsets & /* array_offsets */,
const TiDB::TiDBCollatorPtr & /* collaotr */,
const NullMap * /* nullmap */) const override
const TiDB::TiDBCollatorPtr & /* collaotr */) const override
{
throw Exception(
"Method countSerializeByteSizeForCmpColumnArray is not supported for " + getName(),
Expand Down
8 changes: 2 additions & 6 deletions dbms/src/Columns/ColumnDecimal.h
Original file line number Diff line number Diff line change
Expand Up @@ -174,10 +174,7 @@ class ColumnDecimal final : public COWPtrHelper<ColumnVectorHelper, ColumnDecima
String &) const override;
const char * deserializeAndInsertFromArena(const char * pos, const TiDB::TiDBCollatorPtr &) override;

void countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & byte_size,
const TiDB::TiDBCollatorPtr &,
const NullMap *) const override
void countSerializeByteSizeForCmp(PaddedPODArray<size_t> & byte_size, const TiDB::TiDBCollatorPtr &) const override
{
countSerializeByteSizeImpl<true>(byte_size, nullptr);
}
Expand All @@ -189,8 +186,7 @@ class ColumnDecimal final : public COWPtrHelper<ColumnVectorHelper, ColumnDecima
void countSerializeByteSizeForCmpColumnArray(
PaddedPODArray<size_t> & byte_size,
const IColumn::Offsets & array_offsets,
const TiDB::TiDBCollatorPtr &,
const NullMap *) const override
const TiDB::TiDBCollatorPtr &) const override
{
countSerializeByteSizeForColumnArrayImpl<true>(byte_size, array_offsets);
}
Expand Down
31 changes: 2 additions & 29 deletions dbms/src/Columns/ColumnFixedString.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,55 +134,28 @@ const char * ColumnFixedString::deserializeAndInsertFromArena(const char * pos,
return pos + n;
}

template <bool has_nullmap>
void ColumnFixedString::countSerializeByteSizeImpl(PaddedPODArray<size_t> & byte_size, const NullMap * nullmap) const
void ColumnFixedString::countSerializeByteSizeImpl(PaddedPODArray<size_t> & byte_size) const
{
RUNTIME_CHECK_MSG(byte_size.size() == size(), "size of byte_size({}) != column size({})", byte_size.size(), size());

assert(!nullmap || nullmap->size() == size());

size_t size = byte_size.size();
for (size_t i = 0; i < size; ++i)
{
if constexpr (has_nullmap)
{
if (DB::isNullAt(*nullmap, i))
{
byte_size[i] += 1;
continue;
}
}
byte_size[i] += n;
}
}

template <bool has_nullmap>
void ColumnFixedString::countSerializeByteSizeForColumnArrayImpl(
PaddedPODArray<size_t> & byte_size,
const IColumn::Offsets & array_offsets,
const NullMap * nullmap) const
const IColumn::Offsets & array_offsets) const
{
RUNTIME_CHECK_MSG(
byte_size.size() == array_offsets.size(),
"size of byte_size({}) != size of array_offsets({})",
byte_size.size(),
array_offsets.size());

assert(!nullmap || nullmap->size() == array_offsets.size());

size_t size = array_offsets.size();
for (size_t i = 0; i < size; ++i)
{
if constexpr (has_nullmap)
{
if (DB::isNullAt(*nullmap, i))
{
byte_size[i] += array_offsets[i] - array_offsets[i - 1];
continue;
}
}
byte_size[i] += n * (array_offsets[i] - array_offsets[i - 1]);
}
}

void ColumnFixedString::serializeToPos(PaddedPODArray<char *> & pos, size_t start, size_t length, bool has_null) const
Expand Down
30 changes: 9 additions & 21 deletions dbms/src/Columns/ColumnFixedString.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,11 @@ class ColumnFixedString final : public COWPtrHelper<IColumn, ColumnFixedString>
, chars(src.chars.begin(), src.chars.end())
, n(src.n){};

template <bool has_nullmap>
void countSerializeByteSizeImpl(PaddedPODArray<size_t> & byte_size, const NullMap * nullmap) const;
void countSerializeByteSizeImpl(PaddedPODArray<size_t> & byte_size) const;

template <bool has_nullmap>
void countSerializeByteSizeForColumnArrayImpl(
PaddedPODArray<size_t> & byte_size,
const IColumn::Offsets & array_offsets,
const NullMap * nullmap) const;
const IColumn::Offsets & array_offsets) const;

template <bool has_null, bool has_nullmap>
void serializeToPosImpl(PaddedPODArray<char *> & pos, size_t start, size_t length, const NullMap * nullmap) const;
Expand Down Expand Up @@ -124,46 +121,37 @@ class ColumnFixedString final : public COWPtrHelper<IColumn, ColumnFixedString>

const char * deserializeAndInsertFromArena(const char * pos, const TiDB::TiDBCollatorPtr &) override;

void countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & byte_size,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const override
void countSerializeByteSizeForCmp(PaddedPODArray<size_t> & byte_size, const TiDB::TiDBCollatorPtr & collator)
const override
{
// collator->sortKey() will change the string length, which may exceeds n.
RUNTIME_CHECK_MSG(
!collator,
"{} doesn't support countSerializeByteSizeForCmp when collator is not null",
getName());
if (nullmap != nullptr)
countSerializeByteSizeImpl<true>(byte_size, nullmap);
else
countSerializeByteSizeImpl<false>(byte_size, nullptr);
countSerializeByteSizeImpl(byte_size);
}
void countSerializeByteSize(PaddedPODArray<size_t> & byte_size) const override
{
countSerializeByteSizeImpl<false>(byte_size, nullptr);
countSerializeByteSizeImpl(byte_size);
}

void countSerializeByteSizeForCmpColumnArray(
PaddedPODArray<size_t> & byte_size,
const IColumn::Offsets & array_offsets,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const override
const TiDB::TiDBCollatorPtr & collator) const override
{
RUNTIME_CHECK_MSG(
!collator,
"{} doesn't support countSerializeByteSizeForCmpColumnArray when collator is not null",
getName());
if (nullmap != nullptr)
countSerializeByteSizeForColumnArrayImpl<true>(byte_size, array_offsets, nullmap);
else
countSerializeByteSizeForColumnArrayImpl<false>(byte_size, array_offsets, nullptr);
countSerializeByteSizeForColumnArrayImpl(byte_size, array_offsets);
}
void countSerializeByteSizeForColumnArray(
PaddedPODArray<size_t> & byte_size,
const IColumn::Offsets & array_offsets) const override
{
countSerializeByteSizeForColumnArrayImpl<false>(byte_size, array_offsets, nullptr);
countSerializeByteSizeForColumnArrayImpl(byte_size, array_offsets);
}

void serializeToPosForCmp(
Expand Down
6 changes: 2 additions & 4 deletions dbms/src/Columns/ColumnFunction.h
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,7 @@ class ColumnFunction final : public COWPtrHelper<IColumn, ColumnFunction>

void countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & /* byte_size */,
const TiDB::TiDBCollatorPtr & /* collator */,
const NullMap * /* nullmap */) const override
const TiDB::TiDBCollatorPtr & /* collator */) const override
{
throw Exception(
"Method countSerializeByteSizeForCmp is not supported for " + getName(),
Expand All @@ -137,8 +136,7 @@ class ColumnFunction final : public COWPtrHelper<IColumn, ColumnFunction>
void countSerializeByteSizeForCmpColumnArray(
PaddedPODArray<size_t> & /* byte_size */,
const IColumn::Offsets & /* offsets */,
const TiDB::TiDBCollatorPtr & /* collator */,
const NullMap * /* nullmap */) const override
const TiDB::TiDBCollatorPtr & /* collator */) const override
{
throw Exception(
"Method countSerializeByteSizeForCmpColumnArray is not supported for " + getName(),
Expand Down
54 changes: 10 additions & 44 deletions dbms/src/Columns/ColumnNullable.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -284,21 +284,10 @@ const char * ColumnNullable::deserializeAndInsertFromArena(const char * pos, con

void ColumnNullable::countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & byte_size,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const
const TiDB::TiDBCollatorPtr & collator) const
{
if unlikely (nullmap != nullptr)
{
auto new_nullmap_col = ColumnUInt8::create();
DB::mergeNullMap(*nullmap, getNullMapData(), new_nullmap_col->getData());
new_nullmap_col->countSerializeByteSizeForCmp(byte_size, collator, nullptr);
getNestedColumn().countSerializeByteSizeForCmp(byte_size, collator, &(new_nullmap_col->getData()));
}
else
{
getNullMapColumn().countSerializeByteSizeForCmp(byte_size, collator, nullptr);
getNestedColumn().countSerializeByteSizeForCmp(byte_size, collator, &getNullMapData());
}
getNullMapColumn().countSerializeByteSizeForCmp(byte_size, collator);
getNestedColumn().countSerializeByteSizeForCmp(byte_size, collator);
}
void ColumnNullable::countSerializeByteSize(PaddedPODArray<size_t> & byte_size) const
{
Expand All @@ -309,35 +298,10 @@ void ColumnNullable::countSerializeByteSize(PaddedPODArray<size_t> & byte_size)
void ColumnNullable::countSerializeByteSizeForCmpColumnArray(
PaddedPODArray<size_t> & byte_size,
const IColumn::Offsets & array_offsets,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const
const TiDB::TiDBCollatorPtr & collator) const
{
const auto & nested_nullmap = getNullMapData();
assert(nested_nullmap.size() == array_offsets.back());
if unlikely (nullmap != nullptr)
{
assert(nullmap->size() == array_offsets.size());
auto new_nullmap_col = ColumnUInt8::create();
auto & new_nullmap_data = new_nullmap_col->getData();
new_nullmap_data.assign(nested_nullmap);
for (size_t i = 0; i < array_offsets.size(); ++i)
{
if (DB::isNullAt(*nullmap, i))
{
const auto row_size = array_offsets[i] - array_offsets[i - 1];
const auto row_offset = array_offsets[i - 1];
for (size_t j = row_offset; j < row_offset + row_size; ++j)
setNullAt(new_nullmap_data, j);
}
}
new_nullmap_col->countSerializeByteSizeForCmpColumnArray(byte_size, array_offsets, collator, nullptr);
getNestedColumn().countSerializeByteSizeForCmpColumnArray(byte_size, array_offsets, collator, &new_nullmap_data);
}
else
{
getNullMapColumn().countSerializeByteSizeForCmpColumnArray(byte_size, array_offsets, collator, nullptr);
getNestedColumn().countSerializeByteSizeForCmpColumnArray(byte_size, array_offsets, collator, &nested_nullmap);
}
getNullMapColumn().countSerializeByteSizeForCmpColumnArray(byte_size, array_offsets, collator);
getNestedColumn().countSerializeByteSizeForCmpColumnArray(byte_size, array_offsets, collator);
}
void ColumnNullable::countSerializeByteSizeForColumnArray(
PaddedPODArray<size_t> & byte_size,
Expand All @@ -360,7 +324,8 @@ void ColumnNullable::serializeToPosForCmp(
auto new_nullmap_col = ColumnUInt8::create();
DB::mergeNullMap(*nullmap, getNullMapData(), new_nullmap_col->getData());
getNullMapColumn().serializeToPosForCmp(pos, start, length, nullptr, collator, sort_key_container);
getNestedColumn().serializeToPosForCmp(pos, start, length, &(new_nullmap_col->getData()), collator, sort_key_container);
getNestedColumn()
.serializeToPosForCmp(pos, start, length, &(new_nullmap_col->getData()), collator, sort_key_container);
}
else
{
Expand Down Expand Up @@ -402,7 +367,8 @@ void ColumnNullable::serializeToPosForCmpColumnArray(
setNullAt(new_nullmap_data, j);
}
}
new_nullmap_col->serializeToPosForCmpColumnArray(pos, start, length, nullptr, array_offsets, collator, sort_key_container);
new_nullmap_col
->serializeToPosForCmpColumnArray(pos, start, length, nullptr, array_offsets, collator, sort_key_container);
getNestedColumn().serializeToPosForCmpColumnArray(
pos,
start,
Expand Down
9 changes: 3 additions & 6 deletions dbms/src/Columns/ColumnNullable.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,17 +77,14 @@ class ColumnNullable final : public COWPtrHelper<IColumn, ColumnNullable>
String &) const override;
const char * deserializeAndInsertFromArena(const char * pos, const TiDB::TiDBCollatorPtr &) override;

void countSerializeByteSizeForCmp(
PaddedPODArray<size_t> & byte_size,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const override;
void countSerializeByteSizeForCmp(PaddedPODArray<size_t> & byte_size, const TiDB::TiDBCollatorPtr & collator)
const override;
void countSerializeByteSize(PaddedPODArray<size_t> & byte_size) const override;

void countSerializeByteSizeForCmpColumnArray(
PaddedPODArray<size_t> & byte_size,
const IColumn::Offsets & array_offsets,
const TiDB::TiDBCollatorPtr & collator,
const NullMap * nullmap) const override;
const TiDB::TiDBCollatorPtr & collator) const override;
void countSerializeByteSizeForColumnArray(
PaddedPODArray<size_t> & byte_size,
const IColumn::Offsets & array_offsets) const override;
Expand Down
Loading

0 comments on commit a13008f

Please sign in to comment.