Content-Length: 498674 | pFad | https://www.github.com/googleapis/java-bigquery/commit/193c8860d3a21e56b6ebe77240bd4eee3d19ee72

C55 feat: add requirePartitionFilter field in HivePartitioningOptions (#803) · googleapis/java-bigquery@193c886 · GitHub
Skip to content

Commit 193c886

Browse files
author
Praful Makani
authored
feat: add requirePartitionFilter field in HivePartitioningOptions (#803)
1 parent 81aa9a0 commit 193c886

File tree

3 files changed

+36
-1
lines changed

3 files changed

+36
-1
lines changed

google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/HivePartitioningOptions.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,20 @@
2323
public final class HivePartitioningOptions {
2424

2525
private final String mode;
26+
private final Boolean requirePartitionFilter;
2627
private final String sourceUriPrefix;
2728

2829
public static final class Builder {
2930

3031
private String mode;
32+
private Boolean requirePartitionFilter;
3133
private String sourceUriPrefix;
3234

3335
private Builder() {}
3436

3537
private Builder(HivePartitioningOptions options) {
3638
this.mode = options.mode;
39+
this.requirePartitionFilter = options.requirePartitionFilter;
3740
this.sourceUriPrefix = options.sourceUriPrefix;
3841
}
3942

@@ -50,6 +53,17 @@ public Builder setMode(String mode) {
5053
return this;
5154
}
5255

56+
/**
57+
* [Optional] If set to true, queries over this table require a partition filter that can be
58+
* used for partition elimination to be specified. Note that this field should only be true when
59+
* creating a permanent external table or querying a temporary external table. Hive-partitioned
60+
* loads with requirePartitionFilter explicitly set to true will fail.
61+
*/
62+
public Builder setRequirePartitionFilter(Boolean requirePartitionFilter) {
63+
this.requirePartitionFilter = requirePartitionFilter;
64+
return this;
65+
}
66+
5367
/**
5468
* [Optional] When hive partition detection is requested, a common prefix for all source uris
5569
* should be supplied. The prefix must end immediately before the partition key encoding begins.
@@ -72,6 +86,7 @@ public HivePartitioningOptions build() {
7286

7387
private HivePartitioningOptions(Builder builder) {
7488
this.mode = builder.mode;
89+
this.requirePartitionFilter = builder.requirePartitionFilter;
7590
this.sourceUriPrefix = builder.sourceUriPrefix;
7691
}
7792

@@ -80,6 +95,14 @@ public String getMode() {
8095
return mode;
8196
}
8297

98+
/**
99+
* Returns true if a partition filter (that can be used for partition elimination) is required for
100+
* queries over this table.
101+
*/
102+
public Boolean getRequirePartitionFilter() {
103+
return requirePartitionFilter;
104+
}
105+
83106
/* Returns the sourceUriPrefix of hive partitioning */
84107
public String getSourceUriPrefix() {
85108
return sourceUriPrefix;
@@ -99,6 +122,7 @@ public static Builder newBuilder() {
99122
public String toString() {
100123
return MoreObjects.toStringHelper(this)
101124
.add("mode", mode)
125+
.add("requirePartitionFilter", requirePartitionFilter)
102126
.add("sourceUriPrefix", sourceUriPrefix)
103127
.toString();
104128
}
@@ -109,6 +133,8 @@ public boolean equals(Object obj) {
109133
|| obj != null
110134
&& obj.getClass().equals(HivePartitioningOptions.class)
111135
&& Objects.equals(mode, ((HivePartitioningOptions) obj).getMode())
136+
&& Objects.equals(
137+
requirePartitionFilter, ((HivePartitioningOptions) obj).getRequirePartitionFilter())
112138
&& Objects.equals(
113139
sourceUriPrefix, ((HivePartitioningOptions) obj).getSourceUriPrefix());
114140
}
@@ -122,6 +148,7 @@ com.google.api.services.bigquery.model.HivePartitioningOptions toPb() {
122148
com.google.api.services.bigquery.model.HivePartitioningOptions options =
123149
new com.google.api.services.bigquery.model.HivePartitioningOptions();
124150
options.setMode(mode);
151+
options.setRequirePartitionFilter(requirePartitionFilter);
125152
options.setSourceUriPrefix(sourceUriPrefix);
126153
return options;
127154
}
@@ -132,6 +159,9 @@ static HivePartitioningOptions fromPb(
132159
if (options.getMode() != null) {
133160
builder.setMode(options.getMode());
134161
}
162+
if (options.getRequirePartitionFilter() != null) {
163+
builder.setRequirePartitionFilter(options.getRequirePartitionFilter());
164+
}
135165
if (options.getSourceUriPrefix() != null) {
136166
builder.setSourceUriPrefix(options.getSourceUriPrefix());
137167
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ public class HivePartitioningOptionsTest {
2424

2525
private static final String MODE = "STRING";
2626
private static final String SOURCE_URI_PREFIX = "gs://bucket/path_to_table";
27+
private static final Boolean REQUIRE_PARTITION_FILTER = true;
2728
private static final HivePartitioningOptions HIVE_PARTITIONING_OPTIONS =
2829
HivePartitioningOptions.newBuilder()
2930
.setMode(MODE)
31+
.setRequirePartitionFilter(REQUIRE_PARTITION_FILTER)
3032
.setSourceUriPrefix(SOURCE_URI_PREFIX)
3133
.build();
3234

@@ -49,6 +51,8 @@ public void testToBuilderIncomplete() {
4951
@Test
5052
public void testBuilder() {
5153
assertThat(HIVE_PARTITIONING_OPTIONS.getMode()).isEqualTo(MODE);
54+
assertThat(HIVE_PARTITIONING_OPTIONS.getRequirePartitionFilter())
55+
.isEqualTo(REQUIRE_PARTITION_FILTER);
5256
assertThat(HIVE_PARTITIONING_OPTIONS.getSourceUriPrefix()).isEqualTo(SOURCE_URI_PREFIX);
5357
}
5458

@@ -62,6 +66,7 @@ public void testToAndFromPb() {
6266
private void compareHivePartitioningOptions(
6367
HivePartitioningOptions expected, HivePartitioningOptions value) {
6468
assertThat(value.getMode()).isEqualTo(expected.getMode());
69+
assertThat(value.getRequirePartitionFilter()).isEqualTo(expected.getRequirePartitionFilter());
6570
assertThat(value.getSourceUriPrefix()).isEqualTo(expected.getSourceUriPrefix());
6671
assertThat(value.toString()).isEqualTo(expected.toString());
6772
assertThat(value.hashCode()).isEqualTo(expected.hashCode());

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
6464
<github.global.server>github</github.global.server>
6565
<site.installationModule>google-cloud-bigquery-parent</site.installationModule>
66-
<google-api-services-bigquery.version>v2-rev20200916-1.30.10
66+
<google-api-services-bigquery.version>v2-rev20200925-1.30.10
6767
</google-api-services-bigquery.version>
6868
</properties>
6969

0 commit comments

Comments
 (0)








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://www.github.com/googleapis/java-bigquery/commit/193c8860d3a21e56b6ebe77240bd4eee3d19ee72

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy