mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-25 19:20:52 +00:00
Fix tests
This commit is contained in:
parent
ae8df9c1c5
commit
0a32e47b5f
@ -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));
|
||||||
|
@ -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)
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user