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);
}
}