You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by lc...@apache.org on 2018/10/18 23:52:44 UTC

[beam] branch master updated: [BEAM-5782] Make TableRows cloneable when read from Avro files. (#6729)

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

lcwik 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 137f56d  [BEAM-5782] Make TableRows cloneable when read from Avro files. (#6729)
137f56d is described below

commit 137f56dc9dbfddb03fb5d39ab776593bb67ce3cf
Author: Lukasz Cwik <lc...@google.com>
AuthorDate: Thu Oct 18 16:52:37 2018 -0700

    [BEAM-5782] Make TableRows cloneable when read from Avro files. (#6729)
    
    This allows for TableRows to be 'cloned' which is expected by users to be supported based upon the TableRow javadoc.
---
 .../org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtils.java     | 7 +++----
 .../org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtilsTest.java | 6 ++++++
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtils.java b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtils.java
index 4874f88..e620e40 100644
--- a/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtils.java
+++ b/sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtils.java
@@ -25,7 +25,6 @@ import static com.google.common.base.Verify.verifyNotNull;
 import com.google.api.services.bigquery.model.TableFieldSchema;
 import com.google.api.services.bigquery.model.TableRow;
 import com.google.api.services.bigquery.model.TableSchema;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.io.BaseEncoding;
 import java.math.BigDecimal;
@@ -156,17 +155,17 @@ class BigQueryAvroUtils {
     // REPEATED fields are represented as Avro arrays.
     if (v == null) {
       // Handle the case of an empty repeated field.
-      return ImmutableList.of();
+      return new ArrayList<>();
     }
     @SuppressWarnings("unchecked")
     List<Object> elements = (List<Object>) v;
-    ImmutableList.Builder<Object> values = ImmutableList.builder();
+    ArrayList<Object> values = new ArrayList<>();
     Type elementType = schema.getElementType().getType();
     LogicalType elementLogicalType = schema.getElementType().getLogicalType();
     for (Object element : elements) {
       values.add(convertRequiredField(elementType, elementLogicalType, fieldSchema, element));
     }
-    return values.build();
+    return values;
   }
 
   private static Object convertRequiredField(
diff --git a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtilsTest.java b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtilsTest.java
index 236f22e..e0d0891 100644
--- a/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtilsTest.java
+++ b/sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/bigquery/BigQueryAvroUtilsTest.java
@@ -134,6 +134,8 @@ public class BigQueryAvroUtilsTest {
       TableRow convertedRow = BigQueryAvroUtils.convertGenericRecordToTableRow(record, tableSchema);
       TableRow row = new TableRow().set("number", "5").set("associates", new ArrayList<TableRow>());
       assertEquals(row, convertedRow);
+      TableRow clonedRow = convertedRow.clone();
+      assertEquals(convertedRow, clonedRow);
     }
     {
       // Test type conversion for:
@@ -164,6 +166,8 @@ public class BigQueryAvroUtilsTest {
               .set("anniversaryDate", "2000-01-01")
               .set("anniversaryDatetime", "2000-01-01 00:00:00.000005")
               .set("anniversaryTime", "00:00:00.000005");
+      TableRow clonedRow = convertedRow.clone();
+      assertEquals(convertedRow, clonedRow);
       assertEquals(row, convertedRow);
     }
     {
@@ -182,6 +186,8 @@ public class BigQueryAvroUtilsTest {
               .set("number", "5")
               .set("birthdayMoney", birthdayMoney.toString());
       assertEquals(row, convertedRow);
+      TableRow clonedRow = convertedRow.clone();
+      assertEquals(convertedRow, clonedRow);
     }
   }