Fix tests

This commit is contained in:
Pavel Kruglov 2021-04-23 13:39:50 +03:00 committed by Pavel Kruglov
parent ae8df9c1c5
commit 0a32e47b5f
6 changed files with 11 additions and 7 deletions

View File

@ -194,6 +194,8 @@ void ColumnFunction::appendArgument(const ColumnWithTypeAndName & column)
ColumnWithTypeAndName ColumnFunction::reduce(bool reduce_arguments) const ColumnWithTypeAndName ColumnFunction::reduce(bool reduce_arguments) const
{ {
// LOG_DEBUG(&Poco::Logger::get("ColumnFunction"), "Reduce function: {}", function->getName());
auto args = function->getArgumentTypes().size(); auto args = function->getArgumentTypes().size();
auto captured = captured_columns.size(); auto captured = captured_columns.size();
@ -207,7 +209,7 @@ ColumnWithTypeAndName ColumnFunction::reduce(bool reduce_arguments) const
columns.reserve(captured_columns.size()); columns.reserve(captured_columns.size());
for (const auto & col : captured_columns) for (const auto & col : captured_columns)
{ {
LOG_DEBUG(&Poco::Logger::get("ColumnFunction"), "Arg type: {}", col.type->getName()); // LOG_DEBUG(&Poco::Logger::get("ColumnFunction"), "Arg type: {}", col.type->getName());
if (const auto * column_function = typeid_cast<const ColumnFunction *>(col.column.get())) if (const auto * column_function = typeid_cast<const ColumnFunction *>(col.column.get()))
columns.push_back(column_function->reduce(true)); columns.push_back(column_function->reduce(true));

View File

@ -126,7 +126,7 @@ void disjunctionMasks(PaddedPODArray<UInt8> & mask1, const PaddedPODArray<UInt8>
binaryMasksOperationImpl(mask1, mask2, [](const auto & lhs, const auto & rhs){ return lhs | rhs; }); binaryMasksOperationImpl(mask1, mask2, [](const auto & lhs, const auto & rhs){ return lhs | rhs; });
} }
void maskedExecute(ColumnWithTypeAndName & column, const PaddedPODArray<UInt8> & mask, bool reverse, Field * default_value) void maskedExecute(ColumnWithTypeAndName & column, const PaddedPODArray<UInt8> & mask, Field * default_value, bool reverse)
{ {
const auto * column_function = checkAndGetColumn<ColumnFunction>(*column.column); const auto * column_function = checkAndGetColumn<ColumnFunction>(*column.column);
if (!column_function) if (!column_function)

View File

@ -13,7 +13,7 @@ void conjunctionMasks(PaddedPODArray<UInt8> & mask1, const PaddedPODArray<UInt8>
void disjunctionMasks(PaddedPODArray<UInt8> & mask1, const PaddedPODArray<UInt8> & mask2); void disjunctionMasks(PaddedPODArray<UInt8> & mask1, const PaddedPODArray<UInt8> & mask2);
void maskedExecute(ColumnWithTypeAndName & column, const PaddedPODArray<UInt8> & mask, bool reverse = false, Field * default_value = nullptr); void maskedExecute(ColumnWithTypeAndName & column, const PaddedPODArray<UInt8> & mask, Field * default_value = nullptr, bool reverse = false);
void executeColumnIfNeeded(ColumnWithTypeAndName & column); void executeColumnIfNeeded(ColumnWithTypeAndName & column);

View File

@ -525,7 +525,7 @@ void FunctionAnyArityLogical<Impl, Name>::executeShortCircuitArguments(ColumnsWi
for (size_t i = 1; i < arguments.size(); ++i) for (size_t i = 1; i < arguments.size(); ++i)
{ {
if (isColumnFunction(*arguments[i].column)) if (isColumnFunction(*arguments[i].column))
maskedExecute(arguments[i], mask, false, &default_value); maskedExecute(arguments[i], mask, &default_value, false);
getMaskFromColumn(arguments[i].column, mask, reverse, nullptr, null_value); getMaskFromColumn(arguments[i].column, mask, reverse, nullptr, null_value);
} }
} }

View File

@ -928,7 +928,7 @@ public:
IColumn::Filter mask; IColumn::Filter mask;
getMaskFromColumn(arguments[0].column, mask); getMaskFromColumn(arguments[0].column, mask);
maskedExecute(arguments[1], mask); maskedExecute(arguments[1], mask);
maskedExecute(arguments[2], mask, /*reverse=*/true); maskedExecute(arguments[2], mask, nullptr, /*reverse=*/true);
} }
} }

View File

@ -114,7 +114,7 @@ public:
IColumn::Filter current_mask; IColumn::Filter current_mask;
IColumn::Filter mask_disjunctions = IColumn::Filter(arguments[0].column->size(), 0); IColumn::Filter mask_disjunctions = IColumn::Filter(arguments[0].column->size(), 0);
Field default_value = 0; auto default_value = std::make_unique<Field>(1);
size_t i = 1; size_t i = 1;
while (i < arguments.size()) while (i < arguments.size())
{ {
@ -124,9 +124,11 @@ public:
maskedExecute(arguments[i], current_mask); maskedExecute(arguments[i], current_mask);
++i; ++i;
if (i == arguments.size() - 1)
default_value = nullptr;
if (isColumnFunction(*arguments[i].column)) if (isColumnFunction(*arguments[i].column))
maskedExecute(arguments[i], mask_disjunctions, true, &default_value); maskedExecute(arguments[i], mask_disjunctions, default_value.get(), true);
++i; ++i;
} }