Skip to content

Commit 8031f09

Browse files
authored
Add UUID support in SpannerSchema (#34034)
* Add UUID support in Spanner Schema * Add test
1 parent 6430e07 commit 8031f09

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/SpannerSchema.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ private static Type parseSpannerType(String spannerType, Dialect dialect) {
181181
if (spannerType.startsWith("STRING")) {
182182
return Type.string();
183183
}
184+
if ("UUID".equals(spannerType)) {
185+
return Type.string();
186+
}
184187
if (spannerType.startsWith("BYTES")) {
185188
return Type.bytes();
186189
}
@@ -260,6 +263,9 @@ private static Type parseSpannerType(String spannerType, Dialect dialect) {
260263
if (spannerType.startsWith("JSONB")) {
261264
return Type.pgJsonb();
262265
}
266+
if ("UUID".equals(spannerType)) {
267+
return Type.string();
268+
}
263269
throw new IllegalArgumentException("Unknown spanner type " + spannerType);
264270
default:
265271
throw new IllegalArgumentException("Unrecognized dialect: " + dialect.name());

sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/SpannerSchemaTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,19 @@ public void testSingleTable() throws Exception {
4141
.addColumn("test", "protoVal", "PROTO<customer.app.TestMessage>")
4242
.addColumn("test", "enumVal", "ENUM<customer.app.TestEnum>")
4343
.addColumn("test", "tokens", "TOKENLIST")
44+
.addColumn("test", "uuidCol", "UUID")
4445
.build();
4546

4647
assertEquals(1, schema.getTables().size());
47-
assertEquals(7, schema.getColumns("test").size());
48+
assertEquals(8, schema.getColumns("test").size());
4849
assertEquals(1, schema.getKeyParts("test").size());
4950
assertEquals(Type.json(), schema.getColumns("test").get(3).getType());
5051
assertEquals(
5152
Type.proto("customer.app.TestMessage"), schema.getColumns("test").get(4).getType());
5253
assertEquals(
5354
Type.protoEnum("customer.app.TestEnum"), schema.getColumns("test").get(5).getType());
5455
assertEquals(Type.bytes(), schema.getColumns("test").get(6).getType());
56+
assertEquals(Type.string(), schema.getColumns("test").get(7).getType());
5557
}
5658

5759
@Test
@@ -84,12 +86,14 @@ public void testSinglePgTable() throws Exception {
8486
.addColumn("test", "numericVal", "numeric")
8587
.addColumn("test", "commitTime", "spanner.commit_timestamp")
8688
.addColumn("test", "jsonbCol", "jsonb")
89+
.addColumn("test", "uuidCol", "uuid")
8790
.build();
8891

8992
assertEquals(1, schema.getTables().size());
90-
assertEquals(5, schema.getColumns("test").size());
93+
assertEquals(6, schema.getColumns("test").size());
9194
assertEquals(1, schema.getKeyParts("test").size());
9295
assertEquals(Type.timestamp(), schema.getColumns("test").get(3).getType());
96+
assertEquals(Type.string(), schema.getColumns("test").get(5).getType());
9397
}
9498

9599
@Test

0 commit comments

Comments
 (0)