Skip to content

Commit 49e8f92

Browse files
committed
fix: unit tests for UUID type
1 parent 72b697b commit 49e8f92

File tree

4 files changed

+81
-19
lines changed

4 files changed

+81
-19
lines changed

google-cloud-spanner/src/test/java/com/google/cloud/spanner/DatabaseClientImplTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@
120120
import java.util.List;
121121
import java.util.Random;
122122
import java.util.Set;
123+
import java.util.UUID;
123124
import java.util.concurrent.ExecutionException;
124125
import java.util.concurrent.ExecutorService;
125126
import java.util.concurrent.Executors;
@@ -4627,6 +4628,7 @@ public void testGetAllTypesAsString() {
46274628
resultSet,
46284629
col++);
46294630
assertAsString("2023-01-11", resultSet, col++);
4631+
assertAsString("b1153a48-cd31-498e-b770-f554bce48e05", resultSet, col++);
46304632
assertAsString("2023-01-11T11:55:18.123456789Z", resultSet, col++);
46314633
if (dialect == Dialect.POSTGRESQL) {
46324634
// Check PG_OID value
@@ -4668,6 +4670,7 @@ public void testGetAllTypesAsString() {
46684670
resultSet,
46694671
col++);
46704672
assertAsString(ImmutableList.of("2000-02-29", "NULL", "2000-01-01"), resultSet, col++);
4673+
assertAsString(ImmutableList.of("b1153a48-cd31-498e-b770-f554bce48e05", "NULL", "11546309-8b37-4366-9a20-369381c7803a"), resultSet, col++);
46714674
assertAsString(
46724675
ImmutableList.of("2023-01-11T11:55:18.123456789Z", "NULL", "2023-01-12T11:55:18Z"),
46734676
resultSet,
@@ -5199,6 +5202,7 @@ private ListValue getRows(Dialect dialect) {
51995202
.encodeToString("test-bytes".getBytes(StandardCharsets.UTF_8)))
52005203
.build())
52015204
.addValues(com.google.protobuf.Value.newBuilder().setStringValue("2023-01-11").build())
5205+
.addValues(com.google.protobuf.Value.newBuilder().setStringValue("b1153a48-cd31-498e-b770-f554bce48e05").build())
52025206
.addValues(
52035207
com.google.protobuf.Value.newBuilder()
52045208
.setStringValue("2023-01-11T11:55:18.123456789Z")
@@ -5363,6 +5367,23 @@ private ListValue getRows(Dialect dialect) {
53635367
.setStringValue("2000-01-01")
53645368
.build())
53655369
.build()))
5370+
.addValues(
5371+
com.google.protobuf.Value.newBuilder()
5372+
.setListValue(
5373+
ListValue.newBuilder()
5374+
.addValues(
5375+
com.google.protobuf.Value.newBuilder()
5376+
.setStringValue("b1153a48-cd31-498e-b770-f554bce48e05")
5377+
.build())
5378+
.addValues(
5379+
com.google.protobuf.Value.newBuilder()
5380+
.setNullValue(NullValue.NULL_VALUE)
5381+
.build())
5382+
.addValues(
5383+
com.google.protobuf.Value.newBuilder()
5384+
.setStringValue("11546309-8b37-4366-9a20-369381c7803a")
5385+
.build())
5386+
.build()))
53665387
.addValues(
53675388
com.google.protobuf.Value.newBuilder()
53685389
.setListValue(

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/AllTypesMockServerTest.java

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import java.util.Base64;
4141
import java.util.List;
4242
import java.util.Map;
43+
import java.util.UUID;
4344
import java.util.stream.Collectors;
4445
import java.util.stream.IntStream;
4546
import org.junit.After;
@@ -76,6 +77,7 @@ public static Object[] data() {
7677
public static final long PG_OID_VALUE = 1L;
7778
public static final byte[] BYTES_VALUE = "test-bytes".getBytes(StandardCharsets.UTF_8);
7879
public static final Date DATE_VALUE = Date.fromYearMonthDay(2024, 3, 2);
80+
public static final UUID UUID_VALUE = UUID.randomUUID();
7981
public static final Timestamp TIMESTAMP_VALUE =
8082
Timestamp.parseTimestamp("2024-03-02T07:07:00.20982735Z");
8183

@@ -124,6 +126,12 @@ public static Object[] data() {
124126
Date.fromYearMonthDay(2024, 3, 3),
125127
Date.fromYearMonthDay(1, 1, 1),
126128
Date.fromYearMonthDay(9999, 12, 31));
129+
130+
public static final List<UUID> UUID_ARRAY_VALUE =
131+
Arrays.asList(
132+
UUID.randomUUID(),
133+
null,
134+
UUID.randomUUID());
127135
public static final List<Timestamp> TIMESTAMP_ARRAY_VALUE =
128136
Arrays.asList(
129137
Timestamp.parseTimestamp("2024-03-01T07:07:00.20982735Z"),
@@ -157,15 +165,16 @@ private void setupAllTypesResultSet(Dialect dialect) {
157165
// COL7: JSON / PG_JSONB
158166
// COL8: BYTES
159167
// COL9: DATE
160-
// COL10: TIMESTAMP
161-
// COL11: PG_OID (added only for POSTGRESQL dialect)
162-
// COL12-21: ARRAY<..> for the types above.
168+
// COL10: UUID
169+
// COL11: TIMESTAMP
170+
// COL12: PG_OID (added only for POSTGRESQL dialect)
171+
// COL13-22: ARRAY<..> for the types above.
163172
// Only for GoogleSQL:
164-
// COL22: PROTO
165-
// COL23: ENUM
166-
// COL24: ARRAY<PROTO>
167-
// COL25: ARRAY<ENUM>
168-
// COL26: ARRAY<PG_OID> (added only for POSTGRESQL dialect)
173+
// COL23: PROTO
174+
// COL24: ENUM
175+
// COL25: ARRAY<PROTO>
176+
// COL26: ARRAY<ENUM>
177+
// COL27: ARRAY<PG_OID> (added only for POSTGRESQL dialect)
169178
ListValue.Builder row1Builder =
170179
ListValue.newBuilder()
171180
.addValues(Value.newBuilder().setBoolValue(BOOL_VALUE))
@@ -183,6 +192,7 @@ private void setupAllTypesResultSet(Dialect dialect) {
183192
.addValues(
184193
Value.newBuilder().setStringValue(Base64.getEncoder().encodeToString(BYTES_VALUE)))
185194
.addValues(Value.newBuilder().setStringValue(DATE_VALUE.toString()))
195+
.addValues(Value.newBuilder().setStringValue(UUID_VALUE.toString()))
186196
.addValues(Value.newBuilder().setStringValue(TIMESTAMP_VALUE.toString()));
187197
if (dialect == Dialect.POSTGRESQL) {
188198
row1Builder.addValues(
@@ -356,6 +366,23 @@ private void setupAllTypesResultSet(Dialect dialect) {
356366
.build())
357367
.collect(Collectors.toList()))
358368
.build()))
369+
.addValues(
370+
Value.newBuilder()
371+
.setListValue(
372+
ListValue.newBuilder()
373+
.addAllValues(
374+
UUID_ARRAY_VALUE.stream()
375+
.map(
376+
uuid ->
377+
uuid == null
378+
? Value.newBuilder()
379+
.setNullValue(NullValue.NULL_VALUE)
380+
.build()
381+
: Value.newBuilder()
382+
.setStringValue(uuid.toString())
383+
.build())
384+
.collect(Collectors.toList()))
385+
.build()))
359386
.addValues(
360387
Value.newBuilder()
361388
.setListValue(
@@ -509,6 +536,8 @@ public static Statement createInsertStatement(Dialect dialect) {
509536
.bind("p" + ++param)
510537
.to(DATE_VALUE)
511538
.bind("p" + ++param)
539+
.to(UUID_VALUE)
540+
.bind("p" + ++param)
512541
.to(TIMESTAMP_VALUE);
513542
if (dialect == Dialect.POSTGRESQL) {
514543
builder.bind("p" + ++param).to(PG_OID_VALUE);
@@ -539,6 +568,8 @@ public static Statement createInsertStatement(Dialect dialect) {
539568
.bind("p" + ++param)
540569
.toDateArray(DATE_ARRAY_VALUE)
541570
.bind("p" + ++param)
571+
.toUuidArray(UUID_ARRAY_VALUE)
572+
.bind("p" + ++param)
542573
.toTimestampArray(TIMESTAMP_ARRAY_VALUE);
543574
if (dialect == Dialect.POSTGRESQL) {
544575
builder.bind("p" + ++param).toInt64Array(PG_OID_ARRAY_VALUE);
@@ -573,6 +604,7 @@ public void testSelectAllTypes() {
573604
dialect == Dialect.POSTGRESQL ? resultSet.getPgJsonb(++col) : resultSet.getJson(++col));
574605
assertArrayEquals(BYTES_VALUE, resultSet.getBytes(++col).toByteArray());
575606
assertEquals(DATE_VALUE, resultSet.getDate(++col));
607+
assertEquals(UUID_VALUE, resultSet.getUuid(++col));
576608
assertEquals(TIMESTAMP_VALUE, resultSet.getTimestamp(++col));
577609
if (dialect == Dialect.POSTGRESQL) {
578610
assertEquals(PG_OID_VALUE, resultSet.getLong(++col));
@@ -595,6 +627,7 @@ public void testSelectAllTypes() {
595627
: resultSet.getJsonList(++col));
596628
assertEquals(BYTES_ARRAY_VALUE, resultSet.getBytesList(++col));
597629
assertEquals(DATE_ARRAY_VALUE, resultSet.getDateList(++col));
630+
assertEquals(UUID_ARRAY_VALUE, resultSet.getUuidList(++col));
598631
assertEquals(TIMESTAMP_ARRAY_VALUE, resultSet.getTimestampList(++col));
599632
if (dialect == Dialect.POSTGRESQL) {
600633
assertEquals(PG_OID_ARRAY_VALUE, resultSet.getLongList(++col));
@@ -613,8 +646,8 @@ public void testInsertAllTypes() {
613646
ExecuteSqlRequest request = mockSpanner.getRequestsOfType(ExecuteSqlRequest.class).get(0);
614647
Map<String, Type> paramTypes = request.getParamTypesMap();
615648
Map<String, Value> params = request.getParams().getFieldsMap();
616-
assertEquals(dialect == Dialect.POSTGRESQL ? 22 : 20, paramTypes.size());
617-
assertEquals(dialect == Dialect.POSTGRESQL ? 22 : 20, params.size());
649+
assertEquals(dialect == Dialect.POSTGRESQL ? 24 : 22, paramTypes.size());
650+
assertEquals(dialect == Dialect.POSTGRESQL ? 24 : 22, params.size());
618651

619652
// Verify param types.
620653
ImmutableList<TypeCode> expectedTypes;
@@ -630,6 +663,7 @@ public void testInsertAllTypes() {
630663
TypeCode.JSON,
631664
TypeCode.BYTES,
632665
TypeCode.DATE,
666+
TypeCode.UUID,
633667
TypeCode.TIMESTAMP,
634668
TypeCode.INT64);
635669
} else {
@@ -644,6 +678,7 @@ public void testInsertAllTypes() {
644678
TypeCode.JSON,
645679
TypeCode.BYTES,
646680
TypeCode.DATE,
681+
TypeCode.UUID,
647682
TypeCode.TIMESTAMP);
648683
}
649684
for (int col = 0; col < expectedTypes.size(); col++) {
@@ -670,6 +705,7 @@ public void testInsertAllTypes() {
670705
Base64.getEncoder().encodeToString(BYTES_VALUE),
671706
params.get("p" + ++col).getStringValue());
672707
assertEquals(DATE_VALUE.toString(), params.get("p" + ++col).getStringValue());
708+
assertEquals(UUID_VALUE.toString(), params.get("p" + ++col).getStringValue());
673709
assertEquals(TIMESTAMP_VALUE.toString(), params.get("p" + ++col).getStringValue());
674710
if (dialect == Dialect.POSTGRESQL) {
675711
assertEquals(String.valueOf(PG_OID_VALUE), params.get("p" + ++col).getStringValue());
@@ -730,6 +766,11 @@ public void testInsertAllTypes() {
730766
params.get("p" + ++col).getListValue().getValuesList().stream()
731767
.map(value -> value.hasNullValue() ? null : Date.parseDate(value.getStringValue()))
732768
.collect(Collectors.toList()));
769+
assertEquals(
770+
UUID_ARRAY_VALUE,
771+
params.get("p" + ++col).getListValue().getValuesList().stream()
772+
.map(value -> value.hasNullValue() ? null : UUID.fromString(value.getStringValue()))
773+
.collect(Collectors.toList()));
733774
assertEquals(
734775
TIMESTAMP_ARRAY_VALUE,
735776
params.get("p" + ++col).getListValue().getValuesList().stream()

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/MergedResultSetTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public void testAllResultsAreReturned() {
150150
if (numPartitions == 0) {
151151
assertEquals(0, resultSet.getColumnCount());
152152
} else {
153-
assertEquals(24, resultSet.getColumnCount());
153+
assertEquals(26, resultSet.getColumnCount());
154154
assertEquals(Type.bool(), resultSet.getColumnType(0));
155155
assertEquals(Type.bool(), resultSet.getColumnType("COL0"));
156156
assertEquals(10, resultSet.getColumnIndex("COL10"));

google-cloud-spanner/src/test/java/com/google/cloud/spanner/connection/PartitionedQueryMockServerTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -403,9 +403,9 @@ public void testRunEmptyPartitionedQuery() {
403403
statement, PartitionOptions.newBuilder().setMaxPartitions(maxPartitions).build())) {
404404
assertFalse(resultSet.next());
405405
assertNotNull(resultSet.getMetadata());
406-
assertEquals(24, resultSet.getMetadata().getRowType().getFieldsCount());
406+
assertEquals(26, resultSet.getMetadata().getRowType().getFieldsCount());
407407
assertNotNull(resultSet.getType());
408-
assertEquals(24, resultSet.getType().getStructFields().size());
408+
assertEquals(26, resultSet.getType().getStructFields().size());
409409
}
410410
if (isMultiplexedSessionsEnabled(connection.getSpanner())) {
411411
assertEquals(2, mockSpanner.countRequestsOfType(CreateSessionRequest.class));
@@ -435,15 +435,15 @@ public void testGetMetadataWithoutNextCall() {
435435
connection.runPartitionedQuery(
436436
statement, PartitionOptions.newBuilder().setMaxPartitions(maxPartitions).build())) {
437437
assertNotNull(resultSet.getMetadata());
438-
assertEquals(24, resultSet.getMetadata().getRowType().getFieldsCount());
438+
assertEquals(26, resultSet.getMetadata().getRowType().getFieldsCount());
439439
assertNotNull(resultSet.getType());
440-
assertEquals(24, resultSet.getType().getStructFields().size());
440+
assertEquals(26, resultSet.getType().getStructFields().size());
441441

442442
assertTrue(resultSet.next());
443443
assertNotNull(resultSet.getMetadata());
444-
assertEquals(24, resultSet.getMetadata().getRowType().getFieldsCount());
444+
assertEquals(26, resultSet.getMetadata().getRowType().getFieldsCount());
445445
assertNotNull(resultSet.getType());
446-
assertEquals(24, resultSet.getType().getStructFields().size());
446+
assertEquals(26, resultSet.getType().getStructFields().size());
447447

448448
assertFalse(resultSet.next());
449449
}
@@ -470,9 +470,9 @@ public void testGetMetadataWithoutNextCallOnEmptyResultSet() {
470470
connection.runPartitionedQuery(
471471
statement, PartitionOptions.newBuilder().setMaxPartitions(maxPartitions).build())) {
472472
assertNotNull(resultSet.getMetadata());
473-
assertEquals(24, resultSet.getMetadata().getRowType().getFieldsCount());
473+
assertEquals(26, resultSet.getMetadata().getRowType().getFieldsCount());
474474
assertNotNull(resultSet.getType());
475-
assertEquals(24, resultSet.getType().getStructFields().size());
475+
assertEquals(26, resultSet.getType().getStructFields().size());
476476

477477
assertFalse(resultSet.next());
478478
}

0 commit comments

Comments
 (0)