You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ja...@apache.org on 2019/08/09 03:17:12 UTC

[flink] 02/03: [FLINK-13523][table-planner-blink] Remove non-standard bitwise scalar function and DIV(), DIV_INT() function from blink planner

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 fbd3225e9d63a10eb6e55fca136d2acfcc777250
Author: Zhenghua Gao <do...@gmail.com>
AuthorDate: Fri Aug 2 12:33:45 2019 +0800

    [FLINK-13523][table-planner-blink] Remove non-standard bitwise scalar function and DIV(), DIV_INT() function from blink planner
    
    This commit remove BITAND, BITOR, BITNOT, BITXOR scalar functions because they are not standard.
    This commit also removes DIV(), DIV_INT() because we already have "/" and "/INT" operators.
---
 .../functions/sql/FlinkSqlOperatorTable.java       |  57 -----------
 .../planner/codegen/calls/FunctionGenerator.scala  | 109 ---------------------
 .../planner/expressions/ScalarFunctionsTest.scala  |  59 -----------
 .../planner/expressions/SqlExpressionTest.scala    |  26 -----
 .../FlinkRelMdFilteredColumnIntervalTest.scala     |   5 +-
 5 files changed, 2 insertions(+), 254 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 ba453ff..8618207 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
@@ -50,7 +50,6 @@ import java.util.Arrays;
 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.STR_MAP_NULLABLE;
 import static org.apache.flink.table.planner.plan.type.FlinkReturnTypes.VARCHAR_2000_NULLABLE;
 
@@ -109,30 +108,6 @@ public class FlinkSqlOperatorTable extends ReflectiveSqlOperatorTable {
 	// FUNCTIONS
 
 	/**
-	 * DIV function. It corresponds to {@link #DIVIDE} operator but
-	 * returns without fractional part.
-	 */
-	public static final SqlFunction DIV = new SqlFunction(
-		"DIV",
-		SqlKind.OTHER_FUNCTION,
-		FLINK_DIV_NULLABLE,
-		null,
-		OperandTypes.EXACT_NUMERIC_EXACT_NUMERIC,
-		SqlFunctionCategory.NUMERIC);
-
-	/**
-	 * DIV_INT function. It corresponds to {@link #DIVIDE_INTEGER} operator but
-	 * returns without fractional part.
-	 */
-	public static final SqlFunction DIV_INT = new SqlFunction(
-		"DIV_INT",
-		SqlKind.OTHER_FUNCTION,
-		ReturnTypes.INTEGER_QUOTIENT_NULLABLE,
-		null,
-		OperandTypes.family(SqlTypeFamily.NUMERIC, SqlTypeFamily.NUMERIC),
-		SqlFunctionCategory.NUMERIC);
-
-	/**
 	 * Function used to access a processing time attribute.
 	 */
 	public static final SqlFunction PROCTIME =
@@ -288,38 +263,6 @@ public class FlinkSqlOperatorTable extends ReflectiveSqlOperatorTable {
 			OperandTypes.family(SqlTypeFamily.STRING)),
 		SqlFunctionCategory.NUMERIC);
 
-	public static final SqlFunction BITAND = new SqlFunction(
-		"BITAND",
-		SqlKind.OTHER_FUNCTION,
-		ReturnTypes.ARG0_NULLABLE,
-		null,
-		OperandTypes.family(SqlTypeFamily.NUMERIC, SqlTypeFamily.NUMERIC),
-		SqlFunctionCategory.NUMERIC);
-
-	public static final SqlFunction BITOR = new SqlFunction(
-		"BITOR",
-		SqlKind.OTHER_FUNCTION,
-		ReturnTypes.ARG0_NULLABLE,
-		null,
-		OperandTypes.family(SqlTypeFamily.NUMERIC, SqlTypeFamily.NUMERIC),
-		SqlFunctionCategory.NUMERIC);
-
-	public static final SqlFunction BITXOR = new SqlFunction(
-		"BITXOR",
-		SqlKind.OTHER_FUNCTION,
-		ReturnTypes.ARG0_NULLABLE,
-		null,
-		OperandTypes.family(SqlTypeFamily.NUMERIC, SqlTypeFamily.NUMERIC),
-		SqlFunctionCategory.NUMERIC);
-
-	public static final SqlFunction BITNOT = new SqlFunction(
-		"BITNOT",
-		SqlKind.OTHER_FUNCTION,
-		ReturnTypes.ARG0_NULLABLE,
-		null,
-		OperandTypes.NUMERIC,
-		SqlFunctionCategory.NUMERIC);
-
 	public static final SqlFunction JSONVALUE = new SqlFunction(
 		"JSONVALUE",
 		SqlKind.OTHER_FUNCTION,
diff --git a/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/codegen/calls/FunctionGenerator.scala b/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/codegen/calls/FunctionGenerator.scala
index 5769b55..d1eb672 100644
--- a/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/codegen/calls/FunctionGenerator.scala
+++ b/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/codegen/calls/FunctionGenerator.scala
@@ -544,86 +544,6 @@ object FunctionGenerator {
     BuiltInMethods.TANH_DEC)
 
   addSqlFunctionMethod(
-    BITAND,
-    Seq(INTEGER, INTEGER),
-    BuiltInMethods.BITAND_BYTE)
-
-  addSqlFunctionMethod(
-    BITAND,
-    Seq(SMALLINT, SMALLINT),
-    BuiltInMethods.BITAND_SHORT)
-
-  addSqlFunctionMethod(
-    BITAND,
-    Seq(INTEGER, INTEGER),
-    BuiltInMethods.BITAND_INTEGER)
-
-  addSqlFunctionMethod(
-    BITAND,
-    Seq(BIGINT, BIGINT),
-    BuiltInMethods.BITAND_LONG)
-
-  addSqlFunctionMethod(
-    BITNOT,
-    Seq(INTEGER),
-    BuiltInMethods.BITNOT_BYTE)
-
-  addSqlFunctionMethod(
-    BITNOT,
-    Seq(SMALLINT),
-    BuiltInMethods.BITNOT_SHORT)
-
-  addSqlFunctionMethod(
-    BITNOT,
-    Seq(INTEGER),
-    BuiltInMethods.BITNOT_INTEGER)
-
-  addSqlFunctionMethod(
-    BITNOT,
-    Seq(BIGINT),
-    BuiltInMethods.BITNOT_LONG)
-
-  addSqlFunctionMethod(
-    BITOR,
-    Seq(INTEGER, INTEGER),
-    BuiltInMethods.BITOR_BYTE)
-
-  addSqlFunctionMethod(
-    BITOR,
-    Seq(SMALLINT, SMALLINT),
-    BuiltInMethods.BITOR_SHORT)
-
-  addSqlFunctionMethod(
-    BITOR,
-    Seq(INTEGER, INTEGER),
-    BuiltInMethods.BITOR_INTEGER)
-
-  addSqlFunctionMethod(
-    BITOR,
-    Seq(BIGINT, BIGINT),
-    BuiltInMethods.BITOR_LONG)
-
-  addSqlFunctionMethod(
-    BITXOR,
-    Seq(INTEGER, INTEGER),
-    BuiltInMethods.BITXOR_BYTE)
-
-  addSqlFunctionMethod(
-    BITXOR,
-    Seq(SMALLINT, SMALLINT),
-    BuiltInMethods.BITXOR_SHORT)
-
-  addSqlFunctionMethod(
-    BITXOR,
-    Seq(INTEGER, INTEGER),
-    BuiltInMethods.BITXOR_INTEGER)
-
-  addSqlFunctionMethod(
-    BITXOR,
-    Seq(BIGINT, BIGINT),
-    BuiltInMethods.BITXOR_LONG)
-
-  addSqlFunctionMethod(
     NOW,
     Seq(),
     BuiltInMethods.NOW)
@@ -693,35 +613,6 @@ object FunctionGenerator {
       BINARY),
     new IfCallGen())
 
-  addSqlFunctionMethod(
-    DIV_INT,
-    Seq(INTEGER, INTEGER),
-    BuiltInMethods.DIV_INT)
-
-  addSqlFunction(
-    DIV,
-    Seq(DECIMAL, DOUBLE),
-    new DivCallGen()
-  )
-
-  addSqlFunction(
-    DIV,
-    Seq(DECIMAL, DECIMAL),
-    new DivCallGen()
-  )
-
-  addSqlFunction(
-    DIV,
-    Seq(DOUBLE, DOUBLE),
-    new DivCallGen()
-  )
-
-  addSqlFunction(
-    DIV,
-    Seq(DOUBLE, DECIMAL),
-    new DivCallGen()
-  )
-
   addSqlFunction(
     HASH_CODE,
     Seq(BOOLEAN),
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 0472cf7..6f9bd60 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
@@ -4060,63 +4060,4 @@ class ScalarFunctionsTest extends ScalarTypesTestBase {
       "IS_ALPHA(f33)",
       "false")
   }
-
-  @Test
-  def testBit(): Unit = {
-    testSqlApi(
-      "BITAND(1, 1)",
-      s"${1 & 1}")
-
-    testSqlApi(
-      "BITAND(2, 2)",
-      s"${2 & 2}")
-
-    testSqlApi(
-      "BITAND(-3, -2)",
-      "-4")
-
-    testSqlApi(
-      "BITOR(1, 2)",
-      s"${1 | 2}")
-
-    testSqlApi(
-      "BITOR(3, 0)",
-      s"${3 | 0}")
-
-    testSqlApi(
-      "BITOR(3, 4)",
-      "7")
-
-    testSqlApi(
-      "BITOR(-3, 2)",
-      "-1")
-
-    testSqlApi(
-      "BITXOR(1, 1)",
-      s"${1 ^ 1}")
-
-    testSqlApi(
-      "BITXOR(3, 1)",
-      s"${3 ^ 1}")
-
-    testSqlApi(
-      "BITXOR(-3, 2)",
-      "-1")
-
-    testSqlApi(
-      "BITNOT(1)",
-      s"${~1}")
-
-    testSqlApi(
-      "BITNOT(2)",
-      s"${~2}")
-
-    testSqlApi(
-      "BITNOT(3)",
-      s"${~3}")
-
-    testSqlApi(
-      "BITNOT(-3)",
-      "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 1e7e53c..35a60c1 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
@@ -137,12 +137,6 @@ class SqlExpressionTest extends ExpressionTestBase {
     // Decimal(2,1) / Decimal(10,0) => Decimal(23,12)
     testSqlApi("2.0/(-3)", "-0.666666666667")
     testSqlApi("-7.9/2", "-3.950000000000")
-
-    //div function
-    testSqlApi("div(7, 2)", "3")
-    testSqlApi("div(7.9, 2.009)", "3")
-    testSqlApi("div(7, -2.009)", "-3")
-    testSqlApi("div(-7.9, 2)", "-3")
   }
 
   @Test
@@ -278,26 +272,6 @@ class SqlExpressionTest extends ExpressionTestBase {
   @Test
   def testNullableCases(): Unit = {
     testSqlApi(
-      "BITAND(cast(NUll as bigInt), cast(NUll as bigInt))",
-      nullable
-    )
-
-    testSqlApi(
-      "BITNOT(cast(NUll as bigInt))",
-      nullable
-    )
-
-    testSqlApi(
-      "BITOR(cast(NUll as bigInt), cast(NUll as bigInt))",
-      nullable
-    )
-
-    testSqlApi(
-      "BITXOR(cast(NUll as bigInt), cast(NUll as bigInt))",
-      nullable
-    )
-
-    testSqlApi(
       "TO_BASE64(FROM_BASE64(cast(NUll as varchar)))",
       nullable
     )
diff --git a/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/plan/metadata/FlinkRelMdFilteredColumnIntervalTest.scala b/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/plan/metadata/FlinkRelMdFilteredColumnIntervalTest.scala
index 36410e7..9a659f1 100644
--- a/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/plan/metadata/FlinkRelMdFilteredColumnIntervalTest.scala
+++ b/flink-table/flink-table-planner-blink/src/test/scala/org/apache/flink/table/planner/plan/metadata/FlinkRelMdFilteredColumnIntervalTest.scala
@@ -17,13 +17,12 @@
  */
 package org.apache.flink.table.planner.plan.metadata
 
-import org.apache.flink.table.planner.functions.sql.FlinkSqlOperatorTable
 import org.apache.flink.table.planner.plan.stats.{RightSemiInfiniteValueInterval,ValueInterval}
 import org.apache.flink.table.types.logical._
 
 import org.apache.calcite.rel.RelNode
 import org.apache.calcite.rex.RexNode
-import org.apache.calcite.sql.fun.SqlStdOperatorTable.{EQUALS, GREATER_THAN, IS_FALSE, IS_TRUE, LESS_THAN, LESS_THAN_OR_EQUAL}
+import org.apache.calcite.sql.fun.SqlStdOperatorTable.{EQUALS, GREATER_THAN, IS_FALSE, IS_TRUE, LESS_THAN, LESS_THAN_OR_EQUAL, DIVIDE}
 import org.junit.Assert.{assertEquals, assertNull}
 import org.junit.{Before, Test}
 
@@ -44,7 +43,7 @@ class FlinkRelMdFilteredColumnIntervalTest extends FlinkRelMdHandlerTestBase {
     expr2 = relBuilder.call(GREATER_THAN, relBuilder.field(0), relBuilder.literal(-1))
     // a / 2 > 3
     expr3 = relBuilder.call(GREATER_THAN,
-      relBuilder.call(FlinkSqlOperatorTable.DIV, relBuilder.field(0), relBuilder.literal(2)),
+      relBuilder.call(DIVIDE, relBuilder.field(0), relBuilder.literal(2)),
       relBuilder.literal(3))
     // b < 1.1
     expr4 = relBuilder.call(LESS_THAN, relBuilder.field(1), relBuilder.literal(1.1D))