Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

Support mathematical functions ceil/ceiling, exp, floor, ln, log #540

Merged
merged 16 commits into from
Jul 12, 2020

Conversation

chloe-zh
Copy link
Member

@chloe-zh chloe-zh commented Jun 29, 2020

Issue #, if available:

Description of changes:

Implementation of function expressions is referred to MySQL mathematical functions as the requirement and standard.
Mathematical functions in core will be separated in a couple of pull requests. Functions in this pull request include:

  • ceil/ceiling
    usage: maps a number to the least integer greater than or equal to itself
    argument type: integer/long/float/double
    return type: integer

  • exp
    usage: maps a number to its natural exponential function
    argument type: integer/long/float/double
    return type: double

  • floor
    usage: maps a number to the greatest integer less than or equal to itself
    argument type: integer/long/float/double
    return type: integer

  • ln
    usage: maps a number to its natural logarithm
    argument type: integer/long/float/double
    return type: double

  • log
    usage: log(b, x) maps numbers b, x to their logarithm where b is the base, log(x) maps x to the natural logarithm, which is equivalent to ln(x)
    argument type: integer/long/float/double
    return type: double

  • log10
    usage: maps a number to its 10-base logarithm
    argument type: integer/long/float/double
    return type: double

  • log2
    usage: maps a number to its 2-base logarithm
    argument type: integer/long/float/double
    return type: double

Reference

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@dai-chen
Copy link
Member

Recently I found the function name has to be lowercase otherwise not supported function exception is thrown. Could you check if we can do a quick fix here or a separate PR is needed?

# Conflicts:
#	core/src/test/java/com/amazon/opendistroforelasticsearch/sql/expression/ExpressionTestBase.java
# Conflicts:
#	core/src/main/java/com/amazon/opendistroforelasticsearch/sql/expression/DSL.java
#	core/src/main/java/com/amazon/opendistroforelasticsearch/sql/expression/operator/arthmetic/UnaryFunction.java
#	core/src/test/java/com/amazon/opendistroforelasticsearch/sql/config/TestConfig.java
#	core/src/test/java/com/amazon/opendistroforelasticsearch/sql/expression/operator/arthmetic/UnaryFunctionTest.java
Copy link
Member

@dai-chen dai-chen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks for the changes!

Copy link
Contributor

@penghuo penghuo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the change!

@chloe-zh chloe-zh merged commit 13afbe5 into opendistro-for-elasticsearch:develop Jul 12, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants