UPDATE_ROWS_EVENTs are not in MINIMAL row image format

Hi,

I have 3 master servers (5.7.35-38) and all of them have binlog_row_image = MINIMAL. But in binary logs I still see UPDATE_ROWS_EVENTs in FULL row image format if they originate from another master.

This is how UPDATE_ROWS_EVENTs look like in binary logs (same table, PK present):

On master A:
UPDATE from master A → MINIMAL row image format
UPDATE from master B → FULL row image format
UPDATE from master C → FULL row image format

On master B:
UPDATE from master A → FULL row image format
UPDATE from master B → MINIMAL row image format
UPDATE from master C → FULL row image format

On master C:
UPDATE from master A → FULL row image format
UPDATE from master B → FULL row image format
UPDATE from master C → MINIMAL row image format

Is there any way how to store all UPDATE_ROWS_EVENTs in MINIMAL row image format on all master servers?

This probably has to do with log_slave_updates functionality not going through a proper code path. Have you searched bugs.mysql.com for similar reports?

Yes, I did and found nothing, but I don’t know at all what to search for. Do you recommend to file this behavior as a bug there?

I’m wondering if this is intended behavior. You only see this issue when an event originates from another server, so I’m sure this has something to do with log_slave_updates functionality and the potential for a replica to be source for another replica.