When running update.php --doshared, updateRowExists() will be called with $this->db pointing to the virtual domain, and so it will always return false.
For the same reason, successful updates aren't logged by insertUpdateRow().
I've seen this happen in DatabaseUpdater::modifyFieldWithCondition() (e.g. the gb_id type change in globalblocks), probably affects other things too. ALTERs are usually idempotent, but it's easy to imagine situations in which this does serious damage.