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/14 04:35:22 UTC

[flink] branch release-1.9 updated: [FLINK-13704][table-planner-blink] Revert removing SUBSTR() function in blink planner to fix TPC-H e2e test failed

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

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


The following commit(s) were added to refs/heads/release-1.9 by this push:
     new 09a6aa9  [FLINK-13704][table-planner-blink] Revert removing SUBSTR() function in blink planner to fix TPC-H e2e test failed
09a6aa9 is described below

commit 09a6aa96909c1e1f0b618d525a26dae8b69817cb
Author: JingsongLi <lz...@aliyun.com>
AuthorDate: Tue Aug 13 16:09:00 2019 +0200

    [FLINK-13704][table-planner-blink] Revert removing SUBSTR() function in blink planner to fix TPC-H e2e test failed
    
    This closes #9427
---
 .../table/planner/functions/sql/FlinkSqlOperatorTable.java    | 11 +++++++++++
 .../flink/table/planner/codegen/calls/StringCallGen.scala     |  2 +-
 .../flink/table/planner/expressions/ScalarFunctionsTest.scala |  2 +-
 .../flink/table/planner/expressions/SqlExpressionTest.scala   |  4 ++++
 4 files changed, 17 insertions(+), 2 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 a1228fc..b303da4 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
@@ -617,6 +617,17 @@ public class FlinkSqlOperatorTable extends ReflectiveSqlOperatorTable {
 		),
 		SqlFunctionCategory.STRING);
 
+	public static final SqlFunction SUBSTR = new SqlFunction(
+			"SUBSTR",
+			SqlKind.OTHER_FUNCTION,
+			ARG0_VARCHAR_FORCE_NULLABLE,
+			null,
+			OperandTypes.or(
+					OperandTypes.family(SqlTypeFamily.CHARACTER, SqlTypeFamily.INTEGER),
+					OperandTypes.family(SqlTypeFamily.CHARACTER, SqlTypeFamily.INTEGER, SqlTypeFamily.INTEGER)
+			),
+			SqlFunctionCategory.STRING);
+
 	public static final SqlFunction LEFT = new SqlFunction(
 		"LEFT",
 		SqlKind.OTHER_FUNCTION,
diff --git a/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/codegen/calls/StringCallGen.scala b/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/codegen/calls/StringCallGen.scala
index 0e7c5d1..7f40f73 100644
--- a/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/codegen/calls/StringCallGen.scala
+++ b/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/codegen/calls/StringCallGen.scala
@@ -63,7 +63,7 @@ object StringCallGen {
       case NOT_LIKE =>
         generateNot(ctx, new LikeCallGen().generate(ctx, operands, new BooleanType()))
 
-      case SUBSTRING => generateSubString(ctx, operands)
+      case SUBSTR | SUBSTRING => generateSubString(ctx, operands)
 
       case LEFT => generateLeft(ctx, operands.head, operands(1))
 
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 921b2ac..7e094a4 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
@@ -938,7 +938,7 @@ class ScalarFunctionsTest extends ScalarTypesTestBase {
 
   @Test
   def testSubString(): Unit = {
-    Array("substring").foreach {
+    Array("substring", "substr").foreach {
       substr =>
         testSqlApi(s"$substr(f0, 2, 3)", "his")
         testSqlApi(s"$substr(f0, 2, 100)", "his is a test String.")
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 42de09d..53e5f7c 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
@@ -158,6 +158,10 @@ class SqlExpressionTest extends ExpressionTestBase {
     testSqlApi("SUBSTRING('hello world', 2)", "ello world")
     testSqlApi("SUBSTRING('hello world', 2, 3)", "ell")
     testSqlApi("SUBSTRING('hello world', 2, 300)", "ello world")
+    testSqlApi("SUBSTR('hello world', 2, 3)", "ell")
+    testSqlApi("SUBSTR('hello world', 2)", "ello world")
+    testSqlApi("SUBSTR('hello world', 2, 300)", "ello world")
+    testSqlApi("SUBSTR('hello world', 0, 3)", "hel")
     testSqlApi("INITCAP('hello world')", "Hello World")
     testSqlApi("REGEXP_REPLACE('foobar', 'oo|ar', '')", "fb")
     testSqlApi("REGEXP_EXTRACT('foothebar', 'foo(.*?)(bar)', 2)", "bar")