@@ -108,9 +108,8 @@ private DefaultCodecs(List<Codec<?>> codecs) {
108108 fastPath .putIfAbsent (mainClass , codec );
109109 }
110110
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 ;
114113
115114 fastPath .putIfAbsent (c .getPrimitiveClass (), c );
116115 } else if (codec instanceof ParameterizedCodec <?>) {
@@ -230,7 +229,7 @@ public MySqlParameter encode(Object value, CodecContext context) {
230229 }
231230
232231 for (Codec <?> codec : codecs ) {
233- if (codec .canEncode (valueToEncode )) {
232+ if (codec != fast && codec .canEncode (valueToEncode )) {
234233 return codec .encode (valueToEncode , context );
235234 }
236235 }
@@ -293,7 +292,7 @@ private <T> T decodeNormal(NormalFieldValue value, MySqlReadableMetadata metadat
293292 }
294293
295294 for (Codec <?> codec : codecs ) {
296- if (codec .canDecode (metadata , type )) {
295+ if (codec != fast && codec .canDecode (metadata , type )) {
297296 @ SuppressWarnings ("unchecked" )
298297 Codec <T > c = (Codec <T >) codec ;
299298 return c .decode (value .getBufferSlice (), metadata , type , binary , context );
@@ -327,7 +326,7 @@ private <T> T decodeMassive(LargeFieldValue value, MySqlReadableMetadata metadat
327326 }
328327
329328 for (MassiveCodec <?> codec : massiveCodecs ) {
330- if (codec .canDecode (metadata , type )) {
329+ if (codec != fast && codec .canDecode (metadata , type )) {
331330 @ SuppressWarnings ("unchecked" )
332331 MassiveCodec <T > c = (MassiveCodec <T >) codec ;
333332 return c .decodeMassive (value .getBufferSlices (), metadata , type , binary , context );
0 commit comments