diff --git a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java
index 05a7e8566..48ccd4314 100644
--- a/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java
+++ b/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Dataset.java
@@ -23,6 +23,7 @@
import com.google.cloud.bigquery.BigQuery.DatasetOption;
import com.google.cloud.bigquery.BigQuery.TableListOption;
import com.google.cloud.bigquery.BigQuery.TableOption;
+import com.google.common.base.Strings;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.List;
@@ -275,7 +276,13 @@ public Page
list(TableListOption... options) {
* @throws BigQueryException upon failure
*/
public Table get(String tableId, TableOption... options) {
- return bigquery.getTable(TableId.of(getDatasetId().getDataset(), tableId), options);
+ // Adding the projectId used of getting the DataSet as a parameter for the issue:
+ // https://github.com/googleapis/java-bigquery/issues/1369
+ TableId tabId =
+ Strings.isNullOrEmpty(getDatasetId().getProject())
+ ? TableId.of(getDatasetId().getDataset(), tableId)
+ : TableId.of(getDatasetId().getProject(), getDatasetId().getDataset(), tableId);
+ return bigquery.getTable(tabId, options);
}
/**
diff --git a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/DatasetTest.java b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/DatasetTest.java
index ae710a9fc..d1c97a694 100644
--- a/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/DatasetTest.java
+++ b/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/DatasetTest.java
@@ -77,6 +77,12 @@ public class DatasetTest {
TableInfo.newBuilder(TableId.of("dataset", "table2"), VIEW_DEFINITION).build();
private static final TableInfo TABLE_INFO3 =
TableInfo.newBuilder(TableId.of("dataset", "table3"), EXTERNAL_TABLE_DEFINITION).build();
+ private static final String NEW_PROJECT_ID = "projectId2";
+ private static final TableId TABLE_ID1 = TableId.of(NEW_PROJECT_ID, "dataset", "table3");
+ private static final TableInfo TABLE_INFO4 =
+ TableInfo.newBuilder(
+ TableId.of(NEW_PROJECT_ID, "dataset", "table3"), EXTERNAL_TABLE_DEFINITION)
+ .build();
@Rule public MockitoRule rule;
@@ -255,6 +261,16 @@ public void testGet() {
verify(bigquery).getTable(TABLE_INFO1.getTableId());
}
+ @Test
+ public void testGetTableWithNewProjectId() {
+ Table expectedTable = new Table(bigquery, new TableInfo.BuilderImpl(TABLE_INFO4));
+ when(bigquery.getTable(TABLE_ID1, null)).thenReturn(expectedTable);
+ Table table = bigquery.getTable(TABLE_ID1, null);
+ assertNotNull(table);
+ assertEquals(table.getTableId().getProject(), NEW_PROJECT_ID);
+ verify(bigquery).getTable(TABLE_ID1, null);
+ }
+
@Test
public void testGetNull() {
when(bigquery.getTable(TABLE_INFO1.getTableId())).thenReturn(null);