Skip to content

Commit

Permalink
fix claing-tidy issues
Browse files Browse the repository at this point in the history
Signed-off-by: fzhedu <[email protected]>
  • Loading branch information
fzhedu committed Apr 25, 2022
1 parent e96f5ac commit 5c73736
Showing 1 changed file with 37 additions and 25 deletions.
62 changes: 37 additions & 25 deletions dbms/src/Interpreters/Join.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
// Copyright 2022 PingCAP, Ltd.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include <Columns/ColumnConst.h>
#include <Columns/ColumnFixedString.h>
#include <Columns/ColumnNullable.h>
Expand Down Expand Up @@ -344,7 +358,7 @@ size_t Join::getTotalByteCount() const
res += getTotalByteCountImpl(maps_all, type);
res += getTotalByteCountImpl(maps_any_full, type);
res += getTotalByteCountImpl(maps_all_full, type);
for (auto & pool : pools)
for (const auto & pool : pools)
{
/// note the return value might not be accurate since it does not use lock, but should be enough for current usage
res += pool->size();
Expand Down Expand Up @@ -421,7 +435,7 @@ namespace
{
void insertRowToList(Join::RowRefList * list, Join::RowRefList * elem, Block * stored_block, size_t index)
{
elem->next = list->next;
elem->next = list->next; // NOLINT(clang-analyzer-core.NullDereference)
list->next = elem;
elem->block = stored_block;
elem->row_num = index;
Expand Down Expand Up @@ -493,7 +507,7 @@ void NO_INLINE insertFromBlockImplTypeCase(
if (rows_not_inserted_to_map)
{
/// for right/full out join, need to record the rows not inserted to map
auto elem = reinterpret_cast<Join::RowRefList *>(pool.alloc(sizeof(Join::RowRefList)));
auto * elem = reinterpret_cast<Join::RowRefList *>(pool.alloc(sizeof(Join::RowRefList)));
insertRowToList(rows_not_inserted_to_map, elem, stored_block, i);
}
continue;
Expand Down Expand Up @@ -536,9 +550,9 @@ void NO_INLINE insertFromBlockImplTypeCaseWithLock(
segment_index_info.resize(segment_size);
}
size_t rows_per_seg = rows / segment_index_info.size();
for (size_t i = 0; i < segment_index_info.size(); i++)
for (auto & segment_index : segment_index_info)
{
segment_index_info[i].reserve(rows_per_seg);
segment_index.reserve(rows_per_seg);
}
for (size_t i = 0; i < rows; i++)
{
Expand Down Expand Up @@ -567,16 +581,16 @@ void NO_INLINE insertFromBlockImplTypeCaseWithLock(
{
/// null value
/// here ignore mutex because rows_not_inserted_to_map is privately owned by each stream thread
for (size_t i = 0; i < segment_index_info[segment_index].size(); i++)
for (auto index : segment_index_info[segment_index])
{
/// for right/full out join, need to record the rows not inserted to map
auto elem = reinterpret_cast<Join::RowRefList *>(pool.alloc(sizeof(Join::RowRefList)));
insertRowToList(rows_not_inserted_to_map, elem, stored_block, segment_index_info[segment_index][i]);
auto * elem = reinterpret_cast<Join::RowRefList *>(pool.alloc(sizeof(Join::RowRefList)));
insertRowToList(rows_not_inserted_to_map, elem, stored_block, index);
}
}
else
{
std::lock_guard<std::mutex> lk(map.getSegmentMutex(segment_index));
std::lock_guard lk(map.getSegmentMutex(segment_index));
for (size_t i = 0; i < segment_index_info[segment_index].size(); i++)
{
Inserter<STRICTNESS, typename Map::SegmentType::HashTable, KeyGetter>::insert(map.getSegmentTable(segment_index), key_getter, stored_block, segment_index_info[segment_index][i], pool, sort_key_containers);
Expand Down Expand Up @@ -705,7 +719,7 @@ void recordFilteredRows(const Block & block, const String & filter_column, Colum
MutableColumnPtr mutable_null_map_holder = (*std::move(null_map_holder)).mutate();
PaddedPODArray<UInt8> & mutable_null_map = static_cast<ColumnUInt8 &>(*mutable_null_map_holder).getData();

auto & nested_column = column->isColumnNullable() ? static_cast<const ColumnNullable &>(*column).getNestedColumnPtr() : column;
const auto & nested_column = column->isColumnNullable() ? static_cast<const ColumnNullable &>(*column).getNestedColumnPtr() : column;
for (size_t i = 0, size = nested_column->size(); i < size; ++i)
mutable_null_map[i] |= (!nested_column->getInt(i));

Expand All @@ -732,7 +746,7 @@ void Join::insertFromBlock(const Block & block, size_t stream_index)
std::shared_lock lock(rwlock);
Block * stored_block = nullptr;
{
std::lock_guard<std::mutex> lk(blocks_lock);
std::lock_guard lk(blocks_lock);
blocks.push_back(block);
stored_block = &blocks.back();
original_blocks.push_back(block);
Expand All @@ -753,6 +767,7 @@ bool Join::insertFromBlockInternal(Block * stored_block, size_t stream_index)
const Block & block = *stored_block;

/// Rare case, when keys are constant. To avoid code bloat, simply materialize them.
/// Note: this variable can't be removed because it will take smart pointers' lifecycle to the end of this function.
Columns materialized_columns;

/// Memoize key columns to work.
Expand Down Expand Up @@ -981,11 +996,11 @@ void NO_INLINE joinBlockImplTypeCase(
hash_value = map.hash(key);
segment_index = hash_value % map.getSegmentSize();
}
auto & internalMap = map.getSegmentTable(segment_index);
auto & internal_map = map.getSegmentTable(segment_index);
/// do not require segment lock because in join, the hash table can not be changed in probe stage.
auto it = map.getSegmentSize() > 0 ? internalMap.find(key, hash_value) : internalMap.find(key);
auto it = map.getSegmentSize() > 0 ? internal_map.find(key, hash_value) : internal_map.find(key);

if (it != internalMap.end())
if (it != internal_map.end())
{
it->getMapped().setUsed();
Adder<KIND, STRICTNESS, Map>::addFound(
Expand Down Expand Up @@ -1061,8 +1076,8 @@ void mergeNullAndFilterResult(Block & block, ColumnVector<UInt8>::Container & fi
orig_filter_column = orig_filter_column->convertToFullColumnIfConst();
if (orig_filter_column->isColumnNullable())
{
auto * nullable_column = checkAndGetColumn<ColumnNullable>(orig_filter_column.get());
auto & nested_column_data = static_cast<const ColumnVector<UInt8> *>(nullable_column->getNestedColumnPtr().get())->getData();
const auto * nullable_column = checkAndGetColumn<ColumnNullable>(orig_filter_column.get());
const auto & nested_column_data = static_cast<const ColumnVector<UInt8> *>(nullable_column->getNestedColumnPtr().get())->getData();
for (size_t i = 0; i < nullable_column->size(); i++)
{
if (filter_column[i] == 0)
Expand All @@ -1075,8 +1090,8 @@ void mergeNullAndFilterResult(Block & block, ColumnVector<UInt8>::Container & fi
}
else
{
auto * other_filter_column = checkAndGetColumn<ColumnVector<UInt8>>(orig_filter_column.get());
auto & other_filter_column_data = static_cast<const ColumnVector<UInt8> *>(other_filter_column)->getData();
const auto * other_filter_column = checkAndGetColumn<ColumnVector<UInt8>>(orig_filter_column.get());
const auto & other_filter_column_data = static_cast<const ColumnVector<UInt8> *>(other_filter_column)->getData();
for (size_t i = 0; i < other_filter_column->size(); i++)
filter_column[i] = filter_column[i] && other_filter_column_data[i];
}
Expand All @@ -1100,7 +1115,7 @@ void Join::handleOtherConditions(Block & block, std::unique_ptr<IColumn::Filter>

auto filter_column = ColumnUInt8::create();
auto & filter = filter_column->getData();
filter.assign(block.rows(), (UInt8)1);
filter.assign(block.rows(), static_cast<UInt8>(1));
if (!other_filter_column.empty())
{
mergeNullAndFilterResult(block, filter, other_filter_column, false);
Expand Down Expand Up @@ -1179,9 +1194,9 @@ void Join::handleOtherConditions(Block & block, std::unique_ptr<IColumn::Filter>
if (isLeftJoin(kind))
{
/// for left join, convert right column to null if not joined
for (size_t i = 0; i < right_table_columns.size(); i++)
for (size_t right_table_column : right_table_columns)
{
auto & column = block.getByPosition(right_table_columns[i]);
auto & column = block.getByPosition(right_table_column);
auto full_column = column.column->isColumnConst() ? column.column->convertToFullColumnIfConst() : column.column;
if (!full_column->isColumnNullable())
{
Expand Down Expand Up @@ -1561,9 +1576,8 @@ void Join::joinBlockImplCrossInternal(Block & block, ConstNullMapPtr null_map [[
{
dst_columns[i] = sample_block.getByPosition(i).column->cloneEmpty();
}
for (size_t i = 0; i < result_blocks.size(); i++)
for (auto & current_block : result_blocks)
{
auto & current_block = result_blocks[i];
if (current_block.rows() > 0)
{
for (size_t column = 0; column < current_block.columns(); column++)
Expand Down Expand Up @@ -1613,7 +1627,6 @@ void Join::checkTypesOfKeys(const Block & block_left, const Block & block_right)
}
}


void Join::joinBlock(Block & block) const
{
// std::cerr << "joinBlock: " << block.dumpStructure() << "\n";
Expand Down Expand Up @@ -1969,5 +1982,4 @@ BlockInputStreamPtr Join::createStreamWithNonJoinedRows(const Block & left_sampl
return std::make_shared<NonJoinedBlockInputStream>(*this, left_sample_block, index, step, max_block_size);
}


} // namespace DB

0 comments on commit 5c73736

Please sign in to comment.