You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by fh...@apache.org on 2017/05/03 12:10:31 UTC

[24/50] [abbrv] flink git commit: [FLINK-6112] [table] Improve documentation, consistency, and fix bugs

[FLINK-6112] [table] Improve documentation, consistency, and fix bugs


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/0a334312
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/0a334312
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/0a334312

Branch: refs/heads/table-retraction
Commit: 0a3343128be3c0f28772f803f82d14c23b084221
Parents: a06b322
Author: twalthr <tw...@apache.org>
Authored: Sun Apr 30 15:03:33 2017 +0200
Committer: twalthr <tw...@apache.org>
Committed: Sun Apr 30 15:12:46 2017 +0200

----------------------------------------------------------------------
 docs/dev/table_api.md                           | 297 ++++++++++---------
 .../flink/table/api/scala/expressionDsl.scala   |  16 +-
 .../table/codegen/calls/ConstantCallGen.scala   |   2 +-
 .../table/codegen/calls/FunctionGenerator.scala |  66 ++---
 .../table/expressions/mathExpressions.scala     |  22 +-
 .../flink/table/validate/FunctionCatalog.scala  |   4 +-
 .../table/expressions/ScalarFunctionsTest.scala |  48 ++-
 .../table/expressions/SqlExpressionTest.scala   |   3 +-
 8 files changed, 249 insertions(+), 209 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/0a334312/docs/dev/table_api.md
----------------------------------------------------------------------
diff --git a/docs/dev/table_api.md b/docs/dev/table_api.md
index 6d52a78..022a73d 100644
--- a/docs/dev/table_api.md
+++ b/docs/dev/table_api.md
@@ -1977,303 +1977,303 @@ BOOLEAN.isNotFalse
       </td>
     </tr>
 
+  </tbody>
+</table>
+
+
+<table class="table table-bordered">
+  <thead>
     <tr>
+      <th class="text-left" style="width: 40%">Arithmetic functions</th>
+      <th class="text-center">Description</th>
+    </tr>
+  </thead>
+
+  <tbody>
+
+   <tr>
       <td>
         {% highlight java %}
-NUMERIC.sin()
++ numeric
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the sine of a given number.</p>
+        <p>Returns <i>numeric</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.cos()
+- numeric
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the cosine of a given number.</p>
+        <p>Returns negative <i>numeric</i>.</p>
       </td>
     </tr>
-
+    
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.tan()
+numeric1 + numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> plus <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.cot()
+numeric1 - numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> minus <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.asin()
+numeric1 * numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> multiplied by <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.acos()
+numeric1 / numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> divided by <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.atan()
+numeric1.power(numeric2)
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> raised to the power of <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.degrees()
+NUMERIC.abs()
 {% endhighlight %}
       </td>
       <td>
-        <p>Converts <i>numeric</i> from radians to degrees.</p>
+        <p>Calculates the absolute value of given value.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.radians()
+numeric1 % numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Converts <i>numeric</i> from degrees to radians.</p>
+        <p>Returns the remainder (modulus) of <i>numeric1</i> divided by <i>numeric2</i>. The result is negative only if <i>numeric1</i> is negative.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.sign()
+NUMERIC.sqrt()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the signum of a given number.</p>
+        <p>Calculates the square root of a given value.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.round(numeric2)
+NUMERIC.ln()
 {% endhighlight %}
       </td>
       <td>
-        <p>Rounds the given number to the other value places right to the decimal point.</p>
+        <p>Calculates the natural logarithm of given value.</p>
       </td>
     </tr>
 
-  </tbody>
-</table>
-
-
-<table class="table table-bordered">
-  <thead>
     <tr>
-      <th class="text-left" style="width: 40%">Arithmetic functions</th>
-      <th class="text-center">Description</th>
-    </tr>
-  </thead>
-
-  <tbody>
-
-   <tr>
       <td>
         {% highlight java %}
-+ numeric
+NUMERIC.log10()
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric</i>.</p>
+        <p>Calculates the base 10 logarithm of given value.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-- numeric
+NUMERIC.exp()
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns negative <i>numeric</i>.</p>
+        <p>Calculates the Euler's number raised to the given power.</p>
       </td>
     </tr>
-    
+
     <tr>
       <td>
         {% highlight java %}
-numeric1 + numeric2
+NUMERIC.ceil()
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> plus <i>numeric2</i>.</p>
+        <p>Calculates the smallest integer greater than or equal to a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-numeric1 - numeric2
+NUMERIC.floor()
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> minus <i>numeric2</i>.</p>
+        <p>Calculates the largest integer less than or equal to a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-numeric1 * numeric2
+NUMERIC.sin()
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> multiplied by <i>numeric2</i>.</p>
+        <p>Calculates the sine of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-numeric1 / numeric2
+NUMERIC.cos()
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> divided by <i>numeric2</i>.</p>
+        <p>Calculates the cosine of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-numeric1.power(numeric2)
+NUMERIC.tan()
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> raised to the power of <i>numeric2</i>.</p>
+        <p>Calculates the tangent of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.abs()
+NUMERIC.cot()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the absolute value of given value.</p>
+        <p>Calculates the cotangent of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-numeric1 % numeric2
+NUMERIC.asin()
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns the remainder (modulus) of <i>numeric1</i> divided by <i>numeric2</i>. The result is negative only if <i>numeric1</i> is negative.</p>
+        <p>Calculates the arc sine of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.sqrt()
+NUMERIC.acos()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the square root of a given value.</p>
+        <p>Calculates the arc cosine of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.ln()
+NUMERIC.atan()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the natural logarithm of given value.</p>
+        <p>Calculates the arc tangent of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.log10()
+NUMERIC.degrees()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the base 10 logarithm of given value.</p>
+        <p>Converts <i>numeric</i> from radians to degrees.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.exp()
+NUMERIC.radians()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the Euler's number raised to the given power.</p>
+        <p>Converts <i>numeric</i> from degrees to radians.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.ceil()
+NUMERIC.sign()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the smallest integer greater than or equal to a given number.</p>
+        <p>Calculates the signum of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight java %}
-NUMERIC.floor()
+NUMERIC.round(INT)
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the largest integer less than or equal to a given number.</p>
+        <p>Rounds the given number to <i>integer</i> places right to the decimal point.</p>
       </td>
     </tr>
 
@@ -2284,7 +2284,7 @@ pi()
 {% endhighlight %}
       </td>
       <td>
-        <p> Returns pi.</p>
+        <p>Returns a value that is closer than any other value to pi.</p>
       </td>
     </tr>
     
@@ -3337,7 +3337,7 @@ NUMERIC.tan()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Calculates the cotangent of a given number.</p>
       </td>
     </tr>
 
@@ -3348,7 +3348,7 @@ NUMERIC.cot()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Calculates the arc sine of a given number.</p>
       </td>
     </tr>
 
@@ -3359,7 +3359,7 @@ NUMERIC.asin()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Calculates the arc cosine of a given number.</p>
       </td>
     </tr>
 
@@ -3370,7 +3370,7 @@ NUMERIC.acos()
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Calculates the arc tangent of a given number.</p>
       </td>
     </tr>
 
@@ -3421,11 +3421,11 @@ NUMERIC.sign()
     <tr>
       <td>
         {% highlight scala %}
-NUMERIC.round(numeric2)
+NUMERIC.round(INT)
 {% endhighlight %}
       </td>
       <td>
-        <p>Rounds the given number to the other value places right to the decimal point.</p>
+        <p>Rounds the given number to <i>integer</i> places right to the decimal point.</p>
       </td>
     </tr>
 
@@ -3436,7 +3436,7 @@ pi()
 {% endhighlight %}
       </td>
       <td>
-        <p> Returns pi.</p>
+        <p>Returns a value that is closer than any other value to pi.</p>
       </td>
     </tr>
 
@@ -4436,312 +4436,313 @@ boolean IS NOT UNKNOWN
       </td>
     </tr>
 
+  </tbody>
+</table>
+
+<table class="table table-bordered">
+  <thead>
+    <tr>
+      <th class="text-left" style="width: 40%">Arithmetic functions</th>
+      <th class="text-center">Description</th>
+    </tr>
+  </thead>
+
+  <tbody>
     <tr>
       <td>
         {% highlight text %}
-SIN(numeric)
++ numeric
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the sine of a given number.</p>
+        <p>Returns <i>numeric</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-COS(numeric)
+- numeric
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the cosine of a given number.</p>
+        <p>Returns negative <i>numeric</i>.</p>
       </td>
     </tr>
-
+    
     <tr>
       <td>
         {% highlight text %}
-TAN(numeric)
+numeric1 + numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> plus <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-COT(numeric)
+numeric1 - numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> minus <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-ASIN(numeric)
+numeric1 * numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> multiplied by <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-ACOS(numeric)
+numeric1 / numeric2
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> divided by <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-ATAN(numeric)
+POWER(numeric1, numeric2)
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the tangent of a given number.</p>
+        <p>Returns <i>numeric1</i> raised to the power of <i>numeric2</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-DEGREES(numeric)
+ABS(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Converts <i>numeric</i> from radians to degrees.</p>
+        <p>Returns the absolute value of <i>numeric</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-RADIANS(numeric)
+MOD(numeric1, numeric2)
 {% endhighlight %}
       </td>
       <td>
-        <p>Converts <i>numeric</i> from degrees to radians.</p>
+        <p>Returns the remainder (modulus) of <i>numeric1</i> divided by <i>numeric2</i>. The result is negative only if <i>numeric1</i> is negative.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-SIGN(numeric)
+SQRT(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Calculates the signum of a given number.</p>
+        <p>Returns the square root of <i>numeric</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-ROUND(numeric1, numeric2)
+LN(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Rounds the given number to the other value places right to the decimal point.</p>
+        <p>Returns the natural logarithm (base e) of <i>numeric</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-PI
+LOG10(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p> Returns pi.</p>
+        <p>Returns the base 10 logarithm of <i>numeric</i>.</p>
       </td>
     </tr>
 
-  </tbody>
-</table>
-
-<table class="table table-bordered">
-  <thead>
-    <tr>
-      <th class="text-left" style="width: 40%">Arithmetic functions</th>
-      <th class="text-center">Description</th>
-    </tr>
-  </thead>
-
-  <tbody>
     <tr>
       <td>
         {% highlight text %}
-+ numeric
+EXP(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric</i>.</p>
+        <p>Returns e raised to the power of <i>numeric</i>.</p>
       </td>
-    </tr>
+    </tr>   
 
     <tr>
       <td>
         {% highlight text %}
-- numeric
+CEIL(numeric)
+CEILING(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns negative <i>numeric</i>.</p>
+        <p>Rounds <i>numeric</i> up, and returns the smallest number that is greater than or equal to <i>numeric</i>.</p>
       </td>
-    </tr>
-    
+    </tr>  
+
     <tr>
       <td>
         {% highlight text %}
-numeric1 + numeric2
+FLOOR(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> plus <i>numeric2</i>.</p>
+        <p>Rounds <i>numeric</i> down, and returns the largest number that is less than or equal to <i>numeric</i>.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-numeric1 - numeric2
+SIN(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> minus <i>numeric2</i>.</p>
+        <p>Calculates the sine of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-numeric1 * numeric2
+COS(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> multiplied by <i>numeric2</i>.</p>
+        <p>Calculates the cosine of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-numeric1 / numeric2
+TAN(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> divided by <i>numeric2</i>.</p>
+        <p>Calculates the tangent of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-POWER(numeric1, numeric2)
+COT(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns <i>numeric1</i> raised to the power of <i>numeric2</i>.</p>
+        <p>Calculates the cotangent of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-ABS(numeric)
+ASIN(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns the absolute value of <i>numeric</i>.</p>
+        <p>Calculates the arc sine of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-MOD(numeric1, numeric2)
+ACOS(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns the remainder (modulus) of <i>numeric1</i> divided by <i>numeric2</i>. The result is negative only if <i>numeric1</i> is negative.</p>
+        <p>Calculates the arc cosine of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-SQRT(numeric)
+ATAN(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns the square root of <i>numeric</i>.</p>
+        <p>Calculates the arc tangent of a given number.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-LN(numeric)
+DEGREES(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns the natural logarithm (base e) of <i>numeric</i>.</p>
+        <p>Converts <i>numeric</i> from radians to degrees.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-LOG10(numeric)
+RADIANS(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns the base 10 logarithm of <i>numeric</i>.</p>
+        <p>Converts <i>numeric</i> from degrees to radians.</p>
       </td>
     </tr>
 
     <tr>
       <td>
         {% highlight text %}
-EXP(numeric)
+SIGN(numeric)
 {% endhighlight %}
       </td>
       <td>
-        <p>Returns e raised to the power of <i>numeric</i>.</p>
+        <p>Calculates the signum of a given number.</p>
       </td>
-    </tr>   
+    </tr>
 
     <tr>
       <td>
         {% highlight text %}
-CEIL(numeric)
+ROUND(numeric, int)
 {% endhighlight %}
       </td>
       <td>
-        <p>Rounds <i>numeric</i> up, and returns the smallest number that is greater than or equal to <i>numeric</i>.</p>
+        <p>Rounds the given number to <i>integer</i> places right to the decimal point.</p>
       </td>
-    </tr>  
+    </tr>
 
     <tr>
       <td>
         {% highlight text %}
-FLOOR(numeric)
+PI()
 {% endhighlight %}
       </td>
       <td>
-        <p>Rounds <i>numeric</i> down, and returns the largest number that is less than or equal to <i>numeric</i>.</p>
+        <p>Returns a value that is closer than any other value to pi.</p>
       </td>
     </tr>
 

http://git-wip-us.apache.org/repos/asf/flink/blob/0a334312/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/scala/expressionDsl.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/scala/expressionDsl.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/scala/expressionDsl.scala
index 169a729..a512098 100644
--- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/scala/expressionDsl.scala
+++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/scala/expressionDsl.scala
@@ -291,22 +291,22 @@ trait ImplicitExpressionOperations {
   def tan() = Tan(expr)
 
   /**
-    * Calculates the tangent of a given number.
+    * Calculates the cotangent of a given number.
     */
   def cot() = Cot(expr)
 
   /**
-    * Calculates the tangent of a given number.
+    * Calculates the arc sine of a given number.
     */
   def asin() = Asin(expr)
 
   /**
-    * Calculates the tangent of a given number.
+    * Calculates the arc cosine of a given number.
     */
   def acos() = Acos(expr)
 
   /**
-    * Calculates the tangent of a given number.
+    * Calculates the arc tangent of a given number.
     */
   def atan() = Atan(expr)
 
@@ -326,9 +326,9 @@ trait ImplicitExpressionOperations {
   def sign() = Sign(expr)
 
   /**
-    * Rounds the given number to the other value places right to the decimal point.
+    * Rounds the given number to integer places right to the decimal point.
     */
-  def round(other: Expression) = Round(expr, other)
+  def round(places: Expression) = Round(expr, places)
 
   // String operations
 
@@ -863,12 +863,12 @@ object array {
 }
 
 /**
-  * Returns pi.
+  * Returns a value that is closer than any other value to pi.
   */
 object pi {
 
   /**
-    * Returns pi.
+    * Returns a value that is closer than any other value to pi.
     */
   def apply(): Expression = {
     Pi()

http://git-wip-us.apache.org/repos/asf/flink/blob/0a334312/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/ConstantCallGen.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/ConstantCallGen.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/ConstantCallGen.scala
index 39fb13b..779d077 100644
--- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/ConstantCallGen.scala
+++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/ConstantCallGen.scala
@@ -22,7 +22,7 @@ import org.apache.flink.api.common.typeinfo.TypeInformation
 import org.apache.flink.table.codegen.{CodeGenerator, GeneratedExpression}
 
 /**
-  * Generates a function call which return a constant.
+  * Generates a function call which returns a constant.
   */
 class ConstantCallGen(
     targetType: TypeInformation[_],

http://git-wip-us.apache.org/repos/asf/flink/blob/0a334312/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/FunctionGenerator.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/FunctionGenerator.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/FunctionGenerator.scala
index b8b001f..a0d132b 100644
--- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/FunctionGenerator.scala
+++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/FunctionGenerator.scala
@@ -179,6 +179,36 @@ object FunctionGenerator {
     DOUBLE_TYPE_INFO,
     BuiltInMethods.POWER_DEC)
 
+  addSqlFunction(
+    ABS,
+    Seq(DOUBLE_TYPE_INFO),
+    new MultiTypeMethodCallGen(BuiltInMethods.ABS))
+
+  addSqlFunction(
+    ABS,
+    Seq(BIG_DEC_TYPE_INFO),
+    new MultiTypeMethodCallGen(BuiltInMethods.ABS_DEC))
+
+  addSqlFunction(
+    FLOOR,
+    Seq(DOUBLE_TYPE_INFO),
+    new FloorCeilCallGen(BuiltInMethod.FLOOR.method))
+
+  addSqlFunction(
+    FLOOR,
+    Seq(BIG_DEC_TYPE_INFO),
+    new FloorCeilCallGen(BuiltInMethod.FLOOR.method))
+
+  addSqlFunction(
+    CEIL,
+    Seq(DOUBLE_TYPE_INFO),
+    new FloorCeilCallGen(BuiltInMethod.CEIL.method))
+
+  addSqlFunction(
+    CEIL,
+    Seq(BIG_DEC_TYPE_INFO),
+    new FloorCeilCallGen(BuiltInMethod.CEIL.method))
+
   addSqlFunctionMethod(
     SIN,
     Seq(DOUBLE_TYPE_INFO),
@@ -287,11 +317,6 @@ object FunctionGenerator {
     DOUBLE_TYPE_INFO,
     BuiltInMethods.RADIANS_DEC)
 
-  addSqlFunction(
-    PI,
-    Seq(),
-    new ConstantCallGen(DOUBLE_TYPE_INFO, Math.PI.toString))
-
   addSqlFunctionMethod(
     SIGN,
     Seq(DOUBLE_TYPE_INFO),
@@ -341,34 +366,9 @@ object FunctionGenerator {
     BuiltInMethods.ROUND_DOUBLE)
 
   addSqlFunction(
-    ABS,
-    Seq(DOUBLE_TYPE_INFO),
-    new MultiTypeMethodCallGen(BuiltInMethods.ABS))
-
-  addSqlFunction(
-    ABS,
-    Seq(BIG_DEC_TYPE_INFO),
-    new MultiTypeMethodCallGen(BuiltInMethods.ABS_DEC))
-
-  addSqlFunction(
-    FLOOR,
-    Seq(DOUBLE_TYPE_INFO),
-    new FloorCeilCallGen(BuiltInMethod.FLOOR.method))
-
-  addSqlFunction(
-    FLOOR,
-    Seq(BIG_DEC_TYPE_INFO),
-    new FloorCeilCallGen(BuiltInMethod.FLOOR.method))
-
-  addSqlFunction(
-    CEIL,
-    Seq(DOUBLE_TYPE_INFO),
-    new FloorCeilCallGen(BuiltInMethod.CEIL.method))
-
-  addSqlFunction(
-    CEIL,
-    Seq(BIG_DEC_TYPE_INFO),
-    new FloorCeilCallGen(BuiltInMethod.CEIL.method))
+    PI,
+    Seq(),
+    new ConstantCallGen(DOUBLE_TYPE_INFO, Math.PI.toString))
 
   // ----------------------------------------------------------------------------------------------
   // Temporal functions

http://git-wip-us.apache.org/repos/asf/flink/blob/0a334312/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/expressions/mathExpressions.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/expressions/mathExpressions.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/expressions/mathExpressions.scala
index 16cb34a..fae4470 100644
--- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/expressions/mathExpressions.scala
+++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/expressions/mathExpressions.scala
@@ -241,17 +241,7 @@ case class Radians(child: Expression) extends UnaryExpression {
   override def toString: String = s"radians($child)"
 
   override private[flink] def toRexNode(implicit relBuilder: RelBuilder): RexNode = {
-    relBuilder.call(SqlStdOperatorTable.DEGREES, child.toRexNode)
-  }
-}
-
-case class Pi() extends LeafExpression {
-  override private[flink] def resultType: TypeInformation[_] = DOUBLE_TYPE_INFO
-
-  override def toString: String = s"pi()"
-
-  override private[flink] def toRexNode(implicit relBuilder: RelBuilder): RexNode = {
-    relBuilder.call(SqlStdOperatorTable.PI)
+    relBuilder.call(SqlStdOperatorTable.RADIANS, child.toRexNode)
   }
 }
 
@@ -285,3 +275,13 @@ case class Round(left: Expression, right: Expression) extends BinaryExpression {
     relBuilder.call(SqlStdOperatorTable.ROUND, left.toRexNode, right.toRexNode)
   }
 }
+
+case class Pi() extends LeafExpression {
+  override private[flink] def resultType: TypeInformation[_] = DOUBLE_TYPE_INFO
+
+  override def toString: String = s"pi()"
+
+  override private[flink] def toRexNode(implicit relBuilder: RelBuilder): RexNode = {
+    relBuilder.call(SqlStdOperatorTable.PI)
+  }
+}

http://git-wip-us.apache.org/repos/asf/flink/blob/0a334312/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/validate/FunctionCatalog.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/validate/FunctionCatalog.scala b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/validate/FunctionCatalog.scala
index 97a7e96..729ad48 100644
--- a/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/validate/FunctionCatalog.scala
+++ b/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/validate/FunctionCatalog.scala
@@ -210,9 +210,9 @@ object FunctionCatalog {
     "atan" -> classOf[Atan],
     "degrees" -> classOf[Degrees],
     "radians" -> classOf[Radians],
-    "pi" -> classOf[Pi],
     "sign" -> classOf[Sign],
     "round" -> classOf[Round],
+    "pi" -> classOf[Pi],
 
     // temporal functions
     "extract" -> classOf[Extract],
@@ -369,9 +369,9 @@ class BasicOperatorTable extends ReflectiveSqlOperatorTable {
     SqlStdOperatorTable.ATAN,
     SqlStdOperatorTable.DEGREES,
     SqlStdOperatorTable.RADIANS,
-    SqlStdOperatorTable.PI,
     SqlStdOperatorTable.SIGN,
     SqlStdOperatorTable.ROUND,
+    SqlStdOperatorTable.PI,
     // EXTENSIONS
     EventTimeExtractor,
     ProcTimeExtractor,

http://git-wip-us.apache.org/repos/asf/flink/blob/0a334312/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/ScalarFunctionsTest.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/ScalarFunctionsTest.scala b/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/ScalarFunctionsTest.scala
index 85804bc..c1c2508 100644
--- a/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/ScalarFunctionsTest.scala
+++ b/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/ScalarFunctionsTest.scala
@@ -1027,12 +1027,42 @@ class ScalarFunctionsTest extends ExpressionTestBase {
   }
 
   @Test
-  def testPi(): Unit = {
+  def testRadians(): Unit = {
     testAllApis(
-      pi(),
-      "pi()",
-      "PI",
-      math.Pi.toString)
+      'f2.radians(),
+      "f2.radians()",
+      "RADIANS(f2)",
+      math.toRadians(42.toByte).toString)
+
+    testAllApis(
+      'f3.radians(),
+      "f3.radians()",
+      "RADIANS(f3)",
+      math.toRadians(43.toShort).toString)
+
+    testAllApis(
+      'f4.radians(),
+      "f4.radians()",
+      "RADIANS(f4)",
+      math.toRadians(44.toLong).toString)
+
+    testAllApis(
+      'f5.radians(),
+      "f5.radians()",
+      "RADIANS(f5)",
+      math.toRadians(4.5.toFloat).toString)
+
+    testAllApis(
+      'f6.radians(),
+      "f6.radians()",
+      "RADIANS(f6)",
+      math.toRadians(4.6).toString)
+
+    testAllApis(
+      'f15.radians(),
+      "radians(f15)",
+      "RADIANS(f15)",
+      math.toRadians(-1231.1231231321321321111).toString)
   }
 
   @Test
@@ -1075,7 +1105,15 @@ class ScalarFunctionsTest extends ExpressionTestBase {
       "f4.round(f32)",
       "ROUND(f4, f32)",
       40.toString)
+  }
 
+  @Test
+  def testPi(): Unit = {
+    testAllApis(
+      pi(),
+      "pi()",
+      "PI",
+      math.Pi.toString)
   }
 
   // ----------------------------------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/flink/blob/0a334312/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/SqlExpressionTest.scala
----------------------------------------------------------------------
diff --git a/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/SqlExpressionTest.scala b/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/SqlExpressionTest.scala
index b11e291..5cc8bd1 100644
--- a/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/SqlExpressionTest.scala
+++ b/flink-libraries/flink-table/src/test/scala/org/apache/flink/table/expressions/SqlExpressionTest.scala
@@ -110,9 +110,10 @@ class SqlExpressionTest extends ExpressionTestBase {
     testSqlApi("ACOS(0.5)", "1.0471975511965979")
     testSqlApi("ATAN(0.5)", "0.4636476090008061")
     testSqlApi("DEGREES(0.5)", "28.64788975654116")
-    testSqlApi("PI", "3.141592653589793")
+    testSqlApi("RADIANS(0.5)", "0.008726646259971648")
     testSqlApi("SIGN(-1.1)", "-1")
     testSqlApi("ROUND(-12.345, 2)", "-12.35")
+    testSqlApi("PI", "3.141592653589793")
   }
 
   @Test