Fix logical error in function greatest/least

This commit is contained in:
Pavel Kruglov 2021-09-27 22:39:50 +03:00
parent 32fe846bcb
commit cc40e36514
4 changed files with 25 additions and 0 deletions

View File

@ -107,6 +107,8 @@ public:
FunctionBasePtr buildImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & return_type) const override FunctionBasePtr buildImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & return_type) const override
{ {
DataTypes argument_types; DataTypes argument_types;
for (const auto & argument : arguments)
argument_types.push_back(argument.type);
/// More efficient specialization for two numeric arguments. /// More efficient specialization for two numeric arguments.
if (arguments.size() == 2 && isNumber(arguments[0].type) && isNumber(arguments[1].type)) if (arguments.size() == 2 && isNumber(arguments[0].type) && isNumber(arguments[1].type))

View File

@ -153,3 +153,4 @@ select number % 2 and toLowCardinality(number) from numbers(5);
select number % 2 or toLowCardinality(number) from numbers(5); select number % 2 or toLowCardinality(number) from numbers(5);
select if(toLowCardinality(number) % 2, number, number + 1) from numbers(10); select if(toLowCardinality(number) % 2, number, number + 1) from numbers(10);
select multiIf(toLowCardinality(number) % 2, number, number + 1) from numbers(10); select multiIf(toLowCardinality(number) % 2, number, number + 1) from numbers(10);

View File

@ -0,0 +1,20 @@
0
1
1
1
1
1
0
1
1
1
0
1
0
0
0
1
0
1
0
0

View File

@ -0,0 +1,2 @@
select 1 and greatest(number % 2, number % 3) from numbers(10);
select 1 and least(number % 2, number % 3) from numbers(10);