Skip to content

Commit

Permalink
support sqrt,floor,ceil pushdown (#2090)
Browse files Browse the repository at this point in the history
* support sqrt,floor,ceil pushdown

* use else if constexpr

* make compiler happy for unusing argument

* add test for sqrt,floor,ceil pushdown

* use agg for testing sqrt,ceil,floor

Co-authored-by: Yu Lei <leiysky@outlook.com>
  • Loading branch information
chAngeZhaoZhanBo and leiysky committed Jun 4, 2021
1 parent dc4d437 commit 8d5d0b1
Show file tree
Hide file tree
Showing 5 changed files with 334 additions and 53 deletions.
6 changes: 3 additions & 3 deletions dbms/src/Flash/Coprocessor/DAGUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ std::unordered_map<tipb::ScalarFuncSig, String> scalar_func_map({
//{tipb::ScalarFuncSig::CastRealAsJson, "cast"},

{tipb::ScalarFuncSig::CastDecimalAsInt, "tidb_cast"},
//{tipb::ScalarFuncSig::CastDecimalAsReal, "tidb_cast"},
{tipb::ScalarFuncSig::CastDecimalAsReal, "tidb_cast"},
{tipb::ScalarFuncSig::CastDecimalAsString, "tidb_cast"}, {tipb::ScalarFuncSig::CastDecimalAsDecimal, "tidb_cast"},
{tipb::ScalarFuncSig::CastDecimalAsTime, "tidb_cast"},
//{tipb::ScalarFuncSig::CastDecimalAsDuration, "cast"},
Expand Down Expand Up @@ -629,11 +629,11 @@ std::unordered_map<tipb::ScalarFuncSig, String> scalar_func_map({
{tipb::ScalarFuncSig::AbsInt, "abs"}, {tipb::ScalarFuncSig::AbsUInt, "abs"}, {tipb::ScalarFuncSig::AbsReal, "abs"},
{tipb::ScalarFuncSig::AbsDecimal, "abs"},

{tipb::ScalarFuncSig::CeilIntToDec, "ceil"}, {tipb::ScalarFuncSig::CeilIntToInt, "ceil"}, {tipb::ScalarFuncSig::CeilDecToInt, "ceil"},
{tipb::ScalarFuncSig::CeilIntToDec, "ceil"}, {tipb::ScalarFuncSig::CeilIntToInt, "ceil"}, {tipb::ScalarFuncSig::CeilDecToInt, "ceilDecimalToInt"},
{tipb::ScalarFuncSig::CeilDecToDec, "ceil"}, {tipb::ScalarFuncSig::CeilReal, "ceil"},

{tipb::ScalarFuncSig::FloorIntToDec, "floor"}, {tipb::ScalarFuncSig::FloorIntToInt, "floor"},
{tipb::ScalarFuncSig::FloorDecToInt, "floor"}, {tipb::ScalarFuncSig::FloorDecToDec, "floor"}, {tipb::ScalarFuncSig::FloorReal, "floor"},
{tipb::ScalarFuncSig::FloorDecToInt, "floorDecimalToInt"}, {tipb::ScalarFuncSig::FloorDecToDec, "floor"}, {tipb::ScalarFuncSig::FloorReal, "floor"},

{tipb::ScalarFuncSig::RoundReal, "round"}, {tipb::ScalarFuncSig::RoundInt, "round"}, {tipb::ScalarFuncSig::RoundDec, "round"},
//{tipb::ScalarFuncSig::RoundWithFracReal, "cast"},
Expand Down
5 changes: 5 additions & 0 deletions dbms/src/Functions/FunctionsRound.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ void registerFunctionsRound(FunctionFactory & factory)
factory.registerFunction<FunctionCeil>("ceil", FunctionFactory::CaseInsensitive);
factory.registerFunction<FunctionTrunc>("trunc", FunctionFactory::CaseInsensitive);

factory.registerFunction<FunctionRoundDecimalToInt>();
factory.registerFunction<FunctionCeilDecimalToInt>();
factory.registerFunction<FunctionFloorDecimalToInt>();
factory.registerFunction<FunctionTruncDecimalToInt>();

/// Compatibility aliases.
factory.registerFunction<FunctionCeil>("ceiling", FunctionFactory::CaseInsensitive);
factory.registerFunction<FunctionTrunc>("truncate", FunctionFactory::CaseInsensitive);
Expand Down
Loading

0 comments on commit 8d5d0b1

Please sign in to comment.