This commit is contained in:
Pavel Kruglov 2021-06-07 15:01:24 +03:00
parent a95d45a157
commit 01bd5cc998
4 changed files with 6 additions and 12 deletions

View File

@ -12,9 +12,6 @@
#include <DataTypes/DataTypeNullable.h> #include <DataTypes/DataTypeNullable.h>
#include <DataTypes/DataTypesNumber.h> #include <DataTypes/DataTypesNumber.h>
#include <Functions/FunctionHelpers.h> #include <Functions/FunctionHelpers.h>
#include <Columns/ColumnNothing.h>
#include <common/logger_useful.h>
#include <algorithm> #include <algorithm>

View File

@ -284,6 +284,8 @@ public:
void getLambdaArgumentTypes(DataTypes & arguments) const; void getLambdaArgumentTypes(DataTypes & arguments) const;
void checkNumberOfArguments(size_t number_of_arguments) const;
/// Get the main function name. /// Get the main function name.
virtual String getName() const = 0; virtual String getName() const = 0;
@ -358,8 +360,6 @@ protected:
private: private:
void checkNumberOfArguments(size_t number_of_arguments) const;
DataTypePtr getReturnTypeWithoutLowCardinality(const ColumnsWithTypeAndName & arguments) const; DataTypePtr getReturnTypeWithoutLowCardinality(const ColumnsWithTypeAndName & arguments) const;
}; };
@ -414,7 +414,7 @@ public:
*/ */
virtual bool canBeExecutedOnDefaultArguments() const { return true; } virtual bool canBeExecutedOnDefaultArguments() const { return true; }
/// Properties from IFunctionBase /// Properties from IFunctionBase (see IFunction.h)
virtual bool isSuitableForConstantFolding() const { return true; } virtual bool isSuitableForConstantFolding() const { return true; }
virtual ColumnPtr getConstantResultForNonConstArguments(const ColumnsWithTypeAndName & /*arguments*/, const DataTypePtr & /*result_type*/) const { return nullptr; } virtual ColumnPtr getConstantResultForNonConstArguments(const ColumnsWithTypeAndName & /*arguments*/, const DataTypePtr & /*result_type*/) const { return nullptr; }
virtual bool isInjective(const ColumnsWithTypeAndName & /*sample_columns*/) const { return false; } virtual bool isInjective(const ColumnsWithTypeAndName & /*sample_columns*/) const { return false; }

View File

@ -15,7 +15,7 @@
#include <Columns/ColumnFixedString.h> #include <Columns/ColumnFixedString.h>
#include <Columns/ColumnTuple.h> #include <Columns/ColumnTuple.h>
#include <Columns/ColumnNullable.h> #include <Columns/ColumnNullable.h>
#include <Columns/ColumnFunction.h> #include <Columns/MaskOperations.h>
#include <Common/typeid_cast.h> #include <Common/typeid_cast.h>
#include <Common/assert_cast.h> #include <Common/assert_cast.h>
#include <Functions/IFunction.h> #include <Functions/IFunction.h>
@ -26,8 +26,6 @@
#include <Functions/FunctionFactory.h> #include <Functions/FunctionFactory.h>
#include <Interpreters/castColumn.h> #include <Interpreters/castColumn.h>
#include <Columns/MaskOperations.h>
namespace DB namespace DB
{ {

View File

@ -3,14 +3,13 @@
#include <Columns/ColumnNullable.h> #include <Columns/ColumnNullable.h>
#include <Columns/ColumnConst.h> #include <Columns/ColumnConst.h>
#include <Columns/ColumnsNumber.h> #include <Columns/ColumnsNumber.h>
#include <Columns/MaskOperations.h>
#include <Interpreters/castColumn.h> #include <Interpreters/castColumn.h>
#include <Common/typeid_cast.h> #include <Common/typeid_cast.h>
#include <Common/assert_cast.h> #include <Common/assert_cast.h>
#include <DataTypes/DataTypeNullable.h> #include <DataTypes/DataTypeNullable.h>
#include <DataTypes/getLeastSupertype.h> #include <DataTypes/getLeastSupertype.h>
#include <Columns/MaskOperations.h>
#include <common/logger_useful.h>
namespace DB namespace DB
{ {
@ -91,7 +90,7 @@ public:
if (arg->onlyNull()) if (arg->onlyNull())
return; return;
const DataTypeNullable & nullable_type = static_cast<const DataTypeNullable &>(*arg); const DataTypeNullable & nullable_type = typeid_cast<const DataTypeNullable &>(*arg);
nested_type = nullable_type.getNestedType().get(); nested_type = nullable_type.getNestedType().get();
} }
else else