Cosine null fix

This commit is contained in:
Alexey Boykov 2021-09-23 15:54:00 +03:00
parent 6386560a9b
commit e0963c7666
4 changed files with 10 additions and 3 deletions

View File

@ -7,8 +7,6 @@ namespace DB
namespace ErrorCodes
{
extern const int ILLEGAL_TYPE_OF_ARGUMENT;
extern const int ILLEGAL_COLUMN;
extern const int ARGUMENT_OUT_OF_BOUND;
}
class ITupleFunction : public IFunction

View File

@ -1,6 +1,7 @@
#include <Columns/ColumnTuple.h>
#include <DataTypes/DataTypeTuple.h>
#include <DataTypes/DataTypesNumber.h>
#include <DataTypes/DataTypeNothing.h>
#include <Functions/FunctionFactory.h>
#include <Functions/FunctionHelpers.h>
#include <Functions/ITupleFunction.h>
@ -11,6 +12,8 @@ namespace DB
namespace ErrorCodes
{
extern const int ILLEGAL_TYPE_OF_ARGUMENT;
extern const int ILLEGAL_COLUMN;
extern const int ARGUMENT_OUT_OF_BOUND;
}
struct PlusName { static constexpr auto name = "plus"; };
@ -1022,6 +1025,11 @@ public:
ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr &, size_t input_rows_count) const override
{
if (getReturnTypeImpl(arguments)->isNullable()) {
return DataTypeNullable(std::make_shared<DataTypeNothing>())
.createColumnConstWithDefaultValue(input_rows_count);
}
FunctionDotProduct dot(context);
ColumnWithTypeAndName dot_result{dot.executeImpl(arguments, DataTypePtr(), input_rows_count),
dot.getReturnTypeImpl(arguments), {}};

View File

@ -70,3 +70,4 @@
(0.5,0.5) (0.7071067811865475,0.7071067811865475) (1,1) (0.5,0.5)
3.6060655943063797
4.3208683194033215
\N

View File

@ -100,4 +100,4 @@ SELECT LpNorm((1, 2, 3), inf); -- { serverError 69 }
SELECT LpNorm((1, 2, 3), -1.); -- { serverError 69 }
SELECT LpNorm((1, 2, 3), -1); -- { serverError 44 }
SELECT LpNorm((1, 2, 3), 0.); -- { serverError 69 }
--SELECT cosineDistance(materialize((NULL, -2147483648)), (1048577, 1048575));
SELECT cosineDistance(materialize((NULL, -2147483648)), (1048577, 1048575));