@@ -2719,6 +2719,9 @@ private com.google.spanner.executor.v1.ValueList buildRow(
27192719 case BOOL :
27202720 value .setBoolValue (result .getBoolean (i ));
27212721 break ;
2722+ case FLOAT32 :
2723+ value .setDoubleValue ((double ) result .getFloat (i ));
2724+ break ;
27222725 case FLOAT64 :
27232726 value .setDoubleValue (result .getDouble (i ));
27242727 break ;
@@ -2765,6 +2768,25 @@ private com.google.spanner.executor.v1.ValueList buildRow(
27652768 com .google .spanner .v1 .Type .newBuilder ().setCode (TypeCode .BOOL ).build ());
27662769 }
27672770 break ;
2771+ case FLOAT32 :
2772+ {
2773+ com .google .spanner .executor .v1 .ValueList .Builder builder =
2774+ com .google .spanner .executor .v1 .ValueList .newBuilder ();
2775+ List <Float > values = result .getFloatList (i );
2776+ for (Float floatValue : values ) {
2777+ com .google .spanner .executor .v1 .Value .Builder valueProto =
2778+ com .google .spanner .executor .v1 .Value .newBuilder ();
2779+ if (floatValue == null ) {
2780+ builder .addValue (valueProto .setIsNull (true ).build ());
2781+ } else {
2782+ builder .addValue (valueProto .setDoubleValue ((double ) floatValue ).build ());
2783+ }
2784+ }
2785+ value .setArrayValue (builder .build ());
2786+ value .setArrayType (
2787+ com .google .spanner .v1 .Type .newBuilder ().setCode (TypeCode .FLOAT32 ).build ());
2788+ }
2789+ break ;
27682790 case FLOAT64 :
27692791 {
27702792 com .google .spanner .executor .v1 .ValueList .Builder builder =
@@ -3086,6 +3108,9 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue(
30863108 switch (type .getCode ()) {
30873109 case INT64 :
30883110 return com .google .cloud .spanner .Value .int64 (value .hasIsNull () ? null : value .getIntValue ());
3111+ case FLOAT32 :
3112+ return com .google .cloud .spanner .Value .float32 (
3113+ value .hasIsNull () ? null : (float ) value .getDoubleValue ());
30893114 case FLOAT64 :
30903115 return com .google .cloud .spanner .Value .float64 (
30913116 value .hasIsNull () ? null : value .getDoubleValue ());
@@ -3142,6 +3167,19 @@ private static com.google.cloud.spanner.Value valueProtoToCloudValue(
31423167 .map (com .google .spanner .executor .v1 .Value ::getIntValue )
31433168 .collect (Collectors .toList ())));
31443169 }
3170+ case FLOAT32 :
3171+ if (value .hasIsNull ()) {
3172+ return com .google .cloud .spanner .Value .float32Array ((Iterable <Float >) null );
3173+ } else {
3174+ return com .google .cloud .spanner .Value .float32Array (
3175+ unmarshallValueList (
3176+ value .getArrayValue ().getValueList ().stream ()
3177+ .map (com .google .spanner .executor .v1 .Value ::getIsNull )
3178+ .collect (Collectors .toList ()),
3179+ value .getArrayValue ().getValueList ().stream ()
3180+ .map (v -> (float ) v .getDoubleValue ())
3181+ .collect (Collectors .toList ())));
3182+ }
31453183 case FLOAT64 :
31463184 if (value .hasIsNull ()) {
31473185 return com .google .cloud .spanner .Value .float64Array ((Iterable <Double >) null );
@@ -3382,6 +3420,8 @@ private static com.google.cloud.spanner.Type typeProtoToCloudType(
33823420 return com .google .cloud .spanner .Type .string ();
33833421 case BYTES :
33843422 return com .google .cloud .spanner .Type .bytes ();
3423+ case FLOAT32 :
3424+ return com .google .cloud .spanner .Type .float32 ();
33853425 case FLOAT64 :
33863426 return com .google .cloud .spanner .Type .float64 ();
33873427 case DATE :
@@ -3430,6 +3470,8 @@ private static com.google.spanner.v1.Type cloudTypeToTypeProto(@Nonnull Type clo
34303470 return com .google .spanner .v1 .Type .newBuilder ().setCode (TypeCode .BOOL ).build ();
34313471 case INT64 :
34323472 return com .google .spanner .v1 .Type .newBuilder ().setCode (TypeCode .INT64 ).build ();
3473+ case FLOAT32 :
3474+ return com .google .spanner .v1 .Type .newBuilder ().setCode (TypeCode .FLOAT32 ).build ();
34333475 case FLOAT64 :
34343476 return com .google .spanner .v1 .Type .newBuilder ().setCode (TypeCode .FLOAT64 ).build ();
34353477 case STRING :
0 commit comments