For optimization purposes, the SQL engine handles CHAR and VARCHAR slightly differently from other field types. A side effect of this optimization is that field-level callbacks that may be in place were skipped on CHAR and VARCHAR columns.
Now the code has been changed to detect if field callbacks are in place on each single field, and for fields with callback in place, the optimized way of handling CHAR and VARCHAR columns is not used so the callback takes place.