Skip to content

Commit ff6bab3

Browse files
committed
chore: add support for UUID in CloudClientExecutor
1 parent 01ca718 commit ff6bab3

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

google-cloud-spanner-executor/src/main/java/com/google/cloud/executor/spanner/CloudClientExecutor.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@
176176
import java.util.List;
177177
import java.util.Map;
178178
import java.util.Objects;
179+
import java.util.UUID;
179180
import java.util.concurrent.ExecutionException;
180181
import java.util.concurrent.Executor;
181182
import java.util.concurrent.ExecutorService;
@@ -3046,6 +3047,26 @@ private com.google.spanner.executor.v1.ValueList buildStruct(StructReader struct
30463047
com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.DATE).build());
30473048
}
30483049
break;
3050+
case UUID:
3051+
{
3052+
com.google.spanner.executor.v1.ValueList.Builder builder =
3053+
com.google.spanner.executor.v1.ValueList.newBuilder();
3054+
List<UUID> values = struct.getUuidList(i);
3055+
for (UUID uuidValue : values) {
3056+
com.google.spanner.executor.v1.Value.Builder valueProto =
3057+
com.google.spanner.executor.v1.Value.newBuilder();
3058+
if (uuidValue == null) {
3059+
builder.addValue(valueProto.setIsNull(true).build());
3060+
} else {
3061+
builder.addValue(
3062+
valueProto.setStringValue(uuidValue.toString()).build());
3063+
}
3064+
}
3065+
value.setArrayValue(builder.build());
3066+
value.setArrayType(
3067+
com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.UUID).build());
3068+
}
3069+
break;
30493070
case TIMESTAMP:
30503071
{
30513072
com.google.spanner.executor.v1.ValueList.Builder builder =
@@ -3229,6 +3250,7 @@ private static com.google.cloud.spanner.Key keyProtoToCloudKey(
32293250
case BYTES:
32303251
case FLOAT64:
32313252
case DATE:
3253+
case UUID:
32323254
case TIMESTAMP:
32333255
case NUMERIC:
32343256
case JSON:
@@ -3316,6 +3338,9 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue(
33163338
case DATE:
33173339
return com.google.cloud.spanner.Value.date(
33183340
value.hasIsNull() ? null : dateFromDays(value.getDateDaysValue()));
3341+
case UUID:
3342+
return com.google.cloud.spanner.Value.uuid(
3343+
value.hasIsNull() ? null : UUID.fromString(value.getStringValue()));
33193344
case NUMERIC:
33203345
{
33213346
if (value.hasIsNull()) {
@@ -3440,6 +3465,20 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue(
34403465
.collect(Collectors.toList()),
34413466
CloudClientExecutor::dateFromDays));
34423467
}
3468+
case UUID:
3469+
if (value.hasIsNull()) {
3470+
return com.google.cloud.spanner.Value.uuidArray(null);
3471+
} else {
3472+
return com.google.cloud.spanner.Value.uuidArray(
3473+
unmarshallValueList(
3474+
value.getArrayValue().getValueList().stream()
3475+
.map(com.google.spanner.executor.v1.Value::getIsNull)
3476+
.collect(Collectors.toList()),
3477+
value.getArrayValue().getValueList().stream()
3478+
.map(com.google.spanner.executor.v1.Value::getStringValue)
3479+
.collect(Collectors.toList()),
3480+
UUID::fromString));
3481+
}
34433482
case NUMERIC:
34443483
{
34453484
if (value.hasIsNull()) {
@@ -3605,6 +3644,8 @@ private static com.google.cloud.spanner.Type typeProtoToCloudType(
36053644
return com.google.cloud.spanner.Type.float64();
36063645
case DATE:
36073646
return com.google.cloud.spanner.Type.date();
3647+
case UUID:
3648+
return com.google.cloud.spanner.Type.uuid();
36083649
case TIMESTAMP:
36093650
return com.google.cloud.spanner.Type.timestamp();
36103651
case NUMERIC:
@@ -3661,6 +3702,8 @@ private static com.google.spanner.v1.Type cloudTypeToTypeProto(@Nonnull Type clo
36613702
return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.TIMESTAMP).build();
36623703
case DATE:
36633704
return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.DATE).build();
3705+
case UUID:
3706+
return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.UUID).build();
36643707
case NUMERIC:
36653708
return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.NUMERIC).build();
36663709
case PG_NUMERIC:

0 commit comments

Comments
 (0)