diff --git a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/SchemaAwareStreamWriter.java b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/SchemaAwareStreamWriter.java index fced8ccd1e..c95ee72ae8 100644 --- a/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/SchemaAwareStreamWriter.java +++ b/google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/SchemaAwareStreamWriter.java @@ -449,9 +449,11 @@ public static final class Builder { private static final String streamPatternString = "(projects/[^/]+/datasets/[^/]+/tables/[^/]+)/streams/[^/]+"; private static final String tablePatternString = "(projects/[^/]+/datasets/[^/]+/tables/[^/]+)"; + private static final String defaultStreamPatternString = tablePatternString + "/_default"; private static final Pattern streamPattern = Pattern.compile(streamPatternString); private static final Pattern tablePattern = Pattern.compile(tablePatternString); + private static final Pattern defaultStreamPattern = Pattern.compile(defaultStreamPatternString); /** * Constructor for SchemaAwareStreamWriter's Builder @@ -471,7 +473,9 @@ private Builder( Matcher streamMatcher = streamPattern.matcher(streamOrTableName); if (!streamMatcher.matches()) { Matcher tableMatcher = tablePattern.matcher(streamOrTableName); - if (!tableMatcher.matches()) { + Matcher defaultStreamMatcher = defaultStreamPattern.matcher(streamOrTableName); + + if (!tableMatcher.matches() && !defaultStreamMatcher.matches()) { throw new IllegalArgumentException("Invalid name: " + streamOrTableName); } else { this.streamName = streamOrTableName + "/_default"; diff --git a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java index 32e3c265e2..3662330bae 100644 --- a/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java +++ b/google-cloud-bigquerystorage/src/test/java/com/google/cloud/bigquery/storage/v1/JsonStreamWriterTest.java @@ -641,6 +641,14 @@ public void testCreateDefaultStream_withNoClientPassedIn() throws Exception { .build()) { assertEquals("projects/p/datasets/d/tables/t/_default", writer.getStreamName()); assertEquals("aa", writer.getLocation()); + + JsonStreamWriter recreate = + JsonStreamWriter.newBuilder(writer.getStreamName(), tableSchema) + .setChannelProvider(channelProvider) + .setCredentialsProvider(NoCredentialsProvider.create()) + .setExecutorProvider(InstantiatingExecutorProvider.newBuilder().build()) + .setEnableConnectionPool(true) + .build(); } }