Skip to content

Commit 3ae4038

Browse files
fix: add more idiomatic way to insert ARRAY<BYTES> data (#1550)
* fix: add more idiomatic way to insert ARRAY<BYTES> data Towards b/219375453 * nit * lint * clean up
1 parent 870cd93 commit 3ae4038

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/JsonToProtoMessage.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,9 @@ private static void fillRepeatedField(
416416
}
417417
}
418418
if (!added) {
419-
if (val instanceof JSONArray) {
419+
if (val instanceof byte[]) {
420+
protoMsg.addRepeatedField(fieldDescriptor, val);
421+
} else if (val instanceof JSONArray) {
420422
try {
421423
byte[] bytes = new byte[((JSONArray) val).length()];
422424
for (int j = 0; j < ((JSONArray) val).length(); j++) {

google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/it/ITBigQueryWriteManualClientTest.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -410,12 +410,24 @@ public void testJsonStreamWriterWithDefaultStream()
410410
JSONArray jsonArr3 = new JSONArray();
411411
jsonArr3.put(row4);
412412

413-
LOG.info("Sending two more messages");
413+
JSONObject row5 = new JSONObject();
414+
// Add another ARRAY<BYTES> using a more idiomatic way
415+
JSONArray testArr = new JSONArray(); // create empty JSONArray
416+
testArr.put(0, ByteString.copyFromUtf8("a").toByteArray()); // insert 1st bytes array
417+
testArr.put(1, ByteString.copyFromUtf8("b").toByteArray()); // insert 2nd bytes array
418+
row5.put("test_bytestring_repeated", testArr);
419+
JSONArray jsonArr4 = new JSONArray();
420+
jsonArr4.put(row5);
421+
422+
LOG.info("Sending three more messages");
414423
ApiFuture<AppendRowsResponse> response2 = jsonStreamWriter.append(jsonArr2, -1);
415-
LOG.info("Sending one more message");
424+
LOG.info("Sending two more messages");
416425
ApiFuture<AppendRowsResponse> response3 = jsonStreamWriter.append(jsonArr3, -1);
426+
LOG.info("Sending one more message");
427+
ApiFuture<AppendRowsResponse> response4 = jsonStreamWriter.append(jsonArr4, -1);
417428
Assert.assertFalse(response2.get().getAppendResult().hasOffset());
418429
Assert.assertFalse(response3.get().getAppendResult().hasOffset());
430+
Assert.assertFalse(response4.get().getAppendResult().hasOffset());
419431

420432
TableResult result =
421433
bigquery.listTableData(
@@ -430,6 +442,9 @@ public void testJsonStreamWriterWithDefaultStream()
430442
assertEquals("bbb", iter.next().get(0).getStringValue());
431443
assertEquals("ccc", iter.next().get(0).getStringValue());
432444
assertEquals("ddd", iter.next().get(0).getStringValue());
445+
FieldValueList currentRow2 = iter.next();
446+
assertEquals("YQ==", currentRow2.get(3).getRepeatedValue().get(0).getStringValue());
447+
assertEquals("Yg==", currentRow2.get(3).getRepeatedValue().get(1).getStringValue());
433448
assertEquals(false, iter.hasNext());
434449
}
435450
}

0 commit comments

Comments
 (0)