|
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;
|
@@ -2898,6 +2899,9 @@ private com.google.spanner.executor.v1.ValueList buildStruct(StructReader struct
|
2898 | 2899 | case DATE:
|
2899 | 2900 | value.setDateDaysValue(daysFromDate(struct.getDate(i)));
|
2900 | 2901 | break;
|
| 2902 | + case UUID: |
| 2903 | + value.setStringValue(struct.getUuid(i).toString()); |
| 2904 | + break; |
2901 | 2905 | case NUMERIC:
|
2902 | 2906 | String ascii = struct.getBigDecimal(i).toPlainString();
|
2903 | 2907 | value.setStringValue(ascii);
|
@@ -3044,6 +3048,25 @@ private com.google.spanner.executor.v1.ValueList buildStruct(StructReader struct
|
3044 | 3048 | com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.DATE).build());
|
3045 | 3049 | }
|
3046 | 3050 | break;
|
| 3051 | + case UUID: |
| 3052 | + { |
| 3053 | + com.google.spanner.executor.v1.ValueList.Builder builder = |
| 3054 | + com.google.spanner.executor.v1.ValueList.newBuilder(); |
| 3055 | + List<UUID> values = struct.getUuidList(i); |
| 3056 | + for (UUID uuidValue : values) { |
| 3057 | + com.google.spanner.executor.v1.Value.Builder valueProto = |
| 3058 | + com.google.spanner.executor.v1.Value.newBuilder(); |
| 3059 | + if (uuidValue == null) { |
| 3060 | + builder.addValue(valueProto.setIsNull(true).build()); |
| 3061 | + } else { |
| 3062 | + builder.addValue(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; |
3047 | 3070 | case TIMESTAMP:
|
3048 | 3071 | {
|
3049 | 3072 | com.google.spanner.executor.v1.ValueList.Builder builder =
|
@@ -3227,6 +3250,7 @@ private static com.google.cloud.spanner.Key keyProtoToCloudKey(
|
3227 | 3250 | case BYTES:
|
3228 | 3251 | case FLOAT64:
|
3229 | 3252 | case DATE:
|
| 3253 | + case UUID: |
3230 | 3254 | case TIMESTAMP:
|
3231 | 3255 | case NUMERIC:
|
3232 | 3256 | case JSON:
|
@@ -3260,6 +3284,8 @@ private static com.google.cloud.spanner.Key keyProtoToCloudKey(
|
3260 | 3284 | if (type.getCode() == TypeCode.NUMERIC) {
|
3261 | 3285 | String ascii = part.getStringValue();
|
3262 | 3286 | cloudKey.append(new BigDecimal(ascii));
|
| 3287 | + } else if (type.getCode() == TypeCode.UUID) { |
| 3288 | + cloudKey.append(UUID.fromString(part.getStringValue())); |
3263 | 3289 | } else {
|
3264 | 3290 | cloudKey.append(part.getStringValue());
|
3265 | 3291 | }
|
@@ -3314,6 +3340,9 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue(
|
3314 | 3340 | case DATE:
|
3315 | 3341 | return com.google.cloud.spanner.Value.date(
|
3316 | 3342 | value.hasIsNull() ? null : dateFromDays(value.getDateDaysValue()));
|
| 3343 | + case UUID: |
| 3344 | + return com.google.cloud.spanner.Value.uuid( |
| 3345 | + value.hasIsNull() ? null : UUID.fromString(value.getStringValue())); |
3317 | 3346 | case NUMERIC:
|
3318 | 3347 | {
|
3319 | 3348 | if (value.hasIsNull()) {
|
@@ -3438,6 +3467,20 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue(
|
3438 | 3467 | .collect(Collectors.toList()),
|
3439 | 3468 | CloudClientExecutor::dateFromDays));
|
3440 | 3469 | }
|
| 3470 | + case UUID: |
| 3471 | + if (value.hasIsNull()) { |
| 3472 | + return com.google.cloud.spanner.Value.uuidArray(null); |
| 3473 | + } else { |
| 3474 | + return com.google.cloud.spanner.Value.uuidArray( |
| 3475 | + unmarshallValueList( |
| 3476 | + value.getArrayValue().getValueList().stream() |
| 3477 | + .map(com.google.spanner.executor.v1.Value::getIsNull) |
| 3478 | + .collect(Collectors.toList()), |
| 3479 | + value.getArrayValue().getValueList().stream() |
| 3480 | + .map(com.google.spanner.executor.v1.Value::getStringValue) |
| 3481 | + .collect(Collectors.toList()), |
| 3482 | + UUID::fromString)); |
| 3483 | + } |
3441 | 3484 | case NUMERIC:
|
3442 | 3485 | {
|
3443 | 3486 | if (value.hasIsNull()) {
|
@@ -3603,6 +3646,8 @@ private static com.google.cloud.spanner.Type typeProtoToCloudType(
|
3603 | 3646 | return com.google.cloud.spanner.Type.float64();
|
3604 | 3647 | case DATE:
|
3605 | 3648 | return com.google.cloud.spanner.Type.date();
|
| 3649 | + case UUID: |
| 3650 | + return com.google.cloud.spanner.Type.uuid(); |
3606 | 3651 | case TIMESTAMP:
|
3607 | 3652 | return com.google.cloud.spanner.Type.timestamp();
|
3608 | 3653 | case NUMERIC:
|
@@ -3659,6 +3704,8 @@ private static com.google.spanner.v1.Type cloudTypeToTypeProto(@Nonnull Type clo
|
3659 | 3704 | return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.TIMESTAMP).build();
|
3660 | 3705 | case DATE:
|
3661 | 3706 | return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.DATE).build();
|
| 3707 | + case UUID: |
| 3708 | + return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.UUID).build(); |
3662 | 3709 | case NUMERIC:
|
3663 | 3710 | return com.google.spanner.v1.Type.newBuilder().setCode(TypeCode.NUMERIC).build();
|
3664 | 3711 | case PG_NUMERIC:
|
|
0 commit comments