The non-persistent UPDATE_TIME for InnoDB tables is not being updated consistently at transaction commit.
If a transaction is partly rolled back so that in the end it will not modify a table that it intended to modify, the update_time will be updated nevertheless. This will also happen when InnoDB fails to write an undo log record for the intended modification.
If a transaction is committed internally in InnoDB, instead of being committed from the SQL interface, then the trx_t::mod_tables will not be applied to the update_time of the tables.
The problem can be demonstrated with the following:
With this change to the test, the end effect of the transaction (which will do ROLLBACK TO A before COMMIT) is that it will not modify tab2. Yet, the UPDATE_TIME of tab2 is affected.
If the SAVEPOINT A were at the very beginning of the transaction, then it would work correctly; a full ROLLBACK will empty the trx_t::mod_tables.