Skip to content

Commit f163126

Browse files
Praful Makanisduskis
authored andcommitted
---
yaml --- r: 18879 b: refs/heads/autosynth-vision c: 213a56e h: refs/heads/master i: 18877: d4104f4 18875: 927eb59 18871: 763eba2 18863: 09e4c78 18847: 84c9643 18815: e7755fb
1 parent 018ef27 commit f163126

4 files changed

Lines changed: 123 additions & 1 deletion

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ refs/heads/autosynth-container: f6384095f50b31bfc8208542a49181e158d3681c
117117
refs/heads/autosynth-monitoring: 832528c131ac32b115fd7a369701d9e6e4ec62e5
118118
refs/heads/autosynth-pubsub: 7a327eaed5fb2a5d6c1691feb73c3e0194dd805e
119119
refs/heads/autosynth-video-intelligence: 53ca56e5d077bf67065b730f3fe621f40689fb4c
120-
refs/heads/autosynth-vision: f798978f36304ded23739762c6ed367914eff1b1
120+
refs/heads/autosynth-vision: 213a56efe130ba0f81043101be137aa06b30b07f
121121
refs/heads/spanner: b01127f885b4611bf1852abb0ce481eeb7fcc131
122122
refs/tags/v0.68.0: 9cc799fcf68c82ab431d425fefa58ef615ce8e5b
123123
refs/tags/v0.69.0: 78f67a29e8b9c46ba01de566a2eae0fd1c03edea

branches/autosynth-vision/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/Field.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,24 @@ public Builder setType(LegacySQLTypeName type, Field... subFields) {
112112
return setType(type, subFields.length > 0 ? FieldList.of(subFields) : null);
113113
}
114114

115+
/**
116+
* Sets the type of the field.
117+
*
118+
* @param type BigQuery data type
119+
* @param subFields nested schema fields in case if {@code type} is {@link
120+
* StandardSQLTypeName#STRUCT}, empty otherwise
121+
* @throws IllegalArgumentException if {@code type == StandardSQLTypeName.STRUCT &&
122+
* subFields.length == 0} or if {@code type != StandardSQLTypeName.STRUCT &&
123+
* subFields.length != 0}
124+
* @see <a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types">Data
125+
* Types</a>
126+
*/
127+
public Builder setType(StandardSQLTypeName type, Field... subFields) {
128+
return setType(
129+
LegacySQLTypeName.legacySQLTypeName(type),
130+
subFields.length > 0 ? FieldList.of(subFields) : null);
131+
}
132+
115133
/**
116134
* Sets the type of the field.
117135
*
@@ -142,6 +160,22 @@ public Builder setType(LegacySQLTypeName type, FieldList subFields) {
142160
return this;
143161
}
144162

163+
/**
164+
* Sets the type of the field.
165+
*
166+
* @param type BigQuery data type
167+
* @param subFields nested schema fields in case if {@code type} is {@link
168+
* StandardSQLTypeName#STRUCT}, empty otherwise
169+
* @throws IllegalArgumentException if {@code type == StandardSQLTypeName.STRUCT &&
170+
* subFields.length == 0} or if {@code type != StandardSQLTypeName.STRUCT &&
171+
* subFields.length != 0}
172+
* @see <a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types">Data
173+
* Types</a>
174+
*/
175+
public Builder setType(StandardSQLTypeName type, FieldList subFields) {
176+
return setType(LegacySQLTypeName.legacySQLTypeName(type), subFields);
177+
}
178+
145179
/** Sets the mode of the field. When not specified {@link Mode#NULLABLE} is used. */
146180
public Builder setMode(Mode mode) {
147181
this.mode = mode != null ? mode.name() : Data.<String>nullOf(String.class);
@@ -241,11 +275,21 @@ public static Builder newBuilder(String name, LegacySQLTypeName type, Field... s
241275
return new Builder().setName(name).setType(type, subFields);
242276
}
243277

278+
/** Returns a builder for a Field object with given name and type. */
279+
public static Builder newBuilder(String name, StandardSQLTypeName type, Field... subFields) {
280+
return new Builder().setName(name).setType(type, subFields);
281+
}
282+
244283
/** Returns a builder for a Field object with given name and type. */
245284
public static Builder newBuilder(String name, LegacySQLTypeName type, FieldList subFields) {
246285
return new Builder().setName(name).setType(type, subFields);
247286
}
248287

288+
/** Returns a builder for a Field object with given name and type. */
289+
public static Builder newBuilder(String name, StandardSQLTypeName type, FieldList subFields) {
290+
return new Builder().setName(name).setType(type, subFields);
291+
}
292+
249293
TableFieldSchema toPb() {
250294
TableFieldSchema fieldSchemaPb = new TableFieldSchema();
251295
fieldSchemaPb.setName(name);

branches/autosynth-vision/google-cloud-clients/google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/LegacySQLTypeName.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import com.google.api.core.ApiFunction;
2020
import com.google.cloud.StringEnumType;
2121
import com.google.cloud.StringEnumValue;
22+
import java.util.HashMap;
23+
import java.util.Map;
2224

2325
/**
2426
* A type used in legacy SQL contexts. NOTE: some contexts use a mix of types; for example, for
@@ -84,6 +86,14 @@ public LegacySQLTypeName apply(String constant) {
8486
public static final LegacySQLTypeName RECORD =
8587
type.createAndRegister("RECORD").setStandardType(StandardSQLTypeName.STRUCT);
8688

89+
private static Map<StandardSQLTypeName, LegacySQLTypeName> standardToLegacyMap = new HashMap<>();
90+
91+
static {
92+
for (LegacySQLTypeName legacySqlTypeName : LegacySQLTypeName.values()) {
93+
standardToLegacyMap.put(legacySqlTypeName.equivalent, legacySqlTypeName);
94+
}
95+
}
96+
8797
private StandardSQLTypeName equivalent;
8898

8999
private LegacySQLTypeName setStandardType(StandardSQLTypeName equivalent) {
@@ -96,6 +106,11 @@ public StandardSQLTypeName getStandardType() {
96106
return equivalent;
97107
}
98108

109+
/** Converts StandardSQLTypeName to LegacySQLTypeName */
110+
public static LegacySQLTypeName legacySQLTypeName(StandardSQLTypeName type) {
111+
return standardToLegacyMap.get(type);
112+
}
113+
99114
private LegacySQLTypeName(String constant) {
100115
super(constant);
101116
}

branches/autosynth-vision/google-cloud-clients/google-cloud-bigquery/src/test/java/com/google/cloud/bigquery/FieldTest.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,25 @@ public class FieldTest {
5454
.setMode(FIELD_MODE3)
5555
.setDescription(FIELD_DESCRIPTION3)
5656
.build();
57+
private static final Field STANDARD_FIELD_SCHEMA1 =
58+
Field.newBuilder(FIELD_NAME1, StandardSQLTypeName.STRING)
59+
.setMode(FIELD_MODE1)
60+
.setDescription(FIELD_DESCRIPTION1)
61+
.build();
62+
private static final Field STANDARD_FIELD_SCHEMA2 =
63+
Field.newBuilder(FIELD_NAME2, StandardSQLTypeName.INT64)
64+
.setMode(FIELD_MODE2)
65+
.setDescription(FIELD_DESCRIPTION2)
66+
.build();
67+
private static final Field STANDARD_FIELD_SCHEMA3 =
68+
Field.newBuilder(
69+
FIELD_NAME3,
70+
StandardSQLTypeName.STRUCT,
71+
STANDARD_FIELD_SCHEMA1,
72+
STANDARD_FIELD_SCHEMA2)
73+
.setMode(FIELD_MODE3)
74+
.setDescription(FIELD_DESCRIPTION3)
75+
.build();
5776

5877
@Test
5978
public void testToBuilder() {
@@ -66,6 +85,17 @@ public void testToBuilder() {
6685
compareFieldSchemas(FIELD_SCHEMA1, field);
6786
}
6887

88+
@Test
89+
public void testToBuilderWithStandardSQLTypeName() {
90+
compareFieldSchemas(STANDARD_FIELD_SCHEMA1, STANDARD_FIELD_SCHEMA1.toBuilder().build());
91+
compareFieldSchemas(STANDARD_FIELD_SCHEMA2, STANDARD_FIELD_SCHEMA2.toBuilder().build());
92+
compareFieldSchemas(STANDARD_FIELD_SCHEMA3, STANDARD_FIELD_SCHEMA3.toBuilder().build());
93+
Field field = STANDARD_FIELD_SCHEMA1.toBuilder().setDescription("New Description").build();
94+
assertEquals("New Description", field.getDescription());
95+
field = field.toBuilder().setDescription(FIELD_DESCRIPTION1).build();
96+
compareFieldSchemas(STANDARD_FIELD_SCHEMA1, field);
97+
}
98+
6999
@Test
70100
public void testToBuilderIncomplete() {
71101
Field field = Field.of(FIELD_NAME1, FIELD_TYPE1);
@@ -74,6 +104,14 @@ public void testToBuilderIncomplete() {
74104
compareFieldSchemas(field, field.toBuilder().build());
75105
}
76106

107+
@Test
108+
public void testToBuilderIncompleteWithStandardSQLTypeName() {
109+
Field field = Field.of(FIELD_NAME1, FIELD_TYPE1);
110+
compareFieldSchemas(field, field.toBuilder().build());
111+
field = Field.of(FIELD_NAME2, FIELD_TYPE3, STANDARD_FIELD_SCHEMA1, STANDARD_FIELD_SCHEMA2);
112+
compareFieldSchemas(field, field.toBuilder().build());
113+
}
114+
77115
@Test
78116
public void testBuilder() {
79117
assertEquals(FIELD_NAME1, FIELD_SCHEMA1.getName());
@@ -88,6 +126,22 @@ public void testBuilder() {
88126
assertEquals(FieldList.of(FIELD_SCHEMA1, FIELD_SCHEMA2), FIELD_SCHEMA3.getSubFields());
89127
}
90128

129+
@Test
130+
public void testBuilderWithStandardSQLTypeName() {
131+
assertEquals(FIELD_NAME1, STANDARD_FIELD_SCHEMA1.getName());
132+
assertEquals(FIELD_TYPE1, STANDARD_FIELD_SCHEMA1.getType());
133+
assertEquals(FIELD_MODE1, STANDARD_FIELD_SCHEMA1.getMode());
134+
assertEquals(FIELD_DESCRIPTION1, STANDARD_FIELD_SCHEMA1.getDescription());
135+
assertEquals(null, STANDARD_FIELD_SCHEMA1.getSubFields());
136+
assertEquals(FIELD_NAME3, STANDARD_FIELD_SCHEMA3.getName());
137+
assertEquals(FIELD_TYPE3, STANDARD_FIELD_SCHEMA3.getType());
138+
assertEquals(FIELD_MODE3, STANDARD_FIELD_SCHEMA3.getMode());
139+
assertEquals(FIELD_DESCRIPTION3, STANDARD_FIELD_SCHEMA3.getDescription());
140+
assertEquals(
141+
FieldList.of(STANDARD_FIELD_SCHEMA1, STANDARD_FIELD_SCHEMA2),
142+
STANDARD_FIELD_SCHEMA3.getSubFields());
143+
}
144+
91145
@Test
92146
public void testToAndFromPb() {
93147
compareFieldSchemas(FIELD_SCHEMA1, Field.fromPb(FIELD_SCHEMA1.toPb()));
@@ -97,6 +151,15 @@ public void testToAndFromPb() {
97151
compareFieldSchemas(field, Field.fromPb(field.toPb()));
98152
}
99153

154+
@Test
155+
public void testToAndFromPbWithStandardSQLTypeName() {
156+
compareFieldSchemas(STANDARD_FIELD_SCHEMA1, Field.fromPb(STANDARD_FIELD_SCHEMA1.toPb()));
157+
compareFieldSchemas(STANDARD_FIELD_SCHEMA2, Field.fromPb(STANDARD_FIELD_SCHEMA2.toPb()));
158+
compareFieldSchemas(STANDARD_FIELD_SCHEMA3, Field.fromPb(STANDARD_FIELD_SCHEMA3.toPb()));
159+
Field field = Field.newBuilder(FIELD_NAME1, FIELD_TYPE1).build();
160+
compareFieldSchemas(field, Field.fromPb(field.toPb()));
161+
}
162+
100163
@Test
101164
public void testSubFieldWithClonedType() throws Exception {
102165
LegacySQLTypeName record = LegacySQLTypeName.RECORD;

0 commit comments

Comments
 (0)