|
176 | 176 | import java.util.List; |
177 | 177 | import java.util.Map; |
178 | 178 | import java.util.Objects; |
| 179 | +import java.util.UUID; |
179 | 180 | import java.util.concurrent.ExecutionException; |
180 | 181 | import java.util.concurrent.Executor; |
181 | 182 | import java.util.concurrent.ExecutorService; |
@@ -3046,6 +3047,26 @@ private com.google.spanner.executor.v1.ValueList buildStruct(StructReader struct |
3046 | 3047 | com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.DATE).build()); |
3047 | 3048 | } |
3048 | 3049 | 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; |
3049 | 3070 | case TIMESTAMP: |
3050 | 3071 | { |
3051 | 3072 | com.google.spanner.executor.v1.ValueList.Builder builder = |
@@ -3229,6 +3250,7 @@ private static com.google.cloud.spanner.Key keyProtoToCloudKey( |
3229 | 3250 | case BYTES: |
3230 | 3251 | case FLOAT64: |
3231 | 3252 | case DATE: |
| 3253 | + case UUID: |
3232 | 3254 | case TIMESTAMP: |
3233 | 3255 | case NUMERIC: |
3234 | 3256 | case JSON: |
@@ -3316,6 +3338,9 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue( |
3316 | 3338 | case DATE: |
3317 | 3339 | return com.google.cloud.spanner.Value.date( |
3318 | 3340 | 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())); |
3319 | 3344 | case NUMERIC: |
3320 | 3345 | { |
3321 | 3346 | if (value.hasIsNull()) { |
@@ -3440,6 +3465,20 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue( |
3440 | 3465 | .collect(Collectors.toList()), |
3441 | 3466 | CloudClientExecutor::dateFromDays)); |
3442 | 3467 | } |
| 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 | + } |
3443 | 3482 | case NUMERIC: |
3444 | 3483 | { |
3445 | 3484 | if (value.hasIsNull()) { |
@@ -3605,6 +3644,8 @@ private static com.google.cloud.spanner.Type typeProtoToCloudType( |
3605 | 3644 | return com.google.cloud.spanner.Type.float64(); |
3606 | 3645 | case DATE: |
3607 | 3646 | return com.google.cloud.spanner.Type.date(); |
| 3647 | + case UUID: |
| 3648 | + return com.google.cloud.spanner.Type.uuid(); |
3608 | 3649 | case TIMESTAMP: |
3609 | 3650 | return com.google.cloud.spanner.Type.timestamp(); |
3610 | 3651 | case NUMERIC: |
@@ -3661,6 +3702,8 @@ private static com.google.spanner.v1.Type cloudTypeToTypeProto(@Nonnull Type clo |
3661 | 3702 | return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.TIMESTAMP).build(); |
3662 | 3703 | case DATE: |
3663 | 3704 | 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(); |
3664 | 3707 | case NUMERIC: |
3665 | 3708 | return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.NUMERIC).build(); |
3666 | 3709 | case PG_NUMERIC: |
|
0 commit comments