Skip to content

Commit 069240f

Browse files
Praful Makanistephaniewang526
authored andcommitted
feat: add range partitioning field to tableslist (#114)
1 parent 772516a commit 069240f

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/spi/v2/HttpBigQueryRpc.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,8 @@ public Table apply(TableList.Tables tablePb) {
299299
.setTableReference(tablePb.getTableReference())
300300
.setType(tablePb.getType())
301301
.setCreationTime(tablePb.getCreationTime())
302-
.setTimePartitioning(tablePb.getTimePartitioning());
302+
.setTimePartitioning(tablePb.getTimePartitioning())
303+
.setRangePartitioning(tablePb.getRangePartitioning());
303304
}
304305
}));
305306
} catch (IOException ex) {

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,17 @@ public class BigQueryImplTest {
121121
.setSchema(TABLE_SCHEMA)
122122
.setTimePartitioning(TIME_PARTITIONING)
123123
.build();
124+
private static final RangePartitioning.Range RANGE =
125+
RangePartitioning.Range.newBuilder().setStart(1L).setInterval(2L).setEnd(10L).build();
126+
private static final RangePartitioning RANGE_PARTITIONING =
127+
RangePartitioning.newBuilder().setField("IntegerField").setRange(RANGE).build();
128+
private static final StandardTableDefinition TABLE_DEFINITION_WITH_RANGE_PARTITIONING =
129+
StandardTableDefinition.newBuilder()
130+
.setSchema(TABLE_SCHEMA)
131+
.setRangePartitioning(RANGE_PARTITIONING)
132+
.build();
133+
private static final TableInfo TABLE_INFO_RANGE_PARTITIONING =
134+
TableInfo.of(TABLE_ID, TABLE_DEFINITION_WITH_RANGE_PARTITIONING);
124135
private static final TableInfo TABLE_INFO = TableInfo.of(TABLE_ID, TABLE_DEFINITION);
125136
private static final TableInfo OTHER_TABLE_INFO = TableInfo.of(OTHER_TABLE_ID, TABLE_DEFINITION);
126137
private static final TableInfo TABLE_INFO_WITH_PROJECT =
@@ -901,6 +912,22 @@ public void testListTablesReturnedParameters() {
901912
assertArrayEquals(tableList.toArray(), Iterables.toArray(page.getValues(), Table.class));
902913
}
903914

915+
@Test
916+
public void testListTablesWithRangePartitioning() {
917+
bigquery = options.getService();
918+
ImmutableList<Table> tableList =
919+
ImmutableList.of(
920+
new Table(bigquery, new TableInfo.BuilderImpl(TABLE_INFO_RANGE_PARTITIONING)));
921+
Tuple<String, Iterable<com.google.api.services.bigquery.model.Table>> result =
922+
Tuple.of(CURSOR, Iterables.transform(tableList, TableInfo.TO_PB_FUNCTION));
923+
EasyMock.expect(bigqueryRpcMock.listTables(PROJECT, DATASET, TABLE_LIST_OPTIONS))
924+
.andReturn(result);
925+
EasyMock.replay(bigqueryRpcMock);
926+
Page<Table> page = bigquery.listTables(DATASET, TABLE_LIST_PAGE_SIZE, TABLE_LIST_PAGE_TOKEN);
927+
assertEquals(CURSOR, page.getNextPageToken());
928+
assertArrayEquals(tableList.toArray(), Iterables.toArray(page.getValues(), Table.class));
929+
}
930+
904931
@Test
905932
public void testListTablesFromDatasetId() {
906933
bigquery = options.getService();

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,36 @@ public void testListTablesWithPartitioning() {
712712
}
713713
}
714714

715+
@Test
716+
public void testListTablesWithRangePartitioning() {
717+
String tableName = "test_list_tables_range_partitioning";
718+
StandardTableDefinition tableDefinition =
719+
StandardTableDefinition.newBuilder()
720+
.setSchema(TABLE_SCHEMA)
721+
.setRangePartitioning(RANGE_PARTITIONING)
722+
.build();
723+
TableInfo tableInfo = TableInfo.of(TableId.of(DATASET, tableName), tableDefinition);
724+
Table createdRangePartitioningTable = bigquery.create(tableInfo);
725+
assertNotNull(createdRangePartitioningTable);
726+
try {
727+
Page<Table> tables = bigquery.listTables(DATASET);
728+
boolean found = false;
729+
Iterator<Table> tableIterator = tables.getValues().iterator();
730+
while (tableIterator.hasNext() && !found) {
731+
StandardTableDefinition standardTableDefinition = tableIterator.next().getDefinition();
732+
if (standardTableDefinition.getRangePartitioning() != null) {
733+
assertEquals(RANGE_PARTITIONING, standardTableDefinition.getRangePartitioning());
734+
assertEquals(RANGE, standardTableDefinition.getRangePartitioning().getRange());
735+
assertEquals("IntegerField", standardTableDefinition.getRangePartitioning().getField());
736+
found = true;
737+
}
738+
}
739+
assertTrue(found);
740+
} finally {
741+
createdRangePartitioningTable.delete();
742+
}
743+
}
744+
715745
@Test
716746
public void testListPartitions() throws InterruptedException {
717747
String tableName = "test_table_partitions";

0 commit comments

Comments
 (0)