@@ -108,9 +108,8 @@ private DefaultCodecs(List<Codec<?>> codecs) {
108
108
fastPath .putIfAbsent (mainClass , codec );
109
109
}
110
110
111
- if (codec instanceof PrimitiveCodec <?>) {
112
- // Primitive codec must be class-based codec, cannot support ParameterizedType.
113
- PrimitiveCodec <?> c = (PrimitiveCodec <?>) codec ;
111
+ if (codec instanceof AbstractPrimitiveCodec <?>) {
112
+ AbstractPrimitiveCodec <?> c = (AbstractPrimitiveCodec <?>) codec ;
114
113
115
114
fastPath .putIfAbsent (c .getPrimitiveClass (), c );
116
115
} else if (codec instanceof ParameterizedCodec <?>) {
@@ -230,7 +229,7 @@ public MySqlParameter encode(Object value, CodecContext context) {
230
229
}
231
230
232
231
for (Codec <?> codec : codecs ) {
233
- if (codec .canEncode (valueToEncode )) {
232
+ if (codec != fast && codec .canEncode (valueToEncode )) {
234
233
return codec .encode (valueToEncode , context );
235
234
}
236
235
}
@@ -293,7 +292,7 @@ private <T> T decodeNormal(NormalFieldValue value, MySqlReadableMetadata metadat
293
292
}
294
293
295
294
for (Codec <?> codec : codecs ) {
296
- if (codec .canDecode (metadata , type )) {
295
+ if (codec != fast && codec .canDecode (metadata , type )) {
297
296
@ SuppressWarnings ("unchecked" )
298
297
Codec <T > c = (Codec <T >) codec ;
299
298
return c .decode (value .getBufferSlice (), metadata , type , binary , context );
@@ -327,7 +326,7 @@ private <T> T decodeMassive(LargeFieldValue value, MySqlReadableMetadata metadat
327
326
}
328
327
329
328
for (MassiveCodec <?> codec : massiveCodecs ) {
330
- if (codec .canDecode (metadata , type )) {
329
+ if (codec != fast && codec .canDecode (metadata , type )) {
331
330
@ SuppressWarnings ("unchecked" )
332
331
MassiveCodec <T > c = (MassiveCodec <T >) codec ;
333
332
return c .decodeMassive (value .getBufferSlices (), metadata , type , binary , context );
0 commit comments