@@ -10,7 +10,6 @@ from asyncpg.exceptions import OutdatedSchemaCacheError
1010
1111cdef void * binary_codec_map[(MAXSUPPORTEDOID + 1 ) * 2 ]
1212cdef void * text_codec_map[(MAXSUPPORTEDOID + 1 ) * 2 ]
13- cdef dict TYPE_CODECS_CACHE = {}
1413cdef dict EXTRA_CODECS = {}
1514
1615
@@ -391,12 +390,11 @@ cdef uint32_t pylong_as_oid(val) except? 0xFFFFFFFFl:
391390
392391cdef class DataCodecConfig:
393392 def __init__ (self , cache_key ):
394- try :
395- self ._type_codecs_cache = TYPE_CODECS_CACHE[cache_key]
396- except KeyError :
397- self ._type_codecs_cache = TYPE_CODECS_CACHE[cache_key] = {}
398-
399- self ._local_type_codecs = {}
393+ # Codec instance cache for derived types:
394+ # composites, arrays, ranges, domains and their combinations.
395+ self ._derived_type_codecs = {}
396+ # Codec instances set up by the user for the connection.
397+ self ._custom_type_codecs = {}
400398
401399 def add_types (self , types ):
402400 cdef:
@@ -451,7 +449,7 @@ cdef class DataCodecConfig:
451449
452450 elem_delim = < Py_UCS4> ti[' elemdelim' ][0 ]
453451
454- self ._type_codecs_cache [oid, elem_format] = \
452+ self ._derived_type_codecs [oid, elem_format] = \
455453 Codec.new_array_codec(
456454 oid, name, schema, elem_codec, elem_delim)
457455
@@ -483,7 +481,7 @@ cdef class DataCodecConfig:
483481 if has_text_elements:
484482 format = PG_FORMAT_TEXT
485483
486- self ._type_codecs_cache [oid, format] = \
484+ self ._derived_type_codecs [oid, format] = \
487485 Codec.new_composite_codec(
488486 oid, name, schema, format, comp_elem_codecs,
489487 comp_type_attrs, element_names)
@@ -502,7 +500,7 @@ cdef class DataCodecConfig:
502500 elem_codec = self .declare_fallback_codec(
503501 base_type, name, schema)
504502
505- self ._type_codecs_cache [oid, format] = elem_codec
503+ self ._derived_type_codecs [oid, format] = elem_codec
506504
507505 elif ti[' kind' ] == b' r' :
508506 # Range type
@@ -523,7 +521,7 @@ cdef class DataCodecConfig:
523521 elem_codec = self .declare_fallback_codec(
524522 range_subtype_oid, name, schema)
525523
526- self ._type_codecs_cache [oid, elem_format] = \
524+ self ._derived_type_codecs [oid, elem_format] = \
527525 Codec.new_range_codec(oid, name, schema, elem_codec)
528526
529527 elif ti[' kind' ] == b' e' :
@@ -554,13 +552,13 @@ cdef class DataCodecConfig:
554552 # Clear all previous overrides (this also clears type cache).
555553 self .remove_python_codec(typeoid, typename, typeschema)
556554
557- self ._local_type_codecs [typeoid] = \
555+ self ._custom_type_codecs [typeoid] = \
558556 Codec.new_python_codec(oid, typename, typeschema, typekind,
559557 encoder, decoder, c_encoder, c_decoder,
560558 format, xformat)
561559
562560 def remove_python_codec (self , typeoid , typename , typeschema ):
563- self ._local_type_codecs .pop(typeoid, None )
561+ self ._custom_type_codecs .pop(typeoid, None )
564562 self .clear_type_cache()
565563
566564 def _set_builtin_type_codec (self , typeoid , typename , typeschema , typekind ,
@@ -592,7 +590,7 @@ cdef class DataCodecConfig:
592590 codec.schema = typeschema
593591 codec.kind = typekind
594592
595- self ._local_type_codecs [typeoid] = codec
593+ self ._custom_type_codecs [typeoid] = codec
596594 break
597595 else :
598596 raise ValueError (' unknown alias target: {}' .format(alias_to))
@@ -604,7 +602,7 @@ cdef class DataCodecConfig:
604602 self .clear_type_cache()
605603
606604 def clear_type_cache (self ):
607- self ._type_codecs_cache .clear()
605+ self ._derived_type_codecs .clear()
608606
609607 def declare_fallback_codec (self , uint32_t oid , str name , str schema ):
610608 cdef Codec codec
@@ -654,12 +652,12 @@ cdef class DataCodecConfig:
654652 return codec
655653 else :
656654 try :
657- return self ._type_codecs_cache [oid, format]
655+ return self ._derived_type_codecs [oid, format]
658656 except KeyError :
659657 return None
660658
661659 cdef inline Codec get_local_codec(self , uint32_t oid):
662- return self ._local_type_codecs .get(oid)
660+ return self ._custom_type_codecs .get(oid)
663661
664662
665663cdef inline Codec get_core_codec(
0 commit comments