Skip to content

Commit 70e3d0b

Browse files
authored
---
yaml --- r: 8603 b: refs/heads/master c: 75b9ab0 h: refs/heads/master i: 8601: a5fa13a 8599: 9466c84
1 parent 9a14ba1 commit 70e3d0b

3 files changed

Lines changed: 53 additions & 8 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: 431a69f9ad63df8cadcdb480f837e34e123a353f
2+
refs/heads/master: 75b9ab0db5ac5e42c89d8a1aac43896dfdfd6564
33
refs/heads/travis: 47e4fee4fd5af9b2a8ce46f23c72ec95f9b195b2
44
refs/heads/gh-pages: 6daca92127d91b7c2c99490080ecf8a13fa94cde
55
refs/tags/0.0.9: 22f1839238f66c39e67ed4dfdcd273b1ae2e8444

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

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.google.common.base.MoreObjects.ToStringHelper;
2323
import com.google.common.collect.ImmutableList;
2424
import com.google.common.collect.Lists;
25-
2625
import java.util.List;
2726
import java.util.Objects;
2827

@@ -39,11 +38,13 @@ public class ViewDefinition extends TableDefinition {
3938

4039
private final String query;
4140
private final List<UserDefinedFunction> userDefinedFunctions;
41+
private final Boolean useLegacySql;
4242

4343
public static final class Builder extends TableDefinition.Builder<ViewDefinition, Builder> {
4444

4545
private String query;
4646
private List<UserDefinedFunction> userDefinedFunctions;
47+
private Boolean useLegacySql;
4748

4849
private Builder() {
4950
super(Type.VIEW);
@@ -53,13 +54,15 @@ private Builder(ViewDefinition viewDefinition) {
5354
super(viewDefinition);
5455
this.query = viewDefinition.query;
5556
this.userDefinedFunctions = viewDefinition.userDefinedFunctions;
57+
this.useLegacySql = viewDefinition.useLegacySql;
5658
}
5759

5860
private Builder(Table tablePb) {
5961
super(tablePb);
6062
com.google.api.services.bigquery.model.ViewDefinition viewPb = tablePb.getView();
6163
if (viewPb != null) {
6264
this.query = viewPb.getQuery();
65+
this.useLegacySql = viewPb.getUseLegacySql();
6366
if (viewPb.getUserDefinedFunctionResources() != null) {
6467
this.userDefinedFunctions = Lists.transform(viewPb.getUserDefinedFunctionResources(),
6568
UserDefinedFunction.FROM_PB_FUNCTION);
@@ -100,6 +103,19 @@ public Builder setUserDefinedFunctions(UserDefinedFunction... userDefinedFunctio
100103
return self();
101104
}
102105

106+
/**
107+
* Sets whether to use BigQuery's legacy SQL dialect for this query. By default this property is
108+
* set to {@code false}. If set to {@code false}, the query will use BigQuery's <a
109+
* href="https://cloud.google.com/bigquery/sql-reference/">Standard SQL</a>.
110+
*
111+
* <p>If set to {@code null} or {@code true}, legacy SQL dialect is used. This property is
112+
* experimental and might be subject to change.
113+
*/
114+
public Builder setUseLegacySql(Boolean useLegacySql) {
115+
this.useLegacySql = useLegacySql;
116+
return this;
117+
}
118+
103119
/**
104120
* Creates a {@code ViewDefinition} object.
105121
*/
@@ -112,6 +128,7 @@ public ViewDefinition build() {
112128
private ViewDefinition(Builder builder) {
113129
super(builder);
114130
this.query = builder.query;
131+
this.useLegacySql = builder.useLegacySql;
115132
this.userDefinedFunctions = builder.userDefinedFunctions;
116133
}
117134

@@ -135,6 +152,17 @@ public List<UserDefinedFunction> getUserDefinedFunctions() {
135152
return userDefinedFunctions;
136153
}
137154

155+
/**
156+
* Returns whether to use BigQuery's legacy SQL dialect for this query. By default this property
157+
* is set to {@code false}. If set to {@code false}, the query will use BigQuery's <a
158+
* href="https://cloud.google.com/bigquery/sql-reference/">Standard SQL</a>. If set to {@code
159+
* null} or {@code true}, legacy SQL dialect is used. This property is experimental and might be
160+
* subject to change.
161+
*/
162+
public Boolean useLegacySql() {
163+
return useLegacySql;
164+
}
165+
138166
/**
139167
* Returns a builder for the {@code ViewInfo} object.
140168
*/
@@ -147,6 +175,7 @@ public Builder toBuilder() {
147175
ToStringHelper toStringHelper() {
148176
return super.toStringHelper()
149177
.add("query", query)
178+
.add("useLegacySql", useLegacySql)
150179
.add("userDefinedFunctions", userDefinedFunctions);
151180
}
152181

@@ -172,6 +201,7 @@ Table toPb() {
172201
viewDefinition.setUserDefinedFunctionResources(Lists.transform(userDefinedFunctions,
173202
UserDefinedFunction.TO_PB_FUNCTION));
174203
}
204+
viewDefinition.setUseLegacySql(useLegacySql);
175205
tablePb.setView(viewDefinition);
176206
return tablePb;
177207
}

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

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,8 @@
2121
import static org.junit.Assert.assertTrue;
2222

2323
import com.google.common.collect.ImmutableList;
24-
25-
import org.junit.Test;
26-
2724
import java.util.List;
25+
import org.junit.Test;
2826

2927
public class ViewDefinitionTest {
3028

@@ -45,6 +43,9 @@ public void testToBuilder() {
4543
.setQuery(VIEW_QUERY)
4644
.build();
4745
compareViewDefinition(VIEW_DEFINITION, viewDefinition);
46+
47+
viewDefinition = viewDefinition.toBuilder().setUseLegacySql(true).build();
48+
assertTrue(viewDefinition.useLegacySql());
4849
}
4950

5051
@Test
@@ -58,35 +59,49 @@ public void testBuilder() {
5859
assertEquals(VIEW_QUERY, VIEW_DEFINITION.getQuery());
5960
assertEquals(TableDefinition.Type.VIEW, VIEW_DEFINITION.getType());
6061
assertEquals(USER_DEFINED_FUNCTIONS, VIEW_DEFINITION.getUserDefinedFunctions());
62+
6163
ViewDefinition viewDefinition = ViewDefinition.newBuilder(VIEW_QUERY)
6264
.setUserDefinedFunctions(UserDefinedFunction.inline("Function"),
6365
UserDefinedFunction.fromUri("URI"))
6466
.build();
6567
assertEquals(VIEW_QUERY, viewDefinition.getQuery());
6668
assertEquals(TableDefinition.Type.VIEW, viewDefinition.getType());
6769
assertEquals(USER_DEFINED_FUNCTIONS, viewDefinition.getUserDefinedFunctions());
70+
assertNull(viewDefinition.useLegacySql());
71+
6872
viewDefinition = ViewDefinition.newBuilder(VIEW_QUERY,
6973
UserDefinedFunction.inline("Function"), UserDefinedFunction.fromUri("URI")).build();
7074
assertEquals(VIEW_QUERY, viewDefinition.getQuery());
7175
assertEquals(TableDefinition.Type.VIEW, viewDefinition.getType());
7276
assertEquals(USER_DEFINED_FUNCTIONS, viewDefinition.getUserDefinedFunctions());
77+
assertNull(viewDefinition.useLegacySql());
78+
7379
viewDefinition = ViewDefinition.newBuilder(VIEW_QUERY).build();
7480
assertEquals(VIEW_QUERY, viewDefinition.getQuery());
7581
assertEquals(TableDefinition.Type.VIEW, viewDefinition.getType());
7682
assertNull(viewDefinition.getUserDefinedFunctions());
83+
assertNull(viewDefinition.useLegacySql());
84+
85+
viewDefinition = ViewDefinition.newBuilder(VIEW_QUERY).setUseLegacySql(true).build();
86+
assertEquals(VIEW_QUERY, viewDefinition.getQuery());
87+
assertEquals(TableDefinition.Type.VIEW, viewDefinition.getType());
88+
assertNull(viewDefinition.getUserDefinedFunctions());
89+
assertTrue(viewDefinition.useLegacySql());
7790
}
7891

7992

8093
@Test
8194
public void testToAndFromPb() {
82-
assertTrue(TableDefinition.fromPb(VIEW_DEFINITION.toPb()) instanceof ViewDefinition);
83-
compareViewDefinition(VIEW_DEFINITION,
84-
TableDefinition.<ViewDefinition>fromPb(VIEW_DEFINITION.toPb()));
95+
ViewDefinition viewDefinition = VIEW_DEFINITION.toBuilder().setUseLegacySql(false).build();
96+
assertTrue(TableDefinition.fromPb(viewDefinition.toPb()) instanceof ViewDefinition);
97+
compareViewDefinition(
98+
viewDefinition, TableDefinition.<ViewDefinition>fromPb(viewDefinition.toPb()));
8599
}
86100

87101
private void compareViewDefinition(ViewDefinition expected, ViewDefinition value) {
88102
assertEquals(expected, value);
89103
assertEquals(expected.getQuery(), value.getQuery());
104+
assertEquals(expected.useLegacySql(), value.useLegacySql());
90105
assertEquals(expected.getUserDefinedFunctions(), value.getUserDefinedFunctions());
91106
assertEquals(expected.hashCode(), value.hashCode());
92107
}

0 commit comments

Comments
 (0)