We have a content type with this field as part of its schema in a 5.2 site
pmid = schema.TextLine(
title=_("PubMed ID"),
default='',
required=False,
)
And then a simple FieldIndex of the same name added to the portal_catalog. There is no custom indexer for this index nor any special processing by the form handler; it is very vanilla. The problem is that if this field is emptied TTP on a form and saved, the old value remains for the "pmid" index.
Doing some debugging, there is new (to 5.2) behavior used in Products.ZCatalog by the base class used for most indexes: https://github.com/zopefoundation/Products.ZCatalog/blob/5.0.1/src/Products/PluginIndexes/unindex.py#L253. When clearing this field TTP, Dexterity sets this value to None and this condition causes this index to do nothing. If this were a new object being indexed that would be fine, but it seems like a bug that this does not update the existing index. If it can't index a value of None, shouldn't it attempt to unindex if it finds old data?
There are potential workarounds in the form of creating custom indexers or even a change to plone.indexer, but addressing the issue in Products.ZCatalog seems the better move. I have attempted to test this in an otherwise vanilla Plone/Zope environment but please let me know if this problem is not reproduceable in a 5.2 env.