[ 
https://issues.apache.org/jira/browse/BEAM-5100?focusedWorklogId=132827&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-132827
 ]

ASF GitHub Bot logged work on BEAM-5100:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 09/Aug/18 04:41
            Start Date: 09/Aug/18 04:41
    Worklog Time Spent: 10m 
      Work Description: akedin closed pull request #6168: [BEAM-5100][SQL]Test 
Arithmetic functions at the DSL level
URL: https://github.com/apache/beam/pull/6168
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/BeamSqlDslSqlStdOperatorsTest.java
 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/BeamSqlDslSqlStdOperatorsTest.java
index 75cddd8443a..24968d6f066 100644
--- 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/BeamSqlDslSqlStdOperatorsTest.java
+++ 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/BeamSqlDslSqlStdOperatorsTest.java
@@ -38,10 +38,12 @@
 import java.util.Comparator;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Random;
 import java.util.Set;
 import java.util.stream.Collectors;
 import 
org.apache.beam.sdk.extensions.sql.integrationtest.BeamSqlBuiltinFunctionsIntegrationTestBase;
 import org.apache.beam.sdk.schemas.Schema;
+import org.apache.calcite.runtime.SqlFunctions;
 import org.apache.calcite.sql.SqlKind;
 import org.apache.calcite.sql.SqlOperator;
 import org.apache.calcite.sql.fun.SqlStdOperatorTable;
@@ -63,6 +65,13 @@
   private static final BigDecimal TWO = BigDecimal.valueOf(2.0);
   private static final BigDecimal TWO0 = BigDecimal.ONE.add(BigDecimal.ONE);
 
+  private static final int INTEGER_VALUE = 1;
+  private static final long LONG_VALUE = 1L;
+  private static final short SHORT_VALUE = 1;
+  private static final byte BYTE_VALUE = 1;
+  private static final double DOUBLE_VALUE = 1.0;
+  private static final float FLOAT_VALUE = 1.0f;
+
   @Rule public ExpectedException thrown = ExpectedException.none();
 
   /** Calcite operators are identified by name and kind. */
@@ -557,6 +566,326 @@ public void testStringFunctions() throws Exception {
     pipeline.run();
   }
 
+  @Test
+  @SqlOperatorTest(name = "ABS", kind = "OTHER_FUNCTION")
+  public void testAbs() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("ABS(c_integer)", Math.abs(INTEGER_VALUE))
+            .addExpr("ABS(c_bigint)", Math.abs(LONG_VALUE))
+            .addExpr("ABS(c_smallint)", (short) Math.abs(SHORT_VALUE))
+            .addExpr("ABS(c_tinyint)", (byte) Math.abs(BYTE_VALUE))
+            .addExpr("ABS(c_double)", Math.abs(DOUBLE_VALUE))
+            .addExpr("ABS(c_float)", Math.abs(FLOAT_VALUE))
+            .addExpr("ABS(c_decimal)", new 
BigDecimal(Math.abs(ONE.doubleValue())));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "LN", kind = "OTHER_FUNCTION")
+  public void testLn() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("LN(c_integer)", Math.log(INTEGER_VALUE))
+            .addExpr("LN(c_bigint)", Math.log(LONG_VALUE))
+            .addExpr("LN(c_smallint)", Math.log(SHORT_VALUE))
+            .addExpr("LN(c_tinyint)", Math.log(BYTE_VALUE))
+            .addExpr("LN(c_double)", Math.log(DOUBLE_VALUE))
+            .addExpr("LN(c_float)", Math.log(FLOAT_VALUE))
+            .addExpr("LN(c_decimal)", Math.log(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "SQRT", kind = "OTHER_FUNCTION")
+  public void testSqrt() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("SQRT(c_integer)", Math.sqrt(INTEGER_VALUE))
+            .addExpr("SQRT(c_bigint)", Math.sqrt(LONG_VALUE))
+            .addExpr("SQRT(c_smallint)", Math.sqrt(SHORT_VALUE))
+            .addExpr("SQRT(c_tinyint)", Math.sqrt(BYTE_VALUE))
+            .addExpr("SQRT(c_double)", Math.sqrt(DOUBLE_VALUE))
+            .addExpr("SQRT(c_float)", Math.sqrt(FLOAT_VALUE))
+            .addExpr("SQRT(c_decimal)", Math.sqrt(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "ROUND", kind = "OTHER_FUNCTION")
+  public void testRound() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("ROUND(c_integer, 0)", SqlFunctions.sround(INTEGER_VALUE, 
0))
+            .addExpr("ROUND(c_bigint, 0)", SqlFunctions.sround(LONG_VALUE, 0))
+            .addExpr("ROUND(c_smallint, 0)", (short) 
SqlFunctions.sround(SHORT_VALUE, 0))
+            .addExpr("ROUND(c_tinyint, 0)", (byte) 
SqlFunctions.sround(BYTE_VALUE, 0))
+            .addExpr("ROUND(c_double, 0)", SqlFunctions.sround(DOUBLE_VALUE, 
0))
+            .addExpr("ROUND(c_float, 0)", (float) 
SqlFunctions.sround(FLOAT_VALUE, 0))
+            .addExpr(
+                "ROUND(c_decimal, 0)", new 
BigDecimal(SqlFunctions.sround(ONE.doubleValue(), 0)));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "LOG10", kind = "OTHER_FUNCTION")
+  public void testLog10() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("LOG10(c_integer)", Math.log10(INTEGER_VALUE))
+            .addExpr("LOG10(c_bigint)", Math.log10(LONG_VALUE))
+            .addExpr("LOG10(c_smallint)", Math.log10(SHORT_VALUE))
+            .addExpr("LOG10(c_tinyint)", Math.log10(BYTE_VALUE))
+            .addExpr("LOG10(c_double)", Math.log10(DOUBLE_VALUE))
+            .addExpr("LOG10(c_float)", Math.log10(FLOAT_VALUE))
+            .addExpr("LOG10(c_decimal)", Math.log10(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "EXP", kind = "OTHER_FUNCTION")
+  public void testExp() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("EXP(c_integer)", Math.exp(INTEGER_VALUE))
+            .addExpr("EXP(c_bigint)", Math.exp(LONG_VALUE))
+            .addExpr("EXP(c_smallint)", Math.exp(SHORT_VALUE))
+            .addExpr("EXP(c_tinyint)", Math.exp(BYTE_VALUE))
+            .addExpr("EXP(c_double)", Math.exp(DOUBLE_VALUE))
+            .addExpr("EXP(c_float)", Math.exp(FLOAT_VALUE))
+            .addExpr("EXP(c_decimal)", Math.exp(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "ACOS", kind = "OTHER_FUNCTION")
+  public void testAcos() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("ACOS(c_integer)", Math.acos(INTEGER_VALUE))
+            .addExpr("ACOS(c_bigint)", Math.acos(LONG_VALUE))
+            .addExpr("ACOS(c_smallint)", Math.acos(SHORT_VALUE))
+            .addExpr("ACOS(c_tinyint)", Math.acos(BYTE_VALUE))
+            .addExpr("ACOS(c_double)", Math.acos(DOUBLE_VALUE))
+            .addExpr("ACOS(c_float)", Math.acos(FLOAT_VALUE))
+            .addExpr("ACOS(c_decimal)", Math.acos(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "ASIN", kind = "OTHER_FUNCTION")
+  public void testAsin() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("ASIN(c_integer)", Math.asin(INTEGER_VALUE))
+            .addExpr("ASIN(c_bigint)", Math.asin(LONG_VALUE))
+            .addExpr("ASIN(c_smallint)", Math.asin(SHORT_VALUE))
+            .addExpr("ASIN(c_tinyint)", Math.asin(BYTE_VALUE))
+            .addExpr("ASIN(c_double)", Math.asin(DOUBLE_VALUE))
+            .addExpr("ASIN(c_float)", Math.asin(FLOAT_VALUE))
+            .addExpr("ASIN(c_decimal)", Math.asin(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "ATAN", kind = "OTHER_FUNCTION")
+  public void testAtan() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("ATAN(c_integer)", Math.atan(INTEGER_VALUE))
+            .addExpr("ATAN(c_bigint)", Math.atan(LONG_VALUE))
+            .addExpr("ATAN(c_smallint)", Math.atan(SHORT_VALUE))
+            .addExpr("ATAN(c_tinyint)", Math.atan(BYTE_VALUE))
+            .addExpr("ATAN(c_double)", Math.atan(DOUBLE_VALUE))
+            .addExpr("ATAN(c_float)", Math.atan(FLOAT_VALUE))
+            .addExpr("ATAN(c_decimal)", Math.atan(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "COT", kind = "OTHER_FUNCTION")
+  public void testCot() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("COT(c_integer)", 1.0d / Math.tan(INTEGER_VALUE))
+            .addExpr("COT(c_bigint)", 1.0d / Math.tan(LONG_VALUE))
+            .addExpr("COT(c_smallint)", 1.0d / Math.tan(SHORT_VALUE))
+            .addExpr("COT(c_tinyint)", 1.0d / Math.tan(BYTE_VALUE))
+            .addExpr("COT(c_double)", 1.0d / Math.tan(DOUBLE_VALUE))
+            .addExpr("COT(c_float)", 1.0d / Math.tan(FLOAT_VALUE))
+            .addExpr("COT(c_decimal)", 1.0d / Math.tan(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "DEGREES", kind = "OTHER_FUNCTION")
+  public void testDegrees() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("DEGREES(c_integer)", Math.toDegrees(INTEGER_VALUE))
+            .addExpr("DEGREES(c_bigint)", Math.toDegrees(LONG_VALUE))
+            .addExpr("DEGREES(c_smallint)", Math.toDegrees(SHORT_VALUE))
+            .addExpr("DEGREES(c_tinyint)", Math.toDegrees(BYTE_VALUE))
+            .addExpr("DEGREES(c_double)", Math.toDegrees(DOUBLE_VALUE))
+            .addExpr("DEGREES(c_float)", Math.toDegrees(FLOAT_VALUE))
+            .addExpr("DEGREES(c_decimal)", Math.toDegrees(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "RADIANS", kind = "OTHER_FUNCTION")
+  public void testRadians() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("RADIANS(c_integer)", Math.toRadians(INTEGER_VALUE))
+            .addExpr("RADIANS(c_bigint)", Math.toRadians(LONG_VALUE))
+            .addExpr("RADIANS(c_smallint)", Math.toRadians(SHORT_VALUE))
+            .addExpr("RADIANS(c_tinyint)", Math.toRadians(BYTE_VALUE))
+            .addExpr("RADIANS(c_double)", Math.toRadians(DOUBLE_VALUE))
+            .addExpr("RADIANS(c_float)", Math.toRadians(FLOAT_VALUE))
+            .addExpr("RADIANS(c_decimal)", Math.toRadians(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "COS", kind = "OTHER_FUNCTION")
+  public void testCos() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("COS(c_integer)", Math.cos(INTEGER_VALUE))
+            .addExpr("COS(c_bigint)", Math.cos(LONG_VALUE))
+            .addExpr("COS(c_smallint)", Math.cos(SHORT_VALUE))
+            .addExpr("COS(c_tinyint)", Math.cos(BYTE_VALUE))
+            .addExpr("COS(c_double)", Math.cos(DOUBLE_VALUE))
+            .addExpr("COS(c_float)", Math.cos(FLOAT_VALUE))
+            .addExpr("COS(c_decimal)", Math.cos(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "SIN", kind = "OTHER_FUNCTION")
+  public void testSin() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("SIN(c_integer)", Math.sin(INTEGER_VALUE))
+            .addExpr("SIN(c_bigint)", Math.sin(LONG_VALUE))
+            .addExpr("SIN(c_smallint)", Math.sin(SHORT_VALUE))
+            .addExpr("SIN(c_tinyint)", Math.sin(BYTE_VALUE))
+            .addExpr("SIN(c_double)", Math.sin(DOUBLE_VALUE))
+            .addExpr("SIN(c_float)", Math.sin(FLOAT_VALUE))
+            .addExpr("SIN(c_decimal)", Math.sin(ONE.doubleValue()));
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "TAN", kind = "OTHER_FUNCTION")
+  public void testTan() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("TAN(c_integer)", Math.tan(INTEGER_VALUE))
+            .addExpr("TAN(c_bigint)", Math.tan(LONG_VALUE))
+            .addExpr("TAN(c_smallint)", Math.tan(SHORT_VALUE))
+            .addExpr("TAN(c_tinyint)", Math.tan(BYTE_VALUE))
+            .addExpr("TAN(c_double)", Math.tan(DOUBLE_VALUE))
+            .addExpr("TAN(c_float)", Math.tan(FLOAT_VALUE))
+            .addExpr("TAN(c_decimal)", Math.tan(ONE.doubleValue()));
+
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "SIGN", kind = "OTHER_FUNCTION")
+  public void testSign() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("SIGN(c_integer)", Integer.signum(INTEGER_VALUE))
+            .addExpr("SIGN(c_bigint)", (long) (Long.signum(LONG_VALUE)))
+            .addExpr("SIGN(c_smallint)", (short) (Integer.signum(SHORT_VALUE)))
+            .addExpr("SIGN(c_tinyint)", (byte) Integer.signum(BYTE_VALUE))
+            .addExpr("SIGN(c_double)", Math.signum(DOUBLE_VALUE))
+            .addExpr("SIGN(c_float)", Math.signum(FLOAT_VALUE))
+            .addExpr("SIGN(c_decimal)", BigDecimal.valueOf(ONE.signum()));
+
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "POWER", kind = "OTHER_FUNCTION")
+  public void testPower() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("POWER(c_integer, 2)", Math.pow(INTEGER_VALUE, 2))
+            .addExpr("POWER(c_bigint, 2)", Math.pow(LONG_VALUE, 2))
+            .addExpr("POWER(c_smallint, 2)", Math.pow(SHORT_VALUE, 2))
+            .addExpr("POWER(c_tinyint, 2)", Math.pow(BYTE_VALUE, 2))
+            .addExpr("POWER(c_double, 2)", Math.pow(DOUBLE_VALUE, 2))
+            .addExpr("POWER(c_float, 2)", Math.pow(FLOAT_VALUE, 2))
+            .addExpr("POWER(c_decimal, 2)", Math.pow(ONE.doubleValue(), 2));
+
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "PI", kind = "OTHER_FUNCTION")
+  public void testPi() throws Exception {
+    ExpressionChecker checker = new ExpressionChecker().addExpr("PI", Math.PI);
+
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "ATAN2", kind = "OTHER_FUNCTION")
+  public void testAtan2() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("ATAN2(c_integer, 2)", Math.atan2(INTEGER_VALUE, 2))
+            .addExpr("ATAN2(c_bigint, 2)", Math.atan2(LONG_VALUE, 2))
+            .addExpr("ATAN2(c_smallint, 2)", Math.atan2(SHORT_VALUE, 2))
+            .addExpr("ATAN2(c_tinyint, 2)", Math.atan2(BYTE_VALUE, 2))
+            .addExpr("ATAN2(c_double, 2)", Math.atan2(DOUBLE_VALUE, 2))
+            .addExpr("ATAN2(c_float, 2)", Math.atan2(FLOAT_VALUE, 2))
+            .addExpr("ATAN2(c_decimal, 2)", Math.atan2(ONE.doubleValue(), 2));
+
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "TRUNCATE", kind = "OTHER_FUNCTION")
+  public void testTruncate() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr("TRUNCATE(c_integer, 2)", 
SqlFunctions.struncate(INTEGER_VALUE, 2))
+            .addExpr("TRUNCATE(c_bigint, 2)", 
SqlFunctions.struncate(LONG_VALUE, 2))
+            .addExpr("TRUNCATE(c_smallint, 2)", (short) 
SqlFunctions.struncate(SHORT_VALUE, 2))
+            .addExpr("TRUNCATE(c_tinyint, 2)", (byte) 
SqlFunctions.struncate(BYTE_VALUE, 2))
+            .addExpr("TRUNCATE(c_double, 2)", 
SqlFunctions.struncate(DOUBLE_VALUE, 2))
+            .addExpr("TRUNCATE(c_float, 2)", (float) 
SqlFunctions.struncate(FLOAT_VALUE, 2))
+            .addExpr("TRUNCATE(c_decimal, 2)", SqlFunctions.struncate(ONE, 2));
+
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "RAND", kind = "OTHER_FUNCTION")
+  public void testRand() {
+    ExpressionChecker checker =
+        new ExpressionChecker().addExpr("RAND(c_integer)", new 
Random(INTEGER_VALUE).nextDouble());
+
+    checker.buildRunAndCheck();
+  }
+
+  @Test
+  @SqlOperatorTest(name = "RAND_INTEGER", kind = "OTHER_FUNCTION")
+  public void testRandInteger() {
+    ExpressionChecker checker =
+        new ExpressionChecker()
+            .addExpr(
+                "RAND_INTEGER(c_integer, c_integer)",
+                new Random(INTEGER_VALUE).nextInt(INTEGER_VALUE));
+
+    checker.buildRunAndCheck();
+  }
+
   @Test
   @SqlOperatorTest(name = "ARRAY", kind = "ARRAY_VALUE_CONSTRUCTOR")
   @SqlOperatorTest(name = "CARDINALITY", kind = "OTHER_FUNCTION")
diff --git 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/integrationtest/BeamSqlMathFunctionsIntegrationTest.java
 
b/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/integrationtest/BeamSqlMathFunctionsIntegrationTest.java
deleted file mode 100644
index 9f60e5ff7a9..00000000000
--- 
a/sdks/java/extensions/sql/src/test/java/org/apache/beam/sdk/extensions/sql/integrationtest/BeamSqlMathFunctionsIntegrationTest.java
+++ /dev/null
@@ -1,348 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.sdk.extensions.sql.integrationtest;
-
-import java.math.BigDecimal;
-import java.util.Random;
-import org.apache.calcite.runtime.SqlFunctions;
-import org.junit.Test;
-
-/** Integration test for built-in MATH functions. */
-public class BeamSqlMathFunctionsIntegrationTest
-    extends BeamSqlBuiltinFunctionsIntegrationTestBase {
-  private static final int INTEGER_VALUE = 1;
-  private static final long LONG_VALUE = 1L;
-  private static final short SHORT_VALUE = 1;
-  private static final byte BYTE_VALUE = 1;
-  private static final double DOUBLE_VALUE = 1.0;
-  private static final float FLOAT_VALUE = 1.0f;
-  private static final BigDecimal DECIMAL_VALUE = BigDecimal.ONE;
-
-  @Test
-  public void testAbs() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("ABS(c_integer)", Math.abs(INTEGER_VALUE))
-            .addExpr("ABS(c_bigint)", Math.abs(LONG_VALUE))
-            .addExpr("ABS(c_smallint)", (short) Math.abs(SHORT_VALUE))
-            .addExpr("ABS(c_tinyint)", (byte) Math.abs(BYTE_VALUE))
-            .addExpr("ABS(c_double)", Math.abs(DOUBLE_VALUE))
-            .addExpr("ABS(c_float)", Math.abs(FLOAT_VALUE))
-            .addExpr("ABS(c_decimal)", new 
BigDecimal(Math.abs(DECIMAL_VALUE.doubleValue())));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testSqrt() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("SQRT(c_integer)", Math.sqrt(INTEGER_VALUE))
-            .addExpr("SQRT(c_bigint)", Math.sqrt(LONG_VALUE))
-            .addExpr("SQRT(c_smallint)", Math.sqrt(SHORT_VALUE))
-            .addExpr("SQRT(c_tinyint)", Math.sqrt(BYTE_VALUE))
-            .addExpr("SQRT(c_double)", Math.sqrt(DOUBLE_VALUE))
-            .addExpr("SQRT(c_float)", Math.sqrt(FLOAT_VALUE))
-            .addExpr("SQRT(c_decimal)", 
Math.sqrt(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testRound() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("ROUND(c_integer, 0)", SqlFunctions.sround(INTEGER_VALUE, 
0))
-            .addExpr("ROUND(c_bigint, 0)", SqlFunctions.sround(LONG_VALUE, 0))
-            .addExpr("ROUND(c_smallint, 0)", (short) 
SqlFunctions.sround(SHORT_VALUE, 0))
-            .addExpr("ROUND(c_tinyint, 0)", (byte) 
SqlFunctions.sround(BYTE_VALUE, 0))
-            .addExpr("ROUND(c_double, 0)", SqlFunctions.sround(DOUBLE_VALUE, 
0))
-            .addExpr("ROUND(c_float, 0)", (float) 
SqlFunctions.sround(FLOAT_VALUE, 0))
-            .addExpr(
-                "ROUND(c_decimal, 0)",
-                new 
BigDecimal(SqlFunctions.sround(DECIMAL_VALUE.doubleValue(), 0)));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testLn() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("LN(c_integer)", Math.log(INTEGER_VALUE))
-            .addExpr("LN(c_bigint)", Math.log(LONG_VALUE))
-            .addExpr("LN(c_smallint)", Math.log(SHORT_VALUE))
-            .addExpr("LN(c_tinyint)", Math.log(BYTE_VALUE))
-            .addExpr("LN(c_double)", Math.log(DOUBLE_VALUE))
-            .addExpr("LN(c_float)", Math.log(FLOAT_VALUE))
-            .addExpr("LN(c_decimal)", Math.log(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testLog10() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("LOG10(c_integer)", Math.log10(INTEGER_VALUE))
-            .addExpr("LOG10(c_bigint)", Math.log10(LONG_VALUE))
-            .addExpr("LOG10(c_smallint)", Math.log10(SHORT_VALUE))
-            .addExpr("LOG10(c_tinyint)", Math.log10(BYTE_VALUE))
-            .addExpr("LOG10(c_double)", Math.log10(DOUBLE_VALUE))
-            .addExpr("LOG10(c_float)", Math.log10(FLOAT_VALUE))
-            .addExpr("LOG10(c_decimal)", 
Math.log10(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testExp() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("EXP(c_integer)", Math.exp(INTEGER_VALUE))
-            .addExpr("EXP(c_bigint)", Math.exp(LONG_VALUE))
-            .addExpr("EXP(c_smallint)", Math.exp(SHORT_VALUE))
-            .addExpr("EXP(c_tinyint)", Math.exp(BYTE_VALUE))
-            .addExpr("EXP(c_double)", Math.exp(DOUBLE_VALUE))
-            .addExpr("EXP(c_float)", Math.exp(FLOAT_VALUE))
-            .addExpr("EXP(c_decimal)", Math.exp(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testAcos() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("ACOS(c_integer)", Math.acos(INTEGER_VALUE))
-            .addExpr("ACOS(c_bigint)", Math.acos(LONG_VALUE))
-            .addExpr("ACOS(c_smallint)", Math.acos(SHORT_VALUE))
-            .addExpr("ACOS(c_tinyint)", Math.acos(BYTE_VALUE))
-            .addExpr("ACOS(c_double)", Math.acos(DOUBLE_VALUE))
-            .addExpr("ACOS(c_float)", Math.acos(FLOAT_VALUE))
-            .addExpr("ACOS(c_decimal)", 
Math.acos(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testAsin() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("ASIN(c_integer)", Math.asin(INTEGER_VALUE))
-            .addExpr("ASIN(c_bigint)", Math.asin(LONG_VALUE))
-            .addExpr("ASIN(c_smallint)", Math.asin(SHORT_VALUE))
-            .addExpr("ASIN(c_tinyint)", Math.asin(BYTE_VALUE))
-            .addExpr("ASIN(c_double)", Math.asin(DOUBLE_VALUE))
-            .addExpr("ASIN(c_float)", Math.asin(FLOAT_VALUE))
-            .addExpr("ASIN(c_decimal)", 
Math.asin(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testAtan() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("ATAN(c_integer)", Math.atan(INTEGER_VALUE))
-            .addExpr("ATAN(c_bigint)", Math.atan(LONG_VALUE))
-            .addExpr("ATAN(c_smallint)", Math.atan(SHORT_VALUE))
-            .addExpr("ATAN(c_tinyint)", Math.atan(BYTE_VALUE))
-            .addExpr("ATAN(c_double)", Math.atan(DOUBLE_VALUE))
-            .addExpr("ATAN(c_float)", Math.atan(FLOAT_VALUE))
-            .addExpr("ATAN(c_decimal)", 
Math.atan(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testCot() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("COT(c_integer)", 1.0d / Math.tan(INTEGER_VALUE))
-            .addExpr("COT(c_bigint)", 1.0d / Math.tan(LONG_VALUE))
-            .addExpr("COT(c_smallint)", 1.0d / Math.tan(SHORT_VALUE))
-            .addExpr("COT(c_tinyint)", 1.0d / Math.tan(BYTE_VALUE))
-            .addExpr("COT(c_double)", 1.0d / Math.tan(DOUBLE_VALUE))
-            .addExpr("COT(c_float)", 1.0d / Math.tan(FLOAT_VALUE))
-            .addExpr("COT(c_decimal)", 1.0d / 
Math.tan(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testDegrees() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("DEGREES(c_integer)", Math.toDegrees(INTEGER_VALUE))
-            .addExpr("DEGREES(c_bigint)", Math.toDegrees(LONG_VALUE))
-            .addExpr("DEGREES(c_smallint)", Math.toDegrees(SHORT_VALUE))
-            .addExpr("DEGREES(c_tinyint)", Math.toDegrees(BYTE_VALUE))
-            .addExpr("DEGREES(c_double)", Math.toDegrees(DOUBLE_VALUE))
-            .addExpr("DEGREES(c_float)", Math.toDegrees(FLOAT_VALUE))
-            .addExpr("DEGREES(c_decimal)", 
Math.toDegrees(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testRadians() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("RADIANS(c_integer)", Math.toRadians(INTEGER_VALUE))
-            .addExpr("RADIANS(c_bigint)", Math.toRadians(LONG_VALUE))
-            .addExpr("RADIANS(c_smallint)", Math.toRadians(SHORT_VALUE))
-            .addExpr("RADIANS(c_tinyint)", Math.toRadians(BYTE_VALUE))
-            .addExpr("RADIANS(c_double)", Math.toRadians(DOUBLE_VALUE))
-            .addExpr("RADIANS(c_float)", Math.toRadians(FLOAT_VALUE))
-            .addExpr("RADIANS(c_decimal)", 
Math.toRadians(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testCos() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("COS(c_integer)", Math.cos(INTEGER_VALUE))
-            .addExpr("COS(c_bigint)", Math.cos(LONG_VALUE))
-            .addExpr("COS(c_smallint)", Math.cos(SHORT_VALUE))
-            .addExpr("COS(c_tinyint)", Math.cos(BYTE_VALUE))
-            .addExpr("COS(c_double)", Math.cos(DOUBLE_VALUE))
-            .addExpr("COS(c_float)", Math.cos(FLOAT_VALUE))
-            .addExpr("COS(c_decimal)", Math.cos(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testSin() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("SIN(c_integer)", Math.sin(INTEGER_VALUE))
-            .addExpr("SIN(c_bigint)", Math.sin(LONG_VALUE))
-            .addExpr("SIN(c_smallint)", Math.sin(SHORT_VALUE))
-            .addExpr("SIN(c_tinyint)", Math.sin(BYTE_VALUE))
-            .addExpr("SIN(c_double)", Math.sin(DOUBLE_VALUE))
-            .addExpr("SIN(c_float)", Math.sin(FLOAT_VALUE))
-            .addExpr("SIN(c_decimal)", Math.sin(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testTan() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("TAN(c_integer)", Math.tan(INTEGER_VALUE))
-            .addExpr("TAN(c_bigint)", Math.tan(LONG_VALUE))
-            .addExpr("TAN(c_smallint)", Math.tan(SHORT_VALUE))
-            .addExpr("TAN(c_tinyint)", Math.tan(BYTE_VALUE))
-            .addExpr("TAN(c_double)", Math.tan(DOUBLE_VALUE))
-            .addExpr("TAN(c_float)", Math.tan(FLOAT_VALUE))
-            .addExpr("TAN(c_decimal)", Math.tan(DECIMAL_VALUE.doubleValue()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testSign() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("SIGN(c_integer)", Integer.signum(INTEGER_VALUE))
-            .addExpr("SIGN(c_bigint)", (long) (Long.signum(LONG_VALUE)))
-            .addExpr("SIGN(c_smallint)", (short) (Integer.signum(SHORT_VALUE)))
-            .addExpr("SIGN(c_tinyint)", (byte) Integer.signum(BYTE_VALUE))
-            .addExpr("SIGN(c_double)", Math.signum(DOUBLE_VALUE))
-            .addExpr("SIGN(c_float)", Math.signum(FLOAT_VALUE))
-            .addExpr("SIGN(c_decimal)", 
BigDecimal.valueOf(DECIMAL_VALUE.signum()));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testPower() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("POWER(c_integer, 2)", Math.pow(INTEGER_VALUE, 2))
-            .addExpr("POWER(c_bigint, 2)", Math.pow(LONG_VALUE, 2))
-            .addExpr("POWER(c_smallint, 2)", Math.pow(SHORT_VALUE, 2))
-            .addExpr("POWER(c_tinyint, 2)", Math.pow(BYTE_VALUE, 2))
-            .addExpr("POWER(c_double, 2)", Math.pow(DOUBLE_VALUE, 2))
-            .addExpr("POWER(c_float, 2)", Math.pow(FLOAT_VALUE, 2))
-            .addExpr("POWER(c_decimal, 2)", 
Math.pow(DECIMAL_VALUE.doubleValue(), 2));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testPi() throws Exception {
-    ExpressionChecker checker = new ExpressionChecker().addExpr("PI", Math.PI);
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testAtan2() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("ATAN2(c_integer, 2)", Math.atan2(INTEGER_VALUE, 2))
-            .addExpr("ATAN2(c_bigint, 2)", Math.atan2(LONG_VALUE, 2))
-            .addExpr("ATAN2(c_smallint, 2)", Math.atan2(SHORT_VALUE, 2))
-            .addExpr("ATAN2(c_tinyint, 2)", Math.atan2(BYTE_VALUE, 2))
-            .addExpr("ATAN2(c_double, 2)", Math.atan2(DOUBLE_VALUE, 2))
-            .addExpr("ATAN2(c_float, 2)", Math.atan2(FLOAT_VALUE, 2))
-            .addExpr("ATAN2(c_decimal, 2)", 
Math.atan2(DECIMAL_VALUE.doubleValue(), 2));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testTruncate() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr("TRUNCATE(c_integer, 2)", 
SqlFunctions.struncate(INTEGER_VALUE, 2))
-            .addExpr("TRUNCATE(c_bigint, 2)", 
SqlFunctions.struncate(LONG_VALUE, 2))
-            .addExpr("TRUNCATE(c_smallint, 2)", (short) 
SqlFunctions.struncate(SHORT_VALUE, 2))
-            .addExpr("TRUNCATE(c_tinyint, 2)", (byte) 
SqlFunctions.struncate(BYTE_VALUE, 2))
-            .addExpr("TRUNCATE(c_double, 2)", 
SqlFunctions.struncate(DOUBLE_VALUE, 2))
-            .addExpr("TRUNCATE(c_float, 2)", (float) 
SqlFunctions.struncate(FLOAT_VALUE, 2))
-            .addExpr("TRUNCATE(c_decimal, 2)", 
SqlFunctions.struncate(DECIMAL_VALUE, 2));
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testRand() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker().addExpr("RAND(c_integer)", new 
Random(INTEGER_VALUE).nextDouble());
-
-    checker.buildRunAndCheck();
-  }
-
-  @Test
-  public void testRandInteger() throws Exception {
-    ExpressionChecker checker =
-        new ExpressionChecker()
-            .addExpr(
-                "RAND_INTEGER(c_integer, c_integer)",
-                new Random(INTEGER_VALUE).nextInt(INTEGER_VALUE));
-
-    checker.buildRunAndCheck();
-  }
-}


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 132827)
    Time Spent: 1.5h  (was: 1h 20m)

> Test arithmetic functions at the DSL level
> ------------------------------------------
>
>                 Key: BEAM-5100
>                 URL: https://issues.apache.org/jira/browse/BEAM-5100
>             Project: Beam
>          Issue Type: Sub-task
>          Components: dsl-sql
>            Reporter: Rui Wang
>            Assignee: Rui Wang
>            Priority: Major
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to