@@ -284,9 +284,13 @@ private boolean isTypeSupported(int sqlType) {
284
284
case Types .NUMERIC :
285
285
case Types .DECIMAL :
286
286
case JsonType .VENDOR_TYPE_NUMBER :
287
+ case JsonType .SHORT_VENDOR_TYPE_NUMBER :
287
288
case PgJsonbType .VENDOR_TYPE_NUMBER :
289
+ case PgJsonbType .SHORT_VENDOR_TYPE_NUMBER :
288
290
case ProtoMessageType .VENDOR_TYPE_NUMBER :
291
+ case ProtoMessageType .SHORT_VENDOR_TYPE_NUMBER :
289
292
case ProtoEnumType .VENDOR_TYPE_NUMBER :
293
+ case ProtoEnumType .SHORT_VENDOR_TYPE_NUMBER :
290
294
return true ;
291
295
}
292
296
return false ;
@@ -348,19 +352,23 @@ private boolean isValidTypeAndValue(Object value, int sqlType) {
348
352
case Types .NCLOB :
349
353
return value instanceof NClob || value instanceof Reader ;
350
354
case JsonType .VENDOR_TYPE_NUMBER :
355
+ case JsonType .SHORT_VENDOR_TYPE_NUMBER :
351
356
return value instanceof String
352
357
|| value instanceof InputStream
353
358
|| value instanceof Reader
354
359
|| (value instanceof Value && ((Value ) value ).getType ().getCode () == Type .Code .JSON );
355
360
case PgJsonbType .VENDOR_TYPE_NUMBER :
361
+ case PgJsonbType .SHORT_VENDOR_TYPE_NUMBER :
356
362
return value instanceof String
357
363
|| value instanceof InputStream
358
364
|| value instanceof Reader
359
365
|| (value instanceof Value
360
366
&& ((Value ) value ).getType ().getCode () == Type .Code .PG_JSONB );
361
367
case ProtoMessageType .VENDOR_TYPE_NUMBER :
368
+ case ProtoMessageType .SHORT_VENDOR_TYPE_NUMBER :
362
369
return value instanceof AbstractMessage || value instanceof byte [];
363
370
case ProtoEnumType .VENDOR_TYPE_NUMBER :
371
+ case ProtoEnumType .SHORT_VENDOR_TYPE_NUMBER :
364
372
return value instanceof ProtocolMessageEnum || value instanceof Number ;
365
373
}
366
374
return false ;
@@ -449,7 +457,12 @@ private Builder setSingleValue(ValueBinder<Builder> binder, Object value, Intege
449
457
/** Set a JDBC parameter value on a Spanner {@link Statement} with a known SQL type. */
450
458
private Builder setParamWithKnownType (ValueBinder <Builder > binder , Object value , Integer sqlType )
451
459
throws SQLException {
452
- switch (sqlType ) {
460
+ if (sqlType == null ) {
461
+ return null ;
462
+ }
463
+ int type = sqlType ;
464
+
465
+ switch (type ) {
453
466
case Types .BIT :
454
467
case Types .BOOLEAN :
455
468
if (value instanceof Boolean ) {
@@ -522,7 +535,9 @@ private Builder setParamWithKnownType(ValueBinder<Builder> binder, Object value,
522
535
}
523
536
return binder .to (stringValue );
524
537
case JsonType .VENDOR_TYPE_NUMBER :
538
+ case JsonType .SHORT_VENDOR_TYPE_NUMBER :
525
539
case PgJsonbType .VENDOR_TYPE_NUMBER :
540
+ case PgJsonbType .SHORT_VENDOR_TYPE_NUMBER :
526
541
String jsonValue ;
527
542
if (value instanceof String ) {
528
543
jsonValue = (String ) value ;
@@ -534,7 +549,8 @@ private Builder setParamWithKnownType(ValueBinder<Builder> binder, Object value,
534
549
throw JdbcSqlExceptionFactory .of (
535
550
value + " is not a valid JSON value" , Code .INVALID_ARGUMENT );
536
551
}
537
- if (sqlType == PgJsonbType .VENDOR_TYPE_NUMBER ) {
552
+ if (type == PgJsonbType .VENDOR_TYPE_NUMBER
553
+ || type == PgJsonbType .SHORT_VENDOR_TYPE_NUMBER ) {
538
554
return binder .to (Value .pgJsonb (jsonValue ));
539
555
}
540
556
return binder .to (Value .json (jsonValue ));
@@ -631,6 +647,7 @@ private Builder setParamWithKnownType(ValueBinder<Builder> binder, Object value,
631
647
}
632
648
throw JdbcSqlExceptionFactory .of (value + " is not a valid clob" , Code .INVALID_ARGUMENT );
633
649
case ProtoMessageType .VENDOR_TYPE_NUMBER :
650
+ case ProtoMessageType .SHORT_VENDOR_TYPE_NUMBER :
634
651
if (value instanceof AbstractMessage ) {
635
652
return binder .to ((AbstractMessage ) value );
636
653
} else if (value instanceof byte []) {
@@ -640,6 +657,7 @@ private Builder setParamWithKnownType(ValueBinder<Builder> binder, Object value,
640
657
value + " is not a valid PROTO value" , Code .INVALID_ARGUMENT );
641
658
}
642
659
case ProtoEnumType .VENDOR_TYPE_NUMBER :
660
+ case ProtoEnumType .SHORT_VENDOR_TYPE_NUMBER :
643
661
if (value instanceof ProtocolMessageEnum ) {
644
662
return binder .to ((ProtocolMessageEnum ) value );
645
663
} else if (value instanceof Number ) {
@@ -809,8 +827,10 @@ private Builder setArrayValue(ValueBinder<Builder> binder, int type, Object valu
809
827
case Types .NCLOB :
810
828
return binder .toStringArray (null );
811
829
case JsonType .VENDOR_TYPE_NUMBER :
830
+ case JsonType .SHORT_VENDOR_TYPE_NUMBER :
812
831
return binder .toJsonArray (null );
813
832
case PgJsonbType .VENDOR_TYPE_NUMBER :
833
+ case PgJsonbType .SHORT_VENDOR_TYPE_NUMBER :
814
834
return binder .toPgJsonbArray (null );
815
835
case Types .DATE :
816
836
return binder .toDateArray (null );
@@ -825,7 +845,9 @@ private Builder setArrayValue(ValueBinder<Builder> binder, int type, Object valu
825
845
case Types .BLOB :
826
846
return binder .toBytesArray (null );
827
847
case ProtoMessageType .VENDOR_TYPE_NUMBER :
848
+ case ProtoMessageType .SHORT_VENDOR_TYPE_NUMBER :
828
849
case ProtoEnumType .VENDOR_TYPE_NUMBER :
850
+ case ProtoEnumType .SHORT_VENDOR_TYPE_NUMBER :
829
851
return binder .to (
830
852
Value .untyped (
831
853
com .google .protobuf .Value .newBuilder ()
@@ -886,9 +908,10 @@ private Builder setArrayValue(ValueBinder<Builder> binder, int type, Object valu
886
908
} else if (Timestamp [].class .isAssignableFrom (value .getClass ())) {
887
909
return binder .toTimestampArray (JdbcTypeConverter .toGoogleTimestamps ((Timestamp []) value ));
888
910
} else if (String [].class .isAssignableFrom (value .getClass ())) {
889
- if (type == JsonType .VENDOR_TYPE_NUMBER ) {
911
+ if (type == JsonType .VENDOR_TYPE_NUMBER || type == JsonType . SHORT_VENDOR_TYPE_NUMBER ) {
890
912
return binder .toJsonArray (Arrays .asList ((String []) value ));
891
- } else if (type == PgJsonbType .VENDOR_TYPE_NUMBER ) {
913
+ } else if (type == PgJsonbType .VENDOR_TYPE_NUMBER
914
+ || type == PgJsonbType .SHORT_VENDOR_TYPE_NUMBER ) {
892
915
return binder .toPgJsonbArray (Arrays .asList ((String []) value ));
893
916
} else {
894
917
return binder .toStringArray (Arrays .asList ((String []) value ));
@@ -992,11 +1015,13 @@ private Builder setNullValue(ValueBinder<Builder> binder, Integer sqlType) {
992
1015
Value .untyped (
993
1016
com .google .protobuf .Value .newBuilder ().setNullValue (NullValue .NULL_VALUE ).build ()));
994
1017
}
995
- switch (sqlType ) {
1018
+ int type = sqlType ;
1019
+ switch (type ) {
996
1020
case Types .BIGINT :
997
1021
return binder .to ((Long ) null );
998
1022
case Types .BINARY :
999
1023
case ProtoMessageType .VENDOR_TYPE_NUMBER :
1024
+ case ProtoEnumType .SHORT_VENDOR_TYPE_NUMBER :
1000
1025
return binder .to ((ByteArray ) null );
1001
1026
case Types .BLOB :
1002
1027
return binder .to ((ByteArray ) null );
@@ -1021,6 +1046,7 @@ private Builder setNullValue(ValueBinder<Builder> binder, Integer sqlType) {
1021
1046
return binder .to ((Double ) null );
1022
1047
case Types .INTEGER :
1023
1048
case ProtoEnumType .VENDOR_TYPE_NUMBER :
1049
+ case ProtoMessageType .SHORT_VENDOR_TYPE_NUMBER :
1024
1050
return binder .to ((Long ) null );
1025
1051
case Types .LONGNVARCHAR :
1026
1052
return binder .to ((String ) null );
@@ -1052,8 +1078,10 @@ private Builder setNullValue(ValueBinder<Builder> binder, Integer sqlType) {
1052
1078
case Types .VARCHAR :
1053
1079
return binder .to ((String ) null );
1054
1080
case JsonType .VENDOR_TYPE_NUMBER :
1081
+ case JsonType .SHORT_VENDOR_TYPE_NUMBER :
1055
1082
return binder .to (Value .json (null ));
1056
1083
case PgJsonbType .VENDOR_TYPE_NUMBER :
1084
+ case PgJsonbType .SHORT_VENDOR_TYPE_NUMBER :
1057
1085
return binder .to (Value .pgJsonb (null ));
1058
1086
default :
1059
1087
return binder .to (
0 commit comments