This is an automated email from the ASF dual-hosted git repository.

jark pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git

commit 4d560df50d08f22b68e8b8c9a0e2086f45b5f4b4
Author: Zhenghua Gao <doc...@gmail.com>
AuthorDate: Thu Aug 1 18:40:14 2019 +0800

    [FLINK-13523][table-planner-blink] Refactor DIVIDE function to keep it 
compatible with old planner
    
    The behavior of DIVIDE function in blink planner always return 
double/decimal type which is not standard.
---
 .../planner/functions/sql/FlinkSqlOperatorTable.java    | 17 +----------------
 .../table/planner/expressions/ReturnTypeInference.scala |  5 +----
 .../table/planner/expressions/ScalarFunctionsTest.scala |  2 +-
 .../table/planner/expressions/SqlExpressionTest.scala   |  2 +-
 4 files changed, 4 insertions(+), 22 deletions(-)

diff --git 
a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/sql/FlinkSqlOperatorTable.java
 
b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/sql/FlinkSqlOperatorTable.java
index b3d91ae..ba453ff 100644
--- 
a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/sql/FlinkSqlOperatorTable.java
+++ 
b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/functions/sql/FlinkSqlOperatorTable.java
@@ -25,7 +25,6 @@ import 
org.apache.flink.table.planner.plan.type.NumericExceptFirstOperandChecker
 import org.apache.flink.table.planner.plan.type.RepeatFamilyOperandTypeChecker;
 
 import org.apache.calcite.sql.SqlAggFunction;
-import org.apache.calcite.sql.SqlBinaryOperator;
 import org.apache.calcite.sql.SqlFunction;
 import org.apache.calcite.sql.SqlFunctionCategory;
 import org.apache.calcite.sql.SqlGroupedWindowFunction;
@@ -52,7 +51,6 @@ import java.util.List;
 
 import static 
org.apache.flink.table.planner.plan.type.FlinkReturnTypes.ARG0_VARCHAR_FORCE_NULLABLE;
 import static 
org.apache.flink.table.planner.plan.type.FlinkReturnTypes.FLINK_DIV_NULLABLE;
-import static 
org.apache.flink.table.planner.plan.type.FlinkReturnTypes.FLINK_QUOTIENT_NULLABLE;
 import static 
org.apache.flink.table.planner.plan.type.FlinkReturnTypes.STR_MAP_NULLABLE;
 import static 
org.apache.flink.table.planner.plan.type.FlinkReturnTypes.VARCHAR_2000_NULLABLE;
 
@@ -108,20 +106,6 @@ public class FlinkSqlOperatorTable extends 
ReflectiveSqlOperatorTable {
        // Flink specific built-in scalar SQL functions
        // 
-----------------------------------------------------------------------------
 
-       // OPERATORS
-
-       /**
-        * Arithmetic division operator, '/'. Return DOUBLE or DECIMAL with 
fractional part.
-        */
-       public static final SqlBinaryOperator DIVIDE = new SqlBinaryOperator(
-               "/",
-               SqlKind.DIVIDE,
-               60,
-               true,
-               FLINK_QUOTIENT_NULLABLE,
-               InferTypes.FIRST_KNOWN,
-               OperandTypes.DIVISION_OPERATOR);
-
        // FUNCTIONS
 
        /**
@@ -953,6 +937,7 @@ public class FlinkSqlOperatorTable extends 
ReflectiveSqlOperatorTable {
        public static final SqlOperator AND = SqlStdOperatorTable.AND;
        public static final SqlOperator AS = SqlStdOperatorTable.AS;
        public static final SqlOperator CONCAT = SqlStdOperatorTable.CONCAT;
+       public static final SqlOperator DIVIDE = SqlStdOperatorTable.DIVIDE;
        public static final SqlOperator DIVIDE_INTEGER = 
SqlStdOperatorTable.DIVIDE_INTEGER;
        public static final SqlOperator DOT = SqlStdOperatorTable.DOT;
        public static final SqlOperator EQUALS = SqlStdOperatorTable.EQUALS;
diff --git 
a/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/expressions/ReturnTypeInference.scala
 
b/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/expressions/ReturnTypeInference.scala
index b2c90b0..59110ab 100644
--- 
a/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/expressions/ReturnTypeInference.scala
+++ 
b/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/expressions/ReturnTypeInference.scala
@@ -138,10 +138,7 @@ object ReturnTypeInference {
         fromLogicalTypeToTypeInfo(FlinkTypeFactory.toLogicalType(resultType))
       }
     }
-    val nonDecimalType = op match {
-      case _: Div => (_: LogicalType) => BasicTypeInfo.DOUBLE_TYPE_INFO
-      case _: Mul => (t: LogicalType) => fromLogicalTypeToTypeInfo(t)
-    }
+    val nonDecimalType = (t: LogicalType) => fromLogicalTypeToTypeInfo(t)
     inferBinaryArithmetic(op, decimalFunc, nonDecimalType)
   }
 
diff --git 
a/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
 
b/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
index 7c01910..0472cf7 100644
--- 
a/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
+++ 
b/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/ScalarFunctionsTest.scala
@@ -1473,7 +1473,7 @@ class ScalarFunctionsTest extends ScalarTypesTestBase {
       1514356320000L / 60000.0, // the `/` is Scala operator, not Flink 
TableApi operator
       "1514356320000L / 60000",
       "1514356320000 / 60000",
-      "2.5239272E7")
+      "25239272")
 
     testAllApis(
       'f7 / 2,
diff --git 
a/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/SqlExpressionTest.scala
 
b/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/SqlExpressionTest.scala
index 2877468..1e7e53c 100644
--- 
a/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/SqlExpressionTest.scala
+++ 
b/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/expressions/SqlExpressionTest.scala
@@ -91,7 +91,7 @@ class SqlExpressionTest extends ExpressionTestBase {
     testSqlApi("5+5", "10")
     testSqlApi("5-5", "0")
     testSqlApi("5*5", "25")
-    testSqlApi("5/5", "1.0")
+    testSqlApi("5/5", "1")
     testSqlApi("POWER(5, 5)", "3125.0")
     testSqlApi("ABS(-5)", "5")
     testSqlApi("MOD(-26, 5)", "-1")

Reply via email to