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

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


The following commit(s) were added to refs/heads/master by this push:
     new d3a4d52  [BEAM-12219] Enable SUBSTRING function.
     new bdee3bd  Merge pull request #14630 from ibzib/BEAM-12219
d3a4d52 is described below

commit d3a4d52676d50ae89499050b25698653d8800f39
Author: Kyle Weaver <kcwea...@google.com>
AuthorDate: Fri Apr 23 14:51:15 2021 -0700

    [BEAM-12219] Enable SUBSTRING function.
    
    This function is gated behind language feature 
FEATURE_V_1_3_ADDITIONAL_STRING_FUNCTIONS, so I added that (and also 
alphabetized the list).
---
 .../beam/sdk/extensions/sql/zetasql/SqlAnalyzer.java     | 11 ++++++-----
 .../sql/zetasql/translation/SqlOperatorMappingTable.java |  1 +
 .../extensions/sql/zetasql/ZetaSqlDialectSpecTest.java   | 16 ++++++++++++++++
 3 files changed, 23 insertions(+), 5 deletions(-)

diff --git 
a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/SqlAnalyzer.java
 
b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/SqlAnalyzer.java
index 14a6574..d6ac756 100644
--- 
a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/SqlAnalyzer.java
+++ 
b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/SqlAnalyzer.java
@@ -144,14 +144,15 @@ public class SqlAnalyzer {
         .setEnabledLanguageFeatures(
             new HashSet<>(
                 Arrays.asList(
-                    LanguageFeature.FEATURE_NUMERIC_TYPE,
+                    LanguageFeature.FEATURE_CREATE_AGGREGATE_FUNCTION,
+                    LanguageFeature.FEATURE_CREATE_TABLE_FUNCTION,
                     LanguageFeature.FEATURE_DISALLOW_GROUP_BY_FLOAT,
-                    LanguageFeature.FEATURE_V_1_2_CIVIL_TIME,
-                    LanguageFeature.FEATURE_V_1_1_SELECT_STAR_EXCEPT_REPLACE,
+                    LanguageFeature.FEATURE_NUMERIC_TYPE,
                     LanguageFeature.FEATURE_TABLE_VALUED_FUNCTIONS,
-                    LanguageFeature.FEATURE_CREATE_TABLE_FUNCTION,
                     LanguageFeature.FEATURE_TEMPLATE_FUNCTIONS,
-                    LanguageFeature.FEATURE_CREATE_AGGREGATE_FUNCTION)));
+                    LanguageFeature.FEATURE_V_1_1_SELECT_STAR_EXCEPT_REPLACE,
+                    LanguageFeature.FEATURE_V_1_2_CIVIL_TIME,
+                    
LanguageFeature.FEATURE_V_1_3_ADDITIONAL_STRING_FUNCTIONS)));
     
options.getLanguageOptions().setSupportedStatementKinds(SUPPORTED_STATEMENT_KINDS);
 
     return options;
diff --git 
a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/SqlOperatorMappingTable.java
 
b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/SqlOperatorMappingTable.java
index 23dfc77..6941033 100644
--- 
a/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/SqlOperatorMappingTable.java
+++ 
b/sdks/java/extensions/sql/zetasql/src/main/java/org/apache/beam/sdk/extensions/sql/zetasql/translation/SqlOperatorMappingTable.java
@@ -57,6 +57,7 @@ class SqlOperatorMappingTable {
           .put("$divide", SqlStdOperatorTable.DIVIDE)
           .put("concat", SqlOperators.CONCAT)
           .put("substr", SqlOperators.SUBSTR)
+          .put("substring", SqlOperators.SUBSTR)
           .put("trim", SqlOperators.TRIM)
           .put("replace", SqlOperators.REPLACE)
           .put("char_length", SqlOperators.CHAR_LENGTH)
diff --git 
a/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java
 
b/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java
index 2e5bd70..80725da 100644
--- 
a/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java
+++ 
b/sdks/java/extensions/sql/zetasql/src/test/java/org/apache/beam/sdk/extensions/sql/zetasql/ZetaSqlDialectSpecTest.java
@@ -3516,6 +3516,22 @@ public class ZetaSqlDialectSpecTest extends 
ZetaSqlTestBase {
   }
 
   @Test
+  public void testSubstring() {
+    String sql = "SELECT substring(@p0, @p1, @p2)";
+    ImmutableMap<String, Value> params =
+        ImmutableMap.of(
+            "p0", Value.createStringValue("abc"),
+            "p1", Value.createInt64Value(-2L),
+            "p2", Value.createInt64Value(1L));
+
+    PCollection<Row> stream = execute(sql, params);
+
+    final Schema schema = Schema.builder().addStringField("field1").build();
+    
PAssert.that(stream).containsInAnyOrder(Row.withSchema(schema).addValues("b").build());
+    
pipeline.run().waitUntilFinish(Duration.standardMinutes(PIPELINE_EXECUTION_WAITTIME_MINUTES));
+  }
+
+  @Test
   public void testSubstrWithLargeValueExpectException() {
     String sql = "SELECT substr(@p0, @p1, @p2)";
     ImmutableMap<String, Value> params =

Reply via email to