Skip to content

Commit 192e82e

Browse files
authored
---
yaml --- r: 8627 b: refs/heads/master c: 66dee5d h: refs/heads/master i: 8625: e382db8 8623: 53e3bb0
1 parent f42e16f commit 192e82e

6 files changed

Lines changed: 95 additions & 61 deletions

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 6faec8f68cb0ed5721d6a139e4e659a400880d33
2+
refs/heads/master: 66dee5db78530bffd34fd16af5eb3b70d2cee2d4
33
refs/heads/travis: 47e4fee4fd5af9b2a8ce46f23c72ec95f9b195b2
44
refs/heads/gh-pages: 6daca92127d91b7c2c99490080ecf8a13fa94cde
55
refs/tags/0.0.9: 22f1839238f66c39e67ed4dfdcd273b1ae2e8444

trunk/google-cloud-bigquery/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@
5555
<artifactId>junit</artifactId>
5656
<scope>test</scope>
5757
</dependency>
58+
<dependency>
59+
<groupId>com.google.truth</groupId>
60+
<artifactId>truth</artifactId>
61+
<scope>test</scope>
62+
</dependency>
5863
<dependency>
5964
<groupId>org.easymock</groupId>
6065
<artifactId>easymock</artifactId>

trunk/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Job.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import static com.google.common.base.Preconditions.checkNotNull;
2020

21-
import com.google.api.gax.paging.Page;
2221
import com.google.api.gax.retrying.BasicResultRetryAlgorithm;
2322
import com.google.api.gax.retrying.RetrySettings;
2423
import com.google.api.gax.retrying.TimedAttemptSettings;
@@ -263,7 +262,7 @@ public Job waitFor(RetryOption... waitOptions) throws InterruptedException {
263262
*
264263
* @throws BigQueryException upon failure
265264
*/
266-
public Page<FieldValueList> getQueryResults(QueryResultsOption... options) {
265+
public QueryResult getQueryResults(QueryResultsOption... options) {
267266
if (getConfiguration().getType() != Type.QUERY) {
268267
throw new UnsupportedOperationException(
269268
"Getting query results is supported only for " + Type.QUERY + " jobs");
@@ -277,10 +276,11 @@ public Page<FieldValueList> getQueryResults(QueryResultsOption... options) {
277276
}
278277

279278
TableId table = ((QueryJobConfiguration) getConfiguration()).getDestinationTable();
280-
// TODO(pongad): return QueryResult so we can inject schema.
281-
// QueryResponse response = bigquery.getQueryResults(getJobId()); // should return immediately
282-
// return new QueryResult(response.getSchema(), response.getTotalRows(), bigquery.listTableData(table));
283-
return bigquery.listTableData(table);
279+
QueryResponse response =
280+
bigquery.getQueryResults(
281+
getJobId(), DEFAULT_QUERY_WAIT_OPTIONS); // should return immediately
282+
return new QueryResult(
283+
response.getSchema(), response.getTotalRows(), bigquery.listTableData(table));
284284
}
285285

286286
private QueryResponse waitForQueryResults(

trunk/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/BigQueryImplTest.java

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.cloud.bigquery;
1818

19+
import static com.google.common.truth.Truth.assertThat;
1920
import static org.easymock.EasyMock.capture;
2021
import static org.easymock.EasyMock.eq;
2122
import static org.junit.Assert.assertArrayEquals;
@@ -90,21 +91,16 @@ public class BigQueryImplTest {
9091
private static final TableId OTHER_TABLE_ID = TableId.of(PROJECT, DATASET, OTHER_TABLE);
9192
private static final TableId TABLE_ID_WITH_PROJECT = TableId.of(PROJECT, DATASET, TABLE);
9293
private static final Field FIELD_SCHEMA1 =
93-
Field.newBuilder("StringField", LegacySQLTypeName.STRING)
94+
Field.newBuilder("BooleanField", LegacySQLTypeName.BOOLEAN)
9495
.setMode(Field.Mode.NULLABLE)
9596
.setDescription("FieldDescription1")
9697
.build();
9798
private static final Field FIELD_SCHEMA2 =
9899
Field.newBuilder("IntegerField", LegacySQLTypeName.INTEGER)
99-
.setMode(Field.Mode.REPEATED)
100+
.setMode(Field.Mode.NULLABLE)
100101
.setDescription("FieldDescription2")
101102
.build();
102-
private static final Field FIELD_SCHEMA3 =
103-
Field.newBuilder("RecordField", LegacySQLTypeName.RECORD, FIELD_SCHEMA1, FIELD_SCHEMA2)
104-
.setMode(Field.Mode.REQUIRED)
105-
.setDescription("FieldDescription3")
106-
.build();
107-
private static final Schema TABLE_SCHEMA = Schema.of(FIELD_SCHEMA1, FIELD_SCHEMA2, FIELD_SCHEMA3);
103+
private static final Schema TABLE_SCHEMA = Schema.of(FIELD_SCHEMA1, FIELD_SCHEMA2);
108104
private static final StandardTableDefinition TABLE_DEFINITION =
109105
StandardTableDefinition.of(TABLE_SCHEMA);
110106
private static final TableInfo TABLE_INFO = TableInfo.of(TABLE_ID, TABLE_DEFINITION);
@@ -1125,7 +1121,8 @@ public void testQueryRequestCompleted() throws InterruptedException {
11251121
.setCacheHit(false)
11261122
.setPageToken(CURSOR)
11271123
.setTotalBytesProcessed(42L)
1128-
.setTotalRows(BigInteger.valueOf(1L));
1124+
.setTotalRows(BigInteger.valueOf(1L))
1125+
.setSchema(TABLE_SCHEMA.toPb());
11291126

11301127
EasyMock.expect(
11311128
bigqueryRpcMock.create(JOB_INFO.toPb(), Collections.<BigQueryRpc.Option, Object>emptyMap()))
@@ -1143,25 +1140,27 @@ public void testQueryRequestCompleted() throws InterruptedException {
11431140
bigqueryRpcMock.getJob(
11441141
PROJECT, JOB, Collections.<BigQueryRpc.Option, Object>emptyMap()))
11451142
.andReturn(jobResponsePb);
1143+
EasyMock.expect(
1144+
bigqueryRpcMock.getQueryResults(
1145+
PROJECT, JOB, BigQueryImpl.optionMap(Job.DEFAULT_QUERY_WAIT_OPTIONS)))
1146+
.andReturn(responsePb);
11461147
EasyMock.expect(
11471148
bigqueryRpcMock.listTableData(
11481149
PROJECT, DATASET, TABLE, Collections.<BigQueryRpc.Option, Object>emptyMap()))
11491150
.andReturn(Tuple.<String, Iterable<TableRow>>of("", ImmutableList.of(TABLE_ROW)));
11501151

11511152
EasyMock.replay(bigqueryRpcMock);
11521153
bigquery = options.getService();
1153-
// TODO(pongad) revert back to QueryResult
1154-
Page<FieldValueList> result =
1154+
QueryResult result =
11551155
bigquery
11561156
.query(QUERY_JOB_CONFIGURATION_FOR_QUERY, queryJob)
11571157
.getQueryResults(QueryResultsOption.pageSize(42L));
1158-
// assertEquals(null, result.getSchema());
1159-
// assertEquals(1L, result.getTotalRows());
1158+
assertThat(result.getSchema()).isEqualTo(TABLE_SCHEMA);
1159+
assertThat(result.getTotalRows()).isEqualTo(1);
11601160
for (FieldValueList row : result.getValues()) {
1161-
assertEquals(false, row.get(0).getBooleanValue());
1162-
assertEquals(1L, row.get(1).getLongValue());
1161+
assertThat(row.get(0).getBooleanValue()).isFalse();
1162+
assertThat(row.get(1).getLongValue()).isEqualTo(1);
11631163
}
1164-
// assertEquals(CURSOR, result.getNextPageToken());
11651164
}
11661165

11671166
@Test
@@ -1192,7 +1191,8 @@ public void testQueryRequestCompletedOnSecondAttempt() throws InterruptedExcepti
11921191
.setCacheHit(false)
11931192
.setPageToken(CURSOR)
11941193
.setTotalBytesProcessed(42L)
1195-
.setTotalRows(BigInteger.valueOf(1L));
1194+
.setTotalRows(BigInteger.valueOf(1L))
1195+
.setSchema(TABLE_SCHEMA.toPb());
11961196

11971197
EasyMock.expect(
11981198
bigqueryRpcMock.create(
@@ -1215,25 +1215,27 @@ public void testQueryRequestCompletedOnSecondAttempt() throws InterruptedExcepti
12151215
bigqueryRpcMock.getJob(
12161216
PROJECT, JOB, Collections.<BigQueryRpc.Option, Object>emptyMap()))
12171217
.andReturn(jobResponsePb2);
1218+
EasyMock.expect(
1219+
bigqueryRpcMock.getQueryResults(
1220+
PROJECT, JOB, BigQueryImpl.optionMap(Job.DEFAULT_QUERY_WAIT_OPTIONS)))
1221+
.andReturn(responsePb2);
12181222
EasyMock.expect(
12191223
bigqueryRpcMock.listTableData(
12201224
PROJECT, DATASET, TABLE, Collections.<BigQueryRpc.Option, Object>emptyMap()))
12211225
.andReturn(Tuple.<String, Iterable<TableRow>>of("", ImmutableList.of(TABLE_ROW)));
12221226

12231227
EasyMock.replay(bigqueryRpcMock);
12241228
bigquery = options.getService();
1225-
// TODO(pongad) revert back to QueryResult
1226-
Page<FieldValueList> result =
1229+
QueryResult result =
12271230
bigquery
12281231
.query(QUERY_JOB_CONFIGURATION_FOR_QUERY, queryJob)
12291232
.getQueryResults(QueryResultsOption.pageSize(42L));
1230-
// assertEquals(null, result.getSchema());
1231-
// assertEquals(1L, result.getTotalRows());
1233+
assertThat(result.getSchema()).isEqualTo(TABLE_SCHEMA);
1234+
assertThat(result.getTotalRows()).isEqualTo(1);
12321235
for (FieldValueList row : result.getValues()) {
1233-
assertEquals(false, row.get(0).getBooleanValue());
1234-
assertEquals(1L, row.get(1).getLongValue());
1236+
assertThat(row.get(0).getBooleanValue()).isFalse();
1237+
assertThat(row.get(1).getLongValue()).isEqualTo(1);
12351238
}
1236-
// assertEquals(CURSOR, result.getNextPageToken());
12371239
}
12381240

12391241
@Test

trunk/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/JobTest.java

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.google.cloud.bigquery;
1818

1919
import static com.google.common.collect.ObjectArrays.concat;
20+
import static com.google.common.truth.Truth.assertThat;
2021
import static org.easymock.EasyMock.createMock;
2122
import static org.easymock.EasyMock.createStrictMock;
2223
import static org.easymock.EasyMock.expect;
@@ -30,9 +31,11 @@
3031

3132
import com.google.api.core.ApiClock;
3233
import com.google.api.core.CurrentMillisClock;
34+
import com.google.api.gax.paging.Page;
3335
import com.google.cloud.RetryOption;
3436
import com.google.cloud.bigquery.JobStatistics.CopyStatistics;
3537
import com.google.cloud.bigquery.JobStatistics.QueryStatistics;
38+
import java.util.Collections;
3639
import org.junit.After;
3740
import org.junit.Rule;
3841
import org.junit.Test;
@@ -247,18 +250,52 @@ public void testWaitForAndGetQueryResults() throws InterruptedException {
247250
expect(bigquery.getOptions()).andReturn(mockOptions);
248251
expect(mockOptions.getClock()).andReturn(CurrentMillisClock.getDefaultClock());
249252
Job completedJob = expectedJob.toBuilder().setStatus(status).build();
250-
QueryResult result = createMock(QueryResult.class);
253+
// TODO(pongad): remove when https://github.com/googleapis/gax-java/pull/431/ lands.
254+
Page<FieldValueList> emptyPage =
255+
new Page<FieldValueList>() {
256+
@Override
257+
public boolean hasNextPage() {
258+
return false;
259+
}
260+
261+
@Override
262+
public String getNextPageToken() {
263+
return "";
264+
}
265+
266+
@Override
267+
public Page<FieldValueList> getNextPage() {
268+
return null;
269+
}
270+
271+
@Override
272+
public Iterable<FieldValueList> iterateAll() {
273+
return Collections.emptyList();
274+
}
275+
276+
@Override
277+
public Iterable<FieldValueList> getValues() {
278+
return Collections.emptyList();
279+
}
280+
};
281+
QueryResult result = new QueryResult(Schema.of(), 0, emptyPage);
251282
QueryResponse completedQuery =
252-
QueryResponse.newBuilder().setCompleted(true).setTotalRows(0).build();
283+
QueryResponse.newBuilder()
284+
.setCompleted(true)
285+
.setTotalRows(0)
286+
.setSchema(Schema.of())
287+
.build();
253288

254289
expect(bigquery.getQueryResults(jobInfo.getJobId(), Job.DEFAULT_QUERY_WAIT_OPTIONS)).andReturn(completedQuery);
255290
expect(bigquery.getJob(JOB_INFO.getJobId())).andReturn(completedJob);
291+
expect(bigquery.getQueryResults(jobInfo.getJobId(), Job.DEFAULT_QUERY_WAIT_OPTIONS))
292+
.andReturn(completedQuery);
256293
expect(bigquery.listTableData(TABLE_ID1)).andReturn(result);
257294

258295
replay(status, bigquery, mockOptions);
259296
initializeJob(jobInfo);
260-
assertSame(completedJob, job.waitFor(TEST_RETRY_OPTIONS));
261-
assertSame(result, job.getQueryResults());
297+
assertThat(job.waitFor(TEST_RETRY_OPTIONS)).isSameAs(completedJob);
298+
assertThat(job.getQueryResults().iterateAll()).isEmpty();
262299
verify(status, mockOptions);
263300
}
264301

trunk/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/it/ITBigQueryTest.java

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
import com.google.cloud.bigquery.LoadJobConfiguration;
5959
import com.google.cloud.bigquery.QueryJobConfiguration;
6060
import com.google.cloud.bigquery.QueryParameterValue;
61+
import com.google.cloud.bigquery.QueryResult;
6162
import com.google.cloud.bigquery.Schema;
6263
import com.google.cloud.bigquery.StandardTableDefinition;
6364
import com.google.cloud.bigquery.Table;
@@ -426,8 +427,7 @@ public void testCreateExternalTable() throws InterruptedException {
426427
.setDefaultDataset(DatasetId.of(DATASET))
427428
.setUseLegacySql(true)
428429
.build();
429-
// TODO(pongad) revert back to QueryResult
430-
Page<FieldValueList> result = bigquery.query(config).getQueryResults();
430+
QueryResult result = bigquery.query(config).getQueryResults();
431431
long integerValue = 0;
432432
int rowCount = 0;
433433
for (FieldValueList row : result.getValues()) {
@@ -486,8 +486,7 @@ public void testCreateViewTable() throws InterruptedException {
486486
.setDefaultDataset(DatasetId.of(DATASET))
487487
.setUseLegacySql(true)
488488
.build();
489-
// TODO(pongad) revert back to QueryResult
490-
Page<FieldValueList> result =
489+
QueryResult result =
491490
bigquery.query(config).getQueryResults(QueryResultsOption.pageSize(1000L));
492491
int rowCount = 0;
493492
for (FieldValueList row : result.getValues()) {
@@ -775,10 +774,9 @@ public void testQuery() throws InterruptedException {
775774
QueryJobConfiguration config = QueryJobConfiguration.newBuilder(query)
776775
.setDefaultDataset(DatasetId.of(DATASET))
777776
.build();
778-
// TODO(pongad) revert back to QueryResult
779-
Page<FieldValueList> result =
780-
bigquery.query(config).getQueryResults(QueryResultsOption.pageSize(1000L));
781-
// assertEquals(QUERY_RESULT_SCHEMA, result.getSchema());
777+
Job job = bigquery.query(config);
778+
QueryResult result = job.waitFor().getQueryResults(QueryResultsOption.pageSize(1000L));
779+
assertEquals(QUERY_RESULT_SCHEMA, result.getSchema());
782780
int rowCount = 0;
783781
for (FieldValueList row : result.getValues()) {
784782
FieldValue timestampCell = row.get(0);
@@ -797,10 +795,9 @@ public void testQuery() throws InterruptedException {
797795
}
798796
assertEquals(2, rowCount);
799797

800-
// TODO(pongad): re-enable this.
801-
// Job queryJob = bigquery.getJob(response.getJobId());
802-
// JobStatistics.QueryStatistics statistics = queryJob.getStatistics();
803-
// assertNotNull(statistics.getQueryPlan());
798+
Job job2 = bigquery.getJob(job.getJobId());
799+
JobStatistics.QueryStatistics statistics = job2.getStatistics();
800+
assertNotNull(statistics.getQueryPlan());
804801
}
805802

806803
@Test
@@ -828,10 +825,8 @@ public void testPositionalQueryParameters() throws InterruptedException {
828825
.addPositionalParameter(int64Parameter)
829826
.addPositionalParameter(float64Parameter)
830827
.build();
831-
// TODO(pongad) revert back to QueryResult
832-
Page<FieldValueList> result =
833-
bigquery.query(config).getQueryResults(QueryResultsOption.pageSize(1000L));
834-
// assertEquals(QUERY_RESULT_SCHEMA, result.getSchema());
828+
QueryResult result = bigquery.query(config).getQueryResults(QueryResultsOption.pageSize(1000L));
829+
assertEquals(QUERY_RESULT_SCHEMA, result.getSchema());
835830
assertEquals(2, Iterables.size(result.getValues()));
836831
}
837832

@@ -850,10 +845,8 @@ public void testNamedQueryParameters() throws InterruptedException {
850845
.addNamedParameter("stringParam", stringParameter)
851846
.addNamedParameter("integerList", intArrayParameter)
852847
.build();
853-
// TODO(pongad) revert back to QueryResult
854-
Page<FieldValueList> result =
855-
bigquery.query(config).getQueryResults(QueryResultsOption.pageSize(1000L));
856-
// assertEquals(QUERY_RESULT_SCHEMA, result.getSchema());
848+
QueryResult result = bigquery.query(config).getQueryResults(QueryResultsOption.pageSize(1000L));
849+
assertEquals(QUERY_RESULT_SCHEMA, result.getSchema());
857850
assertEquals(2, Iterables.size(result.getValues()));
858851
}
859852

@@ -866,9 +859,7 @@ public void testBytesParameter() throws Exception {
866859
.setUseLegacySql(false)
867860
.addNamedParameter("p", bytesParameter)
868861
.build();
869-
// TODO(pongad) revert back to QueryResult
870-
Page<FieldValueList> result =
871-
bigquery.query(config).getQueryResults(QueryResultsOption.pageSize(1000L));
862+
QueryResult result = bigquery.query(config).getQueryResults(QueryResultsOption.pageSize(1000L));
872863
int rowCount = 0;
873864
for (FieldValueList row : result.getValues()) {
874865
rowCount++;
@@ -1031,9 +1022,8 @@ public void testQueryJob() throws InterruptedException, TimeoutException {
10311022
remoteJob = remoteJob.waitFor();
10321023
assertNull(remoteJob.getStatus().getError());
10331024

1034-
// TODO(pongad) revert back to QueryResult
1035-
Page<FieldValueList> result = remoteJob.getQueryResults();
1036-
// assertEquals(QUERY_RESULT_SCHEMA, result.getSchema());
1025+
QueryResult result = remoteJob.getQueryResults();
1026+
assertEquals(QUERY_RESULT_SCHEMA, result.getSchema());
10371027
int rowCount = 0;
10381028
for (FieldValueList row : result.getValues()) {
10391029
FieldValue timestampCell = row.get(0);

0 commit comments

Comments
 (0)